[
  {
    "path": ".gitattributes",
    "content": "*.js linguist-language=Swift\n*.pac linguist-language=Swift\n"
  },
  {
    "path": "Podfile",
    "content": "# Uncomment the next line to define a global platform for your project\n# platform :ios, '9.0'\n\ntarget 'ProxyConfHelper' do\n  # Comment the next line if you don't want to use dynamic frameworks\n  # use_frameworks!\n\n  # Pods for ProxyConfHelper\n  pod 'BRLOptionParser', '~> 0.3.1'\nend\n\ntarget 'Trojan' do\n  # Comment the next line if you don't want to use dynamic frameworks\n  use_frameworks!\n\n  # Pods for Trojan\n  pod 'GCDWebServer'\n  pod 'Alamofire'\nend\n"
  },
  {
    "path": "ProxyConfHelper/main.m",
    "content": "//\n//  main.m\n//  ProxyConfHelper\n//\n//  Created by ParadiseDuo on 2020/5/3.\n//  Copyright © 2020 ParadiseDuo. All rights reserved.\n//\n\n#import <Foundation/Foundation.h>\n#import <SystemConfiguration/SystemConfiguration.h>\n#import <BRLOptionParser/BRLOptionParser.h>\n\n#import \"version.h\"\n\nint main(int argc, const char * argv[])\n{\n    NSString* mode;\n    NSString* pacURL;\n    NSString* portString;\n    NSString* privoxyPortString;\n    \n    BRLOptionParser *options = [BRLOptionParser new];\n    [options setBanner:@\"Usage: %s [-v] [-m auto|global|off] [-u <url>] [-p <port>] [-r <port>]\", argv[0]];\n    \n    // Version\n    [options addOption:\"version\" flag:'v' description:@\"Print the version number.\" block:^{\n        printf(\"%s\", [kProxyConfHelperVersion UTF8String]);\n        exit(EXIT_SUCCESS);\n    }];\n    \n    // Help\n    __weak typeof(options) weakOptions = options;\n    [options addOption:\"help\" flag:'h' description:@\"Show this message\" block:^{\n        printf(\"%s\", [[weakOptions description] UTF8String]);\n        exit(EXIT_SUCCESS);\n    }];\n    \n    // Mode\n    [options addOption:\"mode\" flag:'m' description:@\"Proxy mode, may be: auto,global,off\" argument:&mode];\n    \n    [options addOption:\"pac-url\" flag:'u' description:@\"PAC file url for auto mode.\" argument:&pacURL];\n    [options addOption:\"port\" flag:'p' description:@\"Listen port for global mode.\" argument:&portString];\n    \n    [options addOption:\"privoxy-port\" flag:'r' description:@\"Privoxy Port for global mode.\" argument:&privoxyPortString];\n    \n    NSMutableSet* networkServiceKeys = [NSMutableSet set];\n    [options addOption:\"network-service\" flag:'n' description:@\"Manual specify the network profile need to set proxy.\" blockWithArgument:^(NSString* value){\n        [networkServiceKeys addObject:value];\n    }];\n    \n    NSError *error = nil;\n    if (![options parseArgc:argc argv:argv error:&error]) {\n        const char * message = error.localizedDescription.UTF8String;\n        fprintf(stderr, \"%s: %s\\n\", argv[0], message);\n        exit(EXIT_FAILURE);\n    }\n    \n    if (mode) {\n        if ([@\"auto\" isEqualToString:mode]) {\n            if (!pacURL) {\n                return 1;\n            }\n        } else if ([@\"global\" isEqualToString:mode]) {\n            if (!portString) {\n                return 1;\n            }\n        } else if (![@\"off\" isEqualToString:mode]) {\n            return 1;\n        }\n    } else {\n        printf(\"%s\", [kProxyConfHelperVersion UTF8String]);\n        return 0;\n    }\n    \n    NSInteger port = 0;\n    if (portString) {\n        port = [portString integerValue];\n        if (0 == port) {\n            return 1;\n        }\n    }\n    \n    NSInteger privoxyPort = 0;\n    if (privoxyPortString) {\n        privoxyPort = [privoxyPortString integerValue];\n        if (0 == privoxyPort) {\n            return 1;\n        }\n    }\n    \n    static AuthorizationRef authRef;\n    static AuthorizationFlags authFlags;\n    authFlags = kAuthorizationFlagDefaults\n    | kAuthorizationFlagExtendRights\n    | kAuthorizationFlagInteractionAllowed\n    | kAuthorizationFlagPreAuthorize;\n    OSStatus authErr = AuthorizationCreate(nil, kAuthorizationEmptyEnvironment, authFlags, &authRef);\n    if (authErr != noErr) {\n        authRef = nil;\n        NSLog(@\"Error when create authorization\");\n        return 1;\n    } else {\n        if (authRef == NULL) {\n            NSLog(@\"No authorization has been granted to modify network configuration\");\n            return 1;\n        }\n        \n        SCPreferencesRef prefRef = SCPreferencesCreateWithAuthorization(nil, CFSTR(\"Trojan\"), nil, authRef);\n        \n        NSDictionary *sets = (__bridge NSDictionary *)SCPreferencesGetValue(prefRef, kSCPrefNetworkServices);\n        \n        NSMutableDictionary *proxies = [[NSMutableDictionary alloc] init];\n        [proxies setObject:[NSNumber numberWithInt:0] forKey:(NSString *)kCFNetworkProxiesHTTPEnable];\n        [proxies setObject:[NSNumber numberWithInt:0] forKey:(NSString *)kCFNetworkProxiesHTTPSEnable];\n        [proxies setObject:[NSNumber numberWithInt:0] forKey:(NSString *)kCFNetworkProxiesProxyAutoConfigEnable];\n        [proxies setObject:[NSNumber numberWithInt:0] forKey:(NSString *)kCFNetworkProxiesSOCKSEnable];\n        [proxies setObject:@[] forKey:(NSString *)kCFNetworkProxiesExceptionsList];\n        \n        // 遍历系统中的网络设备列表，设置 AirPort 和 Ethernet 的代理\n        for (NSString *key in [sets allKeys]) {\n            NSMutableDictionary *dict = [sets objectForKey:key];\n            NSString *hardware = [dict valueForKeyPath:@\"Interface.Hardware\"];\n            //        NSLog(@\"%@\", hardware);\n            BOOL modify = NO;\n            if ([networkServiceKeys count] > 0) {\n                if ([networkServiceKeys containsObject:key]) {\n                    modify = YES;\n                }\n            } else if ([hardware isEqualToString:@\"AirPort\"]\n                       || [hardware isEqualToString:@\"Wi-Fi\"]\n                       || [hardware isEqualToString:@\"Ethernet\"]) {\n                modify = YES;\n            }\n            \n            if (modify) {\n                \n                NSString* prefPath = [NSString stringWithFormat:@\"/%@/%@/%@\", kSCPrefNetworkServices\n                                      , key, kSCEntNetProxies];\n                \n                if ([mode isEqualToString:@\"auto\"]) {\n                    \n                    [proxies setObject:pacURL forKey:(NSString *)kCFNetworkProxiesProxyAutoConfigURLString];\n                    [proxies setObject:[NSNumber numberWithInt:1] forKey:(NSString *)kCFNetworkProxiesProxyAutoConfigEnable];\n                    \n                    SCPreferencesPathSetValue(prefRef, (__bridge CFStringRef)prefPath\n                                              , (__bridge CFDictionaryRef)proxies);\n                } else if ([mode isEqualToString:@\"global\"]) {\n                    \n                    \n                    [proxies setObject:@\"127.0.0.1\" forKey:(NSString *)\n                     kCFNetworkProxiesSOCKSProxy];\n                    [proxies setObject:[NSNumber numberWithInteger:port] forKey:(NSString*)\n                     kCFNetworkProxiesSOCKSPort];\n                    [proxies setObject:[NSNumber numberWithInt:1] forKey:(NSString*)\n                     kCFNetworkProxiesSOCKSEnable];\n                    [proxies setObject:@[@\"127.0.0.1\", @\"localhost\"] forKey:(NSString *)kCFNetworkProxiesExceptionsList];\n                    \n                    if (privoxyPort != 0) {\n                        [proxies setObject:@\"127.0.0.1\" forKey:(NSString *)\n                         kCFNetworkProxiesHTTPProxy];\n                        [proxies setObject:[NSNumber numberWithInteger:privoxyPort] forKey:(NSString*)\n                         kCFNetworkProxiesHTTPPort];\n                        [proxies setObject:[NSNumber numberWithInt:1] forKey:(NSString*)\n                         kCFNetworkProxiesHTTPEnable];\n                        \n                        [proxies setObject:@\"127.0.0.1\" forKey:(NSString *)\n                         kCFNetworkProxiesHTTPSProxy];\n                        [proxies setObject:[NSNumber numberWithInteger:privoxyPort] forKey:(NSString*)\n                         kCFNetworkProxiesHTTPSPort];\n                        [proxies setObject:[NSNumber numberWithInt:1] forKey:(NSString*)\n                         kCFNetworkProxiesHTTPSEnable];\n                    }\n                    \n                    SCPreferencesPathSetValue(prefRef, (__bridge CFStringRef)prefPath\n                                              , (__bridge CFDictionaryRef)proxies);\n                } else if ([mode isEqualToString:@\"off\"]) {\n                    if (pacURL != nil && portString != nil) {\n                        // 取原来的配置，判断是否为Trojan设置的\n                        NSDictionary* oldProxies\n                            = (__bridge NSDictionary*)SCPreferencesPathGetValue(prefRef\n                                                                                , (__bridge CFStringRef)prefPath);\n                        \n                        if (([oldProxies[(NSString *)kCFNetworkProxiesProxyAutoConfigURLString] containsString:pacURL]\n                             &&[oldProxies[(NSString *)kCFNetworkProxiesProxyAutoConfigEnable] isEqual:[NSNumber numberWithInt:1]])\n                            ||([oldProxies[(NSString*)kCFNetworkProxiesSOCKSProxy] isEqualToString:@\"127.0.0.1\"]\n                               &&[oldProxies[(NSString*)kCFNetworkProxiesSOCKSPort] isEqualTo:[NSNumber numberWithInteger:port]]\n                               &&[oldProxies[(NSString*)kCFNetworkProxiesSOCKSEnable] isEqual:[NSNumber numberWithInt:1]])\n                            ) {\n                            SCPreferencesPathSetValue(prefRef, (__bridge CFStringRef)prefPath\n                                                      , (__bridge CFDictionaryRef)proxies);\n                        }\n                    } else {\n                        SCPreferencesPathSetValue(prefRef, (__bridge CFStringRef)prefPath\n                                                  , (__bridge CFDictionaryRef)proxies);\n                    }\n                }\n            }\n        }\n        \n        SCPreferencesCommitChanges(prefRef);\n        SCPreferencesApplyChanges(prefRef);\n        SCPreferencesSynchronize(prefRef);\n        \n        AuthorizationFree(authRef, kAuthorizationFlagDefaults);\n    }\n    \n    printf(\"pac proxy set to %s\", [mode UTF8String]);\n    \n    return 0;\n}\n"
  },
  {
    "path": "ProxyConfHelper/version.h",
    "content": "//\n//  version.h\n//  ProxyConfHelper\n//\n//  Created by ParadiseDuo on 2020/5/3.\n//  Copyright © 2020 ParadiseDuo. All rights reserved.\n//\n\n#ifndef version_h\n#define version_h\n\n#define kProxyConfHelperVersion @\"1.0\"\n\n#endif /* version_h */\n"
  },
  {
    "path": "README.md",
    "content": "<h1 align=\"center\">\n  <img src=\"https://github.com/paradiseduo/Trojan/blob/master/img/icon.png\" alt=\"Trojan\" width=\"256\">\n  <br>\n  Trojan\n  <br>\n</h1>\n\nTrojan is a GUI program for trojan on macOS.\n\n[![Swift](https://img.shields.io/badge/swift-5.2-orange.svg)](https://swift.org/)\n[![platform](https://img.shields.io/badge/platform-macOS-green.svg)](https://github.com/MobSF/Mobile-Security-Framework-MobSF/)\n[![License](https://img.shields.io/:license-GPL--3.0--only-blue.svg)](https://www.gnu.org/licenses/gpl-3.0.html)\n\n## Version:\n\nv2.1\n\n<h1 align=\"center\">\n  <img src=\"https://github.com/paradiseduo/Trojan/blob/master/img/version.png\">\n</h1>\n\n\n## Install\ndownload [here](https://github.com/paradiseduo/Trojan/releases)\n\nand unzip file, Drag Trojan.app to Applications file\n\n## Uninstall\ndrop Trojan.app to Trash\n\nthen open Terminal.app and input those commands:\n```bash\nrm -rf /usr/local/var/log/trojan\nrm -rf ~/Documents/Trojan\nrm -rf /Library/Application\\ Support/Trojan\nrm -rf ~/Library/Application\\ Support/Trojan\nrm -rf ~/Library/Preferences/MacOS.Trojan.plist\nrm -rf ~/Library/LaunchAgents/MacOS.Trojan.local.plist\nrm -rf ~/Library/LaunchAgents/MacOS.Trojan.http.plist\nrm -rf ~/Library/Caches/MacOS.Trojan\nrm -rf ~/Library/Containers/MacOS.Trojan\nrm -rf ~/Library/Application\\ Scripts/MacOS.Trojan\nrm -rf ~/Library/Containers/MacOS.Trojan.StartAtLoginLauncher\nrm -rf ~/Library/Application\\ Scripts/MacOS.Trojan.StartAtLoginLauncher\n```\n\n## Screenshots\n\n### Menu\n<h1 align=\"center\">\n  <img src=\"https://github.com/paradiseduo/Trojan/blob/master/img/menu.png\">\n</h1>\n\n### Setting\n<h1 align=\"center\">\n  <img src=\"https://github.com/paradiseduo/Trojan/blob/master/img/setting.png\">\n</h1>\n\n## Star Trend\n[![Stargazers over time](https://starchart.cc/paradiseduo/Trojan.svg)](https://starchart.cc/paradiseduo/Trojan)\n"
  },
  {
    "path": "Trojan/AppDelegate.swift",
    "content": "//\n//  AppDelegate.swift\n//  Trojan\n//\n//  Created by ParadiseDuo on 2020/4/7.\n//  Copyright © 2020 ParadiseDuo. All rights reserved.\n//\n\nimport Cocoa\n\n@NSApplicationMain\nclass AppDelegate: NSObject, NSApplicationDelegate {\n    \n    func applicationDidFinishLaunching(_ aNotification: Notification) {\n        \n    }\n\n    func applicationWillTerminate(_ aNotification: Notification) {\n        // Insert code here to tear down your application\n    }\n\n    static func getLauncherStatus() -> Bool {\n        return LoginServiceKit.isExistLoginItems()\n    }\n    \n    static func setLauncherStatus(open: Bool) {\n        if open {\n            LoginServiceKit.addLoginItems()\n        } else {\n            LoginServiceKit.removeLoginItems()\n        }\n    }\n    \n    static func stopTrojan(finish: @escaping()->()) {\n        StopTrojan { (s) in\n            StopPrivoxy { (ss) in\n                ProxyConfHelper.stopPACServer()\n                ProxyConfHelper.disableProxy(\"hi\")\n                let defaults = UserDefaults.standard\n                defaults.set(false, forKey: USERDEFAULTS_TROJAN_ON)\n                defaults.synchronize()\n                DispatchQueue.main.async {\n                    finish()\n                }\n            }\n        }\n    }\n}\n\n\n"
  },
  {
    "path": "Trojan/Assets.xcassets/AppIcon.appiconset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"filename\" : \"004-rocket.png\",\n      \"idiom\" : \"mac\",\n      \"scale\" : \"1x\",\n      \"size\" : \"16x16\"\n    },\n    {\n      \"filename\" : \"004-rocket (1).png\",\n      \"idiom\" : \"mac\",\n      \"scale\" : \"2x\",\n      \"size\" : \"16x16\"\n    },\n    {\n      \"filename\" : \"004-rocket (1)-1.png\",\n      \"idiom\" : \"mac\",\n      \"scale\" : \"1x\",\n      \"size\" : \"32x32\"\n    },\n    {\n      \"filename\" : \"004-rocket (2).png\",\n      \"idiom\" : \"mac\",\n      \"scale\" : \"2x\",\n      \"size\" : \"32x32\"\n    },\n    {\n      \"filename\" : \"004-rocket (3).png\",\n      \"idiom\" : \"mac\",\n      \"scale\" : \"1x\",\n      \"size\" : \"128x128\"\n    },\n    {\n      \"filename\" : \"004-rocket (4).png\",\n      \"idiom\" : \"mac\",\n      \"scale\" : \"2x\",\n      \"size\" : \"128x128\"\n    },\n    {\n      \"filename\" : \"004-rocket (4)-1.png\",\n      \"idiom\" : \"mac\",\n      \"scale\" : \"1x\",\n      \"size\" : \"256x256\"\n    },\n    {\n      \"filename\" : \"004-rocket (5).png\",\n      \"idiom\" : \"mac\",\n      \"scale\" : \"2x\",\n      \"size\" : \"256x256\"\n    },\n    {\n      \"filename\" : \"004-rocket (5)-1.png\",\n      \"idiom\" : \"mac\",\n      \"scale\" : \"1x\",\n      \"size\" : \"512x512\"\n    },\n    {\n      \"filename\" : \"004-rocket (6).png\",\n      \"idiom\" : \"mac\",\n      \"scale\" : \"2x\",\n      \"size\" : \"512x512\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "Trojan/Assets.xcassets/Contents.json",
    "content": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "Trojan/Assets.xcassets/close.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"filename\" : \"rocket (5).png\",\n      \"idiom\" : \"universal\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"filename\" : \"rocket (4).png\",\n      \"idiom\" : \"universal\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"filename\" : \"rocket (3).png\",\n      \"idiom\" : \"universal\",\n      \"scale\" : \"3x\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "Trojan/Assets.xcassets/copy.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"filename\" : \"copy.png\",\n      \"idiom\" : \"universal\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"filename\" : \"copy (1).png\",\n      \"idiom\" : \"universal\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"filename\" : \"copy (2).png\",\n      \"idiom\" : \"universal\",\n      \"scale\" : \"3x\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "Trojan/Assets.xcassets/open.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"filename\" : \"rocket.png\",\n      \"idiom\" : \"universal\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"filename\" : \"rocket (1).png\",\n      \"idiom\" : \"universal\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"filename\" : \"rocket (2).png\",\n      \"idiom\" : \"universal\",\n      \"scale\" : \"3x\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "Trojan/Base.lproj/MainMenu.xib",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.Cocoa.XIB\" version=\"3.0\" toolsVersion=\"17156\" targetRuntime=\"MacOSX.Cocoa\" propertyAccessControl=\"none\" useAutolayout=\"YES\" customObjectInstantitationMethod=\"direct\">\n    <dependencies>\n        <deployment identifier=\"macosx\"/>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.CocoaPlugin\" version=\"17156\"/>\n    </dependencies>\n    <objects>\n        <customObject id=\"-2\" userLabel=\"File's Owner\" customClass=\"NSApplication\">\n            <connections>\n                <outlet property=\"delegate\" destination=\"Voe-Tx-rLC\" id=\"GzC-gU-4Uq\"/>\n            </connections>\n        </customObject>\n        <customObject id=\"-1\" userLabel=\"First Responder\" customClass=\"FirstResponder\"/>\n        <customObject id=\"-3\" userLabel=\"Application\" customClass=\"NSObject\"/>\n        <customObject id=\"Voe-Tx-rLC\" customClass=\"StatusMenuManager\" customModule=\"Trojan\" customModuleProvider=\"target\">\n            <connections>\n                <outlet property=\"aclAutoItem\" destination=\"NEA-Fa-rON\" id=\"znc-Er-JoQ\"/>\n                <outlet property=\"aclModeItem\" destination=\"b2z-2C-t82\" id=\"43m-jx-cIg\"/>\n                <outlet property=\"backChinaItem\" destination=\"x6U-Ur-hKu\" id=\"dLv-0t-UVH\"/>\n                <outlet property=\"copyCommandItem\" destination=\"Bea-Hp-fhg\" id=\"Wd9-DE-io5\"/>\n                <outlet property=\"fixedWidth\" destination=\"qJU-bB-Y5c\" id=\"Wf0-vF-cHr\"/>\n                <outlet property=\"globalItem\" destination=\"fvC-5Z-4w5\" id=\"bI6-44-rQq\"/>\n                <outlet property=\"manualItem\" destination=\"REy-hH-h4P\" id=\"W1g-kW-nEy\"/>\n                <outlet property=\"pacItem\" destination=\"gh3-ld-apY\" id=\"urJ-A1-Exy\"/>\n                <outlet property=\"serversMenuItem\" destination=\"Eur-eP-1FK\" id=\"VfC-ha-YCB\"/>\n                <outlet property=\"speedMenu\" destination=\"Vcg-d5-cVm\" id=\"8zc-dM-HJT\"/>\n                <outlet property=\"statusMenu\" destination=\"zOa-kh-Dxd\" id=\"bl4-yd-acl\"/>\n                <outlet property=\"switchLabel\" destination=\"VPI-fv-1dZ\" id=\"g05-Oh-nWv\"/>\n                <outlet property=\"toggleRunning\" destination=\"SL2-0h-OFw\" id=\"xvB-nv-B6M\"/>\n                <outlet property=\"whiteListItem\" destination=\"czN-6H-Giu\" id=\"HLh-dO-QfK\"/>\n            </connections>\n        </customObject>\n        <customObject id=\"YLy-65-1bz\" customClass=\"NSFontManager\"/>\n        <menu id=\"zOa-kh-Dxd\">\n            <items>\n                <menuItem title=\"Trojan: On\" enabled=\"NO\" id=\"VPI-fv-1dZ\">\n                    <modifierMask key=\"keyEquivalentModifierMask\"/>\n                </menuItem>\n                <menuItem title=\"Turn Trojan On\" id=\"SL2-0h-OFw\">\n                    <modifierMask key=\"keyEquivalentModifierMask\"/>\n                    <connections>\n                        <action selector=\"powerSwitch:\" target=\"Voe-Tx-rLC\" id=\"dno-zg-HD9\"/>\n                    </connections>\n                </menuItem>\n                <menuItem isSeparatorItem=\"YES\" id=\"Pei-ry-g4V\"/>\n                <menuItem title=\"Auto Mode Base On PAC\" id=\"gh3-ld-apY\">\n                    <modifierMask key=\"keyEquivalentModifierMask\"/>\n                    <connections>\n                        <action selector=\"pacMode:\" target=\"Voe-Tx-rLC\" id=\"p0P-Ad-iII\"/>\n                    </connections>\n                </menuItem>\n                <menuItem title=\"White List Mode\" id=\"czN-6H-Giu\">\n                    <modifierMask key=\"keyEquivalentModifierMask\"/>\n                    <connections>\n                        <action selector=\"WhiteListMode:\" target=\"Voe-Tx-rLC\" id=\"HaZ-qW-ZfZ\"/>\n                    </connections>\n                </menuItem>\n                <menuItem title=\"Global Mode\" id=\"fvC-5Z-4w5\">\n                    <modifierMask key=\"keyEquivalentModifierMask\"/>\n                    <connections>\n                        <action selector=\"globalMode:\" target=\"Voe-Tx-rLC\" id=\"lR2-Pc-i0C\"/>\n                    </connections>\n                </menuItem>\n                <menuItem title=\"Manual Mode\" id=\"REy-hH-h4P\">\n                    <modifierMask key=\"keyEquivalentModifierMask\"/>\n                    <connections>\n                        <action selector=\"manualMode:\" target=\"Voe-Tx-rLC\" id=\"vhp-nc-akk\"/>\n                    </connections>\n                </menuItem>\n                <menuItem title=\"ACL Mode\" id=\"b2z-2C-t82\">\n                    <modifierMask key=\"keyEquivalentModifierMask\"/>\n                    <menu key=\"submenu\" id=\"cxH-YN-kkP\">\n                        <items>\n                            <menuItem title=\"ACL Auto\" id=\"NEA-Fa-rON\">\n                                <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                <connections>\n                                    <action selector=\"aclAutoMode:\" target=\"Voe-Tx-rLC\" id=\"xmY-Dq-1sW\"/>\n                                </connections>\n                            </menuItem>\n                            <menuItem title=\"Proxy Back China\" id=\"x6U-Ur-hKu\">\n                                <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                <connections>\n                                    <action selector=\"backChinaMode:\" target=\"Voe-Tx-rLC\" id=\"57F-8X-7wQ\"/>\n                                </connections>\n                            </menuItem>\n                        </items>\n                    </menu>\n                </menuItem>\n                <menuItem isSeparatorItem=\"YES\" id=\"rjv-DD-Ohy\"/>\n                <menuItem title=\"Servers\" id=\"Eur-eP-1FK\">\n                    <modifierMask key=\"keyEquivalentModifierMask\"/>\n                    <menu key=\"submenu\" id=\"llM-VQ-Alj\"/>\n                </menuItem>\n                <menuItem title=\"Subscribers\" id=\"KTm-qa-dNf\">\n                    <modifierMask key=\"keyEquivalentModifierMask\"/>\n                    <menu key=\"submenu\" title=\"Subscribers\" id=\"bHi-SW-RAb\">\n                        <items>\n                            <menuItem title=\"⚙ Edit Subscribe Feed\" id=\"ags-VN-M7s\">\n                                <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                <connections>\n                                    <action selector=\"editSubscribeFeedTao:\" target=\"Voe-Tx-rLC\" id=\"OEd-XV-bmz\"/>\n                                </connections>\n                            </menuItem>\n                            <menuItem isSeparatorItem=\"YES\" id=\"q6i-xD-e3f\"/>\n                            <menuItem title=\"Update Subscription With Proxy\" id=\"hEu-gf-24N\">\n                                <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                <connections>\n                                    <action selector=\"updateSubscribeWithProxy:\" target=\"Voe-Tx-rLC\" id=\"7Wc-GC-ZV2\"/>\n                                </connections>\n                            </menuItem>\n                            <menuItem title=\"Update Subscription Without Proxy\" id=\"Gga-2f-cc5\">\n                                <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                <connections>\n                                    <action selector=\"updateSubscribeWithoutProxy:\" target=\"Voe-Tx-rLC\" id=\"jQb-AS-yqk\"/>\n                                </connections>\n                            </menuItem>\n                        </items>\n                    </menu>\n                </menuItem>\n                <menuItem isSeparatorItem=\"YES\" id=\"iio-Qk-cXd\"/>\n                <menuItem title=\"⚙ Servers Setting\" id=\"nGS-Ow-TSH\">\n                    <modifierMask key=\"keyEquivalentModifierMask\"/>\n                    <connections>\n                        <action selector=\"serversSetting:\" target=\"Voe-Tx-rLC\" id=\"gH9-Ln-nTS\"/>\n                    </connections>\n                </menuItem>\n                <menuItem title=\"Test Connection Delay\" id=\"CpR-44-ZNN\">\n                    <modifierMask key=\"keyEquivalentModifierMask\"/>\n                    <connections>\n                        <action selector=\"testConnectionDelay:\" target=\"Voe-Tx-rLC\" id=\"M3b-dM-dsj\"/>\n                    </connections>\n                </menuItem>\n                <menuItem title=\"Export Command Line To Pasteboard\" id=\"Bea-Hp-fhg\">\n                    <modifierMask key=\"keyEquivalentModifierMask\"/>\n                    <connections>\n                        <action selector=\"copySocks5CommandLineTap:\" target=\"Voe-Tx-rLC\" id=\"viH-pH-NQ5\"/>\n                    </connections>\n                </menuItem>\n                <menuItem isSeparatorItem=\"YES\" id=\"veu-Pn-4Fw\"/>\n                <menuItem title=\"⚙ Settings\" id=\"nzW-Ph-yuS\">\n                    <modifierMask key=\"keyEquivalentModifierMask\"/>\n                    <connections>\n                        <action selector=\"settingsTap:\" target=\"Voe-Tx-rLC\" id=\"VRZ-YS-cdc\"/>\n                    </connections>\n                </menuItem>\n                <menuItem title=\"Help\" id=\"i2H-13-hlp\">\n                    <modifierMask key=\"keyEquivalentModifierMask\"/>\n                    <menu key=\"submenu\" id=\"5oV-2d-kcy\">\n                        <items>\n                            <menuItem title=\"⚙ View Logs\" id=\"p8A-3V-2aa\">\n                                <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                <connections>\n                                    <action selector=\"showLog:\" target=\"Voe-Tx-rLC\" id=\"nAf-hi-tBM\"/>\n                                </connections>\n                            </menuItem>\n                            <menuItem title=\"Clean Logs\" id=\"0PN-XY-ZXt\">\n                                <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                <connections>\n                                    <action selector=\"cleanLogs:\" target=\"Voe-Tx-rLC\" id=\"XaB-bT-KhQ\"/>\n                                </connections>\n                            </menuItem>\n                            <menuItem isSeparatorItem=\"YES\" id=\"MK3-bi-tP6\"/>\n                            <menuItem title=\"Check Update\" id=\"BLJ-op-AkG\">\n                                <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                <connections>\n                                    <action selector=\"checkUpdate:\" target=\"Voe-Tx-rLC\" id=\"Jfp-xf-gTf\"/>\n                                </connections>\n                            </menuItem>\n                            <menuItem title=\"Feedback\" id=\"nHU-cq-FkI\">\n                                <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                <connections>\n                                    <action selector=\"feedbackTap:\" target=\"Voe-Tx-rLC\" id=\"ytI-YZ-9hj\"/>\n                                </connections>\n                            </menuItem>\n                            <menuItem title=\"About\" id=\"YkQ-MK-047\">\n                                <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                <connections>\n                                    <action selector=\"aboutMe:\" target=\"Voe-Tx-rLC\" id=\"dyE-It-Phn\"/>\n                                </connections>\n                            </menuItem>\n                        </items>\n                    </menu>\n                </menuItem>\n                <menuItem isSeparatorItem=\"YES\" id=\"c1r-Sm-ft0\"/>\n                <menuItem title=\"Quit\" id=\"9WC-iB-Jq8\">\n                    <modifierMask key=\"keyEquivalentModifierMask\"/>\n                    <connections>\n                        <action selector=\"quit:\" target=\"Voe-Tx-rLC\" id=\"x8m-8e-VZB\"/>\n                    </connections>\n                </menuItem>\n            </items>\n            <point key=\"canvasLocation\" x=\"139\" y=\"152\"/>\n        </menu>\n        <menu id=\"Vcg-d5-cVm\" userLabel=\"SpeedMenu\">\n            <items>\n                <menuItem title=\"Fixed Width\" id=\"qJU-bB-Y5c\">\n                    <modifierMask key=\"keyEquivalentModifierMask\"/>\n                    <connections>\n                        <action selector=\"fixedWidth:\" target=\"Voe-Tx-rLC\" id=\"p3s-Pp-BNj\"/>\n                    </connections>\n                </menuItem>\n                <menuItem isSeparatorItem=\"YES\" id=\"3b8-0d-uUl\"/>\n                <menuItem title=\"Close\" id=\"mwK-zU-e1F\">\n                    <modifierMask key=\"keyEquivalentModifierMask\"/>\n                    <connections>\n                        <action selector=\"closeSpeedItem:\" target=\"Voe-Tx-rLC\" id=\"i1r-5B-4OR\"/>\n                    </connections>\n                </menuItem>\n            </items>\n            <point key=\"canvasLocation\" x=\"-220\" y=\"17\"/>\n        </menu>\n    </objects>\n</document>\n"
  },
  {
    "path": "Trojan/CommandLine.swift",
    "content": "//\n//   CommandLine.swift\n//  Trojan\n//\n//  Created by ParadiseDuo on 2020/4/2.\n//  Copyright © 2020 Mac. All rights reserved.\n//\n\nimport Foundation\n\n\nclass CommandLine {\n    static func async(task: Process, command: String, output: ((String) -> Void)? = nil, terminate: ((Int) -> Void)? = nil) {\n        let utf8Command = \"export LANG=en_US.UTF-8\\n\" + command\n        async(task: task, shellPath: \"/bin/bash\", arguments: [\"-c\", utf8Command], output: output, terminate: terminate)\n    }\n    \n    static func async(task: Process, shellPath: String, arguments: [String]? = nil, output: ((String) -> Void)? = nil, terminate: ((Int) -> Void)? = nil) {\n        DispatchQueue.global().async {\n            let pipe = Pipe()\n            let outHandle = pipe.fileHandleForReading\n            \n            var environment = ProcessInfo.processInfo.environment\n            environment[\"PATH\"] = \"/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin\"\n            task.environment = environment\n            \n            if arguments != nil {\n                task.arguments = arguments!\n            }\n            \n            task.launchPath = shellPath\n            task.standardOutput = pipe\n            \n            outHandle.waitForDataInBackgroundAndNotify()\n            var obs1 : NSObjectProtocol!\n            obs1 = NotificationCenter.default.addObserver(forName: NSNotification.Name.NSFileHandleDataAvailable, object: outHandle, queue: nil) {  notification -> Void in\n                let data = outHandle.availableData\n                if data.count > 0 {\n                    if let str = NSString(data: data, encoding: String.Encoding.utf8.rawValue) {\n                        DispatchQueue.main.async {\n                            output?(str as String)\n                        }\n                    }\n                    outHandle.waitForDataInBackgroundAndNotify()\n                } else {\n                    NotificationCenter.default.removeObserver(obs1 as Any)\n                    pipe.fileHandleForReading.closeFile()\n                }\n            }\n\n            var obs2 : NSObjectProtocol!\n            obs2 = NotificationCenter.default.addObserver(forName: Process.didTerminateNotification, object: task, queue: nil) { notification -> Void in\n                DispatchQueue.main.async {\n                    terminate?(Int(0))\n                }\n                NotificationCenter.default.removeObserver(obs2 as Any)\n            }\n            \n            task.launch()\n            task.waitUntilExit()\n        }\n    }\n}\n"
  },
  {
    "path": "Trojan/File/abp.js",
    "content": "// Generated by gfwlist2pac in precise mode\n// https://github.com/clowwindy/gfwlist2pac\n\nvar proxy = \"SOCKS5 127.0.0.1:__SOCKS5PORT__; SOCKS 127.0.0.1:__SOCKS5PORT__; DIRECT;\";\n\nvar rules = __RULES__;\n\n/*\n * This file is part of Adblock Plus <http://adblockplus.org/>,\n * Copyright (C) 2006-2014 Eyeo GmbH\n *\n * Adblock Plus is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License version 3 as\n * published by the Free Software Foundation.\n *\n * Adblock Plus is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with Adblock Plus.  If not, see <http://www.gnu.org/licenses/>.\n */\n\nfunction createDict()\n{\n  var result = {};\n  result.__proto__ = null;\n  return result;\n}\n\nfunction getOwnPropertyDescriptor(obj, key)\n{\n  if (obj.hasOwnProperty(key))\n  {\n    return obj[key];\n  }\n  return null;\n}\n\nfunction extend(subclass, superclass, definition)\n{\n  if (Object.__proto__)\n  {\n    definition.__proto__ = superclass.prototype;\n    subclass.prototype = definition;\n  }\n  else\n  {\n    var tmpclass = function(){}, ret;\n    tmpclass.prototype = superclass.prototype;\n    subclass.prototype = new tmpclass();\n    subclass.prototype.constructor = superclass;\n    for (var i in definition)\n    {\n      if (definition.hasOwnProperty(i))\n      {\n        subclass.prototype[i] = definition[i];\n      }\n    }\n  }\n}\n\nfunction Filter(text)\n{\n  this.text = text;\n  this.subscriptions = [];\n}\nFilter.prototype = {\ntext: null,\nsubscriptions: null,\ntoString: function()\n  {\n    return this.text;\n  }\n};\nFilter.knownFilters = createDict();\nFilter.elemhideRegExp = /^([^\\/\\*\\|\\@\"!]*?)#(\\@)?(?:([\\w\\-]+|\\*)((?:\\([\\w\\-]+(?:[$^*]?=[^\\(\\)\"]*)?\\))*)|#([^{}]+))$/;\nFilter.regexpRegExp = /^(@@)?\\/.*\\/(?:\\$~?[\\w\\-]+(?:=[^,\\s]+)?(?:,~?[\\w\\-]+(?:=[^,\\s]+)?)*)?$/;\nFilter.optionsRegExp = /\\$(~?[\\w\\-]+(?:=[^,\\s]+)?(?:,~?[\\w\\-]+(?:=[^,\\s]+)?)*)$/;\nFilter.fromText = function(text)\n{\n  if (text in Filter.knownFilters)\n  {\n    return Filter.knownFilters[text];\n  }\n  var ret;\n  if (text[0] == \"!\")\n  {\n    ret = new CommentFilter(text);\n  }\n  else\n  {\n    ret = RegExpFilter.fromText(text);\n  }\n  Filter.knownFilters[ret.text] = ret;\n  return ret;\n};\n\nfunction InvalidFilter(text, reason)\n{\n  Filter.call(this, text);\n  this.reason = reason;\n}\nextend(InvalidFilter, Filter, {\n       reason: null\n       });\n\nfunction CommentFilter(text)\n{\n  Filter.call(this, text);\n}\nextend(CommentFilter, Filter, {\n       });\n\nfunction ActiveFilter(text, domains)\n{\n  Filter.call(this, text);\n  this.domainSource = domains;\n}\nextend(ActiveFilter, Filter, {\n       domainSource: null,\n       domainSeparator: null,\n       ignoreTrailingDot: true,\n       domainSourceIsUpperCase: false,\n       getDomains: function()\n       {\n       var prop = getOwnPropertyDescriptor(this, \"domains\");\n       if (prop)\n       {\n       return prop;\n       }\n       var domains = null;\n       if (this.domainSource)\n       {\n       var source = this.domainSource;\n       if (!this.domainSourceIsUpperCase)\n       {\n       source = source.toUpperCase();\n       }\n       var list = source.split(this.domainSeparator);\n       if (list.length == 1 && list[0][0] != \"~\")\n       {\n       domains = createDict();\n       domains[\"\"] = false;\n       if (this.ignoreTrailingDot)\n       {\n       list[0] = list[0].replace(/\\.+$/, \"\");\n       }\n       domains[list[0]] = true;\n       }\n       else\n       {\n       var hasIncludes = false;\n       for (var i = 0; i < list.length; i++)\n       {\n       var domain = list[i];\n       if (this.ignoreTrailingDot)\n       {\n       domain = domain.replace(/\\.+$/, \"\");\n       }\n       if (domain == \"\")\n       {\n       continue;\n       }\n       var include;\n       if (domain[0] == \"~\")\n       {\n       include = false;\n       domain = domain.substr(1);\n       }\n       else\n       {\n       include = true;\n       hasIncludes = true;\n       }\n       if (!domains)\n       {\n       domains = createDict();\n       }\n       domains[domain] = include;\n       }\n       domains[\"\"] = !hasIncludes;\n       }\n       this.domainSource = null;\n       }\n       return this.domains;\n       },\n       sitekeys: null,\n       isActiveOnDomain: function(docDomain, sitekey)\n       {\n       if (this.getSitekeys() && (!sitekey || this.getSitekeys().indexOf(sitekey.toUpperCase()) < 0))\n       {\n       return false;\n       }\n       if (!this.getDomains())\n       {\n       return true;\n       }\n       if (!docDomain)\n       {\n       return this.getDomains()[\"\"];\n       }\n       if (this.ignoreTrailingDot)\n       {\n       docDomain = docDomain.replace(/\\.+$/, \"\");\n       }\n       docDomain = docDomain.toUpperCase();\n       while (true)\n       {\n       if (docDomain in this.getDomains())\n       {\n       return this.domains[docDomain];\n       }\n       var nextDot = docDomain.indexOf(\".\");\n       if (nextDot < 0)\n       {\n       break;\n       }\n       docDomain = docDomain.substr(nextDot + 1);\n       }\n       return this.domains[\"\"];\n       },\n       isActiveOnlyOnDomain: function(docDomain)\n       {\n       if (!docDomain || !this.getDomains() || this.getDomains()[\"\"])\n       {\n       return false;\n       }\n       if (this.ignoreTrailingDot)\n       {\n       docDomain = docDomain.replace(/\\.+$/, \"\");\n       }\n       docDomain = docDomain.toUpperCase();\n       for (var domain in this.getDomains())\n       {\n       if (this.domains[domain] && domain != docDomain && (domain.length <= docDomain.length || domain.indexOf(\".\" + docDomain) != domain.length - docDomain.length - 1))\n       {\n       return false;\n       }\n       }\n       return true;\n       }\n       });\n\nfunction RegExpFilter(text, regexpSource, contentType, matchCase, domains, thirdParty, sitekeys)\n{\n  ActiveFilter.call(this, text, domains, sitekeys);\n  if (contentType != null)\n  {\n    this.contentType = contentType;\n  }\n  if (matchCase)\n  {\n    this.matchCase = matchCase;\n  }\n  if (thirdParty != null)\n  {\n    this.thirdParty = thirdParty;\n  }\n  if (sitekeys != null)\n  {\n    this.sitekeySource = sitekeys;\n  }\n  if (regexpSource.length >= 2 && regexpSource[0] == \"/\" && regexpSource[regexpSource.length - 1] == \"/\")\n  {\n    var regexp = new RegExp(regexpSource.substr(1, regexpSource.length - 2), this.matchCase ? \"\" : \"i\");\n    this.regexp = regexp;\n  }\n  else\n  {\n    this.regexpSource = regexpSource;\n  }\n}\nextend(RegExpFilter, ActiveFilter, {\n       domainSourceIsUpperCase: true,\n       length: 1,\n       domainSeparator: \"|\",\n       regexpSource: null,\n       getRegexp: function()\n       {\n       var prop = getOwnPropertyDescriptor(this, \"regexp\");\n       if (prop)\n       {\n       return prop;\n       }\n       var source = this.regexpSource.replace(/\\*+/g, \"*\").replace(/\\^\\|$/, \"^\").replace(/\\W/g, \"\\\\$&\").replace(/\\\\\\*/g, \".*\").replace(/\\\\\\^/g, \"(?:[\\\\x00-\\\\x24\\\\x26-\\\\x2C\\\\x2F\\\\x3A-\\\\x40\\\\x5B-\\\\x5E\\\\x60\\\\x7B-\\\\x7F]|$)\").replace(/^\\\\\\|\\\\\\|/, \"^[\\\\w\\\\-]+:\\\\/+(?!\\\\/)(?:[^\\\\/]+\\\\.)?\").replace(/^\\\\\\|/, \"^\").replace(/\\\\\\|$/, \"$\").replace(/^(\\.\\*)/, \"\").replace(/(\\.\\*)$/, \"\");\n       var regexp = new RegExp(source, this.matchCase ? \"\" : \"i\");\n       this.regexp = regexp;\n       return regexp;\n       },\n       contentType: 2147483647,\n       matchCase: false,\n       thirdParty: null,\n       sitekeySource: null,\n       getSitekeys: function()\n       {\n       var prop = getOwnPropertyDescriptor(this, \"sitekeys\");\n       if (prop)\n       {\n       return prop;\n       }\n       var sitekeys = null;\n       if (this.sitekeySource)\n       {\n       sitekeys = this.sitekeySource.split(\"|\");\n       this.sitekeySource = null;\n       }\n       this.sitekeys = sitekeys;\n       return this.sitekeys;\n       },\n       matches: function(location, contentType, docDomain, thirdParty, sitekey)\n       {\n       if (this.getRegexp().test(location) && this.isActiveOnDomain(docDomain, sitekey))\n       {\n       return true;\n       }\n       return false;\n       }\n       });\nRegExpFilter.prototype[\"0\"] = \"#this\";\nRegExpFilter.fromText = function(text)\n{\n  var blocking = true;\n  var origText = text;\n  if (text.indexOf(\"@@\") == 0)\n  {\n    blocking = false;\n    text = text.substr(2);\n  }\n  var contentType = null;\n  var matchCase = null;\n  var domains = null;\n  var sitekeys = null;\n  var thirdParty = null;\n  var collapse = null;\n  var options;\n  var match = text.indexOf(\"$\") >= 0 ? Filter.optionsRegExp.exec(text) : null;\n  if (match)\n  {\n    options = match[1].toUpperCase().split(\",\");\n    text = match.input.substr(0, match.index);\n    for (var _loopIndex6 = 0; _loopIndex6 < options.length; ++_loopIndex6)\n    {\n      var option = options[_loopIndex6];\n      var value = null;\n      var separatorIndex = option.indexOf(\"=\");\n      if (separatorIndex >= 0)\n      {\n        value = option.substr(separatorIndex + 1);\n        option = option.substr(0, separatorIndex);\n      }\n      option = option.replace(/-/, \"_\");\n      if (option in RegExpFilter.typeMap)\n      {\n        if (contentType == null)\n        {\n          contentType = 0;\n        }\n        contentType |= RegExpFilter.typeMap[option];\n      }\n      else if (option[0] == \"~\" && option.substr(1) in RegExpFilter.typeMap)\n      {\n        if (contentType == null)\n        {\n          contentType = RegExpFilter.prototype.contentType;\n        }\n        contentType &= ~RegExpFilter.typeMap[option.substr(1)];\n      }\n      else if (option == \"MATCH_CASE\")\n      {\n        matchCase = true;\n      }\n      else if (option == \"~MATCH_CASE\")\n      {\n        matchCase = false;\n      }\n      else if (option == \"DOMAIN\" && typeof value != \"undefined\")\n      {\n        domains = value;\n      }\n      else if (option == \"THIRD_PARTY\")\n      {\n        thirdParty = true;\n      }\n      else if (option == \"~THIRD_PARTY\")\n      {\n        thirdParty = false;\n      }\n      else if (option == \"COLLAPSE\")\n      {\n        collapse = true;\n      }\n      else if (option == \"~COLLAPSE\")\n      {\n        collapse = false;\n      }\n      else if (option == \"SITEKEY\" && typeof value != \"undefined\")\n      {\n        sitekeys = value;\n      }\n      else\n      {\n        return new InvalidFilter(origText, \"Unknown option \" + option.toLowerCase());\n      }\n    }\n  }\n  if (!blocking && (contentType == null || contentType & RegExpFilter.typeMap.DOCUMENT) && (!options || options.indexOf(\"DOCUMENT\") < 0) && !/^\\|?[\\w\\-]+:/.test(text))\n  {\n    if (contentType == null)\n    {\n      contentType = RegExpFilter.prototype.contentType;\n    }\n    contentType &= ~RegExpFilter.typeMap.DOCUMENT;\n  }\n  try\n  {\n    if (blocking)\n    {\n      return new BlockingFilter(origText, text, contentType, matchCase, domains, thirdParty, sitekeys, collapse);\n    }\n    else\n    {\n      return new WhitelistFilter(origText, text, contentType, matchCase, domains, thirdParty, sitekeys);\n    }\n  }\n  catch (e)\n  {\n    return new InvalidFilter(origText, e);\n  }\n};\nRegExpFilter.typeMap = {\nOTHER: 1,\nSCRIPT: 2,\nIMAGE: 4,\nSTYLESHEET: 8,\nOBJECT: 16,\nSUBDOCUMENT: 32,\nDOCUMENT: 64,\nXBL: 1,\nPING: 1,\nXMLHTTPREQUEST: 2048,\nOBJECT_SUBREQUEST: 4096,\nDTD: 1,\nMEDIA: 16384,\nFONT: 32768,\nBACKGROUND: 4,\nPOPUP: 268435456,\nELEMHIDE: 1073741824\n};\nRegExpFilter.prototype.contentType &= ~ (RegExpFilter.typeMap.ELEMHIDE | RegExpFilter.typeMap.POPUP);\n\nfunction BlockingFilter(text, regexpSource, contentType, matchCase, domains, thirdParty, sitekeys, collapse)\n{\n  RegExpFilter.call(this, text, regexpSource, contentType, matchCase, domains, thirdParty, sitekeys);\n  this.collapse = collapse;\n}\nextend(BlockingFilter, RegExpFilter, {\n       collapse: null\n       });\n\nfunction WhitelistFilter(text, regexpSource, contentType, matchCase, domains, thirdParty, sitekeys)\n{\n  RegExpFilter.call(this, text, regexpSource, contentType, matchCase, domains, thirdParty, sitekeys);\n}\nextend(WhitelistFilter, RegExpFilter, {\n       });\n\nfunction Matcher()\n{\n  this.clear();\n}\nMatcher.prototype = {\nfilterByKeyword: null,\nkeywordByFilter: null,\nclear: function()\n  {\n    this.filterByKeyword = createDict();\n    this.keywordByFilter = createDict();\n  },\nadd: function(filter)\n  {\n    if (filter.text in this.keywordByFilter)\n    {\n      return;\n    }\n    var keyword = this.findKeyword(filter);\n    var oldEntry = this.filterByKeyword[keyword];\n    if (typeof oldEntry == \"undefined\")\n    {\n      this.filterByKeyword[keyword] = filter;\n    }\n    else if (oldEntry.length == 1)\n    {\n      this.filterByKeyword[keyword] = [oldEntry, filter];\n    }\n    else\n    {\n      oldEntry.push(filter);\n    }\n    this.keywordByFilter[filter.text] = keyword;\n  },\nremove: function(filter)\n  {\n    if (!(filter.text in this.keywordByFilter))\n    {\n      return;\n    }\n    var keyword = this.keywordByFilter[filter.text];\n    var list = this.filterByKeyword[keyword];\n    if (list.length <= 1)\n    {\n      delete this.filterByKeyword[keyword];\n    }\n    else\n    {\n      var index = list.indexOf(filter);\n      if (index >= 0)\n      {\n        list.splice(index, 1);\n        if (list.length == 1)\n        {\n          this.filterByKeyword[keyword] = list[0];\n        }\n      }\n    }\n    delete this.keywordByFilter[filter.text];\n  },\nfindKeyword: function(filter)\n  {\n    var result = \"\";\n    var text = filter.text;\n    if (Filter.regexpRegExp.test(text))\n    {\n      return result;\n    }\n    var match = Filter.optionsRegExp.exec(text);\n    if (match)\n    {\n      text = match.input.substr(0, match.index);\n    }\n    if (text.substr(0, 2) == \"@@\")\n    {\n      text = text.substr(2);\n    }\n    var candidates = text.toLowerCase().match(/[^a-z0-9%*][a-z0-9%]{3,}(?=[^a-z0-9%*])/g);\n    if (!candidates)\n    {\n      return result;\n    }\n    var hash = this.filterByKeyword;\n    var resultCount = 16777215;\n    var resultLength = 0;\n    for (var i = 0, l = candidates.length; i < l; i++)\n    {\n      var candidate = candidates[i].substr(1);\n      var count = candidate in hash ? hash[candidate].length : 0;\n      if (count < resultCount || count == resultCount && candidate.length > resultLength)\n      {\n        result = candidate;\n        resultCount = count;\n        resultLength = candidate.length;\n      }\n    }\n    return result;\n  },\nhasFilter: function(filter)\n  {\n    return filter.text in this.keywordByFilter;\n  },\ngetKeywordForFilter: function(filter)\n  {\n    if (filter.text in this.keywordByFilter)\n    {\n      return this.keywordByFilter[filter.text];\n    }\n    else\n    {\n      return null;\n    }\n  },\n_checkEntryMatch: function(keyword, location, contentType, docDomain, thirdParty, sitekey)\n  {\n    var list = this.filterByKeyword[keyword];\n    for (var i = 0; i < list.length; i++)\n    {\n      var filter = list[i];\n      if (filter == \"#this\")\n      {\n        filter = list;\n      }\n      if (filter.matches(location, contentType, docDomain, thirdParty, sitekey))\n      {\n        return filter;\n      }\n    }\n    return null;\n  },\nmatchesAny: function(location, contentType, docDomain, thirdParty, sitekey)\n  {\n    var candidates = location.toLowerCase().match(/[a-z0-9%]{3,}/g);\n    if (candidates === null)\n    {\n      candidates = [];\n    }\n    candidates.push(\"\");\n    for (var i = 0, l = candidates.length; i < l; i++)\n    {\n      var substr = candidates[i];\n      if (substr in this.filterByKeyword)\n      {\n        var result = this._checkEntryMatch(substr, location, contentType, docDomain, thirdParty, sitekey);\n        if (result)\n        {\n          return result;\n        }\n      }\n    }\n    return null;\n  }\n};\n\nfunction CombinedMatcher()\n{\n  this.blacklist = new Matcher();\n  this.whitelist = new Matcher();\n  this.resultCache = createDict();\n}\nCombinedMatcher.maxCacheEntries = 1000;\nCombinedMatcher.prototype = {\nblacklist: null,\nwhitelist: null,\nresultCache: null,\ncacheEntries: 0,\nclear: function()\n  {\n    this.blacklist.clear();\n    this.whitelist.clear();\n    this.resultCache = createDict();\n    this.cacheEntries = 0;\n  },\nadd: function(filter)\n  {\n    if (filter instanceof WhitelistFilter)\n    {\n      this.whitelist.add(filter);\n    }\n    else\n    {\n      this.blacklist.add(filter);\n    }\n    if (this.cacheEntries > 0)\n    {\n      this.resultCache = createDict();\n      this.cacheEntries = 0;\n    }\n  },\nremove: function(filter)\n  {\n    if (filter instanceof WhitelistFilter)\n    {\n      this.whitelist.remove(filter);\n    }\n    else\n    {\n      this.blacklist.remove(filter);\n    }\n    if (this.cacheEntries > 0)\n    {\n      this.resultCache = createDict();\n      this.cacheEntries = 0;\n    }\n  },\nfindKeyword: function(filter)\n  {\n    if (filter instanceof WhitelistFilter)\n    {\n      return this.whitelist.findKeyword(filter);\n    }\n    else\n    {\n      return this.blacklist.findKeyword(filter);\n    }\n  },\nhasFilter: function(filter)\n  {\n    if (filter instanceof WhitelistFilter)\n    {\n      return this.whitelist.hasFilter(filter);\n    }\n    else\n    {\n      return this.blacklist.hasFilter(filter);\n    }\n  },\ngetKeywordForFilter: function(filter)\n  {\n    if (filter instanceof WhitelistFilter)\n    {\n      return this.whitelist.getKeywordForFilter(filter);\n    }\n    else\n    {\n      return this.blacklist.getKeywordForFilter(filter);\n    }\n  },\nisSlowFilter: function(filter)\n  {\n    var matcher = filter instanceof WhitelistFilter ? this.whitelist : this.blacklist;\n    if (matcher.hasFilter(filter))\n    {\n      return !matcher.getKeywordForFilter(filter);\n    }\n    else\n    {\n      return !matcher.findKeyword(filter);\n    }\n  },\nmatchesAnyInternal: function(location, contentType, docDomain, thirdParty, sitekey)\n  {\n    var candidates = location.toLowerCase().match(/[a-z0-9%]{3,}/g);\n    if (candidates === null)\n    {\n      candidates = [];\n    }\n    candidates.push(\"\");\n    var blacklistHit = null;\n    for (var i = 0, l = candidates.length; i < l; i++)\n    {\n      var substr = candidates[i];\n      if (substr in this.whitelist.filterByKeyword)\n      {\n        var result = this.whitelist._checkEntryMatch(substr, location, contentType, docDomain, thirdParty, sitekey);\n        if (result)\n        {\n          return result;\n        }\n      }\n      if (substr in this.blacklist.filterByKeyword && blacklistHit === null)\n      {\n        blacklistHit = this.blacklist._checkEntryMatch(substr, location, contentType, docDomain, thirdParty, sitekey);\n      }\n    }\n    return blacklistHit;\n  },\nmatchesAny: function(location, docDomain)\n  {\n    var key = location + \" \" + docDomain + \" \";\n    if (key in this.resultCache)\n    {\n      return this.resultCache[key];\n    }\n    var result = this.matchesAnyInternal(location, 0, docDomain, null, null);\n    if (this.cacheEntries >= CombinedMatcher.maxCacheEntries)\n    {\n      this.resultCache = createDict();\n      this.cacheEntries = 0;\n    }\n    this.resultCache[key] = result;\n    this.cacheEntries++;\n    return result;\n  }\n};\nvar defaultMatcher = new CombinedMatcher();\n\nvar direct = 'DIRECT;';\n\nfor (var i = 0; i < rules.length; i++) {\n  defaultMatcher.add(Filter.fromText(rules[i]));\n}\n\nfunction FindProxyForURL(url, host) {\n  if (defaultMatcher.matchesAny(url, host) instanceof BlockingFilter) {\n    return proxy;\n  }\n  return direct;\n}\n"
  },
  {
    "path": "Trojan/File/backchn.acl",
    "content": "#**********************************************************************\n# 04.18\n# 2020年4月18日 20:28:30\n# 转载需要注明版权和来源\n#\n# 屏蔽常用网站、视频、手机rom广告&运营商劫持广告&数据跟踪&开屏广告\n#\n# 参照lhie1的surge规则改编，致谢!! https://github.com/lhie1/Surge\n# 参照scomper的surge规则改编，致谢!! https://gist.github.com/scomper/915b04a974f9e11952babfd0bbb241a8/revisions\n#\n# 更新记录 https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/more/New.md\n# 下载地址 https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/banAD.acl\n#\n# 参数解释：\n# [proxy_all] 默认代理-本规则使用\n# [bypass_all] 默认直连\n# [outbound_block_list] 禁止访问列表 在28行\n# [bypass_list] 直连列表 在6816多行\n# [proxy_list] 代理列表 在1210多行\n# [remote_dns] 远程 DNS 解析 -不加使用本地 DNS\n#\n#**********************************************************************\n\n[proxy_all]\n# 默认代理\n\n#**********************************************************************\n[outbound_block_list]\n# 禁止访问列表\n\n# 广告关键词\n(^|\\.)\\w*admarvel\\w*\\.\\w*$\n(^|\\.)\\w*admaster\\w*\\.\\w*$\n(^|\\.)\\w*adsage\\w*\\.\\w*$\n(^|\\.)\\w*adsensor\\w*\\.\\w*$\n(^|\\.)\\w*adservice\\w*\\.\\w*$\n(^|\\.)\\w*adsh\\w*\\.\\w*$\n(^|\\.)\\w*adsmogo\\w*\\.\\w*$\n(^|\\.)\\w*adsrvmedia\\w*\\.\\w*$\n(^|\\.)\\w*adsserving\\w*\\.\\w*$\n(^|\\.)\\w*adsystem\\w*\\.\\w*$\n(^|\\.)\\w*adwords\\w*\\.\\w*$\n(^|\\.)\\w*analysis\\w*\\.\\w*$\n(^|\\.)\\w*analytics\\w*\\.\\w*$\n(^|\\.)\\w*applovin\\w*\\.\\w*$\n(^|\\.)\\w*appsflyer\\w*\\.\\w*$\n(^|\\.)\\w*domob\\w*\\.\\w*$\n(^|\\.)\\w*duomeng\\w*\\.\\w*$\n(^|\\.)\\w*dwtrack\\w*\\.\\w*$\n(^|\\.)\\w*guanggao\\w*\\.\\w*$\n(^|\\.)\\w*lianmeng\\w*\\.\\w*$\n(^|\\.)\\w*monitor\\w*\\.\\w*$\n(^|\\.)\\w*omgmta\\w*\\.\\w*$\n(^|\\.)\\w*omniture\\w*\\.\\w*$\n(^|\\.)\\w*openx\\w*\\.\\w*$\n(^|\\.)\\w*partnerad\\w*\\.\\w*$\n(^|\\.)\\w*pingfore\\w*\\.\\w*$\n(^|\\.)\\w*socdm\\w*\\.\\w*$\n(^|\\.)\\w*supersonicads\\w*\\.\\w*$\n(^|\\.)\\w*tracking\\w*\\.\\w*$\n(^|\\.)\\w*uedas\\w*\\.\\w*$\n(^|\\.)\\w*umeng\\w*\\.\\w*$\n(^|\\.)\\w*usage\\w*\\.\\w*$\n(^|\\.)\\w*wlmonitor\\w*\\.\\w*$\n(^|\\.)\\w*zjtoolbar\\w*\\.\\w*$\n(^|\\.)ad\\d{0,3}\\..*$\n(^|\\.)ads\\d{0,3}\\..*$\n(^|\\.)tracking\\..*$\n\n# 163\n(^|\\.)(adgeo|bobo|fa|g|g1|gb|nex)(\\.corp|)\\.163\\.com$\n(^|\\.)(analytics|img1|img2|mimg|push)\\.126\\.net$\n(^|\\.)(a|c|clkservice|conv|dsp|dsp-impr2|gorgon|rlogs|union|ydpushserver)\\.youdao\\.com$\n(^|\\.)(nc004x|nc045x|qt002x|tb060x|tb104x)\\.corp\\.youdao\\.com$\n(^|\\.)(haitaoad|iadmatvideo)\\.nosdn\\.127\\.net$\n(^|\\.)ir\\.mail\\.126\\.com$\n(^|\\.)ir\\.mail\\.yeah\\.net$\n(^|\\.)oimagea2\\.ydstatic\\.com$\n(^|\\.)pagechoice\\.net$\n(^|\\.)prom\\.gome\\.com\\.cn$\n(^|\\.)qchannel0\\d\\.cn$\n(^|\\.)static\\.flv\\.uuzuonline\\.com$\n(^|\\.)wanproxy\\.127\\.net$\n\n# 17173\n(^|\\.)cvda\\.17173\\.com$\n(^|\\.)imgapp\\.yeyou\\.com$\n(^|\\.)log1\\.17173\\.com$\n(^|\\.)s\\.17173cdn\\.com$\n(^|\\.)ue\\.yeyoucdn\\.com$\n(^|\\.)vda\\.17173\\.com$\n\n# 178\n(^|\\.)analytics\\.wanmei\\.com$\n(^|\\.)gg\\.stargame\\.com$\n\n# 2345\n(^|\\.)(dl|download|houtai|jifen|minipage|wan|jifendownload|zhushou)\\.2345\\.cn$\n\n# 360\n(^|\\.)3600\\.com$\n(^|\\.)gamebox\\.360\\.cn$\n(^|\\.)jiagu\\.360\\.cn$\n(^|\\.)kuaikan\\.netmon\\.360safe\\.com$\n(^|\\.)leak\\.360\\.cn$\n(^|\\.)lianmeng\\.360\\.cn$\n(^|\\.)pub\\.se\\.360\\.cn$\n(^|\\.)s\\.so\\.360\\.cn$\n(^|\\.)shouji\\.360\\.cn$\n(^|\\.)soft\\.data\\.weather\\.360\\.cn$\n(^|\\.)stat\\.360safe\\.com$\n(^|\\.)stat\\.m\\.360\\.cn$\n(^|\\.)update\\.360safe\\.com$\n(^|\\.)wan\\.360\\.cn$\n\n# 58\n(^|\\.)(58|imp|stat)\\.xgo\\.com\\.cn$\n(^|\\.)(brandshow|jing|track|tracklog)\\.58\\.com$\n\n# Alibaba\n(^|\\.)(adashx4yt|adash-c|ai|re|rj|simaba)\\.m\\.taobao\\.com$\n(^|\\.)(afp|atanx|atanx2|gma|gtms\\d\\d)\\.alicdn\\.com$\n(^|\\.)(fav|m|redirect|srd|tns)\\.simba\\.taobao\\.com$\n(^|\\.)(sdkinit|simaba|tyh)\\.taobao\\.com$\n(^|\\.)acjs\\.aliyun\\.com$\n(^|\\.)(adash-c|adashbc|adashxgc)\\.ut\\.taobao\\.com$\n(^|\\.)alipaylog\\.com$\n(^|\\.)amdc\\.alipay\\.com$\n(^|\\.)click\\.mz\\.simba\\.taobao\\.com$\n(^|\\.)g\\.click\\.taobao\\.com$\n(^|\\.)g\\.tbcdn\\.cn$\n(^|\\.)hydra\\.alibaba\\.com$\n(^|\\.)pindao\\.huoban\\.taobao\\.com$\n(^|\\.)show\\.re\\.taobao\\.com$\n(^|\\.)strip\\.taobaocdn\\.com$\n(^|\\.)userimg\\.qunar\\.com$\n(^|\\.)yiliao\\.hupan\\.com$\n\n# Adobe\n(^|\\.)3dns-2\\.adobe\\.com$\n(^|\\.)3dns-3\\.adobe\\.com$\n(^|\\.)activate\\.adobe\\.com$\n(^|\\.)activate\\.wip3\\.adobe\\.com$\n(^|\\.)activate-sea\\.adobe\\.com$\n(^|\\.)activate-sjc0\\.adobe\\.com$\n(^|\\.)adobe-dns\\.adobe\\.com$\n(^|\\.)adobe-dns-2\\.adobe\\.com$\n(^|\\.)adobe-dns-3\\.adobe\\.com$\n(^|\\.)ereg\\.adobe\\.com$\n(^|\\.)ereg\\.wip3\\.adobe\\.com$\n(^|\\.)geo2\\.adobe\\.com$\n(^|\\.)hl2rcv\\.adobe\\.com$\n(^|\\.)hlrcv\\.stage\\.adobe\\.com$\n(^|\\.)lm\\.licenses\\.adobe\\.com$\n(^|\\.)lmlicenses\\.wip4\\.adobe\\.com$\n(^|\\.)na1r\\.services\\.adobe\\.com$\n(^|\\.)na2m-pr\\.licenses\\.adobe\\.com$\n(^|\\.)practivate\\.adobe\\.com$\n(^|\\.)wip3\\.adobe\\.com$\n(^|\\.)wwis-dubc1-vip60\\.adobe\\.com$\n\n# Apple\n(^|\\.)adserver\\.unityads\\.unity3d\\.com$\n\n# AutoHome\n(^|\\.)(33|adproxy|al|alert|applogapi|c|cmx|dspmnt|pcd|pvx|rd|rdx|stats)\\.autohome\\.com\\.cn$\n(^|\\.)adm\\d\\.autoimg\\.cn$\n(^|\\.)push\\.app\\.autohome\\.com\\.cn$\n\n# Baidu\n(^|\\.)(a|adm|adscdn|afd|als|anquan|appc|as|c|cb|cbjs|cbjslog|cjhq|cpro|cpro2|cpu|cpu-admin|crs|drmcmm|e|eclick|eiv|entry)\\.baidu\\.(com|cn)$\n(^|\\.)(hc|hm|hmma|hpd|imageplus|ma|mobads-logs|mobads|mtj|nsclick)\\.baidu\\.(com|cn)$\n(^|\\.)(pups|rj|rp|spcode|tk|tongji|tuisong|ucstat|ufosdk|union|utility|utk|videopush|wangmeng|wm|znsv)\\.baidu\\.(com|cn)$\n(^|\\.)ad\\.duapps\\.com$\n(^|\\.)ad\\.player\\.baidu\\.com$\n(^|\\.)adx\\.xiaodutv\\.com$\n(^|\\.)ae\\.bdstatic\\.com$\n(^|\\.)antivirus\\.baidu\\.com$\n(^|\\.)api\\.cpu\\.baidu\\.com$\n(^|\\.)api\\.mobula\\.sdk\\.duapps\\.com$\n(^|\\.)ashifen\\.com$\n(^|\\.)baichuan\\.baidu\\.com$\n(^|\\.)baidu9635\\.com$\n(^|\\.)baidustatic\\.com$\n(^|\\.)baidutv\\.baidu\\.com$\n(^|\\.)baikebcs\\.bdimg\\.com$\n(^|\\.)banlv\\.baidu\\.com$\n(^|\\.)bar\\.baidu\\.com$\n(^|\\.)bdimg\\.share\\.baidu\\.com$\n(^|\\.)bdplus\\.baidu\\.com$\n(^|\\.)btlaunch\\.baidu\\.com$\n(^|\\.)cleaner\\.baidu\\.com$\n(^|\\.)click\\.bes\\.baidu\\.com$\n(^|\\.)click\\.hm\\.baidu\\.com$\n(^|\\.)click\\.qianqian\\.com$\n(^|\\.)cm\\.baidu\\.com$\n(^|\\.)cm\\.pos\\.baidu\\.com$\n(^|\\.)cpro\\.baidustatic\\.com$\n(^|\\.)cpro\\.tieba\\.baidu\\.com$\n(^|\\.)cpro\\.zhidao\\.baidu\\.com$\n(^|\\.)datax\\.baidu\\.com$\n(^|\\.)dl-vip\\.bav\\.baidu\\.com$\n(^|\\.)dl-vip\\.pcfaster\\.baidu\\.co\\.th$\n(^|\\.)dl1sw\\.baidu\\.com$\n(^|\\.)dl2\\.bav\\.baidu\\.com$\n(^|\\.)dl\\.client\\.baidu\\.com$\n(^|\\.)dl\\.ops\\.baidu\\.com$\n(^|\\.)dlsw\\.baidu\\.com$\n(^|\\.)dlsw\\.br\\.baidu\\.com$\n(^|\\.)download\\.bav\\.baidu\\.com$\n(^|\\.)download\\.sd\\.baidu\\.com$\n(^|\\.)drmcmm\\.baidu\\.com$\n(^|\\.)dup\\.baidustatic\\.com$\n(^|\\.)dxp\\.baidu\\.com$\n(^|\\.)dzl\\.baidu\\.com$\n(^|\\.)ecma\\.bdimg\\.com$\n(^|\\.)ecmb\\.bdimg\\.com$\n(^|\\.)ecmc\\.bdimg\\.com$\n(^|\\.)em\\.baidu\\.com$\n(^|\\.)ers\\.baidu\\.com$\n(^|\\.)f10\\.baidu\\.com$\n(^|\\.)fc-\\.cdn\\.bcebos\\.com$\n(^|\\.)fc-feed\\.cdn\\.bcebos\\.com$\n(^|\\.)fclick\\.baidu\\.com$\n(^|\\.)feed\\.baidu\\.com$\n(^|\\.)fexclick\\.baidu\\.com$\n(^|\\.)g\\.baidu\\.com$\n(^|\\.)gimg\\.baidu\\.com$\n(^|\\.)guanjia\\.baidu\\.com$\n(^|\\.)idm-su\\.baidu\\.com$\n(^|\\.)iebar\\.baidu\\.com$\n(^|\\.)ikcode\\.baidu\\.com$\n(^|\\.)img01\\.taotaosou\\.cn$\n(^|\\.)img\\.taotaosou\\.cn$\n(^|\\.)itsdata\\.map\\.baidu\\.com$\n(^|\\.)j\\.br\\.baidu\\.com$\n(^|\\.)kstj\\.baidu\\.com$\n(^|\\.)log\\.music\\.baidu\\.com$\n(^|\\.)log\\.nuomi\\.com$\n(^|\\.)m1\\.baidu\\.com$\n(^|\\.)mg09\\.zhaopin\\.com$\n(^|\\.)mipcache\\.bdstatic\\.com$\n(^|\\.)mpro\\.baidu\\.com$\n(^|\\.)msite\\.baidu\\.com$\n(^|\\.)neirong\\.baidu\\.com$\n(^|\\.)nsclickvideo\\.baidu\\.com$\n(^|\\.)openrcv\\.baidu\\.com$\n(^|\\.)pc\\.videoclick\\.baidu\\.com$\n(^|\\.)pos\\.baidu\\.com$\n(^|\\.)pups\\.bdimg\\.com$\n(^|\\.)push\\.music\\.baidu\\.com$\n(^|\\.)push\\.zhanzhang\\.baidu\\.com$\n(^|\\.)qchannel0\\d\\.cn$\n(^|\\.)qianclick\\.baidu\\.com$\n(^|\\.)release\\.baidu\\.com$\n(^|\\.)res\\.limei\\.com$\n(^|\\.)res\\.mi\\.baidu\\.com$\n(^|\\.)rigel\\.baidustatic\\.com$\n(^|\\.)river\\.zhidao\\.baidu\\.com$\n(^|\\.)rplog\\.baidu\\.com$\n(^|\\.)s\\.baidu\\.com$\n(^|\\.)s\\.cpro\\.baidu\\.com$\n(^|\\.)sa\\.tuisong\\.baidu\\.com$\n(^|\\.)sclick\\.baidu\\.com$\n(^|\\.)sestat\\.baidu\\.com$\n(^|\\.)shadu\\.baidu\\.com$\n(^|\\.)share\\.baidu\\.com$\n(^|\\.)shifen\\.com$\n(^|\\.)snippet\\.pos\\.baidu\\.com$\n(^|\\.)sobar\\.baidu\\.com$\n(^|\\.)sobartop\\.baidu\\.com$\n(^|\\.)stat\\.v\\.baidu\\.com$\n(^|\\.)su\\.bdimg\\.com$\n(^|\\.)su\\.bdstatic\\.com$\n(^|\\.)t10\\.baidu\\.com$\n(^|\\.)t11\\.baidu\\.com$\n(^|\\.)t12\\.baidu\\.com$\n(^|\\.)tkweb\\.baidu\\.com$\n(^|\\.)tob-cms\\.bj\\.bcebos\\.com$\n(^|\\.)toolbar\\.baidu\\.com$\n(^|\\.)tracker\\.baidu\\.com$\n(^|\\.)tuijian\\.baidu\\.com$\n(^|\\.)uat1\\.bfsspadserver\\.8le8le\\.com$\n(^|\\.)ubmcmm\\.baidustatic\\.com$\n(^|\\.)ulic\\.baidu\\.com$\n(^|\\.)ulog\\.imap\\.baidu\\.com$\n(^|\\.)unionimage\\.baidu\\.com$\n(^|\\.)vv84\\.bj\\.bcebos\\.com$\n(^|\\.)w\\.gdown\\.baidu\\.com$\n(^|\\.)w\\.x\\.baidu\\.com$\n(^|\\.)weishi\\.baidu\\.com$\n(^|\\.)wenku-cms\\.bj\\.bcebos\\.com$\n(^|\\.)wisepush\\.video\\.baidu\\.com$\n(^|\\.)wn\\.pos\\.baidu\\.com$\n(^|\\.)zz\\.bdstatic\\.com$\n(^|\\.)zzy1\\.quyaoya\\.com$\n\n# Book-app 起点 掌阅 书旗 宜搜\n(^|\\.)(adm|assets|tjlog)(\\.ps|)\\.easou\\.com$\n(^|\\.)(ad|push|sys)\\.zhangyue\\.com$\n(^|\\.)(cj|game|tongji)\\.qidian\\.com$\n(^|\\.)aishowbger\\.com$\n(^|\\.)api\\.itaoxiaoshuo\\.com$\n(^|\\.)bbcoe\\.cn$\n(^|\\.)dkeyn\\.com$\n(^|\\.)drdwy\\.com$\n(^|\\.)e701\\.net$\n(^|\\.)e\\.aa985\\.cn$\n(^|\\.)e\\.v02u9\\.cn$\n(^|\\.)ehxyz\\.com$\n(^|\\.)ethod\\.gzgmjcx\\.com$\n(^|\\.)focuscat\\.com$\n(^|\\.)hdswgc\\.com$\n(^|\\.)jyd\\.fjzdmy\\.com$\n(^|\\.)m\\.ourlj\\.com$\n(^|\\.)m\\.txtxr\\.com$\n(^|\\.)m\\.vsxet\\.com$\n(^|\\.)miam4\\.cn$\n(^|\\.)o\\.if\\.qidian\\.com$\n(^|\\.)p\\.vq6nsu\\.cn$\n(^|\\.)picture\\.duokan\\.com$\n(^|\\.)pyerc\\.com$\n(^|\\.)s1\\.cmfu\\.com$\n(^|\\.)sc\\.shayugg\\.com$\n(^|\\.)sdk\\.cferw\\.com$\n(^|\\.)sezvc\\.com$\n(^|\\.)ut2\\.shuqistat\\.com$\n(^|\\.)xgcsr\\.com$\n(^|\\.)xjq\\.jxmqkj\\.com$\n(^|\\.)xpe\\.cxaerp\\.com$\n(^|\\.)xtzxmy\\.com$\n(^|\\.)xyrkl\\.com$\n(^|\\.)zhuanfakong\\.com$\n\n# ByteDance 头条抖音\n(^|\\.)(ad|sm|dsp|nativeapp|partner|track)\\.toutiao\\.com$\n(^|\\.)ic\\.snssdk\\.com$\n(^|\\.)log\\.snssdk\\.com$\n(^|\\.)xlog\\.snssdk\\.com$\n\n# Dangdang\n(^|\\.)(a|click|schprompt|t)\\.dangdang\\.com$\n\n# Duomi\n(^|\\.)ad\\.duomi\\.com$\n(^|\\.)boxshows\\.com$\n\n# Facebook\n(^|\\.)staticxx\\.facebook\\.com$\n\n# Fang\n(^|\\.)click1n\\.soufun\\.com$\n(^|\\.)clickm\\.fang\\.com$\n(^|\\.)clickn\\.fang\\.com$\n(^|\\.)countpvn\\.light\\.fang\\.com$\n(^|\\.)countubn\\.light\\.soufun\\.com$\n(^|\\.)mshow\\.fang\\.com$\n(^|\\.)tongji\\.home\\.soufun\\.com$\n\n# Google\n(^|\\.)admob\\.com$\n(^|\\.)ads\\.gmodules\\.com$\n(^|\\.)ads\\.google\\.com$\n(^|\\.)adservice\\.google\\.com$\n(^|\\.)afd\\.l\\.google\\.com$\n(^|\\.)badad\\.googleplex\\.com$\n(^|\\.)csi\\.gstatic\\.com$\n(^|\\.)doubleclick(\\.com|\\.net)$\n(^|\\.)google-analytics\\.com$\n(^|\\.)googleadservices\\.com$\n(^|\\.)googleadsserving\\.cn$\n(^|\\.)googlecommerce\\.com$\n(^|\\.)googlesyndication\\.com$\n(^|\\.)mobileads\\.google\\.com$\n(^|\\.)pagead-tpc\\.l\\.google\\.com$\n(^|\\.)pagead\\.google\\.com$\n(^|\\.)pagead\\.l\\.google\\.com$\n(^|\\.)service\\.urchin\\.com$\n\n# JD\n(^|\\.)(c-nfa|img-x|jrclick|jzt|policy)\\.jd\\.com$\n(^|\\.)ads\\.union\\.jd\\.com$\n(^|\\.)cps\\.360buy\\.com$\n(^|\\.)stat\\.m\\.jd\\.com$\n\n# Kugou\n(^|\\.)(bssdl|bssdlbig|d|downmobile|fanxing|gad|game|gamebox|gg|install|install2|kgmobilestat|minidcsc|mo|mobilelog|mvads|p|rtmonitor|sdn|tj)\\.kugou\\.com$\n(^|\\.)(msg|push|update)\\.mobile\\.kugou\\.com$\n(^|\\.)ads\\.service\\.kugou\\.com$\n(^|\\.)gcapi\\.sy\\.kugou\\.com$\n(^|\\.)kuaikaiapp\\.com$\n(^|\\.)log\\.stat\\.kugou\\.com$\n(^|\\.)log\\.web\\.kugou\\.com$\n\n# Kuwo\n(^|\\.)(deliver|g|log|kwmsg|mobilead|msclick2|msphoneclick|updatepage|wa|webstat)\\.kuwo\\.cn$\n(^|\\.)apk\\.shouji\\.koowo\\.com$\n(^|\\.)g\\.koowo\\.com$\n\n# Meizu flyme 魅族\n(^|\\.)(aider-res|api-flow|api-game|api-push|cal|ebook|game-res|infocenter|openapi-news|reader|tongji-res1|tongji|uxip)\\.meizu\\.com$\n(^|\\.)(bro|t-e|t-flow)\\.flyme\\.cn$\n(^|\\.)(ebook|game|push|reader|upush)\\.res\\.meizu\\.com$\n(^|\\.)aries\\.mzres\\.com$\n(^|\\.)umid\\.orion\\.meizu\\.com$\n\n# Meitu\n(^|\\.)(corp|gg|message|tuiguang)\\.meitu\\.com$\n(^|\\.)(dc|mdc|rabbit)\\.meitustat\\.com$\n(^|\\.)a\\.koudai\\.com$\n(^|\\.)adui\\.tg\\.meitu\\.com$\n(^|\\.)meitubeauty\\.meitudata\\.com$\n(^|\\.)rabbit\\.tg\\.meitu\\.com$\n(^|\\.)xiuxiu\\.android\\.dl\\.meitu\\.com$\n(^|\\.)xiuxiu\\.mobile\\.meitudata\\.com$\n\n# Miui 小米\n(^|\\.)(ad|ad1|shenghuo|xmpush)\\.xiaomi\\.com$\n(^|\\.)(a|wtradv)\\.market\\.xiaomi\\.com$\n(^|\\.)(bss|de|dvb|jellyfish|stat)\\.pandora\\.xiaomi\\.com$\n(^|\\.)(d|migc|migcreport|mis)\\.g\\.mi\\.com$\n(^|\\.)(notice|ppurifier)\\.game\\.xiaomi\\.com$\n(^|\\.)(r|security)\\.browser\\.miui\\.com$\n(^|\\.)tracking\\.miui\\.com$\n(^|\\.)union\\.mi\\.com$\n\n# Moji\n(^|\\.)ad\\.api\\.moji\\.com$\n(^|\\.)app\\.moji001\\.com$\n(^|\\.)cdn\\.moji\\.com$\n(^|\\.)cdn\\.moji002\\.com$\n(^|\\.)cdn2\\.moji002\\.com$\n(^|\\.)fds\\.api\\.moji\\.com$\n(^|\\.)log\\.moji\\.com$\n(^|\\.)stat\\.moji\\.com$\n(^|\\.)ugc\\.moji001\\.com$\n\n# Qingting\\.fm\n(^|\\.)(ad|admgr|logger)\\.qingting\\.fm$\n(^|\\.)dload\\.qd\\.qingting\\.fm$\n(^|\\.)s\\.qd\\.qingting\\.fm$\n(^|\\.)s\\.qd\\.qingtingfm\\.com$\n\n# QQ\n(^|\\.)\\w*omgmta\\w*\\.\\w*$\n(^|\\.)(act|adsfile|bugly|buluo|gdt|monitor|pingma|pingtcss|report|tajs|tcss|uu)\\.qq\\.com$\n(^|\\.)ad\\.qun\\.qq\\.com$\n\n# RenRen\n(^|\\.)jebe\\.renren\\.com$\n(^|\\.)ebp\\.renren\\.com$\n(^|\\.)jebe\\.xnimg\\.cn$\n\n# Sina\n(^|\\.)(adimg|pay|sax|sdkapp|sdkclick|trends|u1\\.img|wbapp|wbclick|wbpctips)\\.mobile\\.sina\\.cn$\n(^|\\.)(ad|ad\\d|adbox|adm|d\\d|dcads|dmp|leju|sax|sax\\d|slog)\\.sina\\.com(\\.cn|)$\n(^|\\.)(alitui|biz|game|wax)\\.weibo\\.com(\\.cn|)$\n(^|\\.)cre\\.dp\\.sina\\.cn$\n(^|\\.)gw5\\.push\\.mcp\\.weibo\\.cn$\n(^|\\.)log\\.mix\\.sina\\.com\\.cn$\n(^|\\.)mobileads\\.dx\\.cn$\n(^|\\.)newspush\\.sinajs\\.cn$\n(^|\\.)sdkapp\\.uve\\.weibo\\.com$\n(^|\\.)tui\\.weibo\\.com$\n(^|\\.)wbapp\\.uve\\.weibo\\.com$\n(^|\\.)zymo\\.mps\\.weibo\\.com$\n\n# Sougou\n(^|\\.)(123|adsence|brand|cpc|epro|fair|files2|goto|golden1|inte|iwan|lu|pb|pd|pv|theta|wan|wangmeng)\\.sogou\\.com$\n(^|\\.)(123|galaxy|lu)\\.sogoucdn\\.com$\n(^|\\.)amfi\\.gou\\.sogou\\.com$\n\n# Teleplus\n(^|\\.)applovin\\.com$\n(^|\\.)guangzhuiyuan\\.com$\n\n# Twitter\n(^|\\.)(ads|syndication|syndication-o|analytics|scribe|p)\\.twitter\\.com$\n(^|\\.)ads-twitter\\.com$\n(^|\\.)tellapart\\.com$\n(^|\\.)urls\\.api\\.twitter\\.com$\n\n# UC ali\n(^|\\.)(adslot|applog|track)\\.uc\\.cn$\n(^|\\.)(cms|puds|uc|ucsec1|ucsec)\\.ucweb\\.com$\n(^|\\.)(log|patriot)\\.cs\\.pp\\.cn$\n(^|\\.)api\\.mp\\.uc\\.cn$\n(^|\\.)client\\.video\\.ucweb\\.com$\n(^|\\.)dispatcher\\.upmc\\.uc\\.cn$\n(^|\\.)huichuan\\.sm\\.cn$\n(^|\\.)iflow\\.uczzd(\\.\\w{2,3}){1,2}$\n(^|\\.)m\\.uczzd\\.cn$\n(^|\\.)server\\.m\\.pp\\.cn$\n(^|\\.)u\\.uc123\\.com$\n(^|\\.)u\\.ucfly\\.com$\n\n# Weifeng\n(^|\\.)aoodoo\\.feng\\.com$\n(^|\\.)fengbuy\\.com$\n(^|\\.)push\\.feng\\.com$\n(^|\\.)we\\.tm$\n\n# WPS Office\n(^|\\.)(bannera|rating6|cloudservice.*)\\.kingsoft-office-service\\.com$\n(^|\\.)(docerad|gou|info|minfo|notify|pcfg|push|wpsweb-dc)\\.wps\\.cn$\n(^|\\.)ad\\.docer\\.wps\\.cn$\n(^|\\.)adm\\.zookingsoft\\.com$\n(^|\\.)bole\\.shangshufang\\.ksosoft\\.com$\n(^|\\.)counter\\.kingsoft\\.com$\n(^|\\.)dl\\.op\\.wpscdn\\.cn$\n(^|\\.)hoplink\\.ksosoft\\.com$\n(^|\\.)ic\\.ksosoft\\.com$\n(^|\\.)img.*\\.mini\\.cache\\.wps\\.cn$\n(^|\\.)img\\.gou\\.wpscdn\\.cn$\n(^|\\.)ios-informationplatform\\.wps\\.cn$\n(^|\\.)mo\\.res\\.wpscdn\\.cn$\n(^|\\.)news\\.docer\\.com$\n(^|\\.)news\\.op\\.wpscdn\\.cn$\n(^|\\.)pc\\.uf\\.ksosoft\\.com$\n(^|\\.)pixiu\\.shangshufang\\.ksosoft\\.com$\n(^|\\.)up\\.wps\\.kingsoft\\.com$\n\n# Wi-Fi key\n(^|\\.)(c|cdsget|news-imgpb|wifiapi\\d\\d|wkanc)\\.51y5\\.net$\n\n# Ximalaya 喜马拉雅\n(^|\\.)(adse|linkeye|location|xdcs-collector)\\.ximalaya\\.com$\n\n# Xunlei 迅雷app&看看\n(^|\\.)biz5\\.kankan\\.com$\n(^|\\.)float\\.kankan\\.com$\n(^|\\.)logic\\.cpm\\.cm\\.kankan\\.com$\n(^|\\.)hub5btmain\\.sandai\\.net$\n(^|\\.)hub5emu\\.sandai\\.net$\n(^|\\.)upgrade\\.xl9\\.xunlei\\.com$\n\n# Yahoo\n(^|\\.)(ads|adserver|adss|analytics|beap-bc|comet|geo|gemini|p3p|ybp)\\.yahoo\\.com$\n(^|\\.)(analytics|locdrop|onepush)\\.query\\.yahoo\\.com$\n(^|\\.)(ard|ane|yads)\\.yahoo\\.co\\.jp$\n(^|\\.)(js-apac-ss|partnerads)\\.ysm\\.yahoo\\.com$\n(^|\\.)ad\\.wretch\\.cc$\n(^|\\.)clicks\\.beap\\.bc\\.yahoo\\.com$\n(^|\\.)doubleplay-conf-yql\\.media\\.yahoo\\.com$\n(^|\\.)flurry\\.com$\n(^|\\.)m\\.yap\\.yahoo\\.com$\n(^|\\.)uservoice\\.com$\n(^|\\.)ws\\.progrss\\.yahoo\\.com$\n\n# Zhihu\n(^|\\.)(sugar|zhihu-web-analytics)\\.zhihu\\.com$\n\n# Ads in Video apps********************下面都是\n\n# 6间房\n(^|\\.)(shrek|simba|union)\\.6\\.cn$\n\n# Baofeng 暴风影音\n(^|\\.)logger\\.baofeng\\.com$\n(^|\\.)xs\\.houyi\\.baofeng\\.net$\n\n# Douyu\n(^|\\.)dotcounter\\.douyutv\\.com$\n\n# Fenghuang 凤凰TV\n(^|\\.)(aoodoo|push|yes1)\\.feng\\.com$\n(^|\\.)(game|stadig)\\.ifeng\\.com$\n(^|\\.)api\\.newad\\.ifeng\\.com$\n(^|\\.)exp\\.3g\\.ifeng\\.com$\n(^|\\.)iis3g\\.deliver\\.ifeng\\.com$\n(^|\\.)mfp\\.deliver\\.ifeng\\.com$\n\n# Funshion 风行\n(^|\\.)(pub|adm|jobsfe|po|pv|stat)\\.funshion\\.com$\n\n# iqiyi PPS 爱奇艺\n(^|\\.)ad\\.m\\.iqiyi\\.com$\n(^|\\.)afp\\.iqiyi\\.com$\n(^|\\.)c\\.uaa\\.iqiyi\\.com$\n(^|\\.)cloudpush\\.iqiyi\\.com$\n(^|\\.)cm\\.passport\\.iqiyi\\.com$\n(^|\\.)cupid\\.iqiyi\\.com$\n(^|\\.)emoticon\\.sns\\.iqiyi\\.com$\n(^|\\.)gamecenter\\.iqiyi\\.com$\n(^|\\.)ifacelog\\.iqiyi\\.com$\n(^|\\.)mbdlog\\.iqiyi\\.com$\n(^|\\.)meta\\.video\\.qiyi\\.com$\n(^|\\.)msg1\\.video\\.qiyi\\.com$\n(^|\\.)msg2\\.video\\.qiyi\\.com$\n(^|\\.)msg\\.71\\.am$\n(^|\\.)paopao\\.iqiyi\\.com$\n(^|\\.)paopao\\d\\.qiyipic\\.com$\n(^|\\.)policy\\.video\\.iqiyi\\.com$\n(^|\\.)yuedu\\.iqiyi\\.com$\n101.227.200.0/24\n101.227.200.11/32\n101.227.200.28/32\n101.227.97.240/32\n124.192.153.42/32\n\n# Ku6 酷6\n(^|\\.)gug\\.ku6cdn\\.com$\n(^|\\.)st\\.vq\\.ku6\\.cn$\n(^|\\.)pq\\.stat\\.ku6\\.com$\n(^|\\.)static\\.ku6\\.com$\n\n# LeTV 乐视\n(^|\\.)(ark|dc|fz|g3|minisite|pro|stat)\\.letv\\.com$\n(^|\\.)(1|2)\\.letvlive\\.com$\n(^|\\.)(i0|i3)\\.letvimg\\.com$\n(^|\\.)game\\.letvstore\\.com$\n(^|\\.)n\\.mark\\.letv\\.com$\n(^|\\.)pro\\.hoye\\.letv\\.com$\n(^|\\.)static\\.app\\.m\\.letv\\.com$\n\n# MGTV 芒果TV\n(^|\\.)(click|da|log|p2|res)\\.hunantv\\.com$\n(^|\\.)da\\.mgtv\\.com$\n(^|\\.)log\\.v2\\.hunantv\\.com$\n\n# Sohu 搜狐\n(^|\\.)(888|lm|push)\\.tv\\.sohu\\.com$\n(^|\\.)(aty|bd|click|click2|ctr|pv|pb|wl|um)\\.hd\\.sohu\\.com$\n(^|\\.)(ads|adnet|aty|epro|go|golden1|hui|inte|uranus|wan|yule|pv)\\.sohu\\.com$\n(^|\\.)(epro|golden1|inte|uranus|pv)\\.sogou\\.com$\n(^|\\.)(inte|lu|theta)\\.sogoucdn\\.com$\n\n# PPTV、PPLive\n(^|\\.)(de|jp)\\.as\\.pptv\\.com$\n(^|\\.)(app|as)\\.aplus\\.pptv\\.com$\n(^|\\.)afp\\.pplive\\.com$\n(^|\\.)asimgs\\.pplive\\.cn$\n(^|\\.)pp2\\.pptv\\.com$\n(^|\\.)stat\\.pptv\\.com$\n\n# QQ Live\n(^|\\.)aiseet\\.aa\\.atianqi\\.com$\n(^|\\.)aiseet\\.atianqi\\.com$\n(^|\\.)btrace\\.video\\.qq\\.com$\n(^|\\.)c\\.l\\.qq\\.com$\n(^|\\.)dp3\\.qq\\.com$\n(^|\\.)livep\\.l\\.qq\\.com$\n(^|\\.)lives\\.l\\.qq\\.com$\n(^|\\.)livew\\.l\\.qq\\.com$\n(^|\\.)mcgi\\.v\\.qq\\.com$\n(^|\\.)mdevstat\\.qqlive\\.qq\\.com$\n(^|\\.)omgmta1\\.qq\\.com$\n(^|\\.)p\\.l\\.qq\\.com$\n(^|\\.)rcgi\\.video\\.qq\\.com$\n(^|\\.)t\\.l\\.qq\\.com$\n(^|\\.)u\\.l\\.qq\\.com$\n\n# Youku & Tudou\n(^|\\.)(actives|dmapp|hz|iyes|l|lstat|lvip|msg|mobilemsg|myes|passport-log|stat|tdrec|wan|ykatr|ykrec|ykrectab)\\.youku\\.com$\n(^|\\.)(adcontrol|adplay|goods|iwstat|nstat|stat|stats)\\.tudou\\.com$\n(^|\\.)(ad|gamex)\\.mobile\\.youku\\.com$\n(^|\\.)(dev-push|push|sdk)\\.m\\.youku\\.com$\n(^|\\.)(p|r|v)\\.l\\.youku\\.com$\n(^|\\.)a-dxk\\.play\\.api\\.3g\\.youku\\.com$\n(^|\\.)ad\\.api\\.3g(\\.tudou|\\.youku)\\.com$\n(^|\\.)ad\\.api\\.mobile\\.youku\\.com$\n(^|\\.)b\\.smartvideo\\.youku\\.com$\n(^|\\.)c\\.yes\\.youku\\.com$\n(^|\\.)dl\\.g\\.youku\\.com$\n(^|\\.)e\\.stat\\.ykimg\\.com$\n(^|\\.)hudong\\.pl\\.youku\\.com$\n(^|\\.)l\\.ykimg\\.com$\n(^|\\.)p-log\\.ykimg\\.com$\n(^|\\.)p\\.l\\.ykimg\\.com$\n(^|\\.)s\\.p\\.youku\\.com$\n(^|\\.)store\\.tv\\.api\\.3g\\.youku\\.com$\n(^|\\.)store\\.xl\\.api\\.3g\\.youku\\.com$\n(^|\\.)test\\.ott\\.youku\\.com$\n(^|\\.)val\\.api\\.youku\\.com$\n117.177.248.17/32\n117.177.248.41/32\n223.87.176.139/32\n223.87.176.176/32\n223.87.177.180/32\n223.87.177.182/32\n223.87.177.184/32\n223.87.177.43/32\n223.87.177.47/32\n223.87.177.80/32\n223.87.182.101/32\n223.87.182.102/32\n223.87.182.11/32\n223.87.182.52/32\n\n# Youtube\n(^|\\.)azabu-u\\.ac\\.jp$\n(^|\\.)couchcoaster\\.jp$\n(^|\\.)delivery\\.dmkt-sp\\.jp$\n(^|\\.)ehg-youtube\\.hitbox\\.com$\n(^|\\.)m-78\\.jp$\n(^|\\.)nichibenren\\.or\\.jp$\n(^|\\.)nicorette\\.co\\.kr$\n(^|\\.)ssl-youtube\\.2cnt\\.net$\n(^|\\.)youtube\\.112\\.2o7\\.net$\n(^|\\.)youtube\\.2cnt\\.net$\n\n# Others ads in Video apps\n(^|\\.)(acsystem|ads|afp)\\.wasu\\.tv$\n(^|\\.)ads\\.cdn\\.tvb\\.com$\n(^|\\.)c\\.algovid\\.com$\n(^|\\.)cc\\.xtgreat\\.com$\n(^|\\.)d\\.dsp\\.imageter\\.com$\n(^|\\.)gg\\.jtertp\\.com$\n(^|\\.)gridsum-vd\\.cntv\\.cn$\n(^|\\.)kwflvcdn\\.000dn\\.com$\n(^|\\.)logstat\\.t\\.sfht\\.com$\n(^|\\.)match\\.rtbidder\\.net$\n(^|\\.)n-st\\.vip\\.com$\n(^|\\.)pop\\.uusee\\.com$\n(^|\\.)static\\.bshare\\.cn$\n(^|\\.)static\\.duoshuo\\.com$\n(^|\\.)t\\.cr-nielsen\\.com$\n(^|\\.)terren\\.cntv\\.cn$\n\n# Ads in Video apps end ********************上面都是\n\n\n# 常用网站广告****************\n(^|\\.)(168|adshownew|stat)\\.it168\\.com$\n(^|\\.)(1|2)\\.win7china\\.com$\n(^|\\.)(801|803|806|808|bdj|dol|click)\\.(tianya|tianyaui)\\.cn$\n(^|\\.)(92x|its-dori)\\.tumblr\\.com$\n(^|\\.)(adm|eq|fund|ozone|stat|vaserviece)\\.10jqka\\.com\\.cn$\n(^|\\.)(ad|adadmin|ads)\\.house365\\.com$\n(^|\\.)(ad|ads|counter)\\.csdn\\.net$\n(^|\\.)(ad|analytics|click|ganjituiguang|sta|tralog)\\.ganji\\.com$\n(^|\\.)(app-monitor|client-api|grand|mobile-pubt|newton-api)\\.ele\\.me$\n(^|\\.)(bd1|bd2)\\.52che\\.com$\n(^|\\.)(click|media|pv)\\.(cheshi|cheshi-img)\\.com$\n(^|\\.)(d0|dw|pv)\\.xcar\\.com\\.cn$\n(^|\\.)a1\\.itc\\.cn$\n(^|\\.)ad\\.12306\\.cn$\n(^|\\.)ad\\.3\\.cn$\n(^|\\.)ad\\.95306\\.cn$\n(^|\\.)ad\\.caiyunapp\\.com$\n(^|\\.)ad\\.cctv\\.com$\n(^|\\.)ad\\.cmvideo\\.cn$\n(^|\\.)ad\\.thepaper\\.cn$\n(^|\\.)ad\\.unimhk\\.com$\n(^|\\.)adhome\\.1fangchan\\.com$\n(^|\\.)adm\\.easou\\.com$\n(^|\\.)ads\\.feedly\\.com$\n(^|\\.)ads\\.genieessp\\.com$\n(^|\\.)ads\\.linkedin\\.com$\n(^|\\.)adv\\.ccb\\.com$\n(^|\\.)advert\\.api\\.thejoyrun\\.com$\n(^|\\.)api-deal\\.kechenggezi\\.com$\n(^|\\.)api-z\\.weidian\\.com$\n(^|\\.)bam\\.nr-data\\.net$\n(^|\\.)mobileads\\.msn\\.com$\n(^|\\.)bat\\.bing\\.com$\n(^|\\.)beacon\\.tingyun\\.com$\n(^|\\.)cdn\\.jiuzhilan\\.com$\n(^|\\.)collector\\.githubapp\\.com$\n(^|\\.)de\\.soquair\\.com$\n(^|\\.)e\\.nexac\\.com$\n(^|\\.)erebor\\.douban\\.com$\n(^|\\.)exp\\.17wo\\.cn$\n(^|\\.)game\\.51yund\\.com$\n(^|\\.)hosting\\.miarroba\\.info$\n(^|\\.)iadsdk\\.apple\\.com$\n(^|\\.)image\\.gentags\\.com$\n(^|\\.)log\\.outbrain\\.com$\n(^|\\.)m\\.12306media\\.com$\n(^|\\.)n\\.cosbot\\.cn$\n(^|\\.)pdl\\.gionee\\.com$\n(^|\\.)pica-juicy\\.picacomic\\.com$\n(^|\\.)pixel\\.wp\\.com$\n(^|\\.)pub\\.mop\\.com$\n(^|\\.)push\\.wandoujia\\.com$\n(^|\\.)qdp\\.qidian\\.com$\n(^|\\.)res\\.gwifi\\.com\\.cn$\n(^|\\.)ssp\\.kssws\\.ks-cdn\\.com$\n(^|\\.)stats\\.chinaz\\.com$\n(^|\\.)stats\\.developingperspective\\.com$\n(^|\\.)tjlog\\.easou\\.com$\n(^|\\.)tjlog\\.ps\\.easou\\.com$\n(^|\\.)track\\.hujiang\\.com$\n(^|\\.)tracker\\.yhd\\.com$\n(^|\\.)up\\.qingdaonews\\.com$\n\n# 广告联盟-国内****************\n(^|\\.)09mk\\.cn$\n(^|\\.)100peng\\.com$\n(^|\\.)114la\\.com$\n(^|\\.)123juzi\\.net$\n(^|\\.)138lm\\.com$\n(^|\\.)17un\\.com$\n(^|\\.)2cnt\\.net$\n(^|\\.)3gmimo\\.com$\n(^|\\.)3xx\\.vip$\n(^|\\.)51\\.la$\n(^|\\.)51taifu\\.com$\n(^|\\.)51yes\\.com$\n(^|\\.)600ad\\.com$\n(^|\\.)6dad\\.com$\n(^|\\.)70e\\.com$\n(^|\\.)86\\.cc$\n(^|\\.)8le8le\\.com$\n(^|\\.)8ox\\.cn$\n(^|\\.)95558000\\.com$\n(^|\\.)99click\\.com$\n(^|\\.)99youmeng\\.com$\n(^|\\.)a3p4\\.net$\n(^|\\.)acs86\\.com$\n(^|\\.)acxiom-online\\.com$\n(^|\\.)ad-brix\\.com$\n(^|\\.)ad-delivery\\.net$\n(^|\\.)ad-locus\\.com$\n(^|\\.)ad-plus\\.cn$\n(^|\\.)ad7\\.com$\n(^|\\.)adadapted\\.com$\n(^|\\.)adadvisor\\.net$\n(^|\\.)adap\\.tv$\n(^|\\.)adbana\\.com$\n(^|\\.)adchina\\.com$\n(^|\\.)adcome\\.cn$\n(^|\\.)ader\\.mobi$\n(^|\\.)adform\\.net$\n(^|\\.)adfuture\\.cn$\n(^|\\.)adhouyi\\.com$\n(^|\\.)adinfuse\\.com$\n(^|\\.)adirects\\.com$\n(^|\\.)adjust\\.com$\n(^|\\.)adjust\\.io$\n(^|\\.)adkmob\\.com$\n(^|\\.)adlive\\.cn$\n(^|\\.)adlocus\\.com$\n(^|\\.)admaji\\.com$\n(^|\\.)admin6\\.com$\n(^|\\.)admon\\.cn$\n(^|\\.)adnyg\\.com$\n(^|\\.)adpolestar\\.net$\n(^|\\.)adpro\\.cn$\n(^|\\.)adpush\\.cn$\n(^|\\.)adquan\\.com$\n(^|\\.)adreal\\.cn$\n(^|\\.)ads8\\.com$\n(^|\\.)adsame\\.com$\n(^|\\.)adsmogo\\.com$\n(^|\\.)adsmogo\\.org$\n(^|\\.)adsunflower\\.com$\n(^|\\.)adsunion\\.com$\n(^|\\.)adtrk\\.me$\n(^|\\.)adups\\.com$\n(^|\\.)aduu\\.cn$\n(^|\\.)advertising\\.com$\n(^|\\.)adview\\.cn$\n(^|\\.)advmob\\.cn$\n(^|\\.)adwetec\\.com$\n(^|\\.)adwhirl\\.com$\n(^|\\.)adwo\\.com$\n(^|\\.)adxmi\\.com$\n(^|\\.)adyun\\.com$\n(^|\\.)adzerk\\.net$\n(^|\\.)agrant\\.cn$\n(^|\\.)agrantsem\\.com$\n(^|\\.)aihaoduo\\.cn$\n(^|\\.)ajapk\\.com$\n(^|\\.)allyes\\.cn$\n(^|\\.)allyes\\.com$\n(^|\\.)amazon-adsystem\\.com$\n(^|\\.)amplitude\\.com$\n(^|\\.)analysys\\.cn$\n(^|\\.)angsrvr\\.com$\n(^|\\.)anquan\\.org$\n(^|\\.)anysdk\\.com$\n(^|\\.)appadhoc\\.com$\n(^|\\.)appads\\.com$\n(^|\\.)appboy\\.com$\n(^|\\.)appdriver\\.cn$\n(^|\\.)appjiagu\\.com$\n(^|\\.)applifier\\.com$\n(^|\\.)appsflyer\\.com$\n(^|\\.)atdmt\\.com$\n(^|\\.)baifendian\\.com$\n(^|\\.)banmamedia\\.com$\n(^|\\.)baoyatu\\.cc$\n(^|\\.)baycode\\.cn$\n(^|\\.)bayimob\\.com$\n(^|\\.)behe\\.com$\n(^|\\.)bfshan\\.cn$\n(^|\\.)biddingos\\.com$\n(^|\\.)biddingx\\.com$\n(^|\\.)bjvvqu\\.cn$\n(^|\\.)bjxiaohua\\.com$\n(^|\\.)bloggerads\\.net$\n(^|\\.)branch\\.io$\n(^|\\.)bsdev\\.cn$\n(^|\\.)bshare\\.cn$\n(^|\\.)btyou\\.com$\n(^|\\.)bugtags\\.com$\n(^|\\.)buysellads\\.com$\n(^|\\.)c0563\\.com$\n(^|\\.)cacafly\\.com$\n(^|\\.)casee\\.cn$\n(^|\\.)cdnmaster\\.com$\n(^|\\.)chance-ad\\.com$\n(^|\\.)chanet\\.com\\.cn$\n(^|\\.)chartbeat\\.com$\n(^|\\.)chartboost\\.com$\n(^|\\.)chengadx\\.com$\n(^|\\.)chmae\\.com$\n(^|\\.)clickadu\\.com$\n(^|\\.)clicki\\.cn$\n(^|\\.)clicktracks\\.com$\n(^|\\.)clickzs\\.com$\n(^|\\.)cloudmobi\\.net$\n(^|\\.)cmcore\\.com$\n(^|\\.)cnxad\\.com$\n(^|\\.)cnzz\\.com$\n(^|\\.)cnzzlink\\.com$\n(^|\\.)cocounion\\.com$\n(^|\\.)coocaatv\\.com$\n(^|\\.)cooguo\\.com$\n(^|\\.)coolguang\\.com$\n(^|\\.)coremetrics\\.com$\n(^|\\.)cpmchina\\.co$\n(^|\\.)cpx24\\.com$\n(^|\\.)crasheye\\.cn$\n(^|\\.)crosschannel\\.com$\n(^|\\.)ctrmi\\.com$\n(^|\\.)customer-security\\.online$\n(^|\\.)daoyoudao\\.com$\n(^|\\.)datouniao\\.com$\n(^|\\.)ddapp\\.cn$\n(^|\\.)dianjoy\\.com$\n(^|\\.)dianru\\.com$\n(^|\\.)disqusads\\.com$\n(^|\\.)domob\\.cn$\n(^|\\.)domob\\.com\\.cn$\n(^|\\.)domob\\.org$\n(^|\\.)dotmore\\.com\\.tw$\n(^|\\.)doubleverify\\.com$\n(^|\\.)doudouguo\\.com$\n(^|\\.)doumob\\.com$\n(^|\\.)duanat\\.com$\n(^|\\.)duiba\\.com\\.cn$\n(^|\\.)duomeng\\.cn$\n(^|\\.)dxpmedia\\.com$\n(^|\\.)edigitalsurvey\\.com$\n(^|\\.)eduancm\\.com$\n(^|\\.)emarbox\\.com$\n(^|\\.)epsilon\\.com$\n(^|\\.)exosrv\\.com$\n(^|\\.)fancyapi\\.com$\n(^|\\.)feitian001\\.com$\n(^|\\.)feixin2\\.com$\n(^|\\.)flashtalking\\.com$\n(^|\\.)fraudmetrix\\.cn$\n(^|\\.)gentags\\.net$\n(^|\\.)gepush\\.com$\n(^|\\.)getui\\.com$\n(^|\\.)glispa\\.com$\n(^|\\.)go-mpulse$\n(^|\\.)go-mpulse\\.net$\n(^|\\.)godloveme\\.cn$\n(^|\\.)gridsum\\.com$\n(^|\\.)gridsumdissector\\.cn$\n(^|\\.)gridsumdissector\\.com$\n(^|\\.)growingio\\.com$\n(^|\\.)guohead\\.com$\n(^|\\.)guomob\\.com$\n(^|\\.)haoghost\\.com$\n(^|\\.)hivecn\\.cn$\n(^|\\.)hypers\\.com$\n(^|\\.)icast\\.cn$\n(^|\\.)igexin\\.com$\n(^|\\.)il8r\\.com$\n(^|\\.)imageter\\.com$\n(^|\\.)immob\\.cn$\n(^|\\.)inad\\.com$\n(^|\\.)inmobi\\.cn$\n(^|\\.)inmobi\\.net$\n(^|\\.)inmobicdn\\.cn$\n(^|\\.)inmobicdn\\.net$\n(^|\\.)innity\\.com$\n(^|\\.)instabug\\.com$\n(^|\\.)intely\\.cn$\n(^|\\.)iperceptions\\.com$\n(^|\\.)ipinyou\\.com$\n(^|\\.)irs01\\.com$\n(^|\\.)irs01\\.net$\n(^|\\.)irs09\\.com$\n(^|\\.)istreamsche\\.com$\n(^|\\.)jesgoo\\.com$\n(^|\\.)jiaeasy\\.net$\n(^|\\.)jiguang\\.cn$\n(^|\\.)jimdo\\.com$\n(^|\\.)jisucn\\.com$\n(^|\\.)jmgehn\\.cn$\n(^|\\.)jpush\\.cn$\n(^|\\.)jusha\\.com$\n(^|\\.)juzi\\.cn$\n(^|\\.)juzilm\\.com$\n(^|\\.)kejet\\.com$\n(^|\\.)kejet\\.net$\n(^|\\.)keydot\\.net$\n(^|\\.)keyrun\\.cn$\n(^|\\.)kmd365\\.com$\n(^|\\.)krux\\.net$\n(^|\\.)lnk0\\.com$\n(^|\\.)lnk8\\.cn$\n(^|\\.)localytics\\.com$\n(^|\\.)lomark\\.cn$\n(^|\\.)lotuseed\\.com$\n(^|\\.)lrswl\\.com$\n(^|\\.)lufax\\.com$\n(^|\\.)madhouse\\.cn$\n(^|\\.)madmini\\.com$\n(^|\\.)madserving\\.com$\n(^|\\.)magicwindow\\.cn$\n(^|\\.)mathtag\\.com$\n(^|\\.)maysunmedia\\.com$\n(^|\\.)mbai\\.cn$\n(^|\\.)mediaplex\\.com$\n(^|\\.)mediav\\.com$\n(^|\\.)megajoy\\.com$\n(^|\\.)meiqia\\.com$\n(^|\\.)mgogo\\.com$\n(^|\\.)miaozhen\\.com$\n(^|\\.)microad-cn\\.com$\n(^|\\.)miidi\\.net$\n(^|\\.)mijifen\\.com$\n(^|\\.)mixpanel\\.com$\n(^|\\.)mjmobi\\.com$\n(^|\\.)mng-ads\\.com$\n(^|\\.)moad\\.cn$\n(^|\\.)moatads\\.com$\n(^|\\.)mobaders\\.com$\n(^|\\.)mobclix\\.com$\n(^|\\.)mobgi\\.com$\n(^|\\.)mobisage\\.cn$\n(^|\\.)mobvista\\.com$\n(^|\\.)mopub\\.com$\n(^|\\.)moquanad\\.com$\n(^|\\.)mpush\\.cn$\n(^|\\.)mxpnl\\.com$\n(^|\\.)myhug\\.cn$\n(^|\\.)mzy2014\\.com$\n(^|\\.)networkbench\\.com$\n(^|\\.)newrelic\\.com$\n(^|\\.)ninebox\\.cn$\n(^|\\.)ntalker\\.com$\n(^|\\.)nylalobghyhirgh\\.com$\n(^|\\.)o2omobi\\.com$\n(^|\\.)oadz\\.com$\n(^|\\.)oneapm\\.com$\n(^|\\.)onetad\\.com$\n(^|\\.)optaim\\.com$\n(^|\\.)optimix\\.asia$\n(^|\\.)optimix\\.cn$\n(^|\\.)optimizely\\.com$\n(^|\\.)optimizelyapis\\.com$\n(^|\\.)overture\\.com$\n(^|\\.)p0y\\.cn$\n(^|\\.)pagechoice\\.net$\n(^|\\.)pingdom\\.net$\n(^|\\.)plugrush\\.com$\n(^|\\.)popin\\.cc$\n(^|\\.)pro\\.cn$\n(^|\\.)publicidad\\.net$\n(^|\\.)publicidad\\.tv$\n(^|\\.)pubmatic\\.com$\n(^|\\.)pubnub\\.com$\n(^|\\.)qcl777\\.com$\n(^|\\.)qiyou\\.com$\n(^|\\.)qtmojo\\.com$\n(^|\\.)quantcount\\.com$\n(^|\\.)qucaigg\\.com$\n(^|\\.)qumi\\.com$\n(^|\\.)qxxys\\.com$\n(^|\\.)reachmax\\.cn$\n(^|\\.)responsys\\.net$\n(^|\\.)revsci\\.net$\n(^|\\.)rlcdn\\.com$\n(^|\\.)rtbasia\\.com$\n(^|\\.)sanya1\\.com$\n(^|\\.)scupio\\.com$\n(^|\\.)serving-sys\\.com$\n(^|\\.)shuiguo\\.com$\n(^|\\.)shuzilm\\.cn$\n(^|\\.)similarweb\\.com$\n(^|\\.)sitemeter\\.com$\n(^|\\.)sitescout\\.com$\n(^|\\.)sitetag\\.us$\n(^|\\.)smartmad\\.com$\n(^|\\.)social-touch\\.com$\n(^|\\.)somecoding\\.com$\n(^|\\.)sponsorpay\\.com$\n(^|\\.)stargame\\.com$\n(^|\\.)stg8\\.com$\n(^|\\.)switchadhub\\.com$\n(^|\\.)sycbbs\\.com$\n(^|\\.)synacast\\.com$\n(^|\\.)sysdig\\.com$\n(^|\\.)tagtic\\.cn$\n(^|\\.)talkingdata\\.com$\n(^|\\.)talkingdata\\.net$\n(^|\\.)tansuotv\\.com$\n(^|\\.)tanv\\.com$\n(^|\\.)tanx\\.com$\n(^|\\.)tapjoy\\.cn$\n(^|\\.)th7\\.cn$\n(^|\\.)thoughtleadr\\.com$\n(^|\\.)tianmidian\\.com$\n(^|\\.)tiqcdn\\.com$\n(^|\\.)touclick\\.com$\n(^|\\.)trafficjam\\.cn$\n(^|\\.)trafficmp\\.com$\n(^|\\.)tuia\\.cn$\n(^|\\.)ueadlian\\.com$\n(^|\\.)uerzyr\\.cn$\n(^|\\.)ugdtimg\\.com$\n(^|\\.)ugvip\\.com$\n(^|\\.)ujian\\.cc$\n(^|\\.)ukeiae\\.com$\n(^|\\.)umeng\\.co$\n(^|\\.)umeng\\.com$\n(^|\\.)umtrack\\.com$\n(^|\\.)unimhk\\.com$\n(^|\\.)union-wifi\\.com$\n(^|\\.)union001\\.com$\n(^|\\.)unionsy\\.com$\n(^|\\.)unlitui\\.com$\n(^|\\.)uri6\\.com$\n(^|\\.)ushaqi\\.com$\n(^|\\.)usingde\\.com$\n(^|\\.)uuzu\\.com$\n(^|\\.)uyunad\\.com$\n(^|\\.)vamaker\\.com$\n(^|\\.)voiceads\\.cn$\n(^|\\.)voiceads\\.com$\n(^|\\.)vpon\\.com$\n(^|\\.)vungle\\.cn$\n(^|\\.)vungle\\.com$\n(^|\\.)waps\\.cn$\n(^|\\.)wapx\\.cn$\n(^|\\.)webterren\\.com$\n(^|\\.)whpxy\\.com$\n(^|\\.)winads\\.cn$\n(^|\\.)winasdaq\\.com$\n(^|\\.)wiyun\\.com$\n(^|\\.)wooboo\\.com\\.cn$\n(^|\\.)wqmobile\\.com$\n(^|\\.)wrating\\.com$\n(^|\\.)wumii\\.cn$\n(^|\\.)xcy8\\.com$\n(^|\\.)xdrig\\.com$\n(^|\\.)xiaozhen\\.com$\n(^|\\.)xibao100\\.com$\n(^|\\.)xtgreat\\.com$\n(^|\\.)xy\\.com$\n(^|\\.)yandui\\.com$\n(^|\\.)yigao\\.com$\n(^|\\.)yijifen\\.com$\n(^|\\.)yinooo\\.com$\n(^|\\.)yiqifa\\.com$\n(^|\\.)yiwk\\.com$\n(^|\\.)ylunion\\.com$\n(^|\\.)ymapp\\.com$\n(^|\\.)ymcdn\\.cn$\n(^|\\.)yongyuelm\\.com$\n(^|\\.)yooli\\.com$\n(^|\\.)youmi\\.net$\n(^|\\.)youxiaoad\\.com$\n(^|\\.)yoyi\\.com\\.cn$\n(^|\\.)yoyi\\.tv$\n(^|\\.)yrxmr\\.com$\n(^|\\.)ysjwj\\.com$\n(^|\\.)yunjiasu\\.com$\n(^|\\.)yunpifu\\.cn$\n(^|\\.)zampdsp\\.com$\n(^|\\.)zamplus\\.com$\n(^|\\.)zcdsp\\.com$\n(^|\\.)zhidian3g\\.cn$\n(^|\\.)zhiziyun\\.com$\n(^|\\.)zhjfad\\.com$\n(^|\\.)zqzxz\\.com$\n(^|\\.)zzsx8\\.com$\n\n# 广告联盟-国外****************\n(^|\\.)acuityplatform\\.com$\n(^|\\.)ad-stir\\.com$\n(^|\\.)ad-survey\\.com$\n(^|\\.)ad4game\\.com$\n(^|\\.)adcloud\\.jp$\n(^|\\.)adcolony\\.com$\n(^|\\.)addthis\\.com$\n(^|\\.)adfurikun\\.jp$\n(^|\\.)adhigh\\.net$\n(^|\\.)adhood\\.com$\n(^|\\.)adinall\\.com$\n(^|\\.)adition\\.com$\n(^|\\.)adk2x\\.com$\n(^|\\.)admarket\\.mobi$\n(^|\\.)admarvel\\.com$\n(^|\\.)admedia\\.com$\n(^|\\.)adnxs\\.com$\n(^|\\.)adotmob\\.com$\n(^|\\.)adperium\\.com$\n(^|\\.)adriver\\.ru$\n(^|\\.)adroll\\.com$\n(^|\\.)adsco\\.re$\n(^|\\.)adservice\\.com$\n(^|\\.)adsrvr\\.org$\n(^|\\.)adsymptotic\\.com$\n(^|\\.)adtaily\\.com$\n(^|\\.)adtech\\.de$\n(^|\\.)adtechjp\\.com$\n(^|\\.)adtechus\\.com$\n(^|\\.)airpush\\.com$\n(^|\\.)am15\\.net$\n(^|\\.)amobee\\.com$\n(^|\\.)appier\\.net$\n(^|\\.)applift\\.com$\n(^|\\.)apsalar\\.com$\n(^|\\.)atas\\.io$\n(^|\\.)awempire\\.com$\n(^|\\.)axonix\\.com$\n(^|\\.)beintoo\\.com$\n(^|\\.)bepolite\\.eu$\n(^|\\.)bidtheatre\\.com$\n(^|\\.)bidvertiser\\.com$\n(^|\\.)blismedia\\.com$\n(^|\\.)brucelead\\.com$\n(^|\\.)bttrack\\.com$\n(^|\\.)casalemedia\\.com$\n(^|\\.)channeladvisor\\.com$\n(^|\\.)connexity\\.net$\n(^|\\.)criteo\\.com$\n(^|\\.)criteo\\.net$\n(^|\\.)csbew\\.com$\n(^|\\.)demdex\\.net$\n(^|\\.)directrev\\.com$\n(^|\\.)dumedia\\.ru$\n(^|\\.)effectivemeasure\\.com$\n(^|\\.)effectivemeasure\\.net$\n(^|\\.)eqads\\.com$\n(^|\\.)everesttech\\.net$\n(^|\\.)exoclick\\.com$\n(^|\\.)extend\\.tv$\n(^|\\.)eyereturn\\.com$\n(^|\\.)fastapi\\.net$\n(^|\\.)fastclick\\.com$\n(^|\\.)fastclick\\.net$\n(^|\\.)flurry\\.com$\n(^|\\.)gosquared\\.com$\n(^|\\.)gtags\\.net$\n(^|\\.)heyzap\\.com$\n(^|\\.)histats\\.com$\n(^|\\.)hitslink\\.com$\n(^|\\.)hot-mob\\.com$\n(^|\\.)hyperpromote\\.com$\n(^|\\.)i-mobile\\.co\\.jp$\n(^|\\.)imrworldwide\\.com$\n(^|\\.)inmobi\\.com$\n(^|\\.)intentiq\\.com$\n(^|\\.)inter1ads\\.com$\n(^|\\.)ipredictive\\.com$\n(^|\\.)ironsrc\\.com$\n(^|\\.)iskyworker\\.com$\n(^|\\.)jizzads\\.com$\n(^|\\.)juicyads\\.com$\n(^|\\.)kochava\\.com$\n(^|\\.)leadbolt\\.com$\n(^|\\.)leadbolt\\.net$\n(^|\\.)leadboltads\\.net$\n(^|\\.)leadboltapps\\.net$\n(^|\\.)leadboltmobile\\.net$\n(^|\\.)lenzmx\\.com$\n(^|\\.)liveadvert\\.com$\n(^|\\.)marketgid\\.com$\n(^|\\.)marketo\\.com$\n(^|\\.)mdotm\\.com$\n(^|\\.)medialytics\\.com$\n(^|\\.)medialytics\\.io$\n(^|\\.)meetrics\\.com$\n(^|\\.)meetrics\\.net$\n(^|\\.)mgid\\.com$\n(^|\\.)millennialmedia\\.com$\n(^|\\.)mobadme\\.jp$\n(^|\\.)mobfox\\.com$\n(^|\\.)mobileadtrading\\.com$\n(^|\\.)mobilityware\\.com$\n(^|\\.)mookie1\\.com$\n(^|\\.)msads\\.net$\n(^|\\.)mydas\\.mobi$\n(^|\\.)nend\\.net$\n(^|\\.)netshelter\\.net$\n(^|\\.)nexage\\.com$\n(^|\\.)owneriq\\.net$\n(^|\\.)pixels\\.asia$\n(^|\\.)plista\\.com$\n(^|\\.)popads\\.net$\n(^|\\.)powerlinks\\.com$\n(^|\\.)propellerads\\.com$\n(^|\\.)quantserve\\.com$\n(^|\\.)rayjump\\.com$\n(^|\\.)revdepo\\.com$\n(^|\\.)rubiconproject\\.com$\n(^|\\.)sape\\.ru$\n(^|\\.)scorecardresearch\\.com$\n(^|\\.)segment\\.com$\n(^|\\.)serving-sys\\.com$\n(^|\\.)sharethis\\.com$\n(^|\\.)smaato\\.com$\n(^|\\.)smaato\\.net$\n(^|\\.)smartadserver\\.com$\n(^|\\.)smartnews-ads\\.com$\n(^|\\.)startapp\\.com$\n(^|\\.)startappexchange\\.com$\n(^|\\.)statcounter\\.com$\n(^|\\.)steelhousemedia\\.com$\n(^|\\.)stickyadstv\\.com$\n(^|\\.)supersonic\\.com$\n(^|\\.)tapjoy\\.com$\n(^|\\.)tapjoyads\\.com$\n(^|\\.)trafficjunky\\.com$\n(^|\\.)tribalfusion\\.com$\n(^|\\.)turn\\.com$\n(^|\\.)vidoomy\\.com$\n(^|\\.)viglink\\.com$\n(^|\\.)voicefive\\.com$\n(^|\\.)wedolook\\.com$\n(^|\\.)yadro\\.ru$\n(^|\\.)yengo\\.com$\n(^|\\.)zedo\\.com$\n(^|\\.)zemanta\\.com$\n\n# 垃圾网站\n(^|\\.)11h5\\.com$\n(^|\\.)1kxun\\.mobi$\n(^|\\.)519397\\.com$\n(^|\\.)626uc\\.com$\n(^|\\.)915\\.com$\n(^|\\.)appget\\.cn$\n(^|\\.)appuu\\.cn$\n(^|\\.)coinhive\\.com$\n(^|\\.)huodonghezi\\.cn$\n(^|\\.)wanfeng1\\.com$\n(^|\\.)wep016\\.top\n(^|\\.)win-stock\\.com\\.cn$\n(^|\\.)zantainet\\.com$\n\n### 运营商广告\n(^|\\.)\\w\\w(\\w|)dnserror\\d(\\d|)\\.wo\\.com\\.cn\n(^|\\.)114so\\.cn$\n(^|\\.)go\\.10086\\.cn$\n(^|\\.)navi\\.gd\\.chinamobile\\.com$\n(^|\\.)hivedata\\.cc$\n\n# 运营商广告IP段\n1.3.0.10/32\n10.72.25.0/24\n23.42.186.24/32\n23.66.147.48/32\n23.235.156.167/32\n27.255.67.120/32\n42.51.146.207/32\n45.34.240.72/32\n46.165.197.153/32\n46.165.197.231/32\n47.89.59.182/32\n47.90.50.177/32\n47.93.103.196/32\n47.94.89.32/32\n47.96.162.122/32\n58.215.179.159/32\n60.19.29.16/28\n60.19.29.21/28\n60.190.139.164/32\n60.191.124.196/32\n60.210.17.0/24\n60.210.17.12/24\n61.129.70.132/32\n61.132.216.232/32\n61.132.221.146/32\n61.132.255.128/25\n61.132.255.212/32\n61.132.255.222/25\n61.147.184.18/32\n61.152.223.15/32\n61.160.200.223/32\n61.160.200.242/32\n61.160.200.252/32\n61.174.50.128/25\n61.174.50.167/25\n61.191.12.74/32\n61.191.206.4/32\n67.229.224.28/32\n69.28.57.245/32\n74.117.182.77/32\n78.140.131.214/32\n101.201.29.182/32\n101.251.211.235/32\n103.249.254.113/32\n104.195.62.12/32\n104.197.140.120/32\n104.198.198.188/32\n106.75.65.90/32\n106.75.65.92/32\n106.187.95.251/32\n107.21.113.76/32\n108.171.248.234/32\n111.30.135.167/32\n111.63.135.0/24\n111.73.45.147/32\n111.175.220.160/29\n111.175.220.164/32\n111.206.13.0/24\n111.206.22.0/24\n112.74.95.46/32\n112.124.115.215/32\n113.57.230.88/32\n113.207.57.24/32\n114.55.123.44/32\n114.95.102.77/32\n114.247.28.96/32\n115.29.141.121/32\n115.29.247.48/32\n115.182.16.79/32\n116.55.227.242/32\n116.206.22.7/32\n117.25.133.209/32\n117.144.242.32/32\n118.144.88.126/32\n118.144.88.208/28\n118.144.88.215/28\n118.144.88.215/32\n119.4.249.166/32\n119.188.13.0/24\n120.26.151.246/32\n120.27.34.156/32\n120.55.199.139/32\n120.76.189.132/32\n120.80.57.123/32\n120.132.57.41/32\n120.132.63.203/32\n120.197.89.239/32\n120.198.116.0/24\n121.15.207.243/32\n121.43.75.169/32\n121.199.73.185/32\n121.201.11.95/32\n121.201.108.2/32\n121.251.255.0/24\n122.225.103.120/32\n122.226.223.163/32\n122.227.254.195/32\n122.228.236.165/32\n123.56.152.96/32\n123.57.94.184/32\n123.57.162.39/32\n123.59.78.229/32\n123.59.152.170/32\n123.125.111.0/24\n123.139.154.0/24\n123.139.154.201/24\n124.14.21.147/32\n124.14.21.151/32\n124.160.194.11/32\n124.232.160.178/32\n125.46.61.28/32\n125.89.69.5/32\n139.159.32.82/32\n139.196.239.52/32\n139.224.26.92/32\n139.224.74.148/32\n146.148.85.61/32\n162.212.181.32/32\n173.208.177.227/32\n175.6.223.15/32\n180.76.155.58/32\n180.76.162.60/32\n180.76.171.28/32\n180.76.172.149/32\n180.76.181.213/32\n180.166.52.24/32\n182.92.81.104/32\n183.6.188.224/29\n183.6.188.226/29\n183.59.53.184/29\n183.59.53.187/29\n183.59.53.237/32\n183.131.79.30/32\n183.131.79.130/32\n198.40.52.11/32\n202.104.1.27/32\n202.105.165.202/32\n205.209.138.102/32\n211.98.71.192/29\n211.98.71.195/29\n211.103.159.32/32\n211.137.132.89/32\n211.139.178.49/32\n211.149.225.23/32\n211.167.105.131/32\n218.25.246.118/32\n218.93.127.37/32\n219.234.83.60/32\n220.115.251.25/32\n220.196.52.141/32\n221.179.46.128/25\n221.179.46.190/25\n221.179.140.0/24\n221.179.183.0/24\n221.179.191.0/24\n221.204.213.222/32\n221.228.17.152/32\n221.228.214.101/32\n221.231.6.79/32\n222.73.156.235/32\n222.186.61.91/32\n222.186.61.95/32\n222.186.61.96/32\n222.186.61.97/32\n222.187.226.96/32\n223.6.255.99/32\n\n#**********************************************************************\n[proxy_list]\n# 代理列表\n\n# MyList\n(^|\\.)423down\\.com$\n(^|\\.)chaipip\\.com$\n(^|\\.)hrtsea\\.com$\n(^|\\.)laomo\\.me$\n(^|\\.)mpyit\\.com$\n\n# CN域名直连\n(^|\\.)cn$\n(^|\\.)edu\\.cn$\n(^|\\.)gov\\.cn$\n(^|\\.)net\\.cn$\n(^|\\.)org\\.cn$\n(^|\\.)中国$\n(^|\\.)公司$\n(^|\\.)网络$\n\n# 中国国内常见域名关键词直连\n(^|\\.)\\w*-cn\\w*\\.\\w*$\n(^|\\.)\\w*0x\\w*\\.\\w*$\n(^|\\.)\\w*360buy\\w*\\.\\w*$\n(^|\\.)\\w*alicdn\\w*\\.\\w*$\n(^|\\.)\\w*alimama\\w*\\.\\w*$\n(^|\\.)\\w*alipay\\w*\\.\\w*$\n(^|\\.)\\w*appzapp\\w*\\.\\w*$\n(^|\\.)\\w*baidupcs\\w*\\.\\w*$\n(^|\\.)\\w*bilibili\\w*\\.\\w*$\n(^|\\.)\\w*ccgslb\\w*\\.\\w*$\n(^|\\.)\\w*chinacache\\w*\\.\\w*$\n(^|\\.)\\w*duobao\\w*\\.\\w*$\n(^|\\.)\\w*duolingo\\w*\\.\\w*$\n(^|\\.)\\w*jdpay\\w*\\.\\w*$\n(^|\\.)\\w*moke\\w*\\.\\w*$\n(^|\\.)\\w*qhimg\\w*\\.\\w*$\n(^|\\.)\\w*vpimg\\w*\\.\\w*$\n(^|\\.)\\w*xiami\\w*\\.\\w*$\n(^|\\.)\\w*xiaomi\\w*\\.\\w*$\n\n# 360\n(^|\\.)360\\.com$\n(^|\\.)360kuai\\.com$\n(^|\\.)360safe\\.com$\n(^|\\.)dhrest\\.com$\n(^|\\.)qhres\\.com$\n(^|\\.)qhstatic\\.com$\n(^|\\.)qhupdate\\.com$\n(^|\\.)so\\.com$\n\n# 4399\n(^|\\.)4399\\.com$\n(^|\\.)4399pk\\.com$\n(^|\\.)5054399\\.com$\n(^|\\.)img4399\\.com$\n\n# 58\n(^|\\.)58\\.com$\n\n# Alibaba\n(^|\\.)1688\\.com$\n(^|\\.)aliapp\\.org$\n(^|\\.)alibaba\\.com$\n(^|\\.)alibabacloud\\.com$\n(^|\\.)alibabausercontent\\.com$\n(^|\\.)alicdn\\.com$\n(^|\\.)aliexpress\\.com$\n(^|\\.)aliimg\\.com$\n(^|\\.)alikunlun\\.com$\n(^|\\.)alipay\\.com$\n(^|\\.)alipayobjects\\.com$\n(^|\\.)alisoft\\.com$\n(^|\\.)aliyun\\.com$\n(^|\\.)aliyuncdn\\.com$\n(^|\\.)aliyuncs\\.com$\n(^|\\.)amap\\.com$\n(^|\\.)autonavi\\.com$\n(^|\\.)dingtalk\\.com$\n(^|\\.)ele\\.me$\n(^|\\.)hichina\\.com$\n(^|\\.)mmstat\\.com$\n(^|\\.)mxhichina\\.com$\n(^|\\.)soku\\.com$\n(^|\\.)taobao\\.com$\n(^|\\.)taobaocdn\\.com$\n(^|\\.)tbcache\\.com$\n(^|\\.)tbcdn\\.com$\n(^|\\.)tmall\\.com$\n(^|\\.)tmall\\.hk$\n(^|\\.)ucweb\\.com$\n(^|\\.)xiami\\.com$\n(^|\\.)xiami\\.net$\n(^|\\.)ykimg\\.com$\n(^|\\.)youku\\.com$\n\n# Apple\n(^|\\.)aaplimg\\.com$\n(^|\\.)akadns\\.net$\n(^|\\.)apple-cloudkit\\.com$\n(^|\\.)apple\\.co$\n(^|\\.)apple\\.com$\n(^|\\.)appstore\\.com$\n(^|\\.)cdn-apple\\.com$\n(^|\\.)crashlytics\\.com$\n(^|\\.)icloud-content\\.com$\n(^|\\.)icloud\\.com$\n(^|\\.)me\\.com$\n(^|\\.)mzstatic\\.com$\n\n# Baidu\n(^|\\.)baidu\\.com$\n(^|\\.)baidubcr\\.com$\n(^|\\.)baidupcs\\.com$\n(^|\\.)baidustatic\\.com$\n(^|\\.)bcebos\\.com$\n(^|\\.)bdimg\\.com$\n(^|\\.)bdstatic\\.com$\n(^|\\.)bdurl\\.net$\n(^|\\.)hao123\\.com$\n(^|\\.)hao123img\\.com$\n(^|\\.)jomodns\\.com$\n(^|\\.)yunjiasu-cdn\\.net$\n\n# Bilibili\n(^|\\.)acg\\.tv$\n(^|\\.)acgvideo\\.com$\n(^|\\.)b23\\.tv$\n(^|\\.)biliapi\\.com$\n(^|\\.)biliapi\\.net$\n(^|\\.)bilibili\\.com$\n(^|\\.)bilibili\\.tv$\n(^|\\.)biligame\\.com$\n(^|\\.)biligame\\.net$\n(^|\\.)hdslb\\.com$\n(^|\\.)im9\\.com$\n\n# Blizzard\n(^|\\.)battle\\.net$\n(^|\\.)battlenet\\.com$\n(^|\\.)blizzard\\.com$\n\n# ByteDance\n(^|\\.)bytedance\\.com$\n(^|\\.)bytedance\\.net$\n(^|\\.)bytedns\\.net$\n(^|\\.)byteimg\\.com$\n(^|\\.)feiliao\\.com$\n(^|\\.)gifshow\\.com$\n(^|\\.)huoshan\\.com$\n(^|\\.)iesdouyin\\.com$\n(^|\\.)ixigua\\.com$\n(^|\\.)kspkg\\.com$\n(^|\\.)pstatp\\.com$\n(^|\\.)snssdk\\.com$\n(^|\\.)toutiao\\.com$\n(^|\\.)toutiao13\\.com$\n(^|\\.)toutiaocdn\\.com$\n(^|\\.)toutiaocdn\\.net$\n(^|\\.)toutiaocloud\\.com$\n(^|\\.)toutiaohao\\.com$\n(^|\\.)toutiaohao\\.net$\n(^|\\.)toutiaoimg\\.com$\n(^|\\.)toutiaopage\\.com$\n(^|\\.)wukong\\.com$\n(^|\\.)zijieimg\\.com$\n(^|\\.)zjbyte\\.com$\n(^|\\.)zjcdn\\.com$\n\n# CCTV\n(^|\\.)cctv\\.com$\n(^|\\.)cctvpic\\.com$\n(^|\\.)livechina\\.com$\n\n# ChinaNet\n(^|\\.)21cn\\.com$\n\n# DiDi\n(^|\\.)didialift\\.com$\n(^|\\.)didiglobal\\.com$\n(^|\\.)udache\\.com$\n\n# Douyu 斗鱼\n(^|\\.)douyu\\.com$\n(^|\\.)douyu\\.tv$\n(^|\\.)douyutv\\.com$\n\n# Epic\n(^|\\.)epicgames\\.com$\n(^|\\.)helpshift\\.com$\n(^|\\.)paragon\\.com$\n(^|\\.)unrealengine\\.com$\n\n# HuaWei\n(^|\\.)dbankcdn\\.com$\n(^|\\.)hc-cdn\\.com$\n(^|\\.)hicloud\\.com$\n(^|\\.)huawei\\.com$\n(^|\\.)huaweicloud\\.com$\n(^|\\.)huaweishop\\.net$\n(^|\\.)hwccpc\\.com$\n(^|\\.)vmall\\.com$\n(^|\\.)vmallres\\.com$\n\n# Iflytek 科大讯飞\n(^|\\.)iflyink\\.com$\n(^|\\.)iflyrec\\.com$\n(^|\\.)iflytek\\.com$\n\n# Iqiyi\n(^|\\.)71\\.am$\n(^|\\.)71edge\\.com$\n(^|\\.)iqiyi\\.com$\n(^|\\.)iqiyipic\\.com$\n(^|\\.)ppsimg\\.com$\n(^|\\.)qiyi\\.com$\n(^|\\.)qiyipic\\.com$\n(^|\\.)qy\\.net$\n\n# JD\n(^|\\.)360buy\\.com$\n(^|\\.)360buyimg\\.com$\n(^|\\.)jcloudcs\\.com$\n(^|\\.)jd\\.com$\n(^|\\.)jd\\.hk$\n(^|\\.)jdcloud\\.com$\n(^|\\.)jdpay\\.com$\n(^|\\.)paipai\\.com$\n\n# Kingsoft\n(^|\\.)iciba\\.com$\n(^|\\.)ksosoft\\.com$\n(^|\\.)ksyun\\.com$\n\n# Kuaishou 快手\n(^|\\.)kuaishou\\.com$\n(^|\\.)yximgs\\.com$\n\n# Meitu\n(^|\\.)meitu\\.com$\n(^|\\.)meitudata\\.com$\n(^|\\.)meitustat\\.com$\n(^|\\.)meipai\\.com$\n\n# LeTV 乐视\n(^|\\.)le\\.com$\n(^|\\.)lecloud\\.com$\n(^|\\.)letv\\.com$\n(^|\\.)letvcloud\\.com$\n(^|\\.)letvimg\\.com$\n(^|\\.)letvlive\\.com$\n(^|\\.)letvstore\\.com$\n\n# MGTV 芒果TV\n(^|\\.)hitv\\.com$\n(^|\\.)hunantv\\.com$\n(^|\\.)mgtv\\.com$\n\n# MI\n(^|\\.)duokan\\.com$\n(^|\\.)mi-img\\.com$\n(^|\\.)mi\\.com$\n(^|\\.)miui\\.com$\n(^|\\.)xiaomi\\.com$\n(^|\\.)xiaomi\\.net$\n(^|\\.)xiaomicp\\.com$\n\n# NetEase\n(^|\\.)126\\.com$\n(^|\\.)126\\.net$\n(^|\\.)127\\.net$\n(^|\\.)163\\.com$\n(^|\\.)163yun\\.com$\n(^|\\.)lofter\\.com$\n(^|\\.)netease\\.com$\n(^|\\.)ydstatic\\.com$\n(^|\\.)youdao\\.com$\n\n# PPTV、PPLive\n(^|\\.)pplive\\.com$\n(^|\\.)pptv\\.com$\n\n# PDD 拼多多\n(^|\\.)pinduoduo\\.com$\n(^|\\.)yangkeduo\\.com$\n\n# Sina\n(^|\\.)leju\\.com$\n(^|\\.)miaopai\\.com$\n(^|\\.)sina\\.com$\n(^|\\.)sinaapp\\.com$\n(^|\\.)sinaimg\\.com$\n(^|\\.)weibo\\.com$\n(^|\\.)weibocdn\\.com$\n(^|\\.)xiaoka\\.tv$\n\n# Sohu Sogo\n(^|\\.)go2map\\.com$\n(^|\\.)sogo\\.com$\n(^|\\.)sogou\\.com$\n(^|\\.)sogoucdn\\.com$\n(^|\\.)sohu-inc\\.com$\n(^|\\.)sohu\\.com$\n(^|\\.)sohucs\\.com$\n(^|\\.)sohuno\\.com$\n(^|\\.)sohurdc\\.com$\n(^|\\.)v-56\\.com$\n\n# Sony\n(^|\\.)playstation\\.com$\n(^|\\.)playstation\\.net$\n(^|\\.)playstationnetwork\\.com$\n(^|\\.)sony\\.com$\n(^|\\.)sonyentertainmentnetwork\\.com$\n\n# Spark\n(^|\\.)amplitude\\.com$\n(^|\\.)firebaseio\\.com$\n(^|\\.)hockeyapp\\.net$\n(^|\\.)smartmailcloud\\.com$\n\n# Steam\n(^|\\.)steam-chat\\.com$\n(^|\\.)steamgames\\.com$\n(^|\\.)steamusercontent\\.com$\n(^|\\.)steamcontent\\.com$\n(^|\\.)steamstatic\\.com$\n(^|\\.)steamcdn-a\\.akamaihd\\.net$\n(^|\\.)steamstat\\.us$\n\n# Tencent\n(^|\\.)foxmail\\.com $\n(^|\\.)gtimg\\.com$\n(^|\\.)idqqimg\\.com$\n(^|\\.)igamecj\\.com$\n(^|\\.)myapp\\.com$\n(^|\\.)myqcloud\\.com$\n(^|\\.)qq\\.com$\n(^|\\.)qqmail\\.com$\n(^|\\.)qqurl\\.com$\n(^|\\.)smtcdns\\.com$\n(^|\\.)smtcdns\\.net$\n(^|\\.)soso\\.com$\n(^|\\.)tencent-cloud\\.net$\n(^|\\.)tencent\\.com$\n(^|\\.)tencentmind\\.com$\n(^|\\.)tenpay\\.com$\n(^|\\.)weixin\\.com$\n(^|\\.)weiyun\\.com$\n\n# Vip 唯品会\n(^|\\.)appsimg\\.com$\n(^|\\.)appvipshop\\.com$\n(^|\\.)vip\\.com$\n(^|\\.)vipstatic\\.com$\n\n# Ximalaya 喜马拉雅\n(^|\\.)ximalaya\\.com$\n(^|\\.)xmcdn\\.com$\n\n# Xunlei 迅雷\n(^|\\.)00cdn\\.com$\n(^|\\.)88cdn\\.com$\n(^|\\.)kanimg\\.com$\n(^|\\.)kankan\\.com$\n(^|\\.)p2cdn\\.com$\n(^|\\.)sandai\\.net$\n(^|\\.)thundercdn\\.com$\n(^|\\.)xunlei\\.com$\n\n# YYeTs 人人影视\n(^|\\.)jstucdn\\.com$\n(^|\\.)zimuzu\\.io$\n(^|\\.)zimuzu\\.tv$\n(^|\\.)zmz001\\.com$\n(^|\\.)zmz002\\.com$\n(^|\\.)zmz003\\.com$\n(^|\\.)zmz004\\.com$\n(^|\\.)zmz2019\\.com$\n(^|\\.)zmzapi\\.com$\n(^|\\.)zmzapi\\.net$\n(^|\\.)zmzfile\\.com$\n\n# Private Tracker\n(^|\\.)\\w*announce\\w*\\.\\w*$\n(^|\\.)\\w*torrent\\w*\\.\\w*$\n(^|\\.)\\w*tracker\\w*\\.\\w*$\n(^|\\.)animetorrents\\.me$\n(^|\\.)awesome-hd\\.me$\n(^|\\.)beitai\\.pt$\n(^|\\.)bittorrent\\.com$\n(^|\\.)broadcasthe\\.net$\n(^|\\.)chdbits\\.co$\n(^|\\.)classix-unlimited\\.co\\.uk$\n(^|\\.)empornium\\.me$\n(^|\\.)gazellegames\\.net$\n(^|\\.)hd4fans\\.org$\n(^|\\.)hdchina\\.org$\n(^|\\.)hdhome\\.org$\n(^|\\.)hdsky\\.me$\n(^|\\.)hdtime\\.org$\n(^|\\.)hdzone\\.me$\n(^|\\.)icetorrent\\.org$\n(^|\\.)jpopsuki\\.eu$\n(^|\\.)keepfrds\\.com$\n(^|\\.)leaguehd\\.com$\n(^|\\.)m-team\\.cc$\n(^|\\.)madsrevolution\\.net$\n(^|\\.)msg\\.vg$\n(^|\\.)nanyangpt\\.com$\n(^|\\.)ncore\\.cc$\n(^|\\.)open\\.cd$\n(^|\\.)ourbits\\.club$\n(^|\\.)passthepopcorn\\.me$\n(^|\\.)privatehd\\.to$\n(^|\\.)pthome\\.net$\n(^|\\.)redacted\\.ch$\n(^|\\.)springsunday\\.net$\n(^|\\.)tjupt\\.org$\n(^|\\.)totheglory\\.im$\n\n# TeamViewer\n(^|\\.)teamviewer\\.com$\n109.239.140.0/24\n139.220.243.27/32\n172.16.102.56/32\n185.188.32.1/28\n221.226.128.146/32\n\n# Public Direct CDN 公共直连cdn\n#(^|\\.)ajax\\.aspnetcdn\\.com$\n#(^|\\.)ajax\\.cloudflare\\.com$\n#(^|\\.)cdnjs\\.cloudflare\\.com$\n#(^|\\.)code\\.jquery\\.com$\n(^|\\.)baomitu\\.com$\n(^|\\.)bootcss\\.com$\n(^|\\.)jiasule\\.com$\n(^|\\.)jsdelivr\\.net$\n(^|\\.)staticfile\\.org$\n(^|\\.)upaiyun\\.com$\n\n# AccelerateDirectSites\n(^|\\.)12306\\.com$\n(^|\\.)17173\\.com$\n(^|\\.)17k\\.com$\n(^|\\.)360doc\\.com$\n(^|\\.)36kr\\.com$\n(^|\\.)3dmgame\\.com$\n(^|\\.)51cto\\.com$\n(^|\\.)51job\\.com$\n(^|\\.)51jobcdn\\.com$\n(^|\\.)56\\.com$\n(^|\\.)8686c\\.com$\n(^|\\.)abchina\\.com$\n(^|\\.)abercrombie\\.com$\n(^|\\.)acfun\\.tv$\n(^|\\.)air-matters\\.com$\n(^|\\.)air-matters\\.io$\n(^|\\.)aixifan\\.com$\n(^|\\.)algocasts\\.io$\n(^|\\.)babytree\\.com$\n(^|\\.)babytreeimg\\.com$\n(^|\\.)baicizhan\\.com$\n(^|\\.)baidupan\\.com$\n(^|\\.)baike\\.com$\n(^|\\.)biqudu\\.com$\n(^|\\.)biquge\\.com$\n(^|\\.)bitauto\\.com$\n(^|\\.)c-ctrip\\.com$\n(^|\\.)camera360\\.com$\n(^|\\.)cdnmama\\.com$\n(^|\\.)chaoxing\\.com$\n(^|\\.)che168\\.com$\n(^|\\.)chinacache\\.net$\n(^|\\.)chinaso\\.com$\n(^|\\.)chinaz\\.com$\n(^|\\.)chinaz\\.net$\n(^|\\.)chuimg\\.com$\n(^|\\.)cibntv\\.net$\n(^|\\.)clouddn\\.com$\n(^|\\.)cloudxns\\.net$\n(^|\\.)cn163\\.net$\n(^|\\.)cnbeta\\.com$\n(^|\\.)cnbetacdn\\.com$\n(^|\\.)cnblogs\\.com$\n(^|\\.)cnki\\.net$\n(^|\\.)cnmstl\\.net$\n(^|\\.)coolapk\\.com$\n(^|\\.)coolapkmarket\\.com$\n(^|\\.)csdn\\.net$\n(^|\\.)ctrip\\.com$\n(^|\\.)dangdang\\.com$\n(^|\\.)dfcfw\\.com$\n(^|\\.)dianping\\.com$\n(^|\\.)dilidili\\.wang$\n(^|\\.)douban\\.com$\n(^|\\.)doubanio\\.com$\n(^|\\.)dpfile\\.com$\n(^|\\.)duowan\\.com$\n(^|\\.)dxycdn\\.com$\n(^|\\.)dytt8\\.net$\n(^|\\.)easou\\.com$\n(^|\\.)eastday\\.com$\n(^|\\.)eastmoney\\.com$\n(^|\\.)ecitic\\.com$\n(^|\\.)ewqcxz\\.com$\n(^|\\.)fang\\.com$\n(^|\\.)fantasy\\.tv$\n(^|\\.)feng\\.com$\n(^|\\.)fengkongcloud\\.com$\n(^|\\.)fir\\.im$\n(^|\\.)frdic\\.com$\n(^|\\.)fresh-ideas\\.cc$\n(^|\\.)ganji\\.com$\n(^|\\.)ganjistatic1\\.com$\n(^|\\.)geetest\\.com$\n(^|\\.)geilicdn\\.com$\n(^|\\.)godic\\.net$\n(^|\\.)gravatar\\.com$\n(^|\\.)guazi\\.com$\n(^|\\.)gwdang\\.com$\n(^|\\.)gzlzfm\\.com$\n(^|\\.)haibian\\.com$\n(^|\\.)haosou\\.com$\n(^|\\.)hollisterco\\.com$\n(^|\\.)hongxiu\\.com$\n(^|\\.)huajiao\\.com$\n(^|\\.)hupu\\.com$\n(^|\\.)huxiucdn\\.com$\n(^|\\.)huya\\.com$\n(^|\\.)ifeng\\.com$\n(^|\\.)ifengimg\\.com$\n(^|\\.)images-amazon\\.com$\n(^|\\.)infzm\\.com$\n(^|\\.)ipip\\.net$\n(^|\\.)it168\\.com$\n(^|\\.)ithome\\.com$\n(^|\\.)ixdzs\\.com$\n(^|\\.)jianguoyun\\.com$\n(^|\\.)jianshu\\.com$\n(^|\\.)jianshu\\.io$\n(^|\\.)jianshuapi\\.com$\n(^|\\.)jiathis\\.com$\n(^|\\.)jmstatic\\.com$\n(^|\\.)jumei\\.com$\n(^|\\.)kaola\\.com$\n(^|\\.)knewone\\.com$\n(^|\\.)koowo\\.com$\n(^|\\.)ksyungslb\\.com$\n(^|\\.)kuaidi100\\.com$\n(^|\\.)kugou\\.com$\n(^|\\.)lancdns\\.com$\n(^|\\.)landiannews\\.com$\n(^|\\.)lanzou\\.com$\n(^|\\.)lemicp\\.com$\n(^|\\.)letitfly\\.me$\n(^|\\.)linkedin\\.com$\n(^|\\.)lizhi\\.fm$\n(^|\\.)lizhi\\.io$\n(^|\\.)lizhifm\\.com$\n(^|\\.)loli\\.net$\n(^|\\.)luoo\\.net$\n(^|\\.)lvmama\\.com$\n(^|\\.)lxdns\\.com$\n(^|\\.)maoyan\\.com$\n(^|\\.)meilishuo\\.com$\n(^|\\.)meituan\\.com$\n(^|\\.)meituan\\.net$\n(^|\\.)meizu\\.com$\n(^|\\.)miguvideo\\.com$\n(^|\\.)mobike\\.com$\n(^|\\.)mogu\\.com$\n(^|\\.)mogucdn\\.com$\n(^|\\.)mogujie\\.com$\n(^|\\.)moji\\.com$\n(^|\\.)moke\\.com$\n(^|\\.)msstatic\\.com$\n(^|\\.)mubu\\.com$\n(^|\\.)myunlu\\.com$\n(^|\\.)nruan\\.com$\n(^|\\.)nuomi\\.com$\n(^|\\.)onedns\\.net$\n(^|\\.)onlinedown\\.net$\n(^|\\.)oracle\\.com$\n(^|\\.)oschina\\.net$\n(^|\\.)ourdvs\\.com$\n(^|\\.)overcast\\.fm$\n(^|\\.)paypal\\.com$\n(^|\\.)polyv\\.net$\n(^|\\.)qbox\\.me$\n(^|\\.)qcloud\\.com$\n(^|\\.)qcloudcdn\\.com$\n(^|\\.)qdaily\\.com$\n(^|\\.)qdmm\\.com$\n(^|\\.)qhimg\\.com$\n(^|\\.)qianqian\\.com$\n(^|\\.)qidian\\.com$\n(^|\\.)qihucdn\\.com$\n(^|\\.)qin\\.io$\n(^|\\.)qiniu\\.com$\n(^|\\.)qiniucdn\\.com$\n(^|\\.)qiniudn\\.com$\n(^|\\.)qiushibaike\\.com$\n(^|\\.)quanmin\\.tv$\n(^|\\.)qunar\\.com$\n(^|\\.)qunarzz\\.com$\n(^|\\.)rarbg\\.to$\n(^|\\.)repaik\\.com$\n(^|\\.)rrmj\\.tv$\n(^|\\.)ruguoapp\\.com$\n(^|\\.)runoob\\.com$\n(^|\\.)sankuai\\.com$\n(^|\\.)segmentfault\\.com$\n(^|\\.)sf-express\\.com$\n(^|\\.)shumilou\\.net$\n(^|\\.)simplecd\\.me$\n(^|\\.)sm\\.ms$\n(^|\\.)smzdm\\.com$\n(^|\\.)snwx\\.com$\n(^|\\.)soufunimg\\.com$\n(^|\\.)ssl-images-amazon\\.com$\n(^|\\.)sspai\\.com$\n(^|\\.)startssl\\.com$\n(^|\\.)suning\\.com$\n(^|\\.)taihe\\.com$\n(^|\\.)th-sjy\\.com$\n(^|\\.)tianqi\\.com$\n(^|\\.)tianqistatic\\.com$\n(^|\\.)tianyancha\\.com$\n(^|\\.)tianyaui\\.com$\n(^|\\.)tietuku\\.com$\n(^|\\.)tiexue\\.net$\n(^|\\.)tmiaoo\\.com$\n(^|\\.)trip\\.com$\n(^|\\.)ttmeiju\\.com$\n(^|\\.)tudou\\.com$\n(^|\\.)tuniu\\.com$\n(^|\\.)tuniucdn\\.com$\n(^|\\.)umengcloud\\.com$\n(^|\\.)upyun\\.com$\n(^|\\.)uxengine\\.net$\n(^|\\.)videocc\\.net$\n(^|\\.)vmware\\.com$\n(^|\\.)wandoujia\\.com$\n(^|\\.)weather\\.com$\n(^|\\.)weico\\.cc$\n(^|\\.)weidian\\.com$\n(^|\\.)weiphone\\.com$\n(^|\\.)weiphone\\.net$\n(^|\\.)womai\\.com$\n(^|\\.)wscdns\\.com$\n(^|\\.)xdrig\\.com$\n(^|\\.)xhscdn\\.com$\n(^|\\.)xiachufang\\.com$\n(^|\\.)xiaohongshu\\.com$\n(^|\\.)xiaojukeji\\.com$\n(^|\\.)xinhuanet\\.com$\n(^|\\.)xitek\\.com$\n(^|\\.)xiumi\\.us$\n(^|\\.)xslb\\.net$\n(^|\\.)xueqiu\\.com$\n(^|\\.)yach\\.me$\n(^|\\.)yeepay\\.com$\n(^|\\.)yhd\\.com$\n(^|\\.)yihaodianimg\\.com$\n(^|\\.)yinxiang\\.com$\n(^|\\.)yinyuetai\\.com$\n(^|\\.)yixia\\.com$\n(^|\\.)ys168\\.com$\n(^|\\.)yuewen\\.com$\n(^|\\.)yy\\.com$\n(^|\\.)yystatic\\.com$\n(^|\\.)zealer\\.com$\n(^|\\.)zhangzishi\\.cc$\n(^|\\.)zhanqi\\.tv$\n(^|\\.)zhaopin\\.com$\n(^|\\.)zhihu\\.com$\n(^|\\.)zhimg\\.com$\n(^|\\.)zhongsou\\.com$\n(^|\\.)zhuihd\\.com$\n\n# GFWList Whitelist\n(^|\\.)connectivitycheck\\.gstatic\\.com$\n(^|\\.)cwb\\.gov\\.tw$\n(^|\\.)dbnsa\\.gov\\.tw$\n(^|\\.)eastcoast-nsa\\.gov\\.tw$\n(^|\\.)erv-nsa\\.gov\\.tw$\n(^|\\.)khm\\.google\\.com$\n(^|\\.)khm\\.googleapis\\.com$\n(^|\\.)khm0\\.google\\.com$\n(^|\\.)khm0\\.googleapis\\.com$\n(^|\\.)khm1\\.google\\.com$\n(^|\\.)khm1\\.googleapis\\.com$\n(^|\\.)khm2\\.google\\.com$\n(^|\\.)khm2\\.googleapis\\.com$\n(^|\\.)khm3\\.google\\.com$\n(^|\\.)khm3\\.googleapis\\.com$\n(^|\\.)khmdb\\.google\\.com$\n(^|\\.)khmdb\\.googleapis\\.com$\n(^|\\.)maolin-nsa\\.gov\\.tw$\n(^|\\.)matsu-nsa\\.gov\\.tw$\n(^|\\.)matsucc\\.gov\\.tw$\n(^|\\.)nankan\\.gov\\.tw$\n(^|\\.)necoast-nsa\\.gov\\.tw$\n(^|\\.)northguan-nsa\\.gov\\.tw$\n(^|\\.)penghu-nsa\\.gov\\.tw$\n(^|\\.)post\\.gov\\.tw$\n(^|\\.)redirector\\.gvt1\\.com$\n(^|\\.)siraya-nsa\\.gov\\.tw$\n(^|\\.)sunmoonlake\\.gov\\.tw$\n(^|\\.)tools\\.google\\.com$\n(^|\\.)trimt-nsa\\.gov\\.tw$\n(^|\\.)uluai\\.com\\.cn$\n(^|\\.)yda\\.gov\\.tw$\n\n# 中国云服务商ip端\n# 阿里\n8.128.0.0/10\n8.208.0.0/12\n14.1.112.0/22\n41.222.240.0/22\n41.223.119.0/24\n43.242.168.0/22\n45.112.212.0/22\n47.52.0.0/16\n47.56.0.0/15\n47.74.0.0/15\n47.76.0.0/14\n47.80.0.0/12\n47.235.0.0/16\n47.236.0.0/14\n47.240.0.0/14\n47.244.0.0/15\n47.246.0.0/16\n47.250.0.0/15\n47.252.0.0/15\n47.254.0.0/16\n59.82.0.0/20\n59.82.240.0/21\n59.82.248.0/22\n72.254.0.0/16\n103.38.56.0/22\n103.52.76.0/22\n103.206.40.0/22\n110.76.21.0/24\n110.76.23.0/24\n112.125.0.0/17\n116.251.64.0/18\n119.38.208.0/20\n119.38.224.0/20\n119.42.224.0/20\n139.95.0.0/16\n140.205.1.0/24\n140.205.122.0/24\n147.139.0.0/16\n149.129.0.0/16\n155.102.0.0/16\n161.117.0.0/16\n163.181.0.0/16\n170.33.0.0/16\n198.11.128.0/18\n205.204.96.0/19\n\n# 腾讯 qq\n19.28.0.0/23\n45.40.192.0/19\n49.51.0.0/16\n62.234.0.0/16\n94.191.0.0/17\n103.7.28.0/22\n103.116.50.0/23\n103.231.60.0/24\n109.244.0.0/16\n111.30.128.0/21\n111.30.136.0/24\n111.30.139.0/24\n111.30.140.0/23\n115.159.0.0/16\n119.28.0.0/15\n120.88.56.0/23\n121.51.0.0/16\n129.28.0.0/16\n129.204.0.0/16\n129.211.0.0/16\n132.232.0.0/16\n134.175.0.0/16\n146.56.192.0/18\n148.70.0.0/16\n150.109.0.0/16\n152.136.0.0/16\n162.14.0.0/16\n162.62.0.0/16\n170.106.130.0/24\n182.254.0.0/16\n188.131.128.0/17\n203.195.128.0/17\n203.205.128.0/17\n210.4.138.0/24\n211.152.128.0/23\n211.152.132.0/23\n211.152.148.0/23\n212.64.0.0/17\n212.129.128.0/17\n\n# 百度 Baidu\n45.113.192.0/22\n63.217.23.0/24\n63.243.252.0/24\n103.235.44.0/22\n104.193.88.0/22\n106.12.0.0/15\n114.28.224.0/20\n119.63.192.0/21\n180.76.0.0/24\n180.76.0.0/16\n182.61.0.0/16\n185.10.104.0/22\n202.46.48.0/20\n203.90.238.0/24\n\n# 华为 huwei\n43.254.0.0/22\n45.249.212.0/22\n49.4.0.0/17\n78.101.192.0/19\n78.101.224.0/20\n81.52.161.0/24\n85.97.220.0/22\n103.31.200.0/22\n103.69.140.0/23\n103.218.216.0/22\n114.115.128.0/17\n114.116.0.0/16\n116.63.128.0/18\n116.66.184.0/22\n116.71.96.0/20\n116.71.128.0/21\n116.71.136.0/22\n116.71.141.0/24\n116.71.142.0/24\n116.71.243.0/24\n116.71.244.0/24\n116.71.251.0/24\n117.78.0.0/18\n119.3.0.0/16\n119.8.0.0/21\n119.8.32.0/19\n121.36.0.0/17\n121.36.128.0/18\n121.37.0.0/17\n122.112.128.0/17\n139.9.0.0/18\n139.9.64.0/19\n139.9.100.0/22\n139.9.104.0/21\n139.9.112.0/20\n139.9.128.0/18\n139.9.192.0/19\n139.9.224.0/20\n139.9.240.0/21\n139.9.248.0/22\n139.159.128.0/19\n139.159.160.0/22\n139.159.164.0/23\n139.159.168.0/21\n139.159.176.0/20\n139.159.192.0/18\n159.138.0.0/18\n159.138.64.0/21\n159.138.79.0/24\n159.138.80.0/20\n159.138.96.0/20\n159.138.112.0/21\n159.138.125.0/24\n159.138.128.0/18\n159.138.192.0/20\n159.138.223.0/24\n159.138.224.0/19\n168.195.92.0/22\n185.176.76.0/22\n197.199.0.0/18\n197.210.163.0/24\n197.252.1.0/24\n197.252.2.0/23\n197.252.4.0/22\n197.252.8.0/21\n200.32.52.0/24\n200.32.54.0/24\n200.32.57.0/24\n203.135.0.0/22\n203.135.4.0/23\n203.135.8.0/23\n203.135.11.0/24\n203.135.13.0/24\n203.135.20.0/24\n203.135.22.0/23\n203.135.24.0/23\n203.135.26.0/24\n203.135.29.0/24\n203.135.33.0/24\n203.135.38.0/23\n203.135.40.0/24\n203.135.43.0/24\n203.135.48.0/24\n203.135.50.0/24\n\n# 网易 NetEase\n42.186.0.0/16\n45.127.128.0/22\n45.195.24.0/24\n45.253.132.0/22\n45.253.240.0/22\n45.254.48.0/23\n59.111.0.0/20\n59.111.128.0/17\n103.71.120.0/21\n103.71.128.0/22\n103.71.196.0/22\n103.71.200.0/22\n103.72.12.0/22\n103.72.18.0/23\n103.72.24.0/22\n103.72.28.0/23\n103.72.38.0/23\n103.72.40.0/23\n103.72.44.0/22\n103.72.48.0/21\n103.72.128.0/21\n103.74.24.0/21\n103.74.48.0/22\n103.126.92.0/22\n103.129.252.0/22\n103.131.252.0/22\n103.135.240.0/22\n103.196.64.0/22\n106.2.32.0/19\n106.2.64.0/18\n114.113.196.0/22\n114.113.200.0/22\n115.236.112.0/20\n115.238.76.0/22\n123.58.160.0/19\n223.252.192.0/19\n\n# 360\n101.198.128.0/18\n101.198.192.0/19\n101.199.196.0/22\n\n# 国内ip地址\n1.0.1.0/24\n1.0.2.0/23\n1.0.8.0/21\n1.0.32.0/19\n1.1.0.0/24\n1.1.2.0/23\n1.1.4.0/22\n1.1.8.0/21\n1.1.16.0/20\n1.1.32.0/19\n1.2.0.0/23\n1.2.2.0/24\n1.2.5.0/24\n1.2.6.0/23\n1.2.8.0/21\n1.2.16.0/20\n1.2.32.0/19\n1.2.64.0/18\n1.3.0.0/16\n1.4.1.0/24\n1.4.2.0/23\n1.4.4.0/22\n1.4.8.0/21\n1.4.16.0/20\n1.4.32.0/19\n1.4.64.0/18\n1.8.0.0/18\n1.8.64.0/19\n1.8.96.0/22\n1.8.100.0/23\n1.8.112.0/20\n1.8.128.0/20\n1.8.144.0/22\n1.8.148.0/23\n1.8.154.0/23\n1.8.156.0/22\n1.8.160.0/19\n1.8.192.0/19\n1.8.224.0/20\n1.8.244.0/22\n1.8.248.0/21\n1.10.0.0/21\n1.10.8.0/23\n1.10.11.0/24\n1.10.12.0/22\n1.10.16.0/20\n1.10.32.0/19\n1.10.64.0/18\n1.12.0.0/14\n1.18.128.0/24\n1.24.0.0/13\n1.45.0.0/16\n1.48.0.0/14\n1.56.0.0/13\n1.68.0.0/14\n1.80.0.0/12\n1.116.0.0/15\n1.118.1.0/24\n1.118.2.0/23\n1.118.4.0/22\n1.118.8.0/21\n1.118.16.0/20\n1.118.32.0/19\n1.118.64.0/18\n1.118.128.0/17\n1.119.0.0/16\n1.180.0.0/14\n1.184.0.0/15\n1.188.0.0/14\n1.192.0.0/13\n1.202.0.0/15\n1.204.0.0/14\n2.20.54.23/32\n8.128.0.0/10\n8.209.36.0/22\n8.209.40.0/21\n8.209.48.0/20\n8.209.192.0/18\n8.210.0.0/15\n8.212.0.0/14\n8.216.0.0/13\n14.0.0.0/21\n14.0.12.0/22\n14.1.0.0/22\n14.1.24.0/22\n14.1.108.0/22\n14.16.0.0/12\n14.102.128.0/22\n14.102.180.0/22\n14.103.0.0/16\n14.104.0.0/13\n14.112.0.0/12\n14.130.0.0/15\n14.134.0.0/15\n14.144.0.0/12\n14.192.60.0/22\n14.192.76.0/22\n14.196.0.0/15\n14.204.0.0/15\n14.208.0.0/12\n20.81.0.0/24\n20.134.160.0/20\n20.139.160.0/20\n20.249.255.0/24\n20.251.0.0/22\n23.236.64.0/25\n23.236.64.128/26\n23.236.64.192/27\n27.0.128.0/21\n27.0.160.0/21\n27.0.188.0/22\n27.0.204.0/22\n27.0.208.0/21\n27.8.0.0/13\n27.16.0.0/12\n27.34.232.0/21\n27.36.0.0/14\n27.40.0.0/13\n27.50.40.0/21\n27.50.128.0/17\n27.54.72.0/21\n27.54.152.0/21\n27.54.192.0/18\n27.98.208.0/20\n27.98.224.0/19\n27.99.128.0/17\n27.103.0.0/16\n27.106.128.0/18\n27.106.204.0/22\n27.109.32.0/19\n27.109.124.0/22\n27.112.0.0/18\n27.112.80.0/20\n27.112.112.0/21\n27.113.128.0/18\n27.115.0.0/17\n27.116.44.0/22\n27.121.72.0/21\n27.121.120.0/21\n27.128.0.0/15\n27.131.220.0/22\n27.144.0.0/16\n27.148.0.0/14\n27.152.0.0/13\n27.184.0.0/13\n27.192.0.0/11\n27.224.0.0/14\n36.0.0.0/22\n36.0.16.0/20\n36.0.32.0/19\n36.0.64.0/18\n36.0.128.0/17\n36.1.0.0/16\n36.4.0.0/14\n36.16.0.0/12\n36.32.0.0/14\n36.36.0.0/16\n36.37.0.0/19\n36.37.36.0/23\n36.37.39.0/24\n36.37.40.0/21\n36.37.48.0/20\n36.40.0.0/13\n36.48.0.0/15\n36.51.0.0/17\n36.51.128.0/18\n36.51.192.0/19\n36.51.224.0/20\n36.51.240.0/21\n36.51.248.0/22\n36.51.252.0/23\n36.56.0.0/13\n36.96.0.0/11\n36.128.0.0/10\n36.192.0.0/11\n36.248.0.0/14\n36.254.0.0/16\n36.255.116.0/22\n36.255.128.0/22\n36.255.164.0/22\n36.255.172.0/22\n36.255.176.0/22\n38.142.239.114/32\n39.0.0.0/24\n39.0.2.0/23\n39.0.4.0/22\n39.0.8.0/21\n39.0.16.0/20\n39.0.32.0/19\n39.0.64.0/18\n39.0.128.0/17\n39.64.0.0/11\n39.96.0.0/13\n39.104.0.0/14\n39.108.0.0/16\n39.109.120.0/23\n39.128.0.0/10\n40.0.176.0/20\n40.0.247.0/24\n40.0.248.0/22\n40.0.252.0/23\n40.0.255.0/24\n40.72.0.0/15\n40.77.136.112/28\n40.77.236.224/27\n40.77.254.64/27\n40.125.128.0/17\n40.126.64.0/18\n40.198.10.0/24\n40.198.16.0/21\n40.198.24.0/23\n40.251.225.0/24\n40.251.227.0/24\n42.0.0.0/22\n42.0.8.0/21\n42.0.16.0/21\n42.0.24.0/22\n42.0.32.0/19\n42.0.128.0/17\n42.1.0.0/19\n42.1.32.0/20\n42.1.48.0/21\n42.1.56.0/22\n42.4.0.0/14\n42.48.0.0/13\n42.56.0.0/14\n42.62.0.0/17\n42.62.128.0/19\n42.62.160.0/20\n42.62.180.0/22\n42.62.184.0/21\n42.63.0.0/16\n42.80.0.0/15\n42.83.64.0/20\n42.83.80.0/22\n42.83.88.0/21\n42.83.96.0/19\n42.83.128.0/23\n42.83.134.0/24\n42.83.139.0/24\n42.83.140.0/22\n42.83.144.0/20\n42.83.160.0/19\n42.83.192.0/18\n42.84.0.0/14\n42.88.0.0/13\n42.96.64.0/19\n42.96.96.0/21\n42.96.108.0/22\n42.96.112.0/20\n42.96.128.0/17\n42.97.0.0/16\n42.99.0.0/18\n42.99.64.0/19\n42.99.96.0/20\n42.99.112.0/22\n42.99.120.0/21\n42.100.0.0/14\n42.120.0.0/15\n42.122.0.0/16\n42.123.0.0/19\n42.123.36.0/22\n42.123.40.0/21\n42.123.48.0/20\n42.123.64.0/18\n42.123.128.0/17\n42.128.0.0/12\n42.156.0.0/19\n42.156.36.0/22\n42.156.40.0/21\n42.156.48.0/20\n42.156.64.0/18\n42.156.128.0/17\n42.157.0.0/21\n42.157.8.0/22\n42.157.14.0/23\n42.157.16.0/20\n42.157.32.0/19\n42.157.64.0/18\n42.157.128.0/17\n42.158.0.0/15\n42.160.0.0/12\n42.176.0.0/13\n42.184.0.0/15\n42.186.0.0/16\n42.187.0.0/18\n42.187.64.0/19\n42.187.96.0/20\n42.187.112.0/21\n42.187.120.0/22\n42.187.128.0/17\n42.192.0.0/13\n42.201.0.0/17\n42.202.0.0/15\n42.204.0.0/14\n42.208.0.0/12\n42.224.0.0/12\n42.240.0.0/16\n42.242.0.0/15\n42.244.0.0/15\n42.246.0.0/16\n42.247.0.0/22\n42.247.4.0/24\n42.247.5.0/25\n42.247.5.128/26\n42.247.5.204/30\n42.247.5.208/28\n42.247.5.224/27\n42.247.6.0/23\n42.247.8.0/21\n42.247.16.0/20\n42.247.32.0/19\n42.247.64.0/18\n42.247.128.0/17\n42.248.0.0/13\n43.224.12.0/22\n43.224.24.0/22\n43.224.44.0/22\n43.224.52.0/22\n43.224.56.0/22\n43.224.68.0/22\n43.224.72.0/22\n43.224.80.0/22\n43.224.100.0/22\n43.224.144.0/22\n43.224.160.0/22\n43.224.176.0/22\n43.224.184.0/22\n43.224.200.0/21\n43.224.208.0/21\n43.224.216.0/22\n43.224.240.0/22\n43.225.76.0/22\n43.225.86.0/24\n43.225.120.0/22\n43.225.180.0/22\n43.225.208.0/22\n43.225.216.0/21\n43.225.224.0/20\n43.225.240.0/21\n43.225.252.0/22\n43.226.32.0/19\n43.226.64.0/19\n43.226.96.0/20\n43.226.112.0/21\n43.226.120.0/22\n43.226.128.0/19\n43.226.160.0/21\n43.226.236.0/22\n43.226.240.0/20\n43.227.0.0/21\n43.227.8.0/22\n43.227.32.0/19\n43.227.64.0/19\n43.227.104.0/22\n43.227.136.0/21\n43.227.144.0/22\n43.227.152.0/21\n43.227.160.0/20\n43.227.176.0/21\n43.227.188.0/22\n43.227.192.0/19\n43.227.232.0/22\n43.227.248.0/21\n43.228.0.0/18\n43.228.64.0/21\n43.228.76.0/22\n43.228.100.0/22\n43.228.116.0/24\n43.228.118.0/23\n43.228.132.0/22\n43.228.136.0/22\n43.228.148.0/22\n43.228.152.0/22\n43.228.188.0/22\n43.229.40.0/22\n43.229.48.0/22\n43.229.56.0/22\n43.229.96.0/22\n43.229.136.0/21\n43.229.168.0/21\n43.229.176.0/20\n43.229.192.0/21\n43.229.216.0/21\n43.229.232.0/21\n43.230.20.0/22\n43.230.32.0/22\n43.230.68.0/22\n43.230.72.0/22\n43.230.84.0/22\n43.230.124.0/22\n43.230.220.0/22\n43.230.224.0/19\n43.231.12.0/22\n43.231.32.0/20\n43.231.80.0/20\n43.231.96.0/20\n43.231.136.0/21\n43.231.144.0/20\n43.231.160.0/20\n43.231.176.0/21\n43.236.0.0/15\n43.238.0.0/16\n43.239.0.0/19\n43.239.32.0/20\n43.239.48.0/22\n43.239.116.0/22\n43.239.120.0/22\n43.239.172.0/22\n43.240.0.0/22\n43.240.56.0/21\n43.240.68.0/22\n43.240.72.0/21\n43.240.84.0/22\n43.240.124.0/22\n43.240.128.0/21\n43.240.136.0/22\n43.240.156.0/22\n43.240.160.0/19\n43.240.192.0/19\n43.240.240.0/20\n43.241.0.0/20\n43.241.16.0/21\n43.241.48.0/22\n43.241.76.0/22\n43.241.80.0/20\n43.241.112.0/22\n43.241.168.0/21\n43.241.176.0/21\n43.241.184.0/22\n43.241.208.0/20\n43.241.224.0/20\n43.241.240.0/22\n43.241.248.0/22\n43.242.8.0/21\n43.242.16.0/20\n43.242.48.0/22\n43.242.53.0/24\n43.242.54.0/23\n43.242.56.0/21\n43.242.64.0/22\n43.242.72.0/21\n43.242.80.0/20\n43.242.96.0/22\n43.242.144.0/20\n43.242.160.0/21\n43.242.180.0/22\n43.242.188.0/22\n43.242.192.0/21\n43.242.204.0/22\n43.242.216.0/21\n43.242.252.0/22\n43.243.4.0/22\n43.243.8.0/21\n43.243.16.0/22\n43.243.88.0/22\n43.243.128.0/22\n43.243.136.0/22\n43.243.144.0/21\n43.243.156.0/22\n43.243.180.0/22\n43.243.228.0/22\n43.243.232.0/22\n43.243.244.0/22\n43.246.0.0/18\n43.246.64.0/19\n43.246.96.0/22\n43.246.228.0/22\n43.247.4.0/22\n43.247.8.0/22\n43.247.44.0/22\n43.247.48.0/22\n43.247.68.0/22\n43.247.76.0/22\n43.247.84.0/22\n43.247.88.0/21\n43.247.96.0/21\n43.247.108.0/22\n43.247.112.0/22\n43.247.148.0/22\n43.247.152.0/22\n43.247.176.0/20\n43.247.196.0/22\n43.247.200.0/21\n43.247.208.0/20\n43.247.224.0/19\n43.248.0.0/21\n43.248.20.0/22\n43.248.28.0/22\n43.248.48.0/22\n43.248.76.0/22\n43.248.80.0/20\n43.248.96.0/19\n43.248.128.0/20\n43.248.144.0/21\n43.248.176.0/20\n43.248.192.0/20\n43.248.208.0/22\n43.248.228.0/22\n43.248.232.0/22\n43.248.244.0/22\n43.249.4.0/22\n43.249.120.0/22\n43.249.132.0/22\n43.249.136.0/22\n43.249.144.0/20\n43.249.160.0/21\n43.249.168.0/22\n43.249.192.0/22\n43.249.236.0/22\n43.250.4.0/22\n43.250.12.0/22\n43.250.16.0/21\n43.250.28.0/22\n43.250.32.0/22\n43.250.96.0/21\n43.250.108.0/22\n43.250.112.0/21\n43.250.128.0/22\n43.250.144.0/21\n43.250.160.0/22\n43.250.168.0/22\n43.250.176.0/22\n43.250.200.0/22\n43.250.212.0/22\n43.250.216.0/21\n43.250.236.0/22\n43.250.244.0/22\n43.251.4.0/22\n43.251.36.0/22\n43.251.192.0/22\n43.251.232.0/22\n43.251.244.0/22\n43.252.48.0/22\n43.252.56.0/22\n43.252.224.0/22\n43.254.0.0/21\n43.254.8.0/22\n43.254.24.0/22\n43.254.36.0/22\n43.254.44.0/22\n43.254.52.0/22\n43.254.64.0/22\n43.254.72.0/22\n43.254.84.0/22\n43.254.88.0/21\n43.254.100.0/22\n43.254.104.0/22\n43.254.112.0/21\n43.254.128.0/22\n43.254.136.0/21\n43.254.144.0/20\n43.254.168.0/21\n43.254.180.0/22\n43.254.184.0/21\n43.254.192.0/22\n43.254.200.0/22\n43.254.208.0/22\n43.254.220.0/22\n43.254.224.0/20\n43.254.240.0/22\n43.254.248.0/21\n43.255.0.0/21\n43.255.8.0/22\n43.255.16.0/22\n43.255.48.0/22\n43.255.64.0/20\n43.255.84.0/22\n43.255.96.0/22\n43.255.144.0/22\n43.255.176.0/22\n43.255.184.0/22\n43.255.192.0/22\n43.255.200.0/21\n43.255.208.0/21\n43.255.224.0/21\n43.255.232.0/22\n43.255.244.0/22\n45.40.192.0/20\n45.40.208.0/21\n45.40.224.0/19\n45.65.16.0/20\n45.112.132.0/22\n45.112.188.0/22\n45.112.208.0/22\n45.112.216.0/21\n45.112.228.0/22\n45.112.232.0/21\n45.113.12.0/22\n45.113.16.0/20\n45.113.40.0/22\n45.113.52.0/22\n45.113.72.0/22\n45.113.144.0/21\n45.113.168.0/22\n45.113.184.0/22\n45.113.200.0/21\n45.113.208.0/20\n45.113.240.0/22\n45.113.252.0/22\n45.114.0.0/22\n45.114.32.0/22\n45.114.52.0/22\n45.114.96.0/22\n45.114.136.0/22\n45.114.196.0/22\n45.114.200.0/22\n45.114.228.0/22\n45.114.237.0/24\n45.114.238.0/23\n45.114.252.0/22\n45.115.44.0/22\n45.115.100.0/22\n45.115.120.0/22\n45.115.132.0/22\n45.115.144.0/22\n45.115.156.0/22\n45.115.164.0/22\n45.115.200.0/22\n45.115.212.0/22\n45.115.244.0/22\n45.115.248.0/22\n45.116.16.0/22\n45.116.24.0/22\n45.116.32.0/21\n45.116.52.0/22\n45.116.96.0/21\n45.116.140.0/22\n45.116.152.0/22\n45.116.208.0/22\n45.117.8.0/22\n45.117.20.0/22\n45.117.68.0/22\n45.117.124.0/22\n45.117.252.0/22\n45.119.60.0/22\n45.119.64.0/21\n45.119.72.0/22\n45.119.104.0/22\n45.119.232.0/22\n45.120.100.0/22\n45.120.140.0/22\n45.120.164.0/22\n45.120.180.128/27\n45.120.240.0/22\n45.121.52.0/22\n45.121.64.0/21\n45.121.72.0/22\n45.121.92.0/22\n45.121.96.0/22\n45.121.172.0/22\n45.121.176.0/22\n45.121.240.0/20\n45.122.0.0/19\n45.122.32.0/21\n45.122.40.0/22\n45.122.60.0/22\n45.122.64.0/19\n45.122.96.0/20\n45.122.112.0/21\n45.122.160.0/19\n45.122.192.0/20\n45.122.208.0/21\n45.122.216.0/22\n45.123.28.0/22\n45.123.32.0/21\n45.123.44.0/22\n45.123.48.0/20\n45.123.64.0/20\n45.123.80.0/21\n45.123.120.0/22\n45.123.128.0/21\n45.123.136.0/22\n45.123.148.0/22\n45.123.152.0/21\n45.123.164.0/22\n45.123.168.0/21\n45.123.176.0/21\n45.123.184.0/22\n45.123.204.0/22\n45.123.212.0/22\n45.123.224.0/19\n45.124.0.0/22\n45.124.20.0/22\n45.124.28.0/22\n45.124.32.0/21\n45.124.44.0/22\n45.124.68.0/22\n45.124.76.0/22\n45.124.80.0/22\n45.124.100.0/22\n45.124.124.0/22\n45.124.172.0/22\n45.124.176.0/22\n45.124.208.0/22\n45.124.248.0/22\n45.125.24.0/22\n45.125.44.0/22\n45.125.52.0/22\n45.125.56.0/22\n45.125.76.0/22\n45.125.80.0/20\n45.125.96.0/21\n45.125.136.0/22\n45.126.48.0/21\n45.126.108.0/22\n45.126.112.0/21\n45.126.120.0/22\n45.126.220.0/22\n45.127.8.0/21\n45.127.128.0/22\n45.127.144.0/21\n45.127.156.0/22\n45.248.8.0/22\n45.248.80.0/22\n45.248.88.0/22\n45.248.96.0/20\n45.248.128.0/21\n45.248.204.0/22\n45.248.208.0/20\n45.248.224.0/19\n45.249.0.0/21\n45.249.12.0/22\n45.249.16.0/20\n45.249.32.0/21\n45.249.112.0/22\n45.249.188.0/22\n45.249.192.0/20\n45.249.208.0/21\n45.250.12.0/22\n45.250.16.0/22\n45.250.28.0/22\n45.250.32.0/21\n45.250.40.0/22\n45.250.76.0/22\n45.250.80.0/20\n45.250.96.0/22\n45.250.104.0/21\n45.250.112.0/20\n45.250.128.0/20\n45.250.144.0/21\n45.250.152.0/22\n45.250.164.0/22\n45.250.180.0/22\n45.250.184.0/21\n45.250.192.0/22\n45.251.0.0/22\n45.251.8.0/22\n45.251.16.0/21\n45.251.52.0/22\n45.251.84.0/22\n45.251.88.0/21\n45.251.96.0/21\n45.251.120.0/21\n45.251.137.0/24\n45.251.138.0/23\n45.251.140.0/22\n45.251.144.0/20\n45.251.160.0/19\n45.251.192.0/19\n45.251.224.0/22\n45.252.0.0/19\n45.252.32.0/20\n45.252.48.0/22\n45.252.84.0/22\n45.252.88.0/21\n45.252.96.0/19\n45.252.128.0/19\n45.252.160.0/20\n45.252.176.0/22\n45.252.192.0/19\n45.252.224.0/21\n45.252.232.0/22\n45.253.0.0/18\n45.253.64.0/20\n45.253.80.0/21\n45.253.92.0/22\n45.253.96.0/20\n45.253.112.0/21\n45.253.120.0/22\n45.253.130.0/23\n45.253.132.0/22\n45.253.136.0/21\n45.253.144.0/20\n45.253.160.0/19\n45.253.192.0/19\n45.253.224.0/20\n45.253.240.0/22\n45.254.0.0/20\n45.254.16.0/21\n45.254.28.0/22\n45.254.40.0/22\n45.254.48.0/20\n45.254.64.0/18\n45.254.128.0/18\n45.254.192.0/19\n45.254.224.0/21\n45.254.236.0/22\n45.254.240.0/22\n45.254.248.0/22\n45.255.0.0/18\n45.255.64.0/19\n45.255.96.0/20\n45.255.112.0/21\n45.255.120.0/22\n45.255.136.0/21\n45.255.144.0/20\n45.255.160.0/19\n45.255.192.0/19\n45.255.224.0/20\n45.255.240.0/21\n45.255.248.0/22\n46.248.24.0/23\n47.92.0.0/14\n47.96.0.0/11\n49.4.0.0/14\n49.51.56.0/22\n49.51.60.0/23\n49.51.110.0/23\n49.51.112.0/20\n49.52.0.0/14\n49.64.0.0/11\n49.112.0.0/13\n49.120.0.0/14\n49.128.0.0/24\n49.128.2.0/23\n49.128.4.0/22\n49.140.0.0/15\n49.152.0.0/14\n49.208.0.0/14\n49.220.0.0/14\n49.232.0.0/14\n49.239.0.0/18\n49.239.192.0/18\n52.80.0.0/14\n52.94.249.0/27\n52.130.0.0/15\n54.222.0.0/15\n54.231.208.0/20\n54.240.224.0/24\n57.92.96.0/20\n58.14.0.0/15\n58.16.0.0/13\n58.24.0.0/15\n58.30.0.0/15\n58.32.0.0/11\n58.65.232.0/21\n58.66.0.0/15\n58.68.128.0/19\n58.68.160.0/23\n58.68.163.0/24\n58.68.164.0/22\n58.68.179.0/24\n58.68.180.0/24\n58.68.200.0/21\n58.68.208.0/20\n58.68.224.0/19\n58.82.0.0/17\n58.83.0.0/16\n58.87.64.0/18\n58.99.128.0/17\n58.100.0.0/15\n58.116.0.0/14\n58.128.0.0/13\n58.144.0.0/16\n58.154.0.0/15\n58.192.0.0/11\n58.240.0.0/12\n59.32.0.0/11\n59.64.0.0/12\n59.80.0.0/15\n59.82.0.0/16\n59.83.0.0/18\n59.83.132.0/22\n59.83.136.0/21\n59.83.144.0/20\n59.83.160.0/19\n59.83.192.0/19\n59.83.224.0/20\n59.83.240.0/21\n59.83.248.0/22\n59.83.252.0/23\n59.83.254.0/24\n59.107.0.0/16\n59.108.0.0/14\n59.151.0.0/17\n59.152.16.0/20\n59.152.36.0/22\n59.152.64.0/20\n59.152.112.0/21\n59.153.4.0/22\n59.153.32.0/22\n59.153.64.0/21\n59.153.72.0/22\n59.153.92.0/22\n59.153.136.0/22\n59.153.152.0/21\n59.153.164.0/22\n59.153.168.0/21\n59.153.176.0/20\n59.153.192.0/22\n59.155.0.0/16\n59.172.0.0/14\n59.191.0.0/17\n59.192.0.0/10\n60.0.0.0/11\n60.55.0.0/16\n60.63.0.0/16\n60.160.0.0/11\n60.194.0.0/15\n60.200.0.0/13\n60.208.0.0/12\n60.232.0.0/15\n60.235.0.0/16\n60.245.128.0/17\n60.247.0.0/16\n60.252.0.0/16\n60.253.128.0/17\n60.255.0.0/16\n61.4.81.0/24\n61.4.82.0/23\n61.4.84.0/22\n61.4.88.0/21\n61.4.176.0/20\n61.8.160.0/20\n61.14.212.0/22\n61.14.216.0/21\n61.14.240.0/21\n61.28.0.0/17\n61.29.128.0/18\n61.29.192.0/19\n61.29.224.0/20\n61.45.128.0/18\n61.45.224.0/20\n61.47.128.0/18\n61.48.0.0/13\n61.87.192.0/18\n61.128.0.0/10\n61.232.0.0/14\n61.236.0.0/15\n61.240.0.0/14\n62.234.0.0/16\n68.79.0.0/18\n69.230.192.0/18\n69.231.128.0/18\n69.234.192.0/18\n69.235.128.0/18\n71.131.192.0/18\n71.132.0.0/18\n71.136.64.0/18\n71.137.0.0/18\n72.163.240.0/23\n72.163.248.0/22\n81.68.0.0/14\n81.161.63.0/24\n82.156.0.0/15\n87.254.207.0/24\n91.223.53.0/24\n91.239.190.0/24\n93.183.14.0/24\n93.183.18.0/24\n94.191.0.0/17\n101.0.0.0/22\n101.1.0.0/22\n101.2.172.0/22\n101.4.0.0/14\n101.16.0.0/12\n101.32.0.0/14\n101.36.0.0/18\n101.36.64.0/20\n101.36.88.0/21\n101.36.96.0/19\n101.36.128.0/17\n101.37.0.0/16\n101.38.0.0/15\n101.40.0.0/13\n101.48.0.0/15\n101.50.8.0/21\n101.50.56.0/22\n101.52.0.0/16\n101.53.100.0/22\n101.54.0.0/16\n101.55.224.0/21\n101.64.0.0/13\n101.72.0.0/14\n101.76.0.0/15\n101.78.0.0/22\n101.78.32.0/19\n101.80.0.0/12\n101.96.0.0/21\n101.96.8.0/22\n101.96.16.0/20\n101.96.128.0/17\n101.99.96.0/19\n101.101.64.0/19\n101.101.100.0/24\n101.101.102.0/23\n101.101.104.0/21\n101.101.112.0/20\n101.102.64.0/19\n101.102.100.0/23\n101.102.102.0/24\n101.102.104.0/21\n101.102.112.0/20\n101.104.0.0/14\n101.110.64.0/19\n101.110.96.0/20\n101.110.116.0/22\n101.110.120.0/21\n101.120.0.0/14\n101.124.0.0/15\n101.126.0.0/16\n101.128.0.0/22\n101.128.8.0/21\n101.128.16.0/20\n101.128.32.0/19\n101.129.0.0/16\n101.130.0.0/15\n101.132.0.0/15\n101.134.0.0/17\n101.134.128.0/19\n101.134.160.0/20\n101.134.176.0/21\n101.134.184.0/22\n101.134.189.0/24\n101.134.190.0/23\n101.134.192.0/18\n101.135.0.0/16\n101.144.0.0/12\n101.192.0.0/14\n101.196.0.0/16\n101.198.128.0/18\n101.198.194.0/24\n101.198.196.0/23\n101.198.200.0/22\n101.198.224.0/19\n101.199.0.0/19\n101.199.48.0/20\n101.199.64.0/18\n101.199.128.0/17\n101.200.0.0/15\n101.203.128.0/19\n101.203.160.0/21\n101.203.172.0/22\n101.203.176.0/20\n101.204.0.0/14\n101.224.0.0/13\n101.232.0.0/15\n101.234.64.0/21\n101.234.76.0/22\n101.234.80.0/20\n101.234.96.0/19\n101.236.0.0/14\n101.240.0.0/13\n101.248.0.0/15\n101.251.0.0/22\n101.251.8.0/21\n101.251.16.0/20\n101.251.32.0/19\n101.251.64.0/18\n101.251.128.0/17\n101.252.0.0/15\n101.254.0.0/16\n102.176.130.0/24\n103.1.8.0/22\n103.1.20.0/22\n103.1.24.0/22\n103.1.88.0/22\n103.1.168.0/22\n103.2.108.0/22\n103.2.156.0/22\n103.2.164.0/22\n103.2.200.0/21\n103.2.208.0/21\n103.3.84.0/22\n103.3.88.0/21\n103.3.96.0/19\n103.3.128.0/20\n103.3.148.0/22\n103.3.152.0/21\n103.4.56.0/22\n103.4.168.0/22\n103.4.184.0/22\n103.5.36.0/22\n103.5.52.0/23\n103.5.56.0/22\n103.5.152.0/22\n103.5.168.0/22\n103.5.192.0/22\n103.5.252.0/22\n103.6.76.0/22\n103.6.108.0/22\n103.6.120.0/22\n103.6.220.0/22\n103.6.228.0/22\n103.7.140.0/22\n103.7.212.0/22\n103.7.216.0/21\n103.8.0.0/21\n103.8.8.0/22\n103.8.32.0/22\n103.8.52.0/22\n103.8.68.0/22\n103.8.108.0/22\n103.8.156.0/22\n103.8.200.0/21\n103.8.220.0/22\n103.9.8.0/22\n103.9.24.0/22\n103.9.108.0/22\n103.9.152.0/22\n103.9.248.0/21\n103.10.0.0/22\n103.10.16.0/22\n103.10.84.0/22\n103.10.111.0/24\n103.10.140.0/22\n103.11.16.0/22\n103.11.168.0/22\n103.11.180.0/22\n103.12.32.0/22\n103.12.136.0/22\n103.12.184.0/22\n103.12.232.0/22\n103.13.12.0/22\n103.13.124.0/22\n103.13.144.0/22\n103.13.196.0/22\n103.13.244.0/22\n103.14.84.0/22\n103.14.132.0/22\n103.14.136.0/22\n103.14.156.0/22\n103.14.240.0/22\n103.15.4.0/22\n103.15.8.0/22\n103.15.16.0/22\n103.15.96.0/22\n103.15.200.0/22\n103.16.52.0/22\n103.16.80.0/21\n103.16.88.0/22\n103.16.108.0/22\n103.16.124.0/22\n103.17.40.0/22\n103.17.64.0/22\n103.17.120.0/23\n103.17.136.0/22\n103.17.160.0/22\n103.17.204.0/22\n103.17.228.0/22\n103.18.192.0/22\n103.18.208.0/21\n103.18.224.0/22\n103.19.12.0/22\n103.19.40.0/21\n103.19.64.0/21\n103.19.72.0/22\n103.19.232.0/22\n103.20.12.0/22\n103.20.32.0/23\n103.20.34.0/24\n103.20.68.0/22\n103.20.112.0/22\n103.20.128.0/22\n103.20.160.0/22\n103.20.248.0/22\n103.21.112.0/21\n103.21.140.0/22\n103.21.176.0/22\n103.21.240.0/22\n103.22.0.0/18\n103.22.64.0/19\n103.22.100.0/22\n103.22.104.0/21\n103.22.112.0/20\n103.22.188.0/22\n103.22.228.0/22\n103.22.252.0/22\n103.23.8.0/22\n103.23.56.0/22\n103.23.160.0/21\n103.23.176.0/22\n103.23.228.0/22\n103.24.24.0/22\n103.24.116.0/22\n103.24.128.0/22\n103.24.144.0/22\n103.24.176.0/22\n103.24.184.0/22\n103.24.228.0/22\n103.24.252.0/22\n103.25.20.0/22\n103.25.24.0/21\n103.25.32.0/21\n103.25.40.0/22\n103.25.48.0/22\n103.25.64.0/21\n103.25.148.0/22\n103.25.156.0/22\n103.25.216.0/22\n103.26.0.0/22\n103.26.64.0/22\n103.26.76.0/22\n103.26.116.0/22\n103.26.156.0/22\n103.26.160.0/22\n103.26.228.0/22\n103.26.240.0/22\n103.27.4.0/22\n103.27.12.0/22\n103.27.24.0/22\n103.27.56.0/22\n103.27.96.0/22\n103.27.240.0/22\n103.28.4.0/22\n103.28.8.0/22\n103.28.184.0/22\n103.28.204.0/22\n103.28.212.0/22\n103.29.16.0/22\n103.29.128.0/21\n103.29.136.0/22\n103.30.20.0/22\n103.30.96.0/22\n103.30.148.0/22\n103.30.202.0/23\n103.30.228.0/22\n103.30.236.0/22\n103.31.0.0/22\n103.31.48.0/21\n103.31.60.0/22\n103.31.64.0/21\n103.31.72.0/24\n103.31.148.0/22\n103.31.160.0/22\n103.31.168.0/22\n103.31.200.0/22\n103.31.236.0/22\n103.32.0.0/15\n103.34.0.0/16\n103.35.0.0/19\n103.35.32.0/20\n103.35.48.0/22\n103.35.104.0/22\n103.35.220.0/22\n103.36.28.0/22\n103.36.36.0/22\n103.36.56.0/21\n103.36.64.0/22\n103.36.72.0/22\n103.36.96.0/22\n103.36.132.0/22\n103.36.136.0/22\n103.36.160.0/19\n103.36.192.0/19\n103.36.224.0/20\n103.36.240.0/21\n103.37.12.0/22\n103.37.16.0/22\n103.37.24.0/22\n103.37.44.0/22\n103.37.52.0/22\n103.37.56.0/22\n103.37.72.0/22\n103.37.100.0/22\n103.37.104.0/22\n103.37.136.0/21\n103.37.144.0/20\n103.37.160.0/21\n103.37.172.0/22\n103.37.176.0/22\n103.37.188.0/22\n103.37.208.0/20\n103.37.252.0/22\n103.38.0.0/22\n103.38.32.0/22\n103.38.40.0/21\n103.38.76.0/22\n103.38.84.0/22\n103.38.92.0/22\n103.38.96.0/22\n103.38.116.0/22\n103.38.132.0/22\n103.38.140.0/22\n103.38.220.0/22\n103.38.224.0/21\n103.38.232.0/22\n103.38.252.0/23\n103.39.64.0/22\n103.39.88.0/22\n103.39.100.0/22\n103.39.104.0/22\n103.39.160.0/19\n103.39.200.0/21\n103.39.208.0/20\n103.39.224.0/21\n103.39.232.0/22\n103.40.12.0/22\n103.40.16.0/20\n103.40.32.0/20\n103.40.88.0/22\n103.40.192.0/22\n103.40.212.0/22\n103.40.220.0/22\n103.40.228.0/22\n103.40.232.0/21\n103.40.240.0/20\n103.41.0.0/22\n103.41.52.0/22\n103.41.140.0/22\n103.41.148.0/22\n103.41.152.0/22\n103.41.160.0/21\n103.41.220.0/22\n103.41.224.0/21\n103.41.232.0/22\n103.42.8.0/22\n103.42.24.0/22\n103.42.32.0/22\n103.42.64.0/21\n103.42.76.0/22\n103.42.232.0/22\n103.43.26.0/23\n103.43.96.0/21\n103.43.104.0/22\n103.43.124.0/22\n103.43.184.0/22\n103.43.192.0/21\n103.43.208.0/22\n103.43.220.0/22\n103.43.224.0/22\n103.43.240.0/22\n103.44.58.0/23\n103.44.80.0/22\n103.44.120.0/21\n103.44.144.0/22\n103.44.152.0/22\n103.44.168.0/22\n103.44.176.0/20\n103.44.192.0/20\n103.44.224.0/22\n103.44.236.0/22\n103.44.240.0/20\n103.45.0.0/18\n103.45.72.0/21\n103.45.80.0/20\n103.45.96.0/19\n103.45.128.0/18\n103.45.192.0/19\n103.45.224.0/22\n103.45.248.0/22\n103.46.0.0/22\n103.46.12.0/22\n103.46.16.0/20\n103.46.32.0/19\n103.46.64.0/18\n103.46.128.0/21\n103.46.136.0/22\n103.46.152.0/21\n103.46.160.0/20\n103.46.176.0/21\n103.46.244.0/22\n103.46.248.0/22\n103.47.4.0/22\n103.47.20.0/22\n103.47.36.0/22\n103.47.40.0/22\n103.47.48.0/22\n103.47.80.0/22\n103.47.96.0/22\n103.47.116.0/22\n103.47.120.0/22\n103.47.136.0/21\n103.47.212.0/22\n103.48.52.0/22\n103.48.92.0/22\n103.48.148.0/22\n103.48.152.0/22\n103.48.202.0/23\n103.48.216.0/21\n103.48.224.0/20\n103.48.240.0/21\n103.49.12.0/22\n103.49.20.0/22\n103.49.72.0/21\n103.49.96.0/22\n103.49.108.0/22\n103.49.128.0/22\n103.49.176.0/21\n103.50.36.0/22\n103.50.44.0/22\n103.50.48.0/20\n103.50.64.0/21\n103.50.72.0/22\n103.50.92.0/22\n103.50.108.0/22\n103.50.112.0/20\n103.50.132.0/22\n103.50.136.0/21\n103.50.172.0/22\n103.50.176.0/20\n103.50.192.0/21\n103.50.200.0/22\n103.50.220.0/22\n103.50.224.0/20\n103.50.240.0/21\n103.50.248.0/22\n103.52.40.0/22\n103.52.72.0/21\n103.52.80.0/21\n103.52.96.0/21\n103.52.104.0/22\n103.52.160.0/21\n103.52.172.0/22\n103.52.176.0/22\n103.52.184.0/22\n103.52.196.0/22\n103.53.64.0/21\n103.53.92.0/22\n103.53.124.0/22\n103.53.128.0/20\n103.53.144.0/22\n103.53.160.0/22\n103.53.180.0/22\n103.53.204.0/22\n103.53.208.0/21\n103.53.236.0/22\n103.53.248.0/22\n103.54.8.0/22\n103.54.48.0/22\n103.54.160.0/21\n103.54.212.0/22\n103.54.228.0/22\n103.54.240.0/22\n103.55.80.0/22\n103.55.120.0/22\n103.55.152.0/22\n103.55.172.0/22\n103.55.204.0/22\n103.55.208.0/22\n103.55.228.0/22\n103.55.236.0/22\n103.55.240.0/22\n103.56.20.0/22\n103.56.32.0/22\n103.56.56.0/21\n103.56.72.0/21\n103.56.140.0/22\n103.56.152.0/22\n103.56.184.0/22\n103.56.200.0/22\n103.57.12.0/22\n103.57.52.0/22\n103.57.56.0/22\n103.57.76.0/22\n103.57.136.0/22\n103.57.196.0/22\n103.58.24.0/22\n103.59.76.0/22\n103.59.112.0/21\n103.59.120.0/24\n103.59.123.0/24\n103.59.124.0/22\n103.59.128.0/22\n103.59.148.0/22\n103.60.32.0/22\n103.60.44.0/22\n103.60.164.0/22\n103.60.228.0/22\n103.60.236.0/22\n103.61.60.0/24\n103.61.104.0/22\n103.61.140.0/22\n103.61.152.0/21\n103.61.160.0/22\n103.61.172.0/22\n103.61.176.0/22\n103.62.24.0/22\n103.62.72.0/21\n103.62.80.0/21\n103.62.88.0/22\n103.62.96.0/19\n103.62.128.0/21\n103.62.156.0/22\n103.62.160.0/19\n103.62.192.0/22\n103.62.204.0/22\n103.62.208.0/20\n103.62.224.0/22\n103.63.32.0/19\n103.63.64.0/20\n103.63.80.0/21\n103.63.88.0/22\n103.63.140.0/22\n103.63.144.0/22\n103.63.152.0/22\n103.63.160.0/20\n103.63.176.0/21\n103.63.184.0/22\n103.63.192.0/20\n103.63.208.0/22\n103.63.240.0/20\n103.64.0.0/21\n103.64.24.0/21\n103.64.32.0/19\n103.64.64.0/18\n103.64.140.0/22\n103.64.144.0/22\n103.64.152.0/21\n103.64.160.0/19\n103.64.192.0/18\n103.65.0.0/21\n103.65.12.0/22\n103.65.16.0/22\n103.65.48.0/20\n103.65.64.0/19\n103.65.100.0/22\n103.65.104.0/21\n103.65.112.0/20\n103.65.128.0/21\n103.65.136.0/22\n103.65.144.0/20\n103.65.160.0/20\n103.66.32.0/22\n103.66.40.0/22\n103.66.108.0/22\n103.66.200.0/22\n103.66.240.0/20\n103.67.0.0/21\n103.67.8.0/22\n103.67.40.0/21\n103.67.48.0/20\n103.67.64.0/18\n103.67.128.0/20\n103.67.144.0/21\n103.67.172.0/24\n103.67.175.0/24\n103.67.192.0/22\n103.67.212.0/22\n103.68.88.0/22\n103.68.100.0/22\n103.68.128.0/22\n103.69.16.0/22\n103.69.212.0/23\n103.70.8.0/22\n103.70.148.0/22\n103.70.236.0/22\n103.70.252.0/22\n103.71.0.0/22\n103.71.68.0/22\n103.71.72.0/22\n103.71.80.0/21\n103.71.88.0/22\n103.71.120.0/21\n103.71.128.0/22\n103.71.196.0/22\n103.71.200.0/22\n103.71.232.0/22\n103.72.12.0/22\n103.72.16.0/20\n103.72.32.0/20\n103.72.48.0/21\n103.72.112.0/21\n103.72.124.0/22\n103.72.128.0/21\n103.72.149.0/24\n103.72.150.0/23\n103.72.172.0/22\n103.72.180.0/22\n103.72.224.0/19\n103.73.0.0/19\n103.73.48.0/22\n103.73.116.0/22\n103.73.120.0/22\n103.73.128.0/20\n103.73.168.0/22\n103.73.176.0/22\n103.73.204.0/22\n103.73.208.0/22\n103.73.240.0/23\n103.73.244.0/22\n103.73.248.0/22\n103.74.24.0/21\n103.74.32.0/20\n103.74.48.0/22\n103.74.56.0/21\n103.74.80.0/22\n103.74.124.0/22\n103.74.148.0/22\n103.74.152.0/21\n103.74.204.0/22\n103.74.232.0/22\n103.75.87.0/24\n103.75.88.0/21\n103.75.104.0/21\n103.75.112.0/22\n103.75.120.0/22\n103.75.128.0/22\n103.75.144.0/22\n103.75.152.0/22\n103.76.60.0/22\n103.76.64.0/21\n103.76.72.0/22\n103.76.92.0/22\n103.76.216.0/21\n103.76.224.0/22\n103.77.28.0/22\n103.77.52.0/22\n103.77.56.0/22\n103.77.88.0/22\n103.77.132.0/22\n103.77.148.0/22\n103.77.220.0/22\n103.78.56.0/21\n103.78.64.0/22\n103.78.124.0/22\n103.78.172.0/22\n103.78.176.0/22\n103.78.196.0/22\n103.78.228.0/22\n103.79.24.0/21\n103.79.36.0/22\n103.79.40.0/21\n103.79.56.0/21\n103.79.64.0/21\n103.79.80.0/21\n103.79.136.0/22\n103.79.188.0/22\n103.79.192.0/20\n103.79.208.0/21\n103.79.243.0/24\n103.80.44.0/22\n103.80.72.0/22\n103.80.176.0/21\n103.80.184.0/22\n103.80.192.0/22\n103.80.200.0/22\n103.80.232.0/22\n103.81.4.0/22\n103.81.44.0/22\n103.81.48.0/22\n103.81.96.0/22\n103.81.120.0/22\n103.81.148.0/22\n103.81.164.0/22\n103.81.200.0/22\n103.81.232.0/22\n103.82.60.0/22\n103.82.68.0/22\n103.82.84.0/22\n103.82.104.0/22\n103.82.224.0/22\n103.82.236.0/22\n103.83.44.0/22\n103.83.52.0/22\n103.83.60.0/22\n103.83.72.0/22\n103.83.112.0/22\n103.83.132.0/22\n103.83.180.0/22\n103.84.0.0/22\n103.84.12.0/22\n103.84.20.0/22\n103.84.24.0/21\n103.84.48.0/22\n103.84.56.0/22\n103.84.64.0/22\n103.84.72.0/22\n103.85.44.0/22\n103.85.48.0/21\n103.85.56.0/22\n103.85.84.0/22\n103.85.136.0/22\n103.85.144.0/22\n103.85.164.0/22\n103.85.168.0/21\n103.85.176.0/22\n103.86.28.0/22\n103.86.32.0/22\n103.86.60.0/22\n103.86.129.0/24\n103.86.204.0/22\n103.86.208.0/20\n103.86.224.0/19\n103.87.0.0/21\n103.87.20.0/22\n103.87.32.0/22\n103.87.96.0/22\n103.87.132.0/22\n103.87.180.0/22\n103.87.224.0/22\n103.88.4.0/22\n103.88.8.0/21\n103.88.16.0/21\n103.88.32.0/21\n103.88.60.0/22\n103.88.64.0/22\n103.88.72.0/22\n103.88.96.0/21\n103.88.152.0/23\n103.88.164.0/22\n103.88.212.0/22\n103.89.28.0/22\n103.89.96.0/20\n103.89.112.0/22\n103.89.148.0/22\n103.89.172.0/22\n103.89.184.0/21\n103.89.192.0/19\n103.89.224.0/21\n103.90.52.0/22\n103.90.92.0/22\n103.90.100.0/22\n103.90.104.0/21\n103.90.112.0/20\n103.90.128.0/21\n103.90.152.0/22\n103.90.168.0/22\n103.90.173.0/24\n103.90.176.0/22\n103.90.188.0/22\n103.90.192.0/22\n103.91.36.0/22\n103.91.40.0/22\n103.91.108.0/22\n103.91.152.0/22\n103.91.176.0/22\n103.91.200.0/22\n103.91.208.0/21\n103.91.236.0/22\n103.92.48.0/20\n103.92.64.0/20\n103.92.80.0/22\n103.92.88.0/22\n103.92.108.0/22\n103.92.124.0/22\n103.92.132.0/22\n103.92.156.0/22\n103.92.164.0/22\n103.92.168.0/21\n103.92.176.0/20\n103.92.192.0/22\n103.92.236.0/22\n103.92.240.0/20\n103.93.0.0/21\n103.93.28.0/22\n103.93.84.0/22\n103.93.152.0/22\n103.93.180.0/22\n103.93.204.0/22\n103.94.12.0/22\n103.94.20.0/22\n103.94.28.0/22\n103.94.32.0/20\n103.94.72.0/22\n103.94.88.0/22\n103.94.116.0/22\n103.94.160.0/22\n103.94.182.0/24\n103.94.200.0/22\n103.95.31.0/24\n103.95.52.0/22\n103.95.70.0/23\n103.95.88.0/21\n103.95.136.0/21\n103.95.144.0/22\n103.95.152.0/22\n103.95.216.0/21\n103.95.224.0/22\n103.95.236.0/22\n103.95.240.0/20\n103.96.8.0/22\n103.96.124.0/22\n103.96.136.0/22\n103.96.152.0/21\n103.96.160.0/19\n103.96.192.0/20\n103.96.208.0/21\n103.96.216.0/22\n103.97.40.0/22\n103.97.60.0/23\n103.97.112.0/21\n103.97.148.0/22\n103.97.188.0/22\n103.97.192.0/22\n103.98.40.0/21\n103.98.48.0/22\n103.98.56.0/22\n103.98.80.0/22\n103.98.88.0/22\n103.98.100.0/22\n103.98.124.0/24\n103.98.126.0/23\n103.98.136.0/21\n103.98.144.0/22\n103.98.164.0/22\n103.98.168.0/22\n103.98.180.0/22\n103.98.196.0/22\n103.98.216.0/21\n103.98.224.0/21\n103.98.232.0/22\n103.98.240.0/21\n103.98.248.0/23\n103.98.250.0/24\n103.98.252.0/22\n103.99.56.0/22\n103.99.104.0/22\n103.99.116.0/22\n103.99.120.0/22\n103.99.132.0/22\n103.99.136.0/21\n103.99.144.0/22\n103.99.152.0/22\n103.99.220.0/22\n103.99.232.0/21\n103.100.0.0/22\n103.100.32.0/22\n103.100.40.0/22\n103.100.48.0/22\n103.100.56.0/22\n103.100.64.0/22\n103.100.88.0/22\n103.100.116.0/22\n103.100.144.0/22\n103.100.240.0/22\n103.100.248.0/21\n103.101.4.0/22\n103.101.8.0/21\n103.101.60.0/22\n103.101.121.0/24\n103.101.122.0/23\n103.101.124.0/24\n103.101.126.0/23\n103.101.144.0/21\n103.101.180.0/22\n103.101.184.0/22\n103.102.76.0/22\n103.102.80.0/22\n103.102.168.0/21\n103.102.180.0/22\n103.102.184.0/21\n103.102.192.0/22\n103.102.196.0/24\n103.102.200.0/22\n103.102.208.0/21\n103.103.12.0/22\n103.103.16.0/22\n103.103.36.0/22\n103.103.72.0/22\n103.103.188.0/22\n103.103.204.0/22\n103.104.36.0/22\n103.104.40.0/22\n103.104.64.0/22\n103.104.152.0/22\n103.104.252.0/22\n103.105.0.0/21\n103.105.12.0/22\n103.105.16.0/22\n103.105.60.0/22\n103.105.116.0/22\n103.105.180.0/22\n103.105.184.0/22\n103.105.200.0/21\n103.105.220.0/22\n103.106.36.0/22\n103.106.40.0/21\n103.106.60.0/22\n103.106.68.0/22\n103.106.96.0/22\n103.106.120.0/22\n103.106.128.0/21\n103.106.190.0/23\n103.106.196.0/22\n103.106.212.0/22\n103.106.252.0/22\n103.107.0.0/22\n103.107.28.0/22\n103.107.32.0/22\n103.107.44.0/22\n103.107.72.0/22\n103.107.164.0/22\n103.107.168.0/22\n103.107.188.0/22\n103.107.192.0/22\n103.107.208.0/20\n103.108.52.0/22\n103.108.160.0/21\n103.108.194.0/24\n103.108.196.0/22\n103.108.208.0/21\n103.108.224.0/22\n103.108.244.0/22\n103.108.251.0/24\n103.109.20.0/22\n103.109.48.0/22\n103.109.88.0/22\n103.109.106.0/23\n103.109.248.0/22\n103.110.32.0/22\n103.110.92.0/22\n103.110.119.0/24\n103.110.127.0/24\n103.110.128.0/23\n103.110.131.0/24\n103.110.132.0/22\n103.110.136.0/22\n103.110.156.0/22\n103.110.188.0/22\n103.110.204.0/22\n103.111.64.0/22\n103.111.172.0/22\n103.111.252.0/22\n103.112.72.0/22\n103.112.88.0/21\n103.112.108.0/22\n103.112.112.0/22\n103.112.140.0/22\n103.113.4.0/22\n103.113.144.0/22\n103.113.220.0/22\n103.113.232.0/21\n103.114.4.0/22\n103.114.68.0/22\n103.114.100.0/22\n103.114.148.0/22\n103.114.156.0/23\n103.114.159.0/24\n103.114.212.0/22\n103.114.236.0/22\n103.114.240.0/22\n103.115.52.0/22\n103.115.68.0/22\n103.115.92.0/22\n103.115.120.0/22\n103.115.148.0/22\n103.115.248.0/22\n103.116.76.0/22\n103.116.92.0/22\n103.116.120.0/22\n103.116.128.0/22\n103.116.150.0/23\n103.116.184.0/22\n103.116.220.0/22\n103.116.224.0/21\n103.117.16.0/22\n103.117.88.0/22\n103.117.188.0/22\n103.117.220.0/22\n103.118.19.0/24\n103.118.52.0/22\n103.118.56.0/21\n103.118.64.0/21\n103.118.72.0/22\n103.118.88.0/22\n103.118.173.0/24\n103.119.115.0/24\n103.119.156.0/22\n103.119.180.0/22\n103.119.200.0/22\n103.119.224.0/22\n103.120.52.0/22\n103.120.72.0/22\n103.120.76.0/24\n103.120.88.0/22\n103.120.96.0/22\n103.120.140.0/22\n103.120.196.0/22\n103.120.224.0/22\n103.121.52.0/22\n103.121.160.0/21\n103.121.250.0/24\n103.121.252.0/22\n103.122.48.0/22\n103.122.178.0/23\n103.122.192.0/22\n103.122.240.0/23\n103.122.242.0/24\n103.123.4.0/22\n103.123.56.0/22\n103.123.88.0/21\n103.123.116.0/22\n103.123.176.0/22\n103.123.200.0/21\n103.123.208.0/21\n103.124.24.0/22\n103.124.48.0/22\n103.124.64.0/22\n103.124.212.0/22\n103.124.216.0/22\n103.125.20.0/22\n103.125.44.0/22\n103.125.132.0/22\n103.125.164.0/22\n103.125.196.0/22\n103.125.236.0/22\n103.126.0.0/22\n103.126.16.0/23\n103.126.44.0/22\n103.126.124.0/22\n103.126.128.0/22\n103.129.53.0/24\n103.129.54.0/23\n103.129.148.0/22\n103.130.132.0/22\n103.130.160.0/22\n103.130.228.0/22\n103.131.20.0/22\n103.131.36.0/22\n103.131.152.0/22\n103.131.168.0/22\n103.131.224.0/21\n103.131.240.0/22\n103.132.60.0/22\n103.132.64.0/20\n103.132.80.0/22\n103.132.104.0/21\n103.132.112.0/21\n103.132.120.0/22\n103.132.188.0/22\n103.132.208.0/21\n103.133.12.0/22\n103.133.40.0/22\n103.133.128.0/22\n103.133.232.0/22\n103.134.196.0/22\n103.135.80.0/22\n103.135.124.0/22\n103.135.148.0/22\n103.135.156.0/22\n103.135.160.0/21\n103.135.176.0/22\n103.135.184.0/22\n103.135.192.0/21\n103.135.236.0/22\n103.136.128.0/22\n103.136.232.0/22\n103.137.58.0/23\n103.137.60.0/24\n103.137.136.0/23\n103.137.149.0/24\n103.137.180.0/22\n103.137.236.0/22\n103.138.2.0/23\n103.138.134.0/23\n103.138.208.0/23\n103.138.220.0/23\n103.138.248.0/23\n103.139.22.0/23\n103.139.134.0/23\n103.139.136.0/23\n103.139.172.0/23\n103.139.204.0/23\n103.139.212.0/23\n103.140.14.0/23\n103.140.46.0/23\n103.140.140.0/23\n103.140.144.0/23\n103.140.192.0/23\n103.141.10.0/23\n103.141.58.0/23\n103.141.128.0/23\n103.141.186.0/23\n103.141.242.0/23\n103.142.0.0/23\n103.142.28.0/23\n103.142.58.0/23\n103.142.82.0/23\n103.142.96.0/23\n103.142.122.0/23\n103.142.128.0/23\n103.142.154.0/23\n103.142.156.0/23\n103.142.180.0/23\n103.142.186.0/23\n103.142.220.0/23\n103.142.230.0/24\n103.142.234.0/23\n103.142.238.0/23\n103.143.16.0/22\n103.143.31.0/24\n103.143.74.0/23\n103.143.124.0/23\n103.143.132.0/22\n103.143.174.0/23\n103.143.228.0/23\n103.144.66.0/23\n103.144.70.0/23\n103.144.72.0/23\n103.144.136.0/23\n103.144.158.0/23\n103.145.40.0/22\n103.145.73.0/24\n103.145.80.0/23\n103.145.90.0/23\n103.145.92.0/22\n103.145.98.0/23\n103.145.107.0/24\n103.145.188.0/23\n103.146.6.0/23\n103.146.72.0/23\n103.146.90.0/23\n103.146.126.0/23\n103.146.138.0/23\n103.146.236.0/23\n103.146.252.0/23\n103.147.124.0/23\n103.147.198.0/23\n103.147.206.0/23\n103.148.174.0/23\n103.192.0.0/19\n103.192.48.0/21\n103.192.56.0/22\n103.192.84.0/22\n103.192.88.0/21\n103.192.96.0/20\n103.192.112.0/22\n103.192.128.0/20\n103.192.144.0/22\n103.192.164.0/22\n103.192.188.0/22\n103.192.208.0/21\n103.192.216.0/22\n103.192.252.0/22\n103.193.40.0/21\n103.193.120.0/22\n103.193.140.0/22\n103.193.160.0/22\n103.193.188.0/22\n103.193.192.0/22\n103.193.212.0/22\n103.193.216.0/21\n103.193.224.0/20\n103.194.16.0/22\n103.194.230.0/23\n103.195.112.0/22\n103.195.152.0/22\n103.195.160.0/22\n103.196.64.0/22\n103.196.72.0/22\n103.196.88.0/21\n103.196.96.0/22\n103.196.168.0/22\n103.196.185.0/24\n103.196.186.0/23\n103.197.181.0/24\n103.197.183.0/24\n103.197.228.0/22\n103.197.253.0/24\n103.197.254.0/23\n103.198.20.0/22\n103.198.60.0/22\n103.198.64.0/22\n103.198.72.0/22\n103.198.124.0/22\n103.198.156.0/22\n103.198.180.0/22\n103.198.196.0/22\n103.198.200.0/22\n103.198.216.0/21\n103.198.224.0/20\n103.198.240.0/21\n103.199.164.0/22\n103.199.196.0/22\n103.199.228.0/22\n103.199.252.0/22\n103.200.52.0/22\n103.200.64.0/21\n103.200.136.0/21\n103.200.144.0/20\n103.200.160.0/19\n103.200.192.0/22\n103.200.220.0/22\n103.200.224.0/19\n103.201.0.0/20\n103.201.16.0/21\n103.201.28.0/22\n103.201.32.0/19\n103.201.64.0/22\n103.201.76.0/22\n103.201.80.0/20\n103.201.96.0/20\n103.201.112.0/21\n103.201.120.0/22\n103.201.152.0/21\n103.201.160.0/19\n103.201.192.0/18\n103.202.0.0/19\n103.202.32.0/20\n103.202.56.0/21\n103.202.64.0/18\n103.202.128.0/20\n103.202.144.0/22\n103.202.152.0/21\n103.202.160.0/19\n103.202.192.0/20\n103.202.212.0/22\n103.202.228.0/22\n103.202.236.0/22\n103.202.240.0/20\n103.203.0.0/19\n103.203.32.0/22\n103.203.96.0/19\n103.203.128.0/22\n103.203.140.0/22\n103.203.164.0/22\n103.203.168.0/22\n103.203.192.0/22\n103.203.200.0/22\n103.203.212.0/22\n103.203.216.0/22\n103.204.24.0/22\n103.204.88.0/22\n103.204.112.0/22\n103.204.136.0/21\n103.204.144.0/21\n103.204.152.0/22\n103.204.196.0/22\n103.204.232.0/21\n103.205.4.0/22\n103.205.40.0/21\n103.205.52.0/22\n103.205.108.0/22\n103.205.116.0/22\n103.205.120.0/24\n103.205.136.0/22\n103.205.162.0/24\n103.205.188.0/22\n103.205.192.0/21\n103.205.200.0/22\n103.205.236.0/22\n103.205.248.0/21\n103.206.0.0/22\n103.206.44.0/22\n103.206.148.0/22\n103.207.104.0/22\n103.207.184.0/21\n103.207.192.0/20\n103.207.208.0/21\n103.207.220.0/22\n103.207.228.0/22\n103.207.232.0/22\n103.208.12.0/22\n103.208.16.0/22\n103.208.28.0/22\n103.208.48.0/22\n103.208.148.0/22\n103.209.112.0/22\n103.209.136.0/22\n103.209.200.0/22\n103.209.208.0/22\n103.209.216.0/22\n103.210.0.0/22\n103.210.96.0/22\n103.210.156.0/22\n103.210.160.0/19\n103.210.217.0/24\n103.210.218.0/23\n103.211.44.0/22\n103.211.96.0/23\n103.211.98.0/24\n103.211.100.0/22\n103.211.156.0/22\n103.211.165.0/24\n103.211.168.0/22\n103.211.220.0/22\n103.211.248.0/22\n103.212.0.0/20\n103.212.44.0/22\n103.212.48.0/22\n103.212.84.0/22\n103.212.100.0/22\n103.212.148.0/22\n103.212.164.0/22\n103.212.196.0/22\n103.212.200.0/22\n103.212.252.0/22\n103.213.40.0/21\n103.213.48.0/20\n103.213.64.0/19\n103.213.96.0/22\n103.213.132.0/22\n103.213.136.0/21\n103.213.144.0/20\n103.213.160.0/19\n103.213.252.0/22\n103.214.48.0/22\n103.214.84.0/22\n103.214.212.0/22\n103.214.240.0/21\n103.215.28.0/22\n103.215.32.0/21\n103.215.44.0/22\n103.215.100.0/23\n103.215.108.0/22\n103.215.116.0/22\n103.215.120.0/22\n103.215.140.0/22\n103.216.4.0/22\n103.216.8.0/21\n103.216.16.0/20\n103.216.32.0/20\n103.216.64.0/22\n103.216.108.0/22\n103.216.136.0/22\n103.216.152.0/22\n103.216.224.0/21\n103.216.240.0/20\n103.217.0.0/18\n103.217.168.0/22\n103.217.180.0/22\n103.217.184.0/21\n103.217.192.0/20\n103.218.8.0/21\n103.218.16.0/21\n103.218.29.0/24\n103.218.30.0/23\n103.218.32.0/19\n103.218.64.0/19\n103.218.192.0/20\n103.218.208.0/21\n103.218.216.0/22\n103.219.24.0/21\n103.219.32.0/21\n103.219.64.0/22\n103.219.84.0/22\n103.219.88.0/21\n103.219.96.0/21\n103.219.176.0/22\n103.219.184.0/22\n103.220.48.0/20\n103.220.64.0/22\n103.220.92.0/22\n103.220.96.0/22\n103.220.104.0/21\n103.220.116.0/22\n103.220.120.0/21\n103.220.128.0/20\n103.220.144.0/21\n103.220.152.0/22\n103.220.160.0/19\n103.220.192.0/21\n103.220.200.0/22\n103.220.240.0/20\n103.221.0.0/19\n103.221.32.0/21\n103.221.88.0/21\n103.221.96.0/19\n103.221.128.0/18\n103.221.192.0/20\n103.222.0.0/20\n103.222.16.0/22\n103.222.24.0/21\n103.222.33.0/24\n103.222.34.0/23\n103.222.36.0/22\n103.222.40.0/21\n103.222.48.0/20\n103.222.64.0/18\n103.222.128.0/18\n103.222.192.0/19\n103.222.224.0/21\n103.222.232.0/22\n103.222.240.0/21\n103.223.16.0/20\n103.223.32.0/19\n103.223.64.0/19\n103.223.96.0/20\n103.223.112.0/21\n103.223.124.0/22\n103.223.128.0/21\n103.223.140.0/22\n103.223.144.0/20\n103.223.160.0/20\n103.223.176.0/21\n103.223.188.0/22\n103.223.192.0/18\n103.224.0.0/22\n103.224.40.0/21\n103.224.60.0/22\n103.224.220.0/22\n103.224.224.0/21\n103.224.232.0/22\n103.226.40.0/22\n103.226.56.0/21\n103.226.80.0/22\n103.226.116.0/22\n103.226.132.0/22\n103.226.156.0/22\n103.226.180.0/22\n103.226.196.0/22\n103.227.48.0/22\n103.227.72.0/21\n103.227.80.0/22\n103.227.100.0/22\n103.227.120.0/22\n103.227.132.0/22\n103.227.136.0/22\n103.227.196.0/22\n103.227.204.0/23\n103.227.206.0/24\n103.227.212.0/22\n103.227.228.0/22\n103.228.12.0/22\n103.228.88.0/22\n103.228.136.0/22\n103.228.160.0/22\n103.228.176.0/22\n103.228.204.0/22\n103.228.208.0/22\n103.228.228.0/22\n103.228.232.0/22\n103.229.20.0/22\n103.229.136.0/22\n103.229.148.0/22\n103.229.172.0/22\n103.229.212.0/22\n103.229.216.0/21\n103.229.228.0/22\n103.229.236.0/22\n103.229.240.0/22\n103.230.0.0/22\n103.230.28.0/22\n103.230.40.0/21\n103.230.96.0/22\n103.230.196.0/22\n103.230.200.0/21\n103.230.212.0/22\n103.230.236.0/22\n103.231.16.0/21\n103.231.64.0/21\n103.231.144.0/22\n103.231.180.0/22\n103.231.244.0/22\n103.232.4.0/22\n103.232.17.168/29\n103.232.144.0/22\n103.233.4.0/22\n103.233.44.0/22\n103.233.52.0/22\n103.233.104.0/22\n103.233.128.0/22\n103.233.136.0/22\n103.233.228.0/22\n103.234.0.0/22\n103.234.20.0/22\n103.234.56.0/22\n103.234.124.0/22\n103.234.128.0/22\n103.234.172.0/22\n103.234.180.0/22\n103.235.56.0/21\n103.235.80.0/22\n103.235.85.0/24\n103.235.86.0/23\n103.235.128.0/20\n103.235.144.0/21\n103.235.184.0/22\n103.235.192.0/22\n103.235.200.0/22\n103.235.220.0/22\n103.235.224.0/19\n103.236.0.0/18\n103.236.64.0/19\n103.236.96.0/22\n103.236.120.0/22\n103.236.184.0/22\n103.236.240.0/20\n103.237.0.0/20\n103.237.24.0/21\n103.237.68.0/22\n103.237.88.0/22\n103.237.152.0/22\n103.237.176.0/20\n103.237.192.0/18\n103.238.0.0/21\n103.238.18.0/23\n103.238.20.0/22\n103.238.24.0/21\n103.238.32.0/20\n103.238.48.0/21\n103.238.56.0/22\n103.238.88.0/21\n103.238.96.0/22\n103.238.132.0/22\n103.238.140.0/22\n103.238.144.0/22\n103.238.160.0/22\n103.238.165.0/24\n103.238.166.0/23\n103.238.168.0/21\n103.238.176.0/20\n103.238.196.0/22\n103.238.204.0/22\n103.238.252.0/22\n103.239.0.0/22\n103.239.44.0/22\n103.239.68.0/22\n103.239.152.0/21\n103.239.180.0/22\n103.239.184.0/22\n103.239.192.0/21\n103.239.204.0/22\n103.239.208.0/22\n103.239.224.0/22\n103.239.244.0/22\n103.240.16.0/22\n103.240.36.0/22\n103.240.72.0/22\n103.240.84.0/22\n103.240.124.0/22\n103.240.172.0/22\n103.240.188.0/22\n103.240.244.0/22\n103.241.12.0/22\n103.241.92.0/22\n103.241.96.0/22\n103.241.160.0/22\n103.241.184.0/21\n103.241.220.0/22\n103.242.64.0/23\n103.242.128.0/23\n103.242.160.0/22\n103.242.168.0/21\n103.242.176.0/22\n103.242.200.0/22\n103.242.212.0/22\n103.242.220.0/22\n103.242.240.0/22\n103.243.136.0/22\n103.243.252.0/22\n103.244.16.0/22\n103.244.58.0/23\n103.244.60.0/22\n103.244.64.0/20\n103.244.80.0/21\n103.244.116.0/22\n103.244.164.0/22\n103.244.232.0/22\n103.244.252.0/22\n103.245.23.0/24\n103.245.52.0/22\n103.245.60.0/22\n103.245.80.0/22\n103.245.124.0/22\n103.245.128.0/22\n103.246.8.0/21\n103.246.120.0/21\n103.246.132.0/22\n103.246.152.0/22\n103.247.168.0/21\n103.247.176.0/22\n103.247.200.0/22\n103.247.212.0/22\n103.248.64.0/23\n103.248.100.0/22\n103.248.124.0/22\n103.248.152.0/22\n103.248.168.0/22\n103.248.192.0/22\n103.248.212.0/22\n103.248.224.0/21\n103.249.8.0/21\n103.249.52.0/22\n103.249.128.0/22\n103.249.136.0/22\n103.249.144.0/22\n103.249.164.0/22\n103.249.168.0/21\n103.249.176.0/22\n103.249.188.0/22\n103.249.192.0/22\n103.249.244.0/22\n103.249.252.0/22\n103.250.32.0/22\n103.250.104.0/22\n103.250.124.0/22\n103.250.180.0/22\n103.250.192.0/22\n103.250.216.0/22\n103.250.224.0/22\n103.250.236.0/22\n103.250.248.0/21\n103.251.32.0/22\n103.251.84.0/22\n103.251.96.0/22\n103.251.124.0/22\n103.251.160.0/22\n103.251.192.0/22\n103.251.204.0/22\n103.251.240.0/22\n103.252.28.0/22\n103.252.36.0/22\n103.252.64.0/22\n103.252.96.0/22\n103.252.104.0/22\n103.252.172.0/22\n103.252.204.0/22\n103.252.208.0/22\n103.252.232.0/22\n103.252.248.0/22\n103.253.4.0/22\n103.253.60.0/22\n103.253.204.0/22\n103.253.220.0/22\n103.253.224.0/22\n103.253.232.0/22\n103.254.8.0/22\n103.254.20.0/22\n103.254.64.0/21\n103.254.76.0/22\n103.254.112.0/22\n103.254.176.0/22\n103.254.188.0/22\n103.255.68.0/22\n103.255.88.0/21\n103.255.136.0/21\n103.255.184.0/22\n103.255.200.0/22\n103.255.208.0/22\n103.255.228.0/22\n104.222.196.0/24\n106.0.0.0/24\n106.0.2.0/23\n106.0.4.0/22\n106.0.8.0/21\n106.0.16.0/20\n106.0.44.0/22\n106.0.64.0/18\n106.2.0.0/23\n106.2.3.0/24\n106.2.4.0/22\n106.2.8.0/21\n106.2.16.0/20\n106.2.32.0/19\n106.2.64.0/18\n106.2.128.0/17\n106.3.16.0/20\n106.3.32.0/19\n106.3.64.0/20\n106.3.80.0/22\n106.3.88.0/21\n106.3.96.0/19\n106.3.128.0/19\n106.3.164.0/22\n106.3.168.0/21\n106.3.176.0/20\n106.3.192.0/18\n106.4.0.0/14\n106.8.0.0/15\n106.11.0.0/16\n106.12.0.0/14\n106.16.0.0/12\n106.32.0.0/12\n106.48.0.0/21\n106.48.8.0/22\n106.48.16.0/20\n106.48.32.0/20\n106.48.57.0/24\n106.48.60.0/24\n106.48.63.0/24\n106.48.64.0/18\n106.48.128.0/17\n106.49.1.0/24\n106.49.2.0/23\n106.49.4.0/22\n106.49.8.0/21\n106.49.16.0/20\n106.49.32.0/19\n106.49.64.0/19\n106.49.96.0/24\n106.49.98.0/23\n106.49.100.0/22\n106.49.104.0/21\n106.49.112.0/20\n106.49.128.0/17\n106.50.0.0/16\n106.52.0.0/14\n106.56.0.0/13\n106.74.0.0/16\n106.75.0.0/17\n106.75.128.0/18\n106.75.201.0/24\n106.75.204.0/22\n106.75.208.0/20\n106.75.224.0/19\n106.80.0.0/12\n106.108.0.0/14\n106.112.0.0/12\n106.224.0.0/12\n109.71.4.0/24\n109.244.0.0/16\n110.6.0.0/15\n110.16.0.0/14\n110.34.40.0/21\n110.40.0.0/15\n110.42.0.0/16\n110.43.0.0/18\n110.43.64.0/21\n110.43.72.0/22\n110.43.76.0/23\n110.43.80.0/20\n110.43.96.0/19\n110.43.128.0/17\n110.44.12.0/22\n110.44.144.0/20\n110.48.0.0/16\n110.51.0.0/16\n110.52.0.0/15\n110.56.0.0/13\n110.64.0.0/15\n110.72.0.0/15\n110.75.0.0/16\n110.76.0.0/20\n110.76.16.0/22\n110.76.20.0/24\n110.76.22.0/24\n110.76.24.0/21\n110.76.32.0/19\n110.76.132.0/22\n110.76.156.0/22\n110.76.184.0/22\n110.76.192.0/18\n110.77.0.0/17\n110.80.0.0/13\n110.88.0.0/14\n110.92.68.0/22\n110.93.32.0/19\n110.94.0.0/15\n110.96.0.0/11\n110.152.0.0/14\n110.156.0.0/15\n110.166.0.0/15\n110.172.192.0/18\n110.173.0.0/19\n110.173.32.0/20\n110.173.64.0/19\n110.173.192.0/19\n110.176.0.0/12\n110.192.0.0/11\n110.228.0.0/14\n110.232.32.0/19\n110.236.0.0/15\n110.240.0.0/12\n111.0.0.0/10\n111.66.0.0/16\n111.67.192.0/20\n111.68.64.0/19\n111.72.0.0/13\n111.85.0.0/16\n111.91.192.0/19\n111.92.248.0/21\n111.112.0.0/14\n111.116.0.0/15\n111.118.200.0/21\n111.119.64.0/18\n111.119.128.0/19\n111.120.0.0/14\n111.124.0.0/16\n111.126.0.0/15\n111.128.0.0/11\n111.160.0.0/13\n111.170.0.0/16\n111.172.0.0/14\n111.176.0.0/13\n111.186.0.0/15\n111.192.0.0/12\n111.208.0.0/13\n111.221.28.0/24\n111.221.128.0/17\n111.222.0.0/16\n111.223.4.0/22\n111.223.8.0/21\n111.223.16.0/22\n111.223.240.0/22\n111.223.249.0/24\n111.223.250.0/23\n111.224.0.0/13\n111.235.96.0/19\n111.235.156.0/22\n111.235.160.0/21\n111.235.170.0/23\n111.235.172.0/22\n111.235.176.0/20\n112.0.0.0/10\n112.64.0.0/14\n112.73.64.0/18\n112.74.0.0/16\n112.80.0.0/12\n112.96.0.0/13\n112.109.128.0/17\n112.111.0.0/16\n112.112.0.0/14\n112.116.0.0/15\n112.122.0.0/15\n112.124.0.0/14\n112.128.0.0/14\n112.132.0.0/16\n112.137.48.0/21\n112.192.0.0/14\n112.224.0.0/11\n113.0.0.0/13\n113.8.0.0/15\n113.11.192.0/19\n113.12.0.0/14\n113.16.0.0/15\n113.18.0.0/16\n113.21.232.0/21\n113.24.0.0/14\n113.31.0.0/16\n113.44.0.0/14\n113.48.0.0/14\n113.52.160.0/19\n113.52.228.0/22\n113.54.0.0/15\n113.56.0.0/15\n113.58.0.0/16\n113.59.0.0/17\n113.59.224.0/22\n113.62.0.0/15\n113.64.0.0/10\n113.128.0.0/15\n113.130.96.0/20\n113.130.112.0/21\n113.132.0.0/14\n113.136.0.0/13\n113.194.0.0/15\n113.197.100.0/23\n113.197.102.0/24\n113.197.104.0/22\n113.200.0.0/15\n113.202.0.0/16\n113.204.0.0/14\n113.208.96.0/19\n113.208.128.0/17\n113.209.0.0/16\n113.212.0.0/18\n113.212.100.0/22\n113.212.184.0/21\n113.213.0.0/17\n113.214.0.0/15\n113.218.0.0/15\n113.220.0.0/14\n113.224.0.0/12\n113.240.0.0/13\n113.248.0.0/14\n114.28.0.0/17\n114.28.128.0/18\n114.28.192.0/19\n114.28.232.0/22\n114.28.236.0/23\n114.28.240.0/20\n114.31.64.0/21\n114.54.0.0/15\n114.60.0.0/14\n114.64.0.0/14\n114.68.0.0/16\n114.79.64.0/18\n114.80.0.0/12\n114.96.0.0/13\n114.104.0.0/14\n114.110.0.0/20\n114.110.64.0/18\n114.111.0.0/19\n114.111.160.0/19\n114.112.4.0/22\n114.112.8.0/22\n114.112.24.0/21\n114.112.32.0/19\n114.112.64.0/19\n114.112.96.0/20\n114.112.116.0/22\n114.112.120.0/21\n114.112.136.0/21\n114.112.144.0/20\n114.112.160.0/19\n114.112.192.0/19\n114.113.0.0/17\n114.113.128.0/21\n114.113.140.0/22\n114.113.144.0/20\n114.113.160.0/19\n114.113.196.0/22\n114.113.200.0/21\n114.113.208.0/20\n114.113.224.0/20\n114.114.0.0/15\n114.116.0.0/15\n114.118.0.0/16\n114.119.0.0/17\n114.119.192.0/18\n114.132.0.0/16\n114.135.0.0/16\n114.138.0.0/15\n114.141.64.0/21\n114.141.80.0/21\n114.141.128.0/18\n114.196.0.0/15\n114.198.248.0/21\n114.208.0.0/12\n114.224.0.0/11\n115.24.0.0/14\n115.28.0.0/15\n115.31.64.0/20\n115.32.0.0/14\n115.42.56.0/22\n115.44.0.0/14\n115.48.0.0/12\n115.69.64.0/20\n115.84.0.0/18\n115.84.192.0/19\n115.85.192.0/18\n115.100.0.0/14\n115.104.0.0/14\n115.120.0.0/14\n115.124.16.0/20\n115.148.0.0/14\n115.152.0.0/13\n115.166.64.0/19\n115.168.0.0/16\n115.169.0.0/23\n115.169.3.0/24\n115.169.6.0/24\n115.169.9.0/24\n115.169.14.0/23\n115.169.16.0/20\n115.169.39.0/24\n115.169.42.0/23\n115.169.44.0/22\n115.169.48.0/20\n115.169.64.0/18\n115.169.128.0/17\n115.170.0.0/15\n115.172.0.0/14\n115.180.0.0/14\n115.187.0.0/20\n115.190.0.0/15\n115.192.0.0/11\n115.224.0.0/12\n116.0.8.0/21\n116.0.24.0/21\n116.1.0.0/16\n116.2.0.0/15\n116.4.0.0/14\n116.8.0.0/14\n116.13.0.0/16\n116.16.0.0/12\n116.50.0.0/20\n116.52.0.0/14\n116.56.0.0/15\n116.58.128.0/20\n116.58.208.0/20\n116.60.0.0/14\n116.66.0.0/18\n116.66.64.0/19\n116.66.96.0/20\n116.66.120.0/22\n116.68.136.0/21\n116.68.176.0/21\n116.69.0.0/16\n116.70.0.0/17\n116.76.0.0/14\n116.85.0.0/17\n116.85.128.0/18\n116.85.192.0/19\n116.85.224.0/20\n116.85.240.0/21\n116.85.248.0/23\n116.85.250.0/24\n116.85.252.0/22\n116.89.144.0/20\n116.90.80.0/20\n116.90.184.0/21\n116.95.0.0/16\n116.112.0.0/14\n116.116.0.0/15\n116.128.0.0/10\n116.192.0.0/16\n116.193.16.0/20\n116.193.32.0/19\n116.193.176.0/21\n116.194.0.0/15\n116.196.0.0/21\n116.196.8.0/22\n116.196.12.0/23\n116.196.16.0/20\n116.196.32.0/19\n116.196.64.0/18\n116.196.128.0/18\n116.196.192.0/21\n116.196.200.0/23\n116.196.203.0/24\n116.196.204.0/22\n116.196.208.0/20\n116.196.224.0/19\n116.197.160.0/21\n116.197.180.0/23\n116.198.0.0/16\n116.199.0.0/17\n116.199.128.0/19\n116.204.0.0/17\n116.204.232.0/22\n116.205.0.0/16\n116.207.0.0/16\n116.208.0.0/14\n116.212.160.0/20\n116.213.64.0/18\n116.213.128.0/17\n116.214.32.0/19\n116.214.64.0/20\n116.214.128.0/17\n116.215.0.0/16\n116.216.0.0/14\n116.224.0.0/12\n116.242.0.0/15\n116.244.0.0/14\n116.248.0.0/15\n116.252.0.0/15\n116.254.104.0/21\n116.254.129.0/24\n116.254.130.0/23\n116.254.132.0/22\n116.254.136.0/21\n116.254.144.0/20\n116.254.160.0/19\n116.254.192.0/18\n116.255.128.0/17\n117.8.0.0/13\n117.21.0.0/16\n117.22.0.0/15\n117.24.0.0/13\n117.32.0.0/13\n117.40.0.0/14\n117.44.0.0/15\n117.48.0.0/15\n117.50.0.0/16\n117.51.128.0/23\n117.51.131.0/24\n117.51.132.0/22\n117.51.136.0/21\n117.51.144.0/20\n117.51.160.0/19\n117.51.192.0/18\n117.53.48.0/20\n117.53.176.0/20\n117.57.0.0/16\n117.58.0.0/18\n117.59.0.0/16\n117.60.0.0/14\n117.64.0.0/13\n117.72.0.0/15\n117.74.64.0/19\n117.74.128.0/17\n117.75.0.0/16\n117.76.0.0/14\n117.80.0.0/12\n117.100.0.0/15\n117.103.16.0/20\n117.103.40.0/21\n117.103.72.0/21\n117.103.128.0/20\n117.104.168.0/21\n117.106.0.0/15\n117.112.0.0/13\n117.120.64.0/18\n117.120.128.0/17\n117.121.0.0/19\n117.121.32.0/21\n117.121.40.0/22\n117.121.44.0/23\n117.121.46.0/24\n117.121.48.0/20\n117.121.64.0/18\n117.121.128.0/20\n117.121.148.0/22\n117.121.152.0/21\n117.121.160.0/19\n117.121.192.0/21\n117.122.128.0/17\n117.124.0.0/14\n117.128.0.0/10\n118.24.0.0/15\n118.26.0.0/19\n118.26.36.0/22\n118.26.40.0/21\n118.26.48.0/20\n118.26.64.0/19\n118.26.104.0/21\n118.26.112.0/20\n118.26.128.0/17\n118.28.0.0/15\n118.30.0.0/20\n118.30.16.0/21\n118.30.24.0/22\n118.30.32.0/19\n118.30.64.0/18\n118.30.128.0/17\n118.31.0.0/16\n118.64.0.0/15\n118.66.0.0/16\n118.67.112.0/20\n118.72.0.0/13\n118.80.0.0/15\n118.84.0.0/15\n118.88.32.0/19\n118.88.64.0/18\n118.88.128.0/17\n118.89.0.0/16\n118.102.16.0/20\n118.102.32.0/21\n118.103.164.0/22\n118.103.168.0/21\n118.103.176.0/22\n118.103.245.0/24\n118.103.246.0/23\n118.112.0.0/13\n118.120.0.0/14\n118.124.0.0/15\n118.126.1.0/24\n118.126.2.0/23\n118.126.4.0/22\n118.126.8.0/21\n118.126.16.0/23\n118.126.18.0/24\n118.126.32.0/19\n118.126.64.0/18\n118.126.128.0/17\n118.127.128.0/19\n118.132.0.0/14\n118.144.0.0/14\n118.178.0.0/16\n118.180.0.0/14\n118.184.5.0/24\n118.184.10.0/24\n118.184.115.0/24\n118.184.116.0/22\n118.184.120.0/23\n118.184.122.0/24\n118.184.128.0/18\n118.184.192.0/19\n118.184.240.0/20\n118.186.0.0/15\n118.188.0.0/16\n118.190.0.0/16\n118.191.0.0/20\n118.191.24.0/21\n118.191.32.0/19\n118.191.64.0/18\n118.191.144.0/21\n118.191.153.0/24\n118.191.154.0/23\n118.191.156.0/22\n118.191.160.0/19\n118.191.192.0/20\n118.191.209.0/24\n118.191.210.0/23\n118.191.212.0/22\n118.191.248.0/21\n118.192.0.0/16\n118.193.0.0/22\n118.193.32.0/20\n118.193.56.0/21\n118.193.68.0/22\n118.193.72.0/24\n118.193.77.0/24\n118.193.96.0/19\n118.194.0.0/17\n118.194.128.0/18\n118.194.192.0/19\n118.194.232.0/21\n118.194.240.0/20\n118.195.0.0/16\n118.196.0.0/14\n118.202.0.0/15\n118.204.0.0/14\n118.212.0.0/15\n118.215.192.0/18\n118.224.0.0/14\n118.228.0.0/17\n118.228.128.0/20\n118.228.144.0/21\n118.228.156.0/22\n118.228.160.0/19\n118.228.192.0/18\n118.229.0.0/16\n118.230.0.0/16\n118.239.0.0/16\n118.242.0.0/16\n118.244.0.0/14\n118.248.0.0/13\n119.0.0.0/15\n119.2.0.0/19\n119.2.128.0/17\n119.3.0.0/16\n119.4.0.0/14\n119.10.0.0/17\n119.15.136.0/21\n119.16.0.0/16\n119.18.192.0/20\n119.18.208.0/21\n119.18.224.0/19\n119.19.0.0/16\n119.20.0.0/14\n119.27.64.0/18\n119.27.128.0/17\n119.28.28.0/24\n119.29.0.0/16\n119.30.48.0/20\n119.31.192.0/19\n119.32.0.0/14\n119.36.0.0/15\n119.38.0.0/17\n119.38.128.0/18\n119.38.192.0/20\n119.38.208.0/22\n119.38.212.0/23\n119.38.214.0/27\n119.38.214.56/29\n119.38.214.64/26\n119.38.214.128/25\n119.38.215.0/24\n119.38.216.0/21\n119.39.0.0/16\n119.40.0.0/18\n119.40.64.0/20\n119.40.128.0/17\n119.41.0.0/16\n119.42.0.0/19\n119.42.52.0/22\n119.42.128.0/20\n119.42.224.0/19\n119.44.0.0/15\n119.48.0.0/13\n119.57.0.0/16\n119.58.0.0/16\n119.59.128.0/17\n119.60.0.0/15\n119.62.0.0/16\n119.63.32.0/19\n119.75.208.0/20\n119.78.0.0/15\n119.80.0.0/16\n119.82.208.0/20\n119.84.0.0/14\n119.88.0.0/16\n119.89.0.0/17\n119.89.128.0/21\n119.89.136.0/23\n119.89.139.0/24\n119.89.140.0/22\n119.89.144.0/20\n119.89.160.0/20\n119.89.176.0/22\n119.89.180.0/23\n119.89.183.0/24\n119.89.184.0/21\n119.89.192.0/23\n119.89.194.0/24\n119.89.196.0/22\n119.89.200.0/21\n119.89.208.0/21\n119.89.217.0/24\n119.89.218.0/23\n119.89.220.0/22\n119.89.224.0/19\n119.90.0.0/15\n119.96.0.0/13\n119.108.0.0/15\n119.112.0.0/12\n119.128.0.0/12\n119.144.0.0/14\n119.148.160.0/19\n119.151.192.0/18\n119.160.200.0/21\n119.161.120.0/21\n119.161.128.0/21\n119.161.160.0/19\n119.161.192.0/18\n119.162.0.0/15\n119.164.0.0/14\n119.176.0.0/12\n119.232.0.0/15\n119.235.128.0/19\n119.235.160.0/20\n119.235.184.0/22\n119.248.0.0/14\n119.252.96.0/21\n119.252.240.0/21\n119.252.249.0/24\n119.252.252.0/23\n119.253.0.0/16\n119.254.0.0/15\n120.0.0.0/12\n120.24.0.0/14\n120.30.0.0/15\n120.32.0.0/12\n120.48.0.0/15\n120.52.0.0/14\n120.64.0.0/13\n120.72.32.0/19\n120.72.128.0/17\n120.76.0.0/14\n120.80.0.0/13\n120.88.8.0/21\n120.90.0.0/15\n120.92.0.0/17\n120.92.128.0/18\n120.92.192.0/22\n120.92.198.0/23\n120.92.200.0/21\n120.92.208.0/20\n120.92.224.0/19\n120.94.0.0/15\n120.128.0.0/13\n120.136.16.0/21\n120.136.128.0/18\n120.137.0.0/17\n120.143.128.0/19\n120.192.0.0/10\n121.0.8.0/21\n121.0.16.0/20\n121.4.0.0/15\n121.8.0.0/13\n121.16.0.0/12\n121.32.0.0/13\n121.40.0.0/14\n121.46.0.0/18\n121.46.76.0/22\n121.46.128.0/17\n121.47.0.0/16\n121.48.0.0/15\n121.50.8.0/21\n121.51.0.0/16\n121.52.160.0/19\n121.52.208.0/20\n121.52.224.0/19\n121.54.176.0/21\n121.55.0.0/18\n121.56.0.0/15\n121.58.0.0/17\n121.58.136.0/21\n121.58.144.0/20\n121.58.160.0/21\n121.59.0.0/16\n121.60.0.0/14\n121.68.0.0/14\n121.76.0.0/15\n121.79.128.0/18\n121.89.0.0/16\n121.100.128.0/17\n121.101.0.0/18\n121.101.208.0/20\n121.192.0.0/13\n121.200.192.0/21\n121.201.0.0/16\n121.204.0.0/14\n121.224.0.0/12\n121.248.0.0/14\n121.255.0.0/16\n122.0.64.0/18\n122.0.128.0/17\n122.4.0.0/14\n122.10.132.0/23\n122.10.136.0/23\n122.10.196.0/23\n122.10.216.0/22\n122.10.228.0/22\n122.10.232.0/21\n122.10.240.0/21\n122.10.248.0/22\n122.11.0.0/17\n122.12.0.0/15\n122.14.0.0/17\n122.14.192.0/18\n122.48.0.0/16\n122.49.0.0/18\n122.51.0.0/16\n122.64.0.0/11\n122.96.0.0/15\n122.98.144.0/20\n122.98.160.0/21\n122.98.172.0/22\n122.98.176.0/20\n122.98.192.0/21\n122.98.232.0/21\n122.98.240.0/20\n122.102.0.0/20\n122.102.64.0/19\n122.112.0.0/18\n122.112.64.0/19\n122.112.96.0/22\n122.112.107.0/24\n122.112.118.0/24\n122.112.122.0/24\n122.112.125.0/24\n122.112.128.0/17\n122.113.0.0/16\n122.114.0.0/16\n122.115.0.0/18\n122.115.80.0/20\n122.115.96.0/19\n122.115.128.0/17\n122.119.0.0/16\n122.128.100.0/22\n122.128.120.0/21\n122.136.0.0/13\n122.144.128.0/17\n122.152.192.0/18\n122.156.0.0/14\n122.188.0.0/14\n122.192.0.0/14\n122.198.0.0/16\n122.200.40.0/21\n122.200.64.0/18\n122.201.48.0/20\n122.204.0.0/14\n122.224.0.0/12\n122.240.0.0/13\n122.248.24.0/21\n122.248.48.0/20\n122.255.64.0/21\n123.0.128.0/21\n123.0.136.0/23\n123.0.139.0/24\n123.0.140.0/22\n123.0.144.0/20\n123.0.160.0/19\n123.4.0.0/14\n123.8.0.0/13\n123.49.130.0/23\n123.49.132.0/22\n123.49.136.0/22\n123.49.152.0/21\n123.49.160.0/19\n123.49.192.0/18\n123.50.160.0/19\n123.52.0.0/14\n123.56.0.0/15\n123.58.0.0/18\n123.58.64.0/20\n123.58.80.0/21\n123.58.88.0/22\n123.58.96.0/19\n123.58.128.0/17\n123.59.0.0/16\n123.61.0.0/16\n123.62.0.0/16\n123.64.0.0/11\n123.96.0.0/15\n123.98.0.0/17\n123.99.128.0/17\n123.100.0.0/19\n123.100.232.0/24\n123.101.0.0/16\n123.103.0.0/20\n123.103.16.0/21\n123.103.24.0/22\n123.103.28.0/23\n123.103.30.0/24\n123.103.32.0/19\n123.103.64.0/18\n123.108.134.0/24\n123.108.138.0/23\n123.108.140.0/24\n123.108.142.0/24\n123.108.208.0/20\n123.112.0.0/12\n123.128.0.0/13\n123.137.0.0/16\n123.138.0.0/15\n123.144.0.0/12\n123.160.0.0/12\n123.176.60.0/22\n123.176.80.0/20\n123.177.0.0/16\n123.178.0.0/15\n123.180.0.0/14\n123.184.0.0/13\n123.196.0.0/15\n123.199.128.0/17\n123.206.0.0/15\n123.232.0.0/14\n123.242.0.0/17\n123.242.192.0/21\n123.244.0.0/14\n123.249.0.0/16\n123.253.109.0/24\n123.253.110.0/24\n123.253.240.0/22\n123.254.96.0/21\n124.6.64.0/18\n124.14.0.0/15\n124.16.0.0/15\n124.20.0.0/14\n124.28.192.0/18\n124.29.0.0/17\n124.31.0.0/16\n124.40.112.0/20\n124.40.128.0/18\n124.40.192.0/19\n124.40.240.0/22\n124.42.0.0/16\n124.47.0.0/18\n124.64.0.0/15\n124.66.0.0/17\n124.67.0.0/16\n124.68.0.0/17\n124.68.128.0/18\n124.68.192.0/19\n124.68.224.0/20\n124.68.240.0/23\n124.68.242.0/24\n124.68.244.0/23\n124.68.254.0/23\n124.69.0.0/16\n124.70.0.0/15\n124.72.0.0/13\n124.88.0.0/13\n124.108.8.0/21\n124.108.40.0/21\n124.109.96.0/21\n124.112.0.0/14\n124.116.0.0/15\n124.118.0.0/16\n124.119.0.0/17\n124.119.128.0/18\n124.119.192.0/19\n124.119.224.0/20\n124.119.240.0/22\n124.119.244.0/23\n124.119.246.0/25\n124.119.246.128/26\n124.119.246.192/27\n124.119.246.224/28\n124.119.246.240/29\n124.119.246.248/30\n124.119.246.254/31\n124.119.247.0/24\n124.119.248.0/21\n124.126.0.0/15\n124.128.0.0/13\n124.147.128.0/17\n124.150.137.0/24\n124.151.0.0/16\n124.152.0.0/16\n124.160.0.0/13\n124.172.0.0/14\n124.192.0.0/15\n124.196.0.0/16\n124.200.0.0/13\n124.220.0.0/14\n124.224.0.0/12\n124.240.0.0/17\n124.240.128.0/18\n124.242.0.0/16\n124.243.192.0/18\n124.248.0.0/17\n124.249.0.0/16\n124.250.0.0/15\n124.254.0.0/18\n125.31.192.0/18\n125.32.0.0/12\n125.58.128.0/17\n125.61.128.0/17\n125.62.0.0/18\n125.64.0.0/11\n125.96.0.0/15\n125.98.0.0/16\n125.104.0.0/13\n125.112.0.0/12\n125.169.0.0/16\n125.171.0.0/16\n125.208.0.0/19\n125.208.37.0/24\n125.208.40.0/24\n125.208.45.0/24\n125.208.46.0/23\n125.208.48.0/20\n125.210.0.0/15\n125.213.0.0/17\n125.214.96.0/19\n125.215.0.0/18\n125.216.0.0/13\n125.254.128.0/17\n128.108.0.0/16\n129.28.0.0/16\n129.204.0.0/16\n129.211.0.0/16\n129.223.254.0/24\n129.227.99.0/24\n130.36.146.0/23\n130.214.218.0/23\n131.228.96.0/24\n131.253.12.0/29\n131.253.12.80/28\n131.253.12.240/29\n132.232.0.0/16\n132.237.134.0/24\n132.237.150.0/24\n134.175.0.0/16\n135.159.208.0/20\n135.244.80.0/20\n137.59.59.0/24\n137.59.88.0/22\n138.32.244.0/22\n139.5.56.0/21\n139.5.80.0/22\n139.5.92.0/22\n139.5.128.0/22\n139.5.160.0/22\n139.5.192.0/22\n139.5.204.0/22\n139.5.244.0/22\n139.9.0.0/16\n139.129.0.0/16\n139.138.238.0/28\n139.148.0.0/16\n139.155.0.0/16\n139.159.0.0/19\n139.159.32.0/21\n139.159.40.0/22\n139.159.52.0/22\n139.159.56.0/21\n139.159.64.0/19\n139.159.96.0/20\n139.159.112.0/22\n139.159.116.0/23\n139.159.120.0/21\n139.159.128.0/17\n139.170.0.0/16\n139.176.0.0/16\n139.183.0.0/16\n139.186.0.0/16\n139.189.0.0/16\n139.196.0.0/15\n139.198.0.0/21\n139.198.8.0/23\n139.198.11.0/24\n139.198.12.0/22\n139.198.16.0/20\n139.198.32.0/19\n139.198.66.0/23\n139.198.68.0/22\n139.198.72.0/21\n139.198.80.0/20\n139.198.96.0/20\n139.198.113.0/24\n139.198.114.0/23\n139.198.116.0/22\n139.198.122.0/23\n139.198.124.0/22\n139.198.128.0/17\n139.199.0.0/16\n139.200.0.0/13\n139.208.0.0/13\n139.217.0.0/16\n139.219.0.0/16\n139.220.0.0/17\n139.220.128.0/18\n139.220.192.0/22\n139.220.196.0/23\n139.220.200.0/21\n139.220.208.0/23\n139.220.212.0/22\n139.220.216.0/21\n139.220.224.0/19\n139.221.0.0/16\n139.224.0.0/16\n139.226.0.0/15\n140.75.0.0/16\n140.101.208.0/24\n140.143.0.0/16\n140.179.0.0/16\n140.205.0.0/18\n140.205.64.0/19\n140.205.96.0/20\n140.205.112.0/21\n140.205.120.0/23\n140.205.123.0/24\n140.205.124.0/22\n140.205.128.0/17\n140.206.0.0/15\n140.210.0.0/16\n140.224.0.0/16\n140.237.0.0/16\n140.240.0.0/16\n140.242.223.0/24\n140.242.224.0/24\n140.243.0.0/16\n140.246.0.0/16\n140.249.0.0/16\n140.250.0.0/16\n140.255.0.0/16\n144.0.0.0/16\n144.7.0.0/16\n144.12.0.0/16\n144.36.146.0/23\n144.48.64.0/22\n144.48.88.0/22\n144.48.156.0/22\n144.48.180.0/22\n144.48.184.0/22\n144.48.204.0/22\n144.48.208.0/21\n144.52.0.0/16\n144.123.0.0/16\n144.211.80.0/24\n144.211.138.0/24\n144.255.0.0/16\n146.56.192.0/18\n146.196.56.0/22\n146.196.68.0/22\n146.196.92.0/22\n146.196.112.0/21\n146.196.124.0/22\n146.217.137.0/24\n146.222.79.0/24\n146.222.81.0/24\n146.222.94.0/24\n147.243.13.32/27\n147.243.13.64/27\n147.243.14.32/27\n148.70.0.0/16\n150.0.0.0/16\n150.115.0.0/16\n150.121.0.0/16\n150.122.0.0/16\n150.129.136.0/22\n150.129.192.0/22\n150.129.252.0/22\n150.138.0.0/15\n150.158.0.0/16\n150.222.88.0/23\n150.223.0.0/16\n150.242.0.0/21\n150.242.8.0/22\n150.242.28.0/22\n150.242.44.0/22\n150.242.48.0/21\n150.242.56.0/22\n150.242.76.0/22\n150.242.80.0/22\n150.242.92.0/22\n150.242.96.0/22\n150.242.112.0/21\n150.242.120.0/22\n150.242.152.0/22\n150.242.158.0/24\n150.242.160.0/21\n150.242.168.0/22\n150.242.184.0/21\n150.242.192.0/22\n150.242.224.0/22\n150.242.232.0/21\n150.242.240.0/21\n150.242.248.0/22\n150.255.0.0/16\n152.32.178.0/23\n152.104.128.0/17\n152.136.0.0/16\n153.0.0.0/16\n153.3.0.0/16\n153.34.0.0/15\n153.36.0.0/15\n153.99.0.0/16\n153.101.0.0/16\n153.118.0.0/15\n154.8.128.0/17\n155.126.176.0/23\n156.107.160.0/24\n156.107.170.0/24\n156.107.179.0/24\n156.107.181.0/24\n156.154.62.0/23\n157.0.0.0/16\n157.18.0.0/16\n157.61.0.0/16\n157.119.8.0/21\n157.119.16.0/22\n157.119.28.0/22\n157.119.132.0/22\n157.119.136.0/21\n157.119.144.0/20\n157.119.160.0/21\n157.119.172.0/22\n157.119.192.0/21\n157.119.240.0/22\n157.119.252.0/22\n157.122.0.0/16\n157.133.186.0/23\n157.133.192.0/21\n157.133.212.0/24\n157.133.236.0/24\n157.148.0.0/16\n157.156.0.0/16\n157.255.0.0/16\n159.75.0.0/16\n159.221.232.0/22\n159.226.0.0/16\n160.19.208.0/21\n160.19.216.0/22\n160.20.48.0/22\n160.62.10.0/24\n160.83.109.0/24\n160.83.110.0/23\n160.202.60.0/23\n160.202.62.0/24\n160.202.148.0/22\n160.202.152.0/22\n160.202.212.0/22\n160.202.216.0/21\n160.202.224.0/19\n160.238.64.0/22\n161.163.0.0/21\n161.163.28.0/23\n161.163.176.0/24\n161.163.178.0/23\n161.163.180.0/22\n161.189.0.0/16\n161.207.0.0/16\n162.14.0.0/16\n162.105.0.0/16\n163.0.0.0/16\n163.47.4.0/22\n163.53.0.0/20\n163.53.36.0/22\n163.53.40.0/22\n163.53.48.0/20\n163.53.64.0/22\n163.53.88.0/21\n163.53.96.0/19\n163.53.128.0/21\n163.53.136.0/22\n163.53.160.0/20\n163.53.188.0/22\n163.53.220.0/22\n163.53.236.0/22\n163.53.240.0/22\n163.116.202.0/23\n163.125.0.0/16\n163.142.0.0/16\n163.177.0.0/16\n163.179.0.0/16\n163.204.0.0/16\n163.244.246.0/24\n164.52.80.0/24\n165.156.30.0/24\n166.111.0.0/16\n167.139.0.0/16\n167.189.0.0/16\n167.220.244.0/22\n168.159.144.0/21\n168.159.152.0/22\n168.159.156.0/23\n168.159.158.0/24\n168.160.0.0/16\n168.230.0.0/24\n170.179.0.0/16\n170.225.224.0/23\n170.252.152.0/21\n171.8.0.0/13\n171.22.147.0/24\n171.34.0.0/15\n171.36.0.0/14\n171.40.0.0/13\n171.80.0.0/12\n171.104.0.0/13\n171.112.0.0/12\n171.208.0.0/12\n172.60.2.0/24\n172.81.192.0/18\n173.39.200.0/23\n175.0.0.0/12\n175.16.0.0/13\n175.24.0.0/14\n175.30.0.0/15\n175.42.0.0/15\n175.44.0.0/16\n175.46.0.0/15\n175.48.0.0/12\n175.64.0.0/11\n175.102.0.0/16\n175.106.128.0/17\n175.111.144.0/20\n175.111.160.0/20\n175.111.184.0/22\n175.146.0.0/15\n175.148.0.0/14\n175.152.0.0/14\n175.158.96.0/22\n175.160.0.0/12\n175.176.156.0/22\n175.176.188.0/22\n175.178.0.0/16\n175.184.128.0/18\n175.185.0.0/16\n175.186.0.0/15\n175.188.0.0/14\n180.76.16.0/20\n180.76.32.0/19\n180.76.64.0/18\n180.76.128.0/18\n180.76.192.0/19\n180.76.224.0/20\n180.76.240.0/24\n180.76.242.0/23\n180.76.244.0/22\n180.76.248.0/22\n180.76.252.0/23\n180.76.255.0/24\n180.77.0.0/16\n180.78.0.0/15\n180.84.0.0/15\n180.86.0.0/16\n180.88.0.0/14\n180.94.56.0/21\n180.94.96.0/20\n180.94.120.0/21\n180.95.128.0/17\n180.96.0.0/11\n180.129.128.0/17\n180.130.0.0/16\n180.136.0.0/13\n180.148.16.0/21\n180.148.152.0/21\n180.148.216.0/21\n180.148.224.0/19\n180.149.128.0/19\n180.150.160.0/21\n180.150.176.0/20\n180.152.0.0/13\n180.160.0.0/12\n180.178.112.0/21\n180.178.192.0/18\n180.184.0.0/14\n180.188.0.0/17\n180.189.148.0/22\n180.200.252.0/22\n180.201.0.0/16\n180.202.0.0/15\n180.208.0.0/15\n180.210.212.0/22\n180.210.233.0/24\n180.210.236.0/22\n180.212.0.0/15\n180.222.224.0/19\n180.223.0.0/19\n180.223.32.0/20\n180.223.48.0/21\n180.223.57.0/24\n180.223.58.0/23\n180.223.60.0/22\n180.223.80.0/20\n180.223.96.0/19\n180.223.128.0/17\n180.233.0.0/18\n180.233.64.0/19\n180.233.144.0/22\n180.235.64.0/19\n180.235.112.0/22\n182.16.144.0/21\n182.16.192.0/19\n182.18.0.0/17\n182.23.184.0/21\n182.23.200.0/21\n182.32.0.0/12\n182.48.96.0/19\n182.49.0.0/16\n182.50.0.0/22\n182.50.8.0/21\n182.50.112.0/20\n182.51.0.0/16\n182.54.0.0/17\n182.61.0.0/18\n182.61.128.0/19\n182.61.192.0/18\n182.80.0.0/13\n182.88.0.0/14\n182.92.0.0/16\n182.96.0.0/11\n182.128.0.0/12\n182.144.0.0/13\n182.157.0.0/16\n182.160.64.0/19\n182.174.0.0/15\n182.200.0.0/13\n182.236.128.0/17\n182.237.24.0/21\n182.238.0.0/16\n182.239.0.0/19\n182.240.0.0/13\n182.254.0.0/17\n182.254.128.0/18\n182.254.192.0/19\n182.254.224.0/20\n182.254.240.0/21\n182.254.248.0/23\n182.254.251.0/24\n182.254.252.0/22\n183.0.0.0/10\n183.64.0.0/13\n183.78.160.0/21\n183.78.180.0/22\n183.81.180.0/22\n183.84.0.0/15\n183.91.128.0/22\n183.91.136.0/21\n183.91.144.0/20\n183.92.0.0/14\n183.128.0.0/11\n183.160.0.0/13\n183.168.0.0/15\n183.170.0.0/16\n183.172.0.0/14\n183.184.0.0/13\n183.192.0.0/10\n185.109.236.0/24\n185.216.118.0/24\n188.131.128.0/17\n192.11.23.0/24\n192.11.26.0/24\n192.11.39.0/24\n192.11.236.0/24\n192.23.191.0/24\n192.55.10.0/23\n192.55.40.0/24\n192.55.46.0/24\n192.55.68.0/22\n192.102.204.0/22\n192.124.154.0/24\n192.137.31.0/24\n192.139.136.0/24\n192.140.128.0/21\n192.140.136.0/22\n192.140.156.0/22\n192.140.160.0/19\n192.140.192.0/20\n192.140.208.0/21\n192.144.128.0/17\n192.163.11.0/24\n192.232.97.0/24\n193.9.22.0/24\n193.17.120.0/22\n193.20.64.0/22\n193.112.0.0/16\n193.200.196.0/24\n193.200.222.160/28\n194.138.136.0/24\n194.138.202.0/23\n194.138.245.0/24\n198.175.100.0/22\n198.208.17.0/24\n198.208.19.0/24\n199.7.72.0/24\n199.65.192.0/21\n199.244.144.0/24\n202.0.100.0/23\n202.0.122.0/23\n202.1.105.0/24\n202.1.106.0/24\n202.3.128.0/23\n202.4.128.0/19\n202.4.252.0/22\n202.5.208.0/21\n202.5.216.0/22\n202.6.6.0/23\n202.6.66.0/23\n202.6.72.0/23\n202.6.87.0/24\n202.6.88.0/23\n202.6.92.0/23\n202.6.103.0/24\n202.6.108.0/24\n202.6.110.0/23\n202.6.114.0/24\n202.6.176.0/20\n202.8.0.0/24\n202.8.2.0/23\n202.8.4.0/23\n202.8.12.0/24\n202.8.24.0/24\n202.8.77.0/24\n202.8.128.0/19\n202.8.192.0/20\n202.9.32.0/24\n202.9.34.0/23\n202.9.48.0/23\n202.9.51.0/24\n202.9.52.0/23\n202.9.54.0/24\n202.9.57.0/24\n202.9.58.0/23\n202.10.64.0/21\n202.10.74.0/23\n202.10.76.0/22\n202.10.112.0/20\n202.12.1.0/24\n202.12.2.0/24\n202.12.17.0/24\n202.12.18.0/23\n202.12.72.0/24\n202.12.84.0/23\n202.12.96.0/24\n202.12.98.0/23\n202.12.106.0/24\n202.12.111.0/24\n202.12.116.0/24\n202.14.64.0/23\n202.14.69.0/24\n202.14.73.0/24\n202.14.74.0/23\n202.14.76.0/24\n202.14.78.0/23\n202.14.88.0/24\n202.14.97.0/24\n202.14.104.0/23\n202.14.108.0/23\n202.14.111.0/24\n202.14.114.0/23\n202.14.118.0/23\n202.14.124.0/23\n202.14.127.0/24\n202.14.129.0/24\n202.14.135.0/24\n202.14.136.0/24\n202.14.149.0/24\n202.14.151.0/24\n202.14.157.0/24\n202.14.158.0/23\n202.14.169.0/24\n202.14.170.0/23\n202.14.172.0/22\n202.14.176.0/24\n202.14.184.0/23\n202.14.208.0/23\n202.14.213.0/24\n202.14.219.0/24\n202.14.220.0/24\n202.14.222.0/23\n202.14.225.0/24\n202.14.226.0/23\n202.14.231.0/24\n202.14.235.0/24\n202.14.236.0/22\n202.14.246.0/24\n202.14.251.0/24\n202.20.66.0/24\n202.20.79.0/24\n202.20.87.0/24\n202.20.88.0/23\n202.20.90.0/24\n202.20.94.0/23\n202.20.114.0/24\n202.20.117.0/24\n202.20.120.0/24\n202.20.125.0/24\n202.20.126.0/23\n202.21.48.0/20\n202.21.131.0/24\n202.21.132.0/24\n202.21.141.0/24\n202.21.142.0/24\n202.21.147.0/24\n202.21.148.0/24\n202.21.150.0/23\n202.21.152.0/23\n202.21.154.0/24\n202.21.156.0/24\n202.21.208.0/24\n202.22.248.0/21\n202.27.12.0/24\n202.27.14.0/24\n202.27.136.0/23\n202.36.226.0/24\n202.38.0.0/22\n202.38.8.0/21\n202.38.48.0/20\n202.38.64.0/18\n202.38.128.0/21\n202.38.136.0/23\n202.38.138.0/24\n202.38.140.0/22\n202.38.146.0/23\n202.38.149.0/24\n202.38.150.0/23\n202.38.152.0/22\n202.38.156.0/24\n202.38.158.0/23\n202.38.160.0/23\n202.38.164.0/22\n202.38.168.0/22\n202.38.176.0/23\n202.38.184.0/21\n202.38.192.0/18\n202.40.4.0/23\n202.40.7.0/24\n202.40.15.0/24\n202.40.135.0/24\n202.40.136.0/24\n202.40.140.0/24\n202.40.143.0/24\n202.40.144.0/23\n202.40.150.0/24\n202.40.155.0/24\n202.40.156.0/24\n202.40.158.0/23\n202.40.162.0/24\n202.41.8.0/23\n202.41.11.0/24\n202.41.12.0/23\n202.41.128.0/24\n202.41.130.0/23\n202.41.142.0/24\n202.41.152.0/21\n202.41.192.0/24\n202.41.196.0/22\n202.41.200.0/22\n202.41.240.0/20\n202.43.76.0/22\n202.43.144.0/20\n202.44.16.0/20\n202.44.48.0/22\n202.44.67.0/24\n202.44.74.0/24\n202.44.97.0/24\n202.44.129.0/24\n202.44.132.0/23\n202.44.146.0/23\n202.45.0.0/23\n202.45.2.0/24\n202.45.15.0/24\n202.45.16.0/20\n202.46.16.0/23\n202.46.18.0/24\n202.46.20.0/23\n202.46.128.0/24\n202.46.224.0/20\n202.47.82.0/23\n202.47.96.0/20\n202.47.126.0/24\n202.47.128.0/24\n202.47.130.0/23\n202.52.34.0/24\n202.52.143.0/24\n202.53.140.0/24\n202.53.143.0/24\n202.53.202.0/24\n202.57.212.0/22\n202.57.216.0/22\n202.57.240.0/20\n202.58.0.0/24\n202.58.112.0/22\n202.59.0.0/23\n202.59.212.0/22\n202.59.236.0/24\n202.59.240.0/24\n202.60.48.0/21\n202.60.96.0/21\n202.60.112.0/20\n202.60.132.0/22\n202.60.136.0/21\n202.60.144.0/20\n202.61.68.0/22\n202.61.76.0/22\n202.61.88.0/22\n202.61.123.0/24\n202.61.127.0/24\n202.62.112.0/22\n202.62.248.0/22\n202.62.252.0/24\n202.62.255.0/24\n202.63.80.0/20\n202.63.160.0/19\n202.63.248.0/22\n202.63.253.0/24\n202.65.0.0/21\n202.65.8.0/23\n202.67.0.0/22\n202.69.4.0/23\n202.69.16.0/20\n202.70.0.0/19\n202.70.96.0/20\n202.70.192.0/20\n202.71.32.0/20\n202.72.40.0/21\n202.72.80.0/20\n202.72.112.0/20\n202.73.128.0/22\n202.73.240.0/20\n202.74.8.0/21\n202.74.36.0/24\n202.74.42.0/24\n202.74.52.0/24\n202.74.80.0/20\n202.74.254.0/23\n202.75.208.0/20\n202.75.252.0/22\n202.76.247.0/24\n202.76.252.0/22\n202.77.80.0/21\n202.77.92.0/22\n202.78.8.0/21\n202.79.224.0/21\n202.79.248.0/22\n202.80.192.0/20\n202.81.0.0/22\n202.81.176.0/20\n202.83.252.0/22\n202.84.0.0/20\n202.84.16.0/23\n202.84.22.0/24\n202.84.24.0/21\n202.85.208.0/20\n202.86.249.0/24\n202.87.80.0/20\n202.88.32.0/22\n202.89.8.0/21\n202.89.96.0/22\n202.89.108.0/22\n202.89.119.0/24\n202.89.232.0/21\n202.90.0.0/22\n202.90.16.0/20\n202.90.37.0/24\n202.90.96.0/19\n202.90.193.0/24\n202.90.196.0/24\n202.90.205.0/24\n202.90.224.0/20\n202.91.0.0/22\n202.91.96.0/20\n202.91.128.0/22\n202.91.176.0/20\n202.91.224.0/19\n202.92.0.0/22\n202.92.8.0/21\n202.92.48.0/20\n202.92.252.0/22\n202.93.0.0/22\n202.93.252.0/22\n202.94.0.0/19\n202.94.74.0/24\n202.94.81.0/24\n202.94.92.0/22\n202.95.240.0/21\n202.95.252.0/22\n202.96.0.0/12\n202.112.0.0/13\n202.120.0.0/15\n202.122.0.0/21\n202.122.32.0/21\n202.122.64.0/19\n202.122.112.0/20\n202.122.128.0/24\n202.122.132.0/24\n202.123.96.0/20\n202.123.116.0/22\n202.123.120.0/22\n202.124.16.0/21\n202.124.24.0/22\n202.125.107.0/24\n202.125.109.0/24\n202.125.112.0/20\n202.125.176.0/20\n202.127.0.0/21\n202.127.12.0/22\n202.127.16.0/20\n202.127.40.0/21\n202.127.48.0/20\n202.127.112.0/20\n202.127.128.0/19\n202.127.160.0/21\n202.127.192.0/20\n202.127.208.0/23\n202.127.212.0/22\n202.127.216.0/21\n202.127.224.0/19\n202.129.208.0/24\n202.130.0.0/19\n202.130.39.0/24\n202.130.224.0/19\n202.131.16.0/21\n202.131.59.0/24\n202.131.208.0/20\n202.133.32.0/20\n202.134.58.0/24\n202.134.128.0/20\n202.134.208.0/20\n202.136.48.0/20\n202.136.208.0/20\n202.136.224.0/20\n202.136.248.0/22\n202.136.254.0/23\n202.137.231.0/24\n202.140.140.0/22\n202.140.144.0/20\n202.141.160.0/19\n202.142.16.0/20\n202.143.4.0/22\n202.143.16.0/20\n202.143.32.0/20\n202.143.56.0/21\n202.143.100.0/22\n202.143.104.0/22\n202.146.160.0/20\n202.146.186.0/24\n202.146.188.0/22\n202.146.196.0/22\n202.146.200.0/21\n202.147.144.0/20\n202.148.32.0/20\n202.148.64.0/18\n202.149.32.0/19\n202.149.160.0/19\n202.149.224.0/19\n202.150.16.0/20\n202.150.32.0/20\n202.150.56.0/22\n202.150.192.0/20\n202.150.224.0/19\n202.151.0.0/22\n202.151.128.0/19\n202.152.176.0/20\n202.153.0.0/22\n202.153.7.0/24\n202.153.48.0/20\n202.157.192.0/19\n202.158.160.0/19\n202.158.242.0/24\n202.160.140.0/22\n202.160.156.0/22\n202.160.176.0/20\n202.162.67.0/24\n202.162.75.0/24\n202.164.0.0/20\n202.164.96.0/19\n202.165.176.0/20\n202.165.208.0/20\n202.165.239.0/24\n202.165.240.0/23\n202.165.243.0/24\n202.165.245.0/24\n202.165.251.0/24\n202.165.252.0/22\n202.166.224.0/19\n202.168.80.0/22\n202.168.128.0/20\n202.168.160.0/19\n202.170.128.0/19\n202.170.216.0/21\n202.170.224.0/19\n202.171.216.0/21\n202.171.232.0/24\n202.171.235.0/24\n202.172.0.0/22\n202.172.7.0/24\n202.173.0.0/22\n202.173.6.0/24\n202.173.8.0/21\n202.173.112.0/22\n202.173.224.0/19\n202.174.64.0/20\n202.174.124.0/22\n202.176.224.0/19\n202.179.160.0/20\n202.179.240.0/20\n202.180.128.0/19\n202.180.208.0/21\n202.181.8.0/22\n202.181.28.0/22\n202.181.112.0/20\n202.182.32.0/20\n202.182.192.0/19\n202.189.0.0/18\n202.189.80.0/20\n202.189.184.0/21\n202.191.0.0/24\n202.191.68.0/22\n202.191.72.0/21\n202.191.80.0/20\n202.192.0.0/12\n203.0.4.0/22\n203.0.10.0/23\n203.0.18.0/24\n203.0.24.0/24\n203.0.42.0/23\n203.0.45.0/24\n203.0.46.0/23\n203.0.81.0/24\n203.0.82.0/23\n203.0.90.0/23\n203.0.96.0/23\n203.0.104.0/21\n203.0.114.0/23\n203.0.122.0/24\n203.0.128.0/24\n203.0.130.0/23\n203.0.132.0/22\n203.0.137.0/24\n203.0.142.0/24\n203.0.144.0/24\n203.0.146.0/24\n203.0.148.0/24\n203.0.150.0/23\n203.0.152.0/24\n203.0.177.0/24\n203.0.224.0/24\n203.1.4.0/22\n203.1.18.0/24\n203.1.26.0/23\n203.1.65.0/24\n203.1.66.0/23\n203.1.70.0/23\n203.1.76.0/23\n203.1.90.0/24\n203.1.97.0/24\n203.1.98.0/23\n203.1.100.0/22\n203.1.108.0/24\n203.1.253.0/24\n203.1.254.0/24\n203.2.64.0/21\n203.2.73.0/24\n203.2.112.0/21\n203.2.126.0/23\n203.2.140.0/24\n203.2.150.0/24\n203.2.152.0/22\n203.2.156.0/23\n203.2.160.0/21\n203.2.180.0/23\n203.2.196.0/23\n203.2.209.0/24\n203.2.214.0/23\n203.2.226.0/23\n203.2.229.0/24\n203.2.236.0/23\n203.3.68.0/24\n203.3.72.0/23\n203.3.75.0/24\n203.3.80.0/21\n203.3.96.0/22\n203.3.105.0/24\n203.3.112.0/21\n203.3.120.0/24\n203.3.123.0/24\n203.3.135.0/24\n203.3.139.0/24\n203.3.143.0/24\n203.4.132.0/23\n203.4.134.0/24\n203.4.151.0/24\n203.4.152.0/22\n203.4.174.0/23\n203.4.180.0/24\n203.4.186.0/24\n203.4.205.0/24\n203.4.208.0/22\n203.4.227.0/24\n203.4.230.0/23\n203.5.4.0/23\n203.5.7.0/24\n203.5.8.0/23\n203.5.11.0/24\n203.5.21.0/24\n203.5.22.0/24\n203.5.44.0/24\n203.5.46.0/23\n203.5.52.0/22\n203.5.56.0/23\n203.5.60.0/23\n203.5.114.0/23\n203.5.118.0/24\n203.5.120.0/24\n203.5.172.0/24\n203.5.180.0/23\n203.5.182.0/24\n203.5.185.0/24\n203.5.186.0/24\n203.5.188.0/23\n203.5.190.0/24\n203.5.195.0/24\n203.5.214.0/23\n203.5.218.0/23\n203.6.131.0/24\n203.6.136.0/24\n203.6.138.0/23\n203.6.142.0/24\n203.6.150.0/23\n203.6.157.0/24\n203.6.159.0/24\n203.6.224.0/20\n203.6.248.0/23\n203.7.129.0/24\n203.7.138.0/23\n203.7.147.0/24\n203.7.150.0/23\n203.7.158.0/24\n203.7.192.0/23\n203.7.200.0/24\n203.8.0.0/24\n203.8.8.0/24\n203.8.23.0/24\n203.8.70.0/24\n203.8.82.0/24\n203.8.86.0/23\n203.8.91.0/24\n203.8.110.0/23\n203.8.115.0/24\n203.8.166.0/23\n203.8.169.0/24\n203.8.173.0/24\n203.8.184.0/24\n203.8.186.0/23\n203.8.190.0/23\n203.8.192.0/24\n203.8.197.0/24\n203.8.198.0/23\n203.8.203.0/24\n203.8.209.0/24\n203.8.210.0/23\n203.8.212.0/22\n203.8.217.0/24\n203.8.220.0/24\n203.9.32.0/24\n203.9.36.0/23\n203.9.57.0/24\n203.9.63.0/24\n203.9.65.0/24\n203.9.70.0/23\n203.9.72.0/24\n203.9.75.0/24\n203.9.76.0/23\n203.9.96.0/22\n203.9.100.0/23\n203.9.108.0/24\n203.9.158.0/24\n203.10.34.0/24\n203.10.56.0/24\n203.10.74.0/23\n203.10.84.0/22\n203.10.88.0/24\n203.10.95.0/24\n203.10.125.0/24\n203.11.70.0/24\n203.11.76.0/22\n203.11.82.0/24\n203.11.84.0/22\n203.11.100.0/22\n203.11.109.0/24\n203.11.117.0/24\n203.11.122.0/24\n203.11.126.0/24\n203.11.136.0/22\n203.11.141.0/24\n203.11.142.0/23\n203.11.180.0/22\n203.11.208.0/22\n203.12.16.0/24\n203.12.19.0/24\n203.12.24.0/24\n203.12.57.0/24\n203.12.65.0/24\n203.12.66.0/24\n203.12.70.0/23\n203.12.87.0/24\n203.12.90.0/24\n203.12.92.0/22\n203.12.100.0/23\n203.12.103.0/24\n203.12.114.0/24\n203.12.118.0/24\n203.12.130.0/24\n203.12.137.0/24\n203.12.196.0/22\n203.12.211.0/24\n203.12.219.0/24\n203.12.226.0/24\n203.12.240.0/22\n203.13.18.0/24\n203.13.24.0/24\n203.13.44.0/23\n203.13.88.0/23\n203.13.92.0/22\n203.13.173.0/24\n203.13.224.0/23\n203.13.227.0/24\n203.13.233.0/24\n203.14.24.0/22\n203.14.33.0/24\n203.14.56.0/24\n203.14.61.0/24\n203.14.62.0/24\n203.14.104.0/24\n203.14.114.0/23\n203.14.118.0/24\n203.14.162.0/24\n203.14.184.0/21\n203.14.192.0/24\n203.14.194.0/23\n203.14.214.0/24\n203.14.231.0/24\n203.14.246.0/24\n203.15.0.0/20\n203.15.20.0/23\n203.15.22.0/24\n203.15.87.0/24\n203.15.88.0/23\n203.15.105.0/24\n203.15.112.0/21\n203.15.130.0/23\n203.15.149.0/24\n203.15.151.0/24\n203.15.156.0/22\n203.15.174.0/24\n203.15.227.0/24\n203.15.232.0/22\n203.15.238.0/23\n203.15.240.0/23\n203.15.246.0/24\n203.16.10.0/24\n203.16.12.0/23\n203.16.16.0/21\n203.16.27.0/24\n203.16.38.0/24\n203.16.49.0/24\n203.16.50.0/23\n203.16.58.0/24\n203.16.63.0/24\n203.16.133.0/24\n203.16.161.0/24\n203.16.162.0/24\n203.16.186.0/23\n203.16.228.0/24\n203.16.238.0/24\n203.16.240.0/24\n203.16.245.0/24\n203.17.2.0/24\n203.17.18.0/24\n203.17.28.0/24\n203.17.39.0/24\n203.17.56.0/24\n203.17.74.0/23\n203.17.88.0/23\n203.17.136.0/24\n203.17.164.0/24\n203.17.187.0/24\n203.17.190.0/23\n203.17.231.0/24\n203.17.233.0/24\n203.17.248.0/23\n203.17.255.0/24\n203.18.2.0/23\n203.18.4.0/24\n203.18.7.0/24\n203.18.31.0/24\n203.18.37.0/24\n203.18.48.0/23\n203.18.52.0/24\n203.18.72.0/22\n203.18.80.0/23\n203.18.87.0/24\n203.18.100.0/23\n203.18.105.0/24\n203.18.107.0/24\n203.18.110.0/24\n203.18.129.0/24\n203.18.131.0/24\n203.18.132.0/23\n203.18.144.0/24\n203.18.153.0/24\n203.18.199.0/24\n203.18.208.0/24\n203.18.211.0/24\n203.18.215.0/24\n203.19.1.0/24\n203.19.18.0/24\n203.19.24.0/24\n203.19.30.0/24\n203.19.41.0/24\n203.19.44.0/23\n203.19.46.0/24\n203.19.58.0/24\n203.19.60.0/23\n203.19.64.0/24\n203.19.68.0/24\n203.19.72.0/24\n203.19.101.0/24\n203.19.111.0/24\n203.19.131.0/24\n203.19.133.0/24\n203.19.144.0/24\n203.19.147.0/24\n203.19.149.0/24\n203.19.156.0/24\n203.19.176.0/24\n203.19.178.0/23\n203.19.208.0/24\n203.19.228.0/22\n203.19.233.0/24\n203.19.242.0/24\n203.19.248.0/23\n203.19.255.0/24\n203.20.17.0/24\n203.20.40.0/23\n203.20.44.0/24\n203.20.48.0/24\n203.20.61.0/24\n203.20.65.0/24\n203.20.84.0/23\n203.20.89.0/24\n203.20.106.0/23\n203.20.115.0/24\n203.20.117.0/24\n203.20.118.0/23\n203.20.122.0/24\n203.20.126.0/23\n203.20.135.0/24\n203.20.140.0/22\n203.20.150.0/24\n203.20.230.0/24\n203.20.232.0/24\n203.20.236.0/24\n203.21.0.0/23\n203.21.2.0/24\n203.21.8.0/24\n203.21.10.0/24\n203.21.18.0/24\n203.21.33.0/24\n203.21.34.0/24\n203.21.41.0/24\n203.21.44.0/24\n203.21.68.0/24\n203.21.82.0/24\n203.21.96.0/22\n203.21.124.0/24\n203.21.136.0/23\n203.21.145.0/24\n203.21.206.0/24\n203.22.24.0/24\n203.22.28.0/23\n203.22.31.0/24\n203.22.68.0/24\n203.22.76.0/24\n203.22.84.0/24\n203.22.87.0/24\n203.22.92.0/22\n203.22.99.0/24\n203.22.106.0/24\n203.22.122.0/23\n203.22.131.0/24\n203.22.163.0/24\n203.22.166.0/24\n203.22.170.0/24\n203.22.176.0/21\n203.22.194.0/24\n203.22.242.0/23\n203.22.245.0/24\n203.22.246.0/24\n203.22.252.0/23\n203.23.0.0/24\n203.23.47.0/24\n203.23.61.0/24\n203.23.62.0/23\n203.23.73.0/24\n203.23.85.0/24\n203.23.92.0/22\n203.23.98.0/24\n203.23.107.0/24\n203.23.112.0/24\n203.23.130.0/24\n203.23.140.0/23\n203.23.172.0/24\n203.23.182.0/24\n203.23.186.0/23\n203.23.192.0/24\n203.23.197.0/24\n203.23.198.0/24\n203.23.204.0/22\n203.23.224.0/24\n203.23.226.0/23\n203.23.228.0/22\n203.23.249.0/24\n203.23.251.0/24\n203.24.13.0/24\n203.24.18.0/24\n203.24.27.0/24\n203.24.43.0/24\n203.24.56.0/24\n203.24.58.0/24\n203.24.67.0/24\n203.24.74.0/24\n203.24.79.0/24\n203.24.80.0/23\n203.24.84.0/23\n203.24.86.0/24\n203.24.90.0/24\n203.24.111.0/24\n203.24.112.0/24\n203.24.116.0/24\n203.24.122.0/23\n203.24.145.0/24\n203.24.152.0/23\n203.24.157.0/24\n203.24.161.0/24\n203.24.167.0/24\n203.24.186.0/23\n203.24.199.0/24\n203.24.202.0/24\n203.24.212.0/23\n203.24.217.0/24\n203.24.219.0/24\n203.24.244.0/24\n203.25.19.0/24\n203.25.20.0/23\n203.25.46.0/24\n203.25.64.0/23\n203.25.91.0/24\n203.25.99.0/24\n203.25.100.0/24\n203.25.106.0/24\n203.25.131.0/24\n203.25.135.0/24\n203.25.138.0/24\n203.25.147.0/24\n203.25.153.0/24\n203.25.154.0/23\n203.25.164.0/24\n203.25.166.0/24\n203.25.174.0/23\n203.25.180.0/24\n203.25.182.0/24\n203.25.191.0/24\n203.25.199.0/24\n203.25.200.0/24\n203.25.202.0/23\n203.25.208.0/20\n203.25.229.0/24\n203.25.235.0/24\n203.25.236.0/24\n203.25.242.0/24\n203.26.12.0/24\n203.26.34.0/24\n203.26.49.0/24\n203.26.50.0/24\n203.26.55.0/24\n203.26.56.0/23\n203.26.60.0/24\n203.26.65.0/24\n203.26.68.0/24\n203.26.76.0/24\n203.26.80.0/24\n203.26.84.0/24\n203.26.97.0/24\n203.26.102.0/23\n203.26.115.0/24\n203.26.116.0/24\n203.26.129.0/24\n203.26.143.0/24\n203.26.144.0/24\n203.26.148.0/23\n203.26.154.0/24\n203.26.158.0/23\n203.26.161.0/24\n203.26.170.0/24\n203.26.173.0/24\n203.26.176.0/24\n203.26.185.0/24\n203.26.202.0/23\n203.26.210.0/24\n203.26.214.0/24\n203.26.222.0/24\n203.26.224.0/24\n203.26.228.0/24\n203.26.232.0/24\n203.27.0.0/24\n203.27.10.0/24\n203.27.15.0/24\n203.27.16.0/24\n203.27.20.0/24\n203.27.22.0/23\n203.27.40.0/24\n203.27.45.0/24\n203.27.53.0/24\n203.27.65.0/24\n203.27.66.0/24\n203.27.81.0/24\n203.27.88.0/24\n203.27.102.0/24\n203.27.109.0/24\n203.27.117.0/24\n203.27.121.0/24\n203.27.122.0/23\n203.27.125.0/24\n203.27.200.0/24\n203.27.202.0/24\n203.27.233.0/24\n203.27.241.0/24\n203.27.250.0/24\n203.28.10.0/24\n203.28.12.0/24\n203.28.33.0/24\n203.28.34.0/23\n203.28.43.0/24\n203.28.44.0/24\n203.28.54.0/24\n203.28.56.0/24\n203.28.73.0/24\n203.28.74.0/24\n203.28.76.0/24\n203.28.86.0/24\n203.28.88.0/24\n203.28.112.0/24\n203.28.131.0/24\n203.28.136.0/24\n203.28.140.0/24\n203.28.145.0/24\n203.28.165.0/24\n203.28.169.0/24\n203.28.170.0/24\n203.28.178.0/23\n203.28.185.0/24\n203.28.187.0/24\n203.28.196.0/24\n203.28.226.0/23\n203.28.239.0/24\n203.29.2.0/24\n203.29.8.0/23\n203.29.13.0/24\n203.29.14.0/24\n203.29.28.0/24\n203.29.46.0/24\n203.29.57.0/24\n203.29.61.0/24\n203.29.63.0/24\n203.29.69.0/24\n203.29.73.0/24\n203.29.81.0/24\n203.29.90.0/24\n203.29.95.0/24\n203.29.100.0/24\n203.29.103.0/24\n203.29.112.0/24\n203.29.120.0/22\n203.29.182.0/23\n203.29.187.0/24\n203.29.189.0/24\n203.29.190.0/24\n203.29.205.0/24\n203.29.210.0/24\n203.29.217.0/24\n203.29.227.0/24\n203.29.231.0/24\n203.29.233.0/24\n203.29.234.0/24\n203.29.248.0/24\n203.29.254.0/23\n203.30.16.0/23\n203.30.25.0/24\n203.30.29.0/24\n203.30.66.0/24\n203.30.81.0/24\n203.30.87.0/24\n203.30.111.0/24\n203.30.121.0/24\n203.30.123.0/24\n203.30.152.0/24\n203.30.156.0/24\n203.30.162.0/24\n203.30.173.0/24\n203.30.175.0/24\n203.30.187.0/24\n203.30.194.0/24\n203.30.217.0/24\n203.30.220.0/24\n203.30.222.0/24\n203.30.232.0/23\n203.30.235.0/24\n203.30.240.0/23\n203.30.246.0/24\n203.30.250.0/23\n203.31.45.0/24\n203.31.46.0/24\n203.31.49.0/24\n203.31.51.0/24\n203.31.54.0/23\n203.31.69.0/24\n203.31.72.0/24\n203.31.80.0/24\n203.31.85.0/24\n203.31.97.0/24\n203.31.105.0/24\n203.31.106.0/24\n203.31.108.0/23\n203.31.124.0/24\n203.31.162.0/24\n203.31.174.0/24\n203.31.177.0/24\n203.31.181.0/24\n203.31.187.0/24\n203.31.189.0/24\n203.31.204.0/24\n203.31.220.0/24\n203.31.222.0/23\n203.31.225.0/24\n203.31.229.0/24\n203.31.248.0/23\n203.31.253.0/24\n203.32.20.0/24\n203.32.48.0/23\n203.32.56.0/24\n203.32.60.0/24\n203.32.62.0/24\n203.32.68.0/23\n203.32.76.0/24\n203.32.81.0/24\n203.32.84.0/23\n203.32.95.0/24\n203.32.102.0/24\n203.32.105.0/24\n203.32.130.0/24\n203.32.133.0/24\n203.32.140.0/24\n203.32.152.0/24\n203.32.186.0/23\n203.32.192.0/24\n203.32.196.0/24\n203.32.203.0/24\n203.32.204.0/23\n203.32.212.0/24\n203.33.4.0/24\n203.33.7.0/24\n203.33.12.0/23\n203.33.21.0/24\n203.33.26.0/24\n203.33.32.0/24\n203.33.63.0/24\n203.33.64.0/24\n203.33.67.0/24\n203.33.68.0/24\n203.33.73.0/24\n203.33.79.0/24\n203.33.100.0/24\n203.33.122.0/24\n203.33.129.0/24\n203.33.131.0/24\n203.33.145.0/24\n203.33.156.0/24\n203.33.158.0/23\n203.33.174.0/24\n203.33.185.0/24\n203.33.200.0/24\n203.33.202.0/23\n203.33.204.0/24\n203.33.206.0/23\n203.33.214.0/23\n203.33.224.0/23\n203.33.226.0/24\n203.33.233.0/24\n203.33.243.0/24\n203.33.250.0/24\n203.34.4.0/24\n203.34.21.0/24\n203.34.27.0/24\n203.34.39.0/24\n203.34.48.0/23\n203.34.54.0/24\n203.34.56.0/23\n203.34.67.0/24\n203.34.69.0/24\n203.34.76.0/24\n203.34.92.0/24\n203.34.106.0/24\n203.34.113.0/24\n203.34.147.0/24\n203.34.150.0/24\n203.34.152.0/23\n203.34.161.0/24\n203.34.162.0/24\n203.34.187.0/24\n203.34.192.0/21\n203.34.204.0/22\n203.34.232.0/24\n203.34.240.0/24\n203.34.242.0/24\n203.34.245.0/24\n203.34.251.0/24\n203.55.2.0/23\n203.55.4.0/24\n203.55.10.0/24\n203.55.13.0/24\n203.55.22.0/24\n203.55.30.0/24\n203.55.93.0/24\n203.55.101.0/24\n203.55.109.0/24\n203.55.110.0/24\n203.55.116.0/23\n203.55.119.0/24\n203.55.128.0/23\n203.55.146.0/23\n203.55.192.0/24\n203.55.196.0/24\n203.55.218.0/23\n203.55.221.0/24\n203.55.224.0/24\n203.56.1.0/24\n203.56.4.0/24\n203.56.12.0/24\n203.56.24.0/24\n203.56.38.0/24\n203.56.40.0/24\n203.56.46.0/24\n203.56.50.0/23\n203.56.52.0/22\n203.56.68.0/23\n203.56.82.0/23\n203.56.84.0/23\n203.56.95.0/24\n203.56.110.0/24\n203.56.121.0/24\n203.56.161.0/24\n203.56.169.0/24\n203.56.172.0/23\n203.56.175.0/24\n203.56.183.0/24\n203.56.185.0/24\n203.56.187.0/24\n203.56.192.0/24\n203.56.198.0/24\n203.56.201.0/24\n203.56.208.0/23\n203.56.210.0/24\n203.56.214.0/24\n203.56.216.0/24\n203.56.227.0/24\n203.56.228.0/24\n203.56.232.0/24\n203.56.240.0/24\n203.56.252.0/24\n203.56.254.0/24\n203.57.5.0/24\n203.57.6.0/24\n203.57.12.0/23\n203.57.28.0/24\n203.57.39.0/24\n203.57.46.0/24\n203.57.58.0/24\n203.57.61.0/24\n203.57.66.0/24\n203.57.69.0/24\n203.57.70.0/23\n203.57.73.0/24\n203.57.90.0/24\n203.57.101.0/24\n203.57.109.0/24\n203.57.123.0/24\n203.57.157.0/24\n203.57.200.0/24\n203.57.202.0/24\n203.57.206.0/24\n203.57.222.0/24\n203.57.224.0/20\n203.57.246.0/23\n203.57.249.0/24\n203.57.253.0/24\n203.57.254.0/23\n203.62.2.0/24\n203.62.131.0/24\n203.62.139.0/24\n203.62.161.0/24\n203.62.197.0/24\n203.62.228.0/22\n203.62.234.0/24\n203.62.246.0/24\n203.65.240.0/22\n203.76.160.0/22\n203.76.168.0/22\n203.76.208.0/21\n203.76.216.0/22\n203.76.240.0/22\n203.77.180.0/22\n203.78.48.0/20\n203.78.156.0/22\n203.79.0.0/20\n203.80.4.0/23\n203.80.32.0/20\n203.80.57.0/24\n203.80.129.0/24\n203.80.132.0/22\n203.80.140.0/22\n203.80.144.0/20\n203.81.0.0/21\n203.81.16.0/20\n203.81.244.0/22\n203.82.0.0/23\n203.82.16.0/21\n203.82.112.0/20\n203.82.224.0/20\n203.83.0.0/22\n203.83.12.0/22\n203.83.56.0/21\n203.83.224.0/20\n203.86.0.0/18\n203.86.64.0/19\n203.86.250.0/24\n203.86.254.0/23\n203.88.32.0/19\n203.88.100.0/22\n203.88.192.0/19\n203.89.0.0/22\n203.89.100.0/22\n203.89.136.0/22\n203.89.144.0/24\n203.90.0.0/22\n203.90.8.0/21\n203.90.128.0/18\n203.90.192.0/19\n203.91.32.0/19\n203.91.96.0/20\n203.91.120.0/21\n203.92.0.0/22\n203.92.6.0/24\n203.92.160.0/19\n203.93.0.0/16\n203.94.0.0/19\n203.95.0.0/21\n203.95.96.0/19\n203.95.128.0/18\n203.95.200.0/21\n203.95.208.0/22\n203.95.224.0/19\n203.99.8.0/21\n203.99.16.0/22\n203.99.30.0/23\n203.99.80.0/20\n203.100.32.0/20\n203.100.58.0/24\n203.100.60.0/24\n203.100.63.0/24\n203.100.80.0/20\n203.100.96.0/19\n203.100.192.0/20\n203.104.32.0/20\n203.105.96.0/19\n203.105.128.0/19\n203.107.0.0/19\n203.107.32.0/20\n203.107.52.0/22\n203.107.56.0/21\n203.107.69.0/24\n203.107.70.0/23\n203.107.72.0/21\n203.107.80.0/20\n203.107.96.0/19\n203.110.160.0/19\n203.110.208.0/20\n203.110.232.0/23\n203.110.234.0/24\n203.114.80.0/20\n203.114.244.0/22\n203.118.192.0/19\n203.118.241.0/24\n203.118.248.0/22\n203.119.24.0/23\n203.119.32.0/24\n203.119.34.0/23\n203.119.80.0/22\n203.119.85.0/24\n203.119.113.0/24\n203.119.114.0/23\n203.119.116.0/22\n203.119.120.0/21\n203.119.128.0/17\n203.123.58.0/24\n203.128.32.0/19\n203.128.96.0/19\n203.128.128.0/24\n203.128.224.0/21\n203.130.32.0/20\n203.132.32.0/19\n203.134.240.0/22\n203.134.246.0/23\n203.135.96.0/19\n203.135.160.0/20\n203.142.12.0/23\n203.142.219.0/24\n203.142.224.0/19\n203.145.0.0/19\n203.148.0.0/18\n203.148.64.0/20\n203.148.80.0/22\n203.148.86.0/23\n203.149.92.0/22\n203.152.64.0/19\n203.152.128.0/19\n203.153.0.0/22\n203.156.192.0/18\n203.158.16.0/21\n203.160.129.0/24\n203.160.192.0/19\n203.161.0.0/22\n203.161.180.0/24\n203.161.183.0/24\n203.161.192.0/19\n203.166.160.0/19\n203.167.28.0/22\n203.168.0.0/19\n203.170.58.0/23\n203.171.0.0/22\n203.171.208.0/24\n203.171.224.0/20\n203.174.4.0/24\n203.174.6.0/24\n203.174.96.0/20\n203.175.128.0/19\n203.175.192.0/18\n203.176.0.0/18\n203.176.64.0/19\n203.176.168.0/21\n203.184.80.0/20\n203.187.160.0/19\n203.189.0.0/23\n203.189.6.0/23\n203.189.112.0/22\n203.189.192.0/19\n203.189.240.0/22\n203.190.96.0/20\n203.190.249.0/24\n203.191.0.0/23\n203.191.2.0/24\n203.191.5.0/24\n203.191.7.0/24\n203.191.29.0/24\n203.191.31.0/24\n203.191.64.0/18\n203.191.133.0/24\n203.191.144.0/20\n203.192.0.0/19\n203.193.224.0/19\n203.195.64.0/19\n203.195.128.0/17\n203.196.0.0/20\n203.196.28.0/22\n203.201.181.0/24\n203.201.182.0/24\n203.202.236.0/22\n203.205.64.0/19\n203.207.64.0/18\n203.207.128.0/17\n203.208.0.0/20\n203.208.16.0/22\n203.208.32.0/19\n203.209.224.0/19\n203.212.0.0/20\n203.212.80.0/20\n203.217.164.0/22\n203.223.0.0/20\n203.223.16.0/24\n203.223.22.0/24\n204.55.160.0/24\n204.74.96.0/24\n204.114.176.0/23\n206.219.44.0/23\n206.219.50.0/23\n206.219.52.0/23\n207.89.20.0/24\n210.2.0.0/23\n210.2.2.0/24\n210.2.5.0/24\n210.2.6.0/23\n210.2.8.0/21\n210.2.24.0/21\n210.5.0.0/19\n210.5.56.0/24\n210.5.60.0/24\n210.5.128.0/19\n210.7.56.0/21\n210.12.0.0/15\n210.14.64.0/19\n210.14.112.0/20\n210.14.128.0/17\n210.15.0.0/17\n210.15.128.0/18\n210.16.128.0/21\n210.16.136.0/22\n210.16.156.0/22\n210.16.160.0/19\n210.21.0.0/16\n210.22.0.0/16\n210.23.32.0/19\n210.25.0.0/16\n210.26.0.0/15\n210.28.0.0/14\n210.32.0.0/12\n210.51.0.0/16\n210.52.0.0/18\n210.52.64.0/23\n210.52.66.0/24\n210.52.68.0/22\n210.52.72.0/21\n210.52.80.0/20\n210.52.96.0/21\n210.52.104.0/22\n210.52.108.0/24\n210.52.110.0/23\n210.52.112.0/20\n210.52.128.0/17\n210.53.0.0/16\n210.56.192.0/19\n210.72.0.0/14\n210.76.0.0/15\n210.78.0.0/16\n210.79.64.0/18\n210.79.224.0/19\n210.82.0.0/15\n210.87.128.0/18\n210.185.192.0/18\n210.192.96.0/19\n211.64.0.0/13\n211.80.0.0/12\n211.96.0.0/14\n211.100.0.0/17\n211.100.128.0/19\n211.100.160.0/20\n211.100.184.0/21\n211.100.192.0/18\n211.101.0.0/16\n211.102.0.0/15\n211.136.0.0/13\n211.144.0.0/13\n211.152.0.0/17\n211.152.134.0/23\n211.152.138.0/23\n211.152.140.0/22\n211.152.150.0/23\n211.152.157.0/24\n211.152.158.0/23\n211.152.160.0/19\n211.152.192.0/18\n211.153.0.0/16\n211.154.0.0/19\n211.154.32.0/20\n211.154.48.0/21\n211.154.64.0/18\n211.154.128.0/17\n211.155.0.0/18\n211.155.67.0/24\n211.155.68.0/24\n211.155.72.0/21\n211.155.80.0/20\n211.155.97.0/24\n211.155.98.0/23\n211.155.100.0/22\n211.155.104.0/21\n211.155.113.0/24\n211.155.117.0/24\n211.155.118.0/23\n211.155.120.0/21\n211.155.128.0/17\n211.156.0.0/18\n211.156.64.0/19\n211.156.96.0/21\n211.156.104.0/22\n211.156.108.0/23\n211.156.112.0/20\n211.156.128.0/17\n211.157.0.0/16\n211.158.0.0/15\n211.160.0.0/13\n212.64.0.0/17\n212.129.128.0/17\n218.0.0.0/12\n218.16.0.0/13\n218.24.0.0/14\n218.28.0.0/15\n218.30.0.0/19\n218.30.64.0/18\n218.30.128.0/18\n218.30.192.0/19\n218.30.224.0/20\n218.30.240.0/21\n218.30.248.0/22\n218.30.252.0/25\n218.30.252.128/26\n218.30.252.194/31\n218.30.252.196/30\n218.30.252.200/29\n218.30.252.208/28\n218.30.252.224/27\n218.30.253.0/24\n218.30.254.0/23\n218.31.0.0/16\n218.56.0.0/13\n218.64.0.0/11\n218.96.0.0/15\n218.98.0.0/18\n218.98.96.0/21\n218.98.104.0/22\n218.98.108.0/23\n218.98.110.0/24\n218.98.112.0/20\n218.98.128.0/19\n218.98.192.0/18\n218.99.0.0/16\n218.100.96.0/19\n218.100.128.0/17\n218.104.0.0/14\n218.108.0.0/15\n218.185.192.0/19\n218.192.0.0/12\n218.240.0.0/14\n218.244.0.0/15\n218.246.0.0/17\n218.246.129.0/24\n218.246.131.0/24\n218.246.132.0/23\n218.246.134.0/24\n218.246.139.0/24\n218.246.144.0/20\n218.246.160.0/19\n218.246.192.0/18\n218.247.0.0/18\n218.247.96.0/19\n218.247.128.0/17\n218.249.0.0/16\n219.72.0.0/16\n219.82.0.0/16\n219.83.128.0/17\n219.90.68.0/22\n219.90.72.0/21\n219.128.0.0/11\n219.216.0.0/13\n219.224.0.0/13\n219.232.0.0/15\n219.234.0.0/21\n219.234.9.0/24\n219.234.10.0/23\n219.234.12.0/22\n219.234.32.0/19\n219.234.64.0/18\n219.234.128.0/17\n219.235.0.0/16\n219.236.0.0/14\n219.242.0.0/15\n219.244.0.0/14\n220.101.192.0/18\n220.112.0.0/14\n220.152.128.0/17\n220.154.0.0/16\n220.155.0.0/21\n220.155.9.0/24\n220.155.10.0/23\n220.155.12.0/22\n220.155.16.0/21\n220.155.24.0/22\n220.155.28.0/23\n220.155.31.0/24\n220.155.32.0/19\n220.155.64.0/18\n220.155.128.0/17\n220.158.241.0/24\n220.158.243.0/24\n220.160.0.0/11\n220.192.0.0/12\n220.231.0.0/18\n220.231.128.0/17\n220.232.64.0/18\n220.234.0.0/16\n220.242.0.0/24\n220.242.12.0/23\n220.242.14.0/24\n220.242.17.0/24\n220.242.18.0/23\n220.242.20.0/24\n220.242.32.0/20\n220.242.48.0/23\n220.242.53.0/24\n220.242.55.0/24\n220.242.56.0/22\n220.242.60.0/23\n220.242.62.0/24\n220.242.64.0/19\n220.242.96.0/20\n220.242.112.0/21\n220.242.120.0/22\n220.242.124.0/23\n220.242.126.0/24\n220.242.173.0/24\n220.242.197.0/24\n220.242.205.0/24\n220.242.207.0/24\n220.242.215.0/24\n220.242.216.0/21\n220.242.224.0/19\n220.243.0.0/17\n220.243.128.0/18\n220.243.204.0/24\n220.243.214.0/24\n220.243.217.0/24\n220.243.218.0/24\n220.243.238.0/24\n220.247.136.0/21\n220.248.0.0/14\n220.252.0.0/16\n221.0.0.0/13\n221.8.0.0/14\n221.12.0.0/17\n221.12.128.0/18\n221.13.0.0/16\n221.14.0.0/15\n221.122.0.0/15\n221.128.128.0/17\n221.129.0.0/16\n221.130.0.0/15\n221.133.224.0/19\n221.136.0.0/15\n221.172.0.0/14\n221.176.0.0/19\n221.176.32.0/20\n221.176.48.0/21\n221.176.56.0/24\n221.176.58.0/23\n221.176.60.0/22\n221.176.64.0/18\n221.176.128.0/17\n221.177.0.0/16\n221.178.0.0/15\n221.180.0.0/14\n221.192.0.0/14\n221.196.0.0/15\n221.198.0.0/16\n221.199.0.0/17\n221.199.128.0/18\n221.199.192.0/20\n221.199.224.0/19\n221.200.0.0/13\n221.208.0.0/12\n221.224.0.0/12\n222.16.0.0/12\n222.32.0.0/11\n222.64.0.0/11\n222.125.0.0/16\n222.126.128.0/19\n222.126.160.0/21\n222.126.168.0/22\n222.126.172.0/23\n222.126.174.40/29\n222.126.174.76/30\n222.126.174.88/29\n222.126.174.144/28\n222.126.178.0/23\n222.126.180.0/22\n222.126.184.0/21\n222.126.192.0/21\n222.126.200.104/29\n222.126.206.0/23\n222.126.208.0/22\n222.126.212.0/26\n222.126.212.64/27\n222.126.212.96/28\n222.126.212.112/29\n222.126.212.128/25\n222.126.213.0/24\n222.126.214.0/23\n222.126.216.0/21\n222.126.224.0/19\n222.128.0.0/12\n222.160.0.0/14\n222.168.0.0/13\n222.176.0.0/12\n222.192.0.0/11\n222.240.0.0/13\n222.248.0.0/15\n223.0.0.0/12\n223.20.0.0/15\n223.27.184.0/22\n223.29.208.0/22\n223.29.252.0/22\n223.64.0.0/11\n223.96.0.0/12\n223.112.0.0/14\n223.116.0.0/15\n223.120.0.0/13\n223.128.0.0/15\n223.144.0.0/12\n223.160.0.0/14\n223.166.0.0/15\n223.192.0.0/15\n223.198.0.0/15\n223.201.4.0/22\n223.201.8.0/21\n223.201.16.0/20\n223.201.32.0/19\n223.201.64.0/18\n223.201.128.0/17\n223.202.0.0/15\n223.208.0.0/13\n223.220.0.0/15\n223.223.176.0/20\n223.223.192.0/20\n223.240.0.0/13\n223.248.0.0/14\n223.252.128.0/19\n223.252.192.0/18\n223.254.0.0/16\n223.255.0.0/17\n223.255.236.0/22\n223.255.252.0/23\n\n#**********************************************************************\n[bypass_list]\n# 直连列表\n\n# MyList\n(^|\\.)bit\\.no\\.com$\n(^|\\.)btlibrary\\.me$\n(^|\\.)cccat\\.io$\n(^|\\.)cloudcone\\.com$\n(^|\\.)gameloft\\.com$\n(^|\\.)inoreader\\.com$\n(^|\\.)ip138\\.com$\n(^|\\.)ping\\.pe$\n(^|\\.)reddit\\.com$\n(^|\\.)teddysun\\.com$\n(^|\\.)textnow\\.com$\n(^|\\.)tumbex\\.com$\n(^|\\.)twdvd\\.com$\n(^|\\.)unsplash\\.com$\n(^|\\.)xn--i2ru8q2qg\\.com$\n(^|\\.)yunpanjingling\\.com$\n(^|\\.)ec2-54-210-142-85\\.computer-1\\.amazonaws\\.com$\n(^|\\.)ec2-54-174-24-124\\.computer-1\\.amazonaws\\.com$\n(^|\\.)ec2-54-174-178-70\\.computer-1\\.amazonaws\\.com$\n(^|\\.)ec2-54-175-2-194\\.computer-1\\.amazonaws\\.com$\n(^|\\.)ec2-54-210-54-246\\.computer-1\\.amazonaws\\.com$\n\n# 本地/局域网地址\n^(.*\\.)?local$\n^(.*\\.)?localhost$\n^(.*\\.)?ip6-localhost$\n^(.*\\.)?ip6-loopback$\n\n::ffff:0:0:0:0/1\n::ffff:128:0:0:0/1\n10.0.0.0/8\n100.64.0.0/10\n127.0.0.0/8\n172.16.0.0/12\n192.168.0.0/16\n\n# Router managed 路由器管理域名\n(^|\\.)hiwifi\\.com$\n(^|\\.)leike\\.cc$\n(^|\\.)miwifi\\.com$\n(^|\\.)my\\.router$\n(^|\\.)p\\.to$\n(^|\\.)peiluyou\\.com$\n(^|\\.)phicomm\\.me$\n(^|\\.)routerlogin\\.com$\n(^|\\.)tendawifi\\.com$\n(^|\\.)zte\\.home$\n(^|\\.)router\\.asus\\.com$\n\n#GFWList IP start\n85.17.73.31\n174.142.105.153\n199.59.148.20\n38.103.165.50\n50.7.31.230\n67.220.91.15\n67.220.91.18\n67.220.91.23\n69.65.19.160\n72.52.81.22\n14.102.250.18\n14.102.250.19\n#GFWList IP end\n61.230.0.128\n95.211.214.34\n94.100.18.172\n116.48.111.236\n94.100.22.212\n83.149.70.38\n46.166.148.135\n168.70.106.171\n118.34.169.15\n42.98.107.223\n39.119.179.177\n119.77.178.211\n112.119.29.49\n45.76.49.238\n45.32.39.1\n14.198.143.94\n112.119.90.171\n116.48.111.236\n112.168.224.141\n218.161.37.206\n14.8.71.128\n114.199.145.219\n1.238.223.154\n203.222.24.93\n59.126.95.195\n42.98.107.223\n140.112.53.243\n124.168.108.15\n36.225.167.32\n36.234.188.130\n114.199.145.219\n220.132.16.173\n\n# 国外域名关键字\n(^|\\.)\\w*1e100\\w*\\.\\w*$\n(^|\\.)\\w*abema\\w*\\.\\w*$\n(^|\\.)\\w*appledaily\\w*\\.\\w*$\n(^|\\.)\\w*avtb\\w*\\.\\w*$\n(^|\\.)\\w*beetalk\\w*\\.\\w*$\n(^|\\.)\\w*blogspot\\w*\\.\\w*$\n(^|\\.)\\w*dropbox\\w*\\.\\w*$\n(^|\\.)\\w*facebook\\w*\\.\\w*$\n(^|\\.)\\w*fbcdn\\w*\\.\\w*$\n(^|\\.)\\w*github\\w*\\.\\w*$\n(^|\\.)\\w*gmail\\w*\\.\\w*$\n(^|\\.)\\w*google\\w*\\.\\w*$\n(^|\\.)\\w*instagram\\w*\\.\\w*$\n(^|\\.)\\w*porn\\w*\\.\\w*$\n(^|\\.)\\w*sci-hub\\w*\\.\\w*$\n(^|\\.)\\w*spotify\\w*\\.\\w*$\n(^|\\.)\\w*telegram\\w*\\.\\w*$\n(^|\\.)\\w*twitter\\w*\\.\\w*$\n(^|\\.)\\w*whatsapp\\w*\\.\\w*$\n(^|\\.)\\w*youtube\\w*\\.\\w*$\n\n#GFWList\n(^|\\.)030buy\\.com$\n(^|\\.)0rz\\.tw$\n(^|\\.)1000giri\\.net$\n(^|\\.)100ke\\.org$\n(^|\\.)10conditionsoflove\\.com$\n(^|\\.)10musume\\.com$\n(^|\\.)10\\.tt$\n(^|\\.)123rf\\.com$\n(^|\\.)12bet\\.com$\n(^|\\.)12vpn\\.com$\n(^|\\.)12vpn\\.net$\n(^|\\.)138\\.com$\n(^|\\.)141hongkong\\.com$\n(^|\\.)141jj\\.com$\n(^|\\.)141tube\\.com$\n(^|\\.)1688\\.com\\.au$\n(^|\\.)173ng\\.com$\n(^|\\.)177pic\\.info$\n(^|\\.)17t17p\\.com$\n(^|\\.)18board\\.com$\n(^|\\.)18board\\.info$\n(^|\\.)18onlygirls\\.com$\n(^|\\.)18p2p\\.com$\n(^|\\.)18virginsex\\.com$\n(^|\\.)1949er\\.org$\n(^|\\.)1984bbs\\.com$\n(^|\\.)1984bbs\\.org$\n(^|\\.)1989report\\.hkja\\.org\\.hk$\n(^|\\.)1991way\\.com$\n(^|\\.)1998cdp\\.org$\n(^|\\.)1-apple\\.com\\.tw$\n(^|\\.)1bao\\.org$\n(^|\\.)1dumb\\.com$\n(^|\\.)1e100\\.net$\n(^|\\.)1eew\\.com$\n(^|\\.)1mobile\\.com$\n(^|\\.)1mobile\\.tw$\n(^|\\.)1pondo\\.tv$\n(^|\\.)2000fun\\.com$\n(^|\\.)2008xianzhang\\.info$\n(^|\\.)2017\\.hk$\n(^|\\.)21andy\\.com$\n(^|\\.)21join\\.com$\n(^|\\.)21pron\\.com$\n(^|\\.)21sextury\\.com$\n(^|\\.)228\\.net\\.tw$\n(^|\\.)233abc\\.com$\n(^|\\.)24hrs\\.ca$\n(^|\\.)24smile\\.org$\n(^|\\.)25u\\.com$\n(^|\\.)2-hand\\.info$\n(^|\\.)2lipstube\\.com$\n(^|\\.)2shared\\.com$\n(^|\\.)2waky\\.com$\n(^|\\.)30boxes\\.com$\n(^|\\.)315lz\\.com$\n(^|\\.)32red\\.com$\n(^|\\.)36rain\\.com$\n(^|\\.)3a5a\\.com$\n(^|\\.)3-a\\.net$\n(^|\\.)3arabtv\\.com$\n(^|\\.)3boys2girls\\.com$\n(^|\\.)3d-game\\.com$\n(^|\\.)3proxy\\.ru$\n(^|\\.)3ren\\.ca$\n(^|\\.)3tui\\.net$\n(^|\\.)43110\\.cf$\n(^|\\.)466453\\.com$\n(^|\\.)4bluestones\\.biz$\n(^|\\.)4chan\\.com$\n(^|\\.)4dq\\.com$\n(^|\\.)4everproxy\\.com$\n(^|\\.)4irc\\.com$\n(^|\\.)4mydomain\\.com$\n(^|\\.)4pu\\.com$\n(^|\\.)4rbtv\\.com$\n(^|\\.)4shared\\.com$\n(^|\\.)4sqi\\.net$\n(^|\\.)51\\.ca$\n(^|\\.)51jav\\.org$\n(^|\\.)51luoben\\.com$\n(^|\\.)5278\\.cc$\n(^|\\.)5299\\.tv$\n(^|\\.)56cun04\\.jigsy\\.com$\n(^|\\.)5aimiku\\.com$\n(^|\\.)5i01\\.com$\n(^|\\.)5isotoi5\\.org$\n(^|\\.)5maodang\\.com$\n(^|\\.)63i\\.com$\n(^|\\.)64museum\\.org$\n(^|\\.)64tianwang\\.com$\n(^|\\.)64wiki\\.com$\n(^|\\.)666kb\\.com$\n(^|\\.)66\\.ca$\n(^|\\.)6park\\.com$\n(^|\\.)6parker\\.com$\n(^|\\.)6parknews\\.com$\n(^|\\.)7capture\\.com$\n(^|\\.)7cow\\.com$\n(^|\\.)85cc\\.net$\n(^|\\.)85cc\\.us$\n(^|\\.)85st\\.com$\n(^|\\.)881903\\.com$\n(^|\\.)888\\.com$\n(^|\\.)888poker\\.com$\n(^|\\.)89\\.64\\.charter\\.constitutionalism\\.solutions$\n(^|\\.)89-64\\.org$\n(^|\\.)8-d\\.com$\n(^|\\.)8news\\.com\\.tw$\n(^|\\.)8z1\\.net$\n(^|\\.)9001700\\.com$\n(^|\\.)908taiwan\\.org$\n(^|\\.)91porn\\.com$\n(^|\\.)91vps\\.club$\n(^|\\.)92ccav\\.com$\n(^|\\.)991\\.com$\n(^|\\.)99btgc01\\.com$\n(^|\\.)99cn\\.info$\n(^|\\.)9bis\\.com$\n(^|\\.)9bis\\.net$\n(^|\\.)9gag\\.com$\n(^|\\.)a248\\.e\\.akamai\\.net$\n(^|\\.)a5\\.com\\.ru$\n(^|\\.)aamacau\\.com$\n(^|\\.)abc\\.com$\n(^|\\.)abchinese\\.com$\n(^|\\.)abclite\\.net$\n(^|\\.)abc\\.net\\.au$\n(^|\\.)abc\\.pp\\.ru$\n(^|\\.)abc\\.xyz$\n(^|\\.)abebooks\\.com$\n(^|\\.)abematv\\.akamaized\\.net$\n(^|\\.)abitno\\.linpie\\.com$\n(^|\\.)ablwang\\.com$\n(^|\\.)aboluowang\\.com$\n(^|\\.)aboutgfw\\.com$\n(^|\\.)about\\.google$\n(^|\\.)abs\\.edu$\n(^|\\.)accim\\.org$\n(^|\\.)aceros-de-hispania\\.com$\n(^|\\.)acevpn\\.com$\n(^|\\.)acg18\\.me$\n(^|\\.)acgkj\\.com$\n(^|\\.)ac\\.jiruan\\.net$\n(^|\\.)acmedia365\\.com$\n(^|\\.)acmetoy\\.com$\n(^|\\.)acnw\\.com\\.au$\n(^|\\.)actfortibet\\.org$\n(^|\\.)actimes\\.com\\.au$\n(^|\\.)activpn\\.com$\n(^|\\.)aculo\\.us$\n(^|\\.)adcex\\.com$\n(^|\\.)addictedtocoffee\\.de$\n(^|\\.)adelaidebbs\\.com$\n(^|\\.)admin\\.recaptcha\\.net$\n(^|\\.)admob\\.com$\n(^|\\.)adpl\\.org\\.hk$\n(^|\\.)adsense\\.com$\n(^|\\.)ads-twitter\\.com$\n(^|\\.)adult\\.friendfinder\\.com$\n(^|\\.)adultfriendfinder\\.com$\n(^|\\.)adultkeep\\.net$\n(^|\\.)adult-sex-games\\.com$\n(^|\\.)advanscene\\.com$\n(^|\\.)advertfan\\.com$\n(^|\\.)ae\\.hao123\\.com$\n(^|\\.)aenhancers\\.com$\n(^|\\.)ae\\.org$\n(^|\\.)aex\\.com$\n(^|\\.)afantibbs\\.com$\n(^|\\.)af\\.mil$\n(^|\\.)agnesb\\.fr$\n(^|\\.)agoogleaday\\.com$\n(^|\\.)agro\\.hk$\n(^|\\.)ai\\.binwang\\.me$\n(^|\\.)ai\\.google$\n(^|\\.)ai-kan\\.net$\n(^|\\.)aiph\\.net$\n(^|\\.)airasia\\.com$\n(^|\\.)airconsole\\.com$\n(^|\\.)airvpn\\.org$\n(^|\\.)aisex\\.com$\n(^|\\.)aiss\\.anws\\.gov\\.tw$\n(^|\\.)ait\\.org\\.tw$\n(^|\\.)aiweiweiblog\\.com$\n(^|\\.)aiweiwei\\.com$\n(^|\\.)ai-wen\\.net$\n(^|\\.)akademiye\\.org$\n(^|\\.)akamaihd\\.net$\n(^|\\.)akiba-online\\.com$\n(^|\\.)akiba-web\\.com$\n(^|\\.)akow\\.org$\n(^|\\.)alabout\\.com$\n(^|\\.)alanhou\\.com$\n(^|\\.)alarab\\.qa$\n(^|\\.)alasbarricadas\\.org$\n(^|\\.)alexlur\\.org$\n(^|\\.)alforattv\\.net$\n(^|\\.)alhayat\\.com$\n(^|\\.)alicejapan\\.co\\.jp$\n(^|\\.)aliengu\\.com$\n(^|\\.)al-islam\\.com$\n(^|\\.)alkasir\\.com$\n(^|\\.)allcoin\\.com$\n(^|\\.)allconnected\\.co$\n(^|\\.)alldrawnsex\\.com$\n(^|\\.)allervpn\\.com$\n(^|\\.)allfinegirls\\.com$\n(^|\\.)allgirlmassage\\.com$\n(^|\\.)allgirlsallowed\\.org$\n(^|\\.)allgravure\\.com$\n(^|\\.)alliance\\.org\\.hk$\n(^|\\.)allinfa\\.com$\n(^|\\.)alljackpotscasino\\.com$\n(^|\\.)allmovie\\.com$\n(^|\\.)allowed\\.org$\n(^|\\.)almasdarnews\\.com$\n(^|\\.)almostmy\\.com$\n(^|\\.)alphaporno\\.com$\n(^|\\.)al-qimmah\\.net$\n(^|\\.)alternate-tools\\.com$\n(^|\\.)alternativeto\\.net$\n(^|\\.)altrec\\.com$\n(^|\\.)alvinalexander\\.com$\n(^|\\.)alwaysdata\\.com$\n(^|\\.)alwaysdata\\.net$\n(^|\\.)alwaysvpn\\.com$\n(^|\\.)am730\\.com\\.hk$\n(^|\\.)amazon\\.co\\.jp$\n(^|\\.)amazon\\.com$\n(^|\\.)ameblo\\.jp$\n(^|\\.)americangreencard\\.com$\n(^|\\.)americanunfinished\\.com$\n(^|\\.)amiblockedornot\\.com$\n(^|\\.)amigobbs\\.net$\n(^|\\.)amitabhafoundation\\.us$\n(^|\\.)amnesty\\.org$\n(^|\\.)amnesty\\.org\\.hk$\n(^|\\.)amnesty\\.tw$\n(^|\\.)amnestyusa\\.org$\n(^|\\.)amnyemachen\\.org$\n(^|\\.)amoiist\\.com$\n(^|\\.)ampproject\\.org$\n(^|\\.)amtb-taipei\\.org$\n(^|\\.)anchorfree\\.com$\n(^|\\.)ancsconf\\.org$\n(^|\\.)andfaraway\\.net$\n(^|\\.)android\\.com$\n(^|\\.)androidify\\.com$\n(^|\\.)androidplus\\.co$\n(^|\\.)androidtv\\.com$\n(^|\\.)android-x86\\.org$\n(^|\\.)andygod\\.com$\n(^|\\.)angela-merkel\\.de$\n(^|\\.)angelfire\\.com$\n(^|\\.)angola\\.org$\n(^|\\.)angularjs\\.org$\n(^|\\.)animecrazy\\.net$\n(^|\\.)animeshippuuden\\.com$\n(^|\\.)aniscartujo\\.com$\n(^|\\.)annatam\\.com$\n(^|\\.)anobii\\.com$\n(^|\\.)anontext\\.com$\n(^|\\.)anonymise\\.us$\n(^|\\.)anonymitynetwork\\.com$\n(^|\\.)anonymizer\\.com$\n(^|\\.)anonymouse\\.org$\n(^|\\.)a-normal-day\\.com$\n(^|\\.)anpopo\\.com$\n(^|\\.)answering-islam\\.org$\n(^|\\.)anthonycalzadilla\\.com$\n(^|\\.)anti1984\\.com$\n(^|\\.)antichristendom\\.com$\n(^|\\.)antiwave\\.net$\n(^|\\.)anyporn\\.com$\n(^|\\.)anysex\\.com$\n(^|\\.)aobo\\.com\\.au$\n(^|\\.)aofriend\\.com$\n(^|\\.)aofriend\\.com\\.au$\n(^|\\.)aojiao\\.org$\n(^|\\.)aolchannels\\.aol\\.com$\n(^|\\.)aomiwang\\.com$\n(^|\\.)apartmentratings\\.com$\n(^|\\.)apartments\\.com$\n(^|\\.)apetube\\.com$\n(^|\\.)api\\.ai$\n(^|\\.)apiary\\.io$\n(^|\\.)apidocs\\.linksalpha\\.com$\n(^|\\.)api\\.dropboxapi\\.com$\n(^|\\.)apigee\\.com$\n(^|\\.)api\\.linksalpha\\.com$\n(^|\\.)api\\.proxlet\\.com$\n(^|\\.)api\\.pureapk\\.com$\n(^|\\.)api\\.recaptcha\\.net$\n(^|\\.)api-secure\\.recaptcha\\.net$\n(^|\\.)api-verify\\.recaptcha\\.net$\n(^|\\.)apk-dl\\.com$\n(^|\\.)apkdler\\.com$\n(^|\\.)apkmirror\\.com$\n(^|\\.)apkmonk\\.com$\n(^|\\.)apkplz\\.com$\n(^|\\.)apkpure\\.com$\n(^|\\.)aplusvpn\\.com$\n(^|\\.)app\\.box\\.com$\n(^|\\.)appdownloader\\.net$\n(^|\\.)app\\.heywire\\.com$\n(^|\\.)appledaily\\.com$\n(^|\\.)appledaily\\.com\\.hk$\n(^|\\.)appledaily\\.com\\.tw$\n(^|\\.)appshopper\\.com$\n(^|\\.)app\\.smartmailcloud\\.com$\n(^|\\.)appsocks\\.net$\n(^|\\.)appspot\\.com$\n(^|\\.)appsto\\.re$\n(^|\\.)app\\.tutanota\\.com$\n(^|\\.)aptoide\\.com$\n(^|\\.)archive\\.fo$\n(^|\\.)archive\\.is$\n(^|\\.)archive\\.li$\n(^|\\.)archive\\.org$\n(^|\\.)archives\\.gov$\n(^|\\.)archives\\.gov\\.tw$\n(^|\\.)archive\\.today$\n(^|\\.)arctosia\\.com$\n(^|\\.)areca-backup\\.org$\n(^|\\.)arena\\.taipei$\n(^|\\.)arethusa\\.su$\n(^|\\.)ar\\.hao123\\.com$\n(^|\\.)arlingtoncemetery\\.mil$\n(^|\\.)army\\.mil$\n(^|\\.)art4tibet1998\\.org$\n(^|\\.)arte\\.tv$\n(^|\\.)artofpeacefoundation\\.org$\n(^|\\.)artstation\\.com$\n(^|\\.)artsy\\.net$\n(^|\\.)asacp\\.org$\n(^|\\.)asdfg\\.jp$\n(^|\\.)asg\\.to$\n(^|\\.)asia-gaming\\.com$\n(^|\\.)asiaharvest\\.org$\n(^|\\.)asianews\\.it$\n(^|\\.)asiansexdiary\\.com$\n(^|\\.)asianspiss\\.com$\n(^|\\.)asianwomensfilm\\.de$\n(^|\\.)asiatgp\\.com$\n(^|\\.)asiatoday\\.us$\n(^|\\.)askstudent\\.com$\n(^|\\.)askynz\\.net$\n(^|\\.)assembla\\.com$\n(^|\\.)assets\\.bwbx\\.io$\n(^|\\.)assimp\\.org$\n(^|\\.)astrill\\.com$\n(^|\\.)atchinese\\.com$\n(^|\\.)atc\\.org\\.au$\n(^|\\.)atdmt\\.com$\n(^|\\.)atgfw\\.org$\n(^|\\.)athenaeizou\\.com$\n(^|\\.)atlanta168\\.com$\n(^|\\.)atlaspost\\.com$\n(^|\\.)atnext\\.com$\n(^|\\.)authorizeddns\\.net$\n(^|\\.)authorizeddns\\.org$\n(^|\\.)authorizeddns\\.us$\n(^|\\.)autodraw\\.com$\n(^|\\.)avaaz\\.org$\n(^|\\.)avbody\\.tv$\n(^|\\.)avcity\\.tv$\n(^|\\.)av\\.com$\n(^|\\.)avcool\\.com$\n(^|\\.)avdb\\.in$\n(^|\\.)avdb\\.tv$\n(^|\\.)av-e-body\\.com$\n(^|\\.)avfantasy\\.com$\n(^|\\.)avg\\.com$\n(^|\\.)avgle\\.com$\n(^|\\.)avidemux\\.org$\n(^|\\.)avmoo\\.com$\n(^|\\.)avmoo\\.net$\n(^|\\.)avmoo\\.pw$\n(^|\\.)avmo\\.pw$\n(^|\\.)av\\.movie$\n(^|\\.)av\\.nightlife141\\.com$\n(^|\\.)avoision\\.com$\n(^|\\.)avyahoo\\.com$\n(^|\\.)axureformac\\.com$\n(^|\\.)azerbaycan\\.tv$\n(^|\\.)azerimix\\.com$\n(^|\\.)azubu\\.tv$\n(^|\\.)azurewebsites\\.net$\n(^|\\.)b0ne\\.com$\n(^|\\.)babynet\\.com\\.hk$\n(^|\\.)backchina\\.com$\n(^|\\.)backpackers\\.com\\.tw$\n(^|\\.)backtotiananmen\\.com$\n(^|\\.)badiucao\\.com$\n(^|\\.)badjojo\\.com$\n(^|\\.)badoo\\.com$\n(^|\\.)bahamut\\.com\\.tw$\n(^|\\.)baidu\\.jp$\n(^|\\.)baijie\\.org$\n(^|\\.)bailandaily\\.com$\n(^|\\.)baixing\\.me$\n(^|\\.)bakgeekhome\\.tk$\n(^|\\.)banana-vpn\\.com$\n(^|\\.)band\\.us$\n(^|\\.)bandwagonhost\\.com$\n(^|\\.)bangbrosnetwork\\.com$\n(^|\\.)bangchen\\.net$\n(^|\\.)bangdream\\.space$\n(^|\\.)bangyoulater\\.com$\n(^|\\.)bankmobilevibe\\.com$\n(^|\\.)bannedbook\\.org$\n(^|\\.)bannednews\\.org$\n(^|\\.)banorte\\.com$\n(^|\\.)baramangaonline\\.com$\n(^|\\.)barenakedislam\\.com$\n(^|\\.)barnabu\\.co\\.uk$\n(^|\\.)barton\\.de$\n(^|\\.)bartvpn\\.com$\n(^|\\.)bash-hackers\\.org$\n(^|\\.)bastillepost\\.com$\n(^|\\.)bayvoice\\.net$\n(^|\\.)bbcchinese\\.com$\n(^|\\.)bbc\\.com$\n(^|\\.)bbc\\.co\\.uk$\n(^|\\.)bb-chat\\.tv$\n(^|\\.)bbchat\\.tv$\n(^|\\.)bbci\\.co\\.uk$\n(^|\\.)bbc\\.in$\n(^|\\.)bbg\\.gov$\n(^|\\.)bbkz\\.com$\n(^|\\.)bbnradio\\.org$\n(^|\\.)bbs\\.brockbbs\\.com$\n(^|\\.)bbs\\.cantonese\\.asia$\n(^|\\.)bbsdigest\\.com$\n(^|\\.)bbs\\.ecstart\\.com$\n(^|\\.)bbsfeed\\.com$\n(^|\\.)bbs\\.hanminzu\\.org$\n(^|\\.)bbs\\.hasi\\.wang$\n(^|\\.)bbs\\.huasing\\.org$\n(^|\\.)bbs\\.junglobal\\.net$\n(^|\\.)bbs\\.kimy\\.com\\.tw$\n(^|\\.)bbsland\\.com$\n(^|\\.)bbs\\.mikocon\\.com$\n(^|\\.)bbsmo\\.com$\n(^|\\.)bbs\\.morbell\\.com$\n(^|\\.)bbs\\.mychat\\.to$\n(^|\\.)bbs\\.netbig\\.com$\n(^|\\.)bbsone\\.com$\n(^|\\.)bbs\\.ozchinese\\.com$\n(^|\\.)bbs\\.qmzdd\\.com$\n(^|\\.)bbs\\.sina\\.com$\n(^|\\.)bbs\\.skykiwi\\.com$\n(^|\\.)bbs\\.sou-tong\\.org$\n(^|\\.)bbs\\.tuitui\\.info$\n(^|\\.)bbs-tw\\.com$\n(^|\\.)bbtoystore\\.com$\n(^|\\.)bb\\.ttv\\.com\\.tw$\n(^|\\.)bcast\\.co\\.nz$\n(^|\\.)bcc\\.com\\.tw$\n(^|\\.)bcchinese\\.net$\n(^|\\.)bcex\\.ca$\n(^|\\.)bcmorning\\.com$\n(^|\\.)bdsmvideos\\.net$\n(^|\\.)beaconevents\\.com$\n(^|\\.)bebo\\.com$\n(^|\\.)beeg\\.com$\n(^|\\.)beevpn\\.com$\n(^|\\.)behance\\.net$\n(^|\\.)behindkink\\.com$\n(^|\\.)beijing1989\\.com$\n(^|\\.)beijingspring\\.com$\n(^|\\.)beijingzx\\.org$\n(^|\\.)belamionline\\.com$\n(^|\\.)bell\\.wiki$\n(^|\\.)bemywife\\.cc$\n(^|\\.)beric\\.me$\n(^|\\.)berlintwitterwall\\.com$\n(^|\\.)berm\\.co\\.nz$\n(^|\\.)bestforchina\\.org$\n(^|\\.)bestgore\\.com$\n(^|\\.)bestpornstardb\\.com$\n(^|\\.)bestvpnanalysis\\.com$\n(^|\\.)bestvpn\\.com$\n(^|\\.)bestvpnserver\\.com$\n(^|\\.)bestvpnservice\\.com$\n(^|\\.)bestvpnusa\\.com$\n(^|\\.)bet365\\.com$\n(^|\\.)betfair\\.com$\n(^|\\.)betternet\\.co$\n(^|\\.)bettervpn\\.com$\n(^|\\.)bettween\\.com$\n(^|\\.)betvictor\\.com$\n(^|\\.)bewww\\.net$\n(^|\\.)beyondfirewall\\.com$\n(^|\\.)bfnn\\.org$\n(^|\\.)bfsh\\.hk$\n(^|\\.)bgvpn\\.com$\n(^|\\.)bianlei\\.com$\n(^|\\.)biantailajiao\\.com$\n(^|\\.)biantailajiao\\.in$\n(^|\\.)biblesforamerica\\.org$\n(^|\\.)bibox\\.com$\n(^|\\.)bic2011\\.org$\n(^|\\.)bigfools\\.com$\n(^|\\.)bigjapanesesex\\.com$\n(^|\\.)bigmoney\\.biz$\n(^|\\.)bignews\\.org$\n(^|\\.)big\\.one$\n(^|\\.)bigsound\\.org$\n(^|\\.)biliworld\\.com$\n(^|\\.)billypan\\.com$\n(^|\\.)binance\\.com$\n(^|\\.)binux\\.me$\n(^|\\.)bipic\\.net$\n(^|\\.)bird\\.so$\n(^|\\.)bitc\\.bme\\.emory\\.edu$\n(^|\\.)bitcointalk\\.org$\n(^|\\.)bitcoinworld\\.com$\n(^|\\.)bit\\.do$\n(^|\\.)bitfinex\\.com$\n(^|\\.)bithumb\\.com$\n(^|\\.)bitinka\\.com\\.ar$\n(^|\\.)bit\\.ly$\n(^|\\.)bitmex\\.com$\n(^|\\.)bitshare\\.com$\n(^|\\.)bitsnoop\\.com$\n(^|\\.)bitvise\\.com$\n(^|\\.)bit-z\\.com$\n(^|\\.)bizhat\\.com$\n(^|\\.)bjnewlife\\.org$\n(^|\\.)bjs\\.org$\n(^|\\.)bjzc\\.org$\n(^|\\.)blacklogic\\.com$\n(^|\\.)blackvpn\\.com$\n(^|\\.)bl-doujinsouko\\.com$\n(^|\\.)blewpass\\.com$\n(^|\\.)blinkx\\.com$\n(^|\\.)blinw\\.com$\n(^|\\.)blip\\.tv$\n(^|\\.)blockcn\\.com$\n(^|\\.)blockless\\.com$\n(^|\\.)blogblog\\.com$\n(^|\\.)blog\\.calibre-ebook\\.com$\n(^|\\.)blogcatalog\\.com$\n(^|\\.)blogcity\\.me$\n(^|\\.)blog\\.cnyes\\.com$\n(^|\\.)blog\\.daum\\.net$\n(^|\\.)blog\\.de$\n(^|\\.)blogdns\\.org$\n(^|\\.)blog\\.exblog\\.co\\.jp$\n(^|\\.)blog\\.excite\\.co\\.jp$\n(^|\\.)blog\\.expofutures\\.com$\n(^|\\.)blog\\.fizzik\\.com$\n(^|\\.)blog\\.foolsmountain\\.com$\n(^|\\.)blog\\.fuckgfw233\\.org$\n(^|\\.)blogger\\.com$\n(^|\\.)blog\\.google$\n(^|\\.)blog\\.goo\\.ne\\.jp$\n(^|\\.)blogimg\\.jp$\n(^|\\.)blog\\.inoreader\\.com$\n(^|\\.)blog\\.istef\\.info$\n(^|\\.)blog\\.jackjia\\.com$\n(^|\\.)blog\\.jp$\n(^|\\.)blog\\.kangye\\.org$\n(^|\\.)blog\\.lester850\\.info$\n(^|\\.)bloglines\\.com$\n(^|\\.)bloglovin\\.com$\n(^|\\.)blog\\.martinoei\\.com$\n(^|\\.)blog\\.pathtosharepoint\\.com$\n(^|\\.)blog\\.pentalogic\\.net$\n(^|\\.)blog\\.qooza\\.hk$\n(^|\\.)blog\\.ranxiang\\.com$\n(^|\\.)blogs\\.icerocket\\.com$\n(^|\\.)blog\\.sina\\.com\\.tw$\n(^|\\.)blogs\\.libraryinformationtechnology\\.com$\n(^|\\.)blog\\.sogoo\\.org$\n(^|\\.)blog\\.soylent\\.com$\n(^|\\.)blogspot\\.ae$\n(^|\\.)blogspot\\.al$\n(^|\\.)blogspot\\.am$\n(^|\\.)blogspot\\.ba$\n(^|\\.)blogspot\\.be$\n(^|\\.)blogspot\\.bg$\n(^|\\.)blogspot\\.ca$\n(^|\\.)blogspot\\.cat$\n(^|\\.)blogspot\\.ch$\n(^|\\.)blogspot\\.cl$\n(^|\\.)blogspot\\.com$\n(^|\\.)blogspot\\.com\\.ar$\n(^|\\.)blogspot\\.com\\.au$\n(^|\\.)blogspot\\.com\\.br$\n(^|\\.)blogspot\\.com\\.by$\n(^|\\.)blogspot\\.com\\.co$\n(^|\\.)blogspot\\.com\\.cy$\n(^|\\.)blogspot\\.com\\.ee$\n(^|\\.)blogspot\\.com\\.eg$\n(^|\\.)blogspot\\.com\\.es$\n(^|\\.)blogspot\\.com\\.mt$\n(^|\\.)blogspot\\.com\\.ng$\n(^|\\.)blogspot\\.com\\.tr$\n(^|\\.)blogspot\\.com\\.uy$\n(^|\\.)blogspot\\.co\\.uk$\n(^|\\.)blogspot\\.cz$\n(^|\\.)blogspot\\.de$\n(^|\\.)blogspot\\.dk$\n(^|\\.)blogspot\\.fi$\n(^|\\.)blogspot\\.fr$\n(^|\\.)blogspot\\.gr$\n(^|\\.)blogspot\\.hk$\n(^|\\.)blogspot\\.hr$\n(^|\\.)blogspot\\.hu$\n(^|\\.)blogspot\\.ie$\n(^|\\.)blogspot\\.in$\n(^|\\.)blogspot\\.is$\n(^|\\.)blogspot\\.it$\n(^|\\.)blogspot\\.jp$\n(^|\\.)blogspot\\.kr$\n(^|\\.)blogspot\\.li$\n(^|\\.)blogspot\\.lt$\n(^|\\.)blogspot\\.lu$\n(^|\\.)blogspot\\.md$\n(^|\\.)blogspot\\.mk$\n(^|\\.)blogspot\\.mx$\n(^|\\.)blogspot\\.my$\n(^|\\.)blogspot\\.nl$\n(^|\\.)blogspot\\.no$\n(^|\\.)blogspot\\.pe$\n(^|\\.)blogspot\\.pt$\n(^|\\.)blogspot\\.qa$\n(^|\\.)blogspot\\.ro$\n(^|\\.)blogspot\\.ru$\n(^|\\.)blogspot\\.se$\n(^|\\.)blogspot\\.sg$\n(^|\\.)blogspot\\.si$\n(^|\\.)blogspot\\.sk$\n(^|\\.)blogspot\\.sn$\n(^|\\.)blogspot\\.tw$\n(^|\\.)blogspot\\.ug$\n(^|\\.)blogs\\.tampabay\\.com$\n(^|\\.)blogs\\.yahoo\\.co\\.jp$\n(^|\\.)blog\\.syx86\\.cn$\n(^|\\.)blog\\.syx86\\.com$\n(^|\\.)blog\\.taragana\\.com$\n(^|\\.)blogtd\\.net$\n(^|\\.)blogtd\\.org$\n(^|\\.)blog\\.tiney\\.com$\n(^|\\.)blog\\.workflow\\.is$\n(^|\\.)blog\\.xuite\\.net$\n(^|\\.)blog\\.youthwant\\.com\\.tw$\n(^|\\.)blog\\.youxu\\.info$\n(^|\\.)bloodshed\\.net$\n(^|\\.)bloomberg\\.cn$\n(^|\\.)bloomberg\\.com$\n(^|\\.)bloomberg\\.de$\n(^|\\.)bloombergview\\.com$\n(^|\\.)bloomfortune\\.com$\n(^|\\.)blueangellive\\.com$\n(^|\\.)bmfinn\\.com$\n(^|\\.)bnews\\.co$\n(^|\\.)bnn\\.co$\n(^|\\.)bnrmetal\\.com$\n(^|\\.)boardreader\\.com$\n(^|\\.)bod\\.asia$\n(^|\\.)bodog88\\.com$\n(^|\\.)bolehvpn\\.net$\n(^|\\.)bolin\\.netfirms\\.com$\n(^|\\.)bonbonme\\.com$\n(^|\\.)bonbonsex\\.com$\n(^|\\.)bonfoundation\\.org$\n(^|\\.)bongacams\\.com$\n(^|\\.)boobstagram\\.com$\n(^|\\.)book\\.com\\.tw$\n(^|\\.)bookepub\\.com$\n(^|\\.)books\\.com\\.tw$\n(^|\\.)booktopia\\.com\\.au$\n(^|\\.)book\\.zi5\\.me$\n(^|\\.)boomssr\\.com$\n(^|\\.)botanwang\\.com$\n(^|\\.)bot\\.nu$\n(^|\\.)bowenpress\\.com$\n(^|\\.)boxpn\\.com$\n(^|\\.)boxunblog\\.com$\n(^|\\.)boxunclub\\.com$\n(^|\\.)boxun\\.com$\n(^|\\.)boxun\\.tv$\n(^|\\.)boyangu\\.com$\n(^|\\.)boyfriendtv\\.com$\n(^|\\.)boysfood\\.com$\n(^|\\.)boysmaster\\.com$\n(^|\\.)brainyquote\\.com$\n(^|\\.)brandonhutchinson\\.com$\n(^|\\.)braumeister\\.org$\n(^|\\.)bravotube\\.net$\n(^|\\.)brazzers\\.com$\n(^|\\.)break\\.com$\n(^|\\.)breakgfw\\.com$\n(^|\\.)breaking911\\.com$\n(^|\\.)breakingtweets\\.com$\n(^|\\.)breakwall\\.net$\n(^|\\.)br\\.hao123\\.com$\n(^|\\.)briefdream\\.com$\n(^|\\.)briian\\.com$\n(^|\\.)brizzly\\.com$\n(^|\\.)brkmd\\.com$\n(^|\\.)broadbook\\.com$\n(^|\\.)broadpressinc\\.com$\n(^|\\.)br\\.st$\n(^|\\.)brucewang\\.net$\n(^|\\.)brutaltgp\\.com$\n(^|\\.)bt2mag\\.com$\n(^|\\.)bt95\\.com$\n(^|\\.)btaia\\.com$\n(^|\\.)btbtav\\.com$\n(^|\\.)btc98\\.com$\n(^|\\.)btcbank\\.bank$\n(^|\\.)btctrade\\.im$\n(^|\\.)btdigg\\.org$\n(^|\\.)btku\\.me$\n(^|\\.)btku\\.org$\n(^|\\.)btspread\\.com$\n(^|\\.)btsynckeys\\.com$\n(^|\\.)budaedu\\.org$\n(^|\\.)buddhanet\\.com\\.tw$\n(^|\\.)buddhistchannel\\.tv$\n(^|\\.)buffered\\.com$\n(^|\\.)bullogger\\.com$\n(^|\\.)bullog\\.org$\n(^|\\.)bunbunhk\\.com$\n(^|\\.)busayari\\.com$\n(^|\\.)businessinsider\\.com$\n(^|\\.)businesstoday\\.com\\.tw$\n(^|\\.)businessweek\\.com$\n(^|\\.)busu\\.org$\n(^|\\.)busytrade\\.com$\n(^|\\.)buugaa\\.com$\n(^|\\.)buy\\.yahoo\\.com\\.tw$\n(^|\\.)buzzhand\\.com$\n(^|\\.)buzzhand\\.net$\n(^|\\.)buzzorange\\.com$\n(^|\\.)bvpn\\.com$\n(^|\\.)bwgyhw\\.com$\n(^|\\.)bwh1\\.net$\n(^|\\.)bwsj\\.hk$\n(^|\\.)bx\\.in\\.th$\n(^|\\.)bx\\.tl$\n(^|\\.)bynet\\.co\\.il$\n(^|\\.)c100tibet\\.org$\n(^|\\.)c1522\\.mooo\\.com$\n(^|\\.)c2cx\\.com$\n(^|\\.)cablegatesearch\\.net$\n(^|\\.)cachinese\\.com$\n(^|\\.)cacnw\\.com$\n(^|\\.)cactusvpn\\.com$\n(^|\\.)cafepress\\.com$\n(^|\\.)cahr\\.org\\.tw$\n(^|\\.)calameo\\.com$\n(^|\\.)calebelston\\.com$\n(^|\\.)calgarychinese\\.ca$\n(^|\\.)calgarychinese\\.com$\n(^|\\.)calgarychinese\\.net$\n(^|\\.)cam4\\.com$\n(^|\\.)cam4\\.jp$\n(^|\\.)cam4\\.sg$\n(^|\\.)camfrog\\.com$\n(^|\\.)cams\\.com$\n(^|\\.)cams\\.org\\.sg$\n(^|\\.)canadameet\\.com$\n(^|\\.)canalporno\\.com$\n(^|\\.)canyu\\.org$\n(^|\\.)caobian\\.info$\n(^|\\.)caochangqing\\.com$\n(^|\\.)cao\\.im$\n(^|\\.)cap\\.org\\.hk$\n(^|\\.)carabinasypistolas\\.com$\n(^|\\.)cardinalkungfoundation\\.org$\n(^|\\.)carfax\\.com$\n(^|\\.)caribbeancom\\.com$\n(^|\\.)cari\\.com\\.my$\n(^|\\.)carmotorshow\\.com$\n(^|\\.)cartoonmovement\\.com$\n(^|\\.)casadeltibetbcn\\.org$\n(^|\\.)casatibet\\.org\\.mx$\n(^|\\.)casinobellini\\.com$\n(^|\\.)casinoking\\.com$\n(^|\\.)casinoriva\\.com$\n(^|\\.)casino\\.williamhill\\.com$\n(^|\\.)castbox\\.fm$\n(^|\\.)catch22\\.net$\n(^|\\.)catchgod\\.com$\n(^|\\.)catfightpayperview\\.xxx$\n(^|\\.)catholic\\.org\\.hk$\n(^|\\.)catholic\\.org\\.tw$\n(^|\\.)cathvoice\\.org\\.tw$\n(^|\\.)cattt\\.com$\n(^|\\.)cbc\\.ca$\n(^|\\.)cbsnews\\.com$\n(^|\\.)cbs\\.ntu\\.edu\\.tw$\n(^|\\.)cbtc\\.org\\.hk$\n(^|\\.)cccat\\.cc$\n(^|\\.)cccat\\.co$\n(^|\\.)ccdtr\\.org$\n(^|\\.)cchere\\.com$\n(^|\\.)ccim\\.org$\n(^|\\.)cclife\\.ca$\n(^|\\.)cclifefl\\.org$\n(^|\\.)cclife\\.org$\n(^|\\.)ccthere\\.com$\n(^|\\.)ccthere\\.net$\n(^|\\.)cctmweb\\.net$\n(^|\\.)cctongbao\\.com$\n(^|\\.)ccue\\.ca$\n(^|\\.)ccue\\.com$\n(^|\\.)ccvoice\\.ca$\n(^|\\.)ccw\\.org\\.tw$\n(^|\\.)cdbook\\.org$\n(^|\\.)cdcparty\\.com$\n(^|\\.)cdef\\.org$\n(^|\\.)cdig\\.info$\n(^|\\.)cdjp\\.org$\n(^|\\.)cdn1\\.lp\\.saboom\\.com$\n(^|\\.)cdn-apple\\.com$\n(^|\\.)cdn\\.assets\\.lfpcontent\\.com$\n(^|\\.)cdnews\\.com\\.tw$\n(^|\\.)cdn\\.helixstudios\\.net$\n(^|\\.)cdn-images\\.mailchimp\\.com$\n(^|\\.)cdninstagram\\.com$\n(^|\\.)cdn\\.printfriendly\\.com$\n(^|\\.)cdn\\.seatguru\\.com$\n(^|\\.)cdn\\.softlayer\\.net$\n(^|\\.)cdp1989\\.org$\n(^|\\.)cdp1998\\.org$\n(^|\\.)cdp2006\\.org$\n(^|\\.)cdpa\\.url\\.tw$\n(^|\\.)cdpeu\\.org$\n(^|\\.)cdpusa\\.org$\n(^|\\.)cdpweb\\.org$\n(^|\\.)cdpwu\\.org$\n(^|\\.)cdw\\.com$\n(^|\\.)cecc\\.gov$\n(^|\\.)cellulo\\.info$\n(^|\\.)cenews\\.eu$\n(^|\\.)centauro\\.com\\.br$\n(^|\\.)centerforhumanreprod\\.com$\n(^|\\.)centralnation\\.com$\n(^|\\.)centurys\\.net$\n(^|\\.)certificate\\.revocationcheck\\.com$\n(^|\\.)certificate-transparency\\.org$\n(^|\\.)c-est-simple\\.com$\n(^|\\.)cfhks\\.org\\.hk$\n(^|\\.)cfos\\.de$\n(^|\\.)cftfc\\.com$\n(^|\\.)cgdepot\\.org$\n(^|\\.)cgst\\.edu$\n(^|\\.)changeip\\.name$\n(^|\\.)changeip\\.net$\n(^|\\.)changeip\\.org$\n(^|\\.)change\\.org$\n(^|\\.)changp\\.com$\n(^|\\.)changsa\\.net$\n(^|\\.)channel8news\\.sg$\n(^|\\.)chaoex\\.com$\n(^|\\.)chapm25\\.com$\n(^|\\.)chatnook\\.com$\n(^|\\.)chaturbate\\.com$\n(^|\\.)chengmingmag\\.com$\n(^|\\.)chenguangcheng\\.com$\n(^|\\.)chenpokong\\.com$\n(^|\\.)chenpokong\\.net$\n(^|\\.)chenshan20042005\\.wordpress\\.com$\n(^|\\.)cherrysave\\.com$\n(^|\\.)chhongbi\\.org$\n(^|\\.)chicagoncmtv\\.com$\n(^|\\.)china101\\.com$\n(^|\\.)china18\\.org$\n(^|\\.)china21\\.com$\n(^|\\.)china21\\.org$\n(^|\\.)china5000\\.us$\n(^|\\.)chinaaffairs\\.org$\n(^|\\.)chinaaid\\.me$\n(^|\\.)chinaaid\\.net$\n(^|\\.)chinaaid\\.org$\n(^|\\.)chinaaid\\.us$\n(^|\\.)chinachange\\.org$\n(^|\\.)chinachannel\\.hk$\n(^|\\.)chinacitynews\\.be$\n(^|\\.)chinacomments\\.org$\n(^|\\.)chinadialogue\\.net$\n(^|\\.)chinadigitaltimes\\.net$\n(^|\\.)chinaelections\\.org$\n(^|\\.)chinaeweekly\\.com$\n(^|\\.)chinafreepress\\.org$\n(^|\\.)chinagate\\.com$\n(^|\\.)chinageeks\\.org$\n(^|\\.)chinagfw\\.org$\n(^|\\.)chinagonet\\.com$\n(^|\\.)chinagreenparty\\.org$\n(^|\\.)china\\.hket\\.com$\n(^|\\.)chinahorizon\\.org$\n(^|\\.)chinahush\\.com$\n(^|\\.)chinainperspective\\.com$\n(^|\\.)chinainterimgov\\.org$\n(^|\\.)chinalaborwatch\\.org$\n(^|\\.)chinalawandpolicy\\.com$\n(^|\\.)chinalawtranslate\\.com$\n(^|\\.)china-mmm\\.jp\\.net$\n(^|\\.)china-mmm\\.net$\n(^|\\.)china-mmm\\.sa\\.com$\n(^|\\.)chinamule\\.com$\n(^|\\.)chinamz\\.org$\n(^|\\.)chinanewscenter\\.com$\n(^|\\.)chinapost\\.com\\.tw$\n(^|\\.)chinapress\\.com\\.my$\n(^|\\.)china-review\\.com\\.ua$\n(^|\\.)chinarightsia\\.org$\n(^|\\.)chinasmile\\.net$\n(^|\\.)chinasocialdemocraticparty\\.com$\n(^|\\.)chinasoul\\.org$\n(^|\\.)chinasucks\\.net$\n(^|\\.)chinatimes\\.com$\n(^|\\.)chinatopsex\\.com$\n(^|\\.)chinatown\\.com\\.au$\n(^|\\.)chinatweeps\\.com$\n(^|\\.)china\\.ucanews\\.com$\n(^|\\.)chinaview\\.wordpress\\.com$\n(^|\\.)chinaway\\.org$\n(^|\\.)china-week\\.com$\n(^|\\.)chinaworker\\.info$\n(^|\\.)chinaxchina\\.com$\n(^|\\.)chinayouth\\.org\\.hk$\n(^|\\.)chinayuanmin\\.org$\n(^|\\.)chinesedaily\\.com$\n(^|\\.)chinesedailynews\\.com$\n(^|\\.)chinesedemocracy\\.com$\n(^|\\.)chinese\\.donga\\.com$\n(^|\\.)chinese\\.engadget\\.com$\n(^|\\.)chinesegay\\.org$\n(^|\\.)chinese-hermit\\.net$\n(^|\\.)chinese\\.irib\\.ir$\n(^|\\.)chinese-leaders\\.org$\n(^|\\.)chinese-memorial\\.org$\n(^|\\.)chinesen\\.de$\n(^|\\.)chinesenews\\.net\\.au$\n(^|\\.)chinesepen\\.org$\n(^|\\.)chinese\\.soifind\\.com$\n(^|\\.)chinesetalks\\.net$\n(^|\\.)chineseupress\\.com$\n(^|\\.)chingcheong\\.com$\n(^|\\.)chinman\\.net$\n(^|\\.)chithu\\.org$\n(^|\\.)chn\\.chosun\\.com$\n(^|\\.)chobit\\.cc$\n(^|\\.)chrdnet\\.com$\n(^|\\.)christianfreedom\\.org$\n(^|\\.)christianstudy\\.com$\n(^|\\.)christiantimes\\.org\\.hk$\n(^|\\.)christusrex\\.org$\n(^|\\.)chrlawyers\\.hk$\n(^|\\.)chromecast\\.com$\n(^|\\.)chrome\\.com$\n(^|\\.)chromeexperiments\\.com$\n(^|\\.)chromercise\\.com$\n(^|\\.)chromestatus\\.com$\n(^|\\.)chromium\\.org$\n(^|\\.)ch\\.shvoong\\.com$\n(^|\\.)chuang-yen\\.org$\n(^|\\.)chubold\\.com$\n(^|\\.)chubun\\.com$\n(^|\\.)chuizi\\.net$\n(^|\\.)churchinhongkong\\.org$\n(^|\\.)chushigangdrug\\.ch$\n(^|\\.)cienen\\.com$\n(^|\\.)cineastentreff\\.de$\n(^|\\.)cipfg\\.org$\n(^|\\.)circlethebayfortibet\\.org$\n(^|\\.)cirosantilli\\.com$\n(^|\\.)citizencn\\.com$\n(^|\\.)citizenlab\\.org$\n(^|\\.)citizenscommission\\.hk$\n(^|\\.)citizensradio\\.org$\n(^|\\.)city365\\.ca$\n(^|\\.)city9x\\.com$\n(^|\\.)citypopulation\\.de$\n(^|\\.)citytalk\\.tw$\n(^|\\.)civicparty\\.hk$\n(^|\\.)civildisobediencemovement\\.org$\n(^|\\.)civilhrfront\\.org$\n(^|\\.)civiliangunner\\.com$\n(^|\\.)civilmedia\\.tw$\n(^|\\.)ck101\\.com$\n(^|\\.)clarionproject\\.org$\n(^|\\.)classicalguitarblog\\.net$\n(^|\\.)clb\\.org\\.hk$\n(^|\\.)cl\\.d0z\\.net$\n(^|\\.)cldr\\.unicode\\.org$\n(^|\\.)cleansite\\.biz$\n(^|\\.)cleansite\\.info$\n(^|\\.)cleansite\\.us$\n(^|\\.)clearharmony\\.net$\n(^|\\.)clearsurance\\.com$\n(^|\\.)clearwisdom\\.net$\n(^|\\.)clementine-player\\.org$\n(^|\\.)cling\\.omy\\.sg$\n(^|\\.)clinica-tibet\\.ru$\n(^|\\.)clipfish\\.de$\n(^|\\.)cloakpoint\\.com$\n(^|\\.)cloud\\.feedly\\.com$\n(^|\\.)cloud\\.mail\\.ru$\n(^|\\.)club1069\\.com$\n(^|\\.)clyp\\.it$\n(^|\\.)cmcn\\.org$\n(^|\\.)cmi\\.org\\.tw$\n(^|\\.)cmp\\.hku\\.hk$\n(^|\\.)cms\\.gov$\n(^|\\.)cmule\\.com$\n(^|\\.)cmule\\.org$\n(^|\\.)cmx\\.im$\n(^|\\.)cn2\\.streetvoice\\.com$\n(^|\\.)cn6\\.eu$\n(^|\\.)cnabc\\.com$\n(^|\\.)cna\\.com\\.tw$\n(^|\\.)cnbbnews\\.wordpress\\.com$\n(^|\\.)cn\\.calameo\\.com$\n(^|\\.)cn\\.dayabook\\.com$\n(^|\\.)cnd\\.org$\n(^|\\.)cnex\\.org\\.cn$\n(^|\\.)cn\\.fmnnow\\.com$\n(^|\\.)cn\\.freeones\\.com$\n(^|\\.)cn\\.giganews\\.com$\n(^|\\.)cn\\.ibtimes\\.com$\n(^|\\.)cnineu\\.com$\n(^|\\.)cnn\\.com$\n(^|\\.)cnnews\\.chosun\\.com$\n(^|\\.)cn\\.nytstyle\\.com$\n(^|\\.)cnpolitics\\.org$\n(^|\\.)cn-proxy\\.com$\n(^|\\.)cnproxy\\.com$\n(^|\\.)cn\\.sandscotaicentral\\.com$\n(^|\\.)cn\\.shafaqna\\.com$\n(^|\\.)cn\\.streetvoice\\.com$\n(^|\\.)cn\\.thegay\\.com$\n(^|\\.)cn\\.uncyclopedia\\.wikia\\.com$\n(^|\\.)cn\\.uptodown\\.com$\n(^|\\.)cn\\.voa\\.mobi$\n(^|\\.)coat\\.co\\.jp$\n(^|\\.)cobinhood\\.com$\n(^|\\.)cochina\\.co$\n(^|\\.)cochina\\.org$\n(^|\\.)code1984\\.com$\n(^|\\.)codeshare\\.io$\n(^|\\.)codeskulptor\\.org$\n(^|\\.)coin2co\\.in$\n(^|\\.)coinbene\\.com$\n(^|\\.)coinegg\\.com$\n(^|\\.)coinex\\.com$\n(^|\\.)coingi\\.com$\n(^|\\.)coinrail\\.co\\.kr$\n(^|\\.)cointiger\\.com$\n(^|\\.)cointobe\\.com$\n(^|\\.)coinut\\.com$\n(^|\\.)collateralmurder\\.com$\n(^|\\.)collateralmurder\\.org$\n(^|\\.)comefromchina\\.com$\n(^|\\.)com\\.google$\n(^|\\.)comic-mega\\.me$\n(^|\\.)commandarms\\.com$\n(^|\\.)commentshk\\.com$\n(^|\\.)communistcrimes\\.org$\n(^|\\.)communitychoicecu\\.com$\n(^|\\.)community\\.windy\\.com$\n(^|\\.)compileheart\\.com$\n(^|\\.)compress\\.to$\n(^|\\.)co\\.ng\\.mil$\n(^|\\.)connect\\.facebook\\.net$\n(^|\\.)conoha\\.jp$\n(^|\\.)contactmagazine\\.net$\n(^|\\.)contests\\.twilio\\.com$\n(^|\\.)convio\\.net$\n(^|\\.)coobay\\.com$\n(^|\\.)coolaler\\.com$\n(^|\\.)coolder\\.com$\n(^|\\.)coolloud\\.org\\.tw$\n(^|\\.)coolncute\\.com$\n(^|\\.)coolstuffinc\\.com$\n(^|\\.)corumcollege\\.com$\n(^|\\.)cosmic\\.monar\\.ch$\n(^|\\.)cos-moe\\.com$\n(^|\\.)cosplayjav\\.pl$\n(^|\\.)costco\\.com$\n(^|\\.)cotweet\\.com$\n(^|\\.)counter\\.social$\n(^|\\.)coursehero\\.com$\n(^|\\.)cpj\\.org$\n(^|\\.)cq99\\.us$\n(^|\\.)crackle\\.com$\n(^|\\.)crazys\\.cc$\n(^|\\.)crazyshit\\.com$\n(^|\\.)crbug\\.com$\n(^|\\.)crchina\\.org$\n(^|\\.)crd-net\\.org$\n(^|\\.)creaders\\.net$\n(^|\\.)creadersnet\\.com$\n(^|\\.)creativelab5\\.com$\n(^|\\.)crisisresponse\\.google$\n(^|\\.)cristyli\\.com$\n(^|\\.)crocotube\\.com$\n(^|\\.)crossfire\\.co\\.kr$\n(^|\\.)crossthewall\\.net$\n(^|\\.)crossvpn\\.net$\n(^|\\.)crrev\\.com$\n(^|\\.)crucial\\.com$\n(^|\\.)csdparty\\.com$\n(^|\\.)c-spanvideo\\.org$\n(^|\\.)css\\.pixnet\\.in$\n(^|\\.)csuchen\\.de$\n(^|\\.)csw\\.org\\.uk$\n(^|\\.)ctao\\.org$\n(^|\\.)ctfriend\\.net$\n(^|\\.)cthlo\\.github\\.io$\n(^|\\.)ctitv\\.com\\.tw$\n(^|\\.)ct\\.org\\.tw$\n(^|\\.)cts\\.com\\.tw$\n(^|\\.)cuhkacs\\.org$\n(^|\\.)cuihua\\.org$\n(^|\\.)cuiweiping\\.net$\n(^|\\.)culture\\.tw$\n(^|\\.)cumlouder\\.com$\n(^|\\.)curvefish\\.com$\n(^|\\.)cusu\\.hk$\n(^|\\.)cutscenes\\.net$\n(^|\\.)cw\\.com\\.tw$\n(^|\\.)cyberghost\\.natado\\.com$\n(^|\\.)cyberghostvpn\\.com$\n(^|\\.)cynscribe\\.com$\n(^|\\.)cytode\\.us$\n(^|\\.)d100\\.net$\n(^|\\.)d1b183sg0nvnuh\\.cloudfront\\.net$\n(^|\\.)d1c37gjwa26taa\\.cloudfront\\.net$\n(^|\\.)d2bay\\.com$\n(^|\\.)d2pass\\.com$\n(^|\\.)d3c33hcgiwev3\\.cloudfront\\.net$\n(^|\\.)d3rhr7kgmtrq1v\\.cloudfront\\.net$\n(^|\\.)dabr\\.co\\.uk$\n(^|\\.)dabr\\.eu$\n(^|\\.)dabr\\.me$\n(^|\\.)dabr\\.mobi$\n(^|\\.)dadazim\\.com$\n(^|\\.)dadi360\\.com$\n(^|\\.)dafabet\\.com$\n(^|\\.)dafagood\\.com$\n(^|\\.)dafahao\\.com$\n(^|\\.)dafoh\\.org$\n(^|\\.)daftporn\\.com$\n(^|\\.)dagelijksestandaard\\.nl$\n(^|\\.)daidostup\\.ru$\n(^|\\.)dailidaili\\.com$\n(^|\\.)dailymotion\\.com$\n(^|\\.)dailynews\\.sina\\.com$\n(^|\\.)dailyview\\.tw$\n(^|\\.)daiphapinfo\\.net$\n(^|\\.)dajiyuan\\.com$\n(^|\\.)dajiyuan\\.de$\n(^|\\.)dajiyuan\\.eu$\n(^|\\.)dajusha\\.baywords\\.com$\n(^|\\.)dalailama80\\.org$\n(^|\\.)dalailama-archives\\.org$\n(^|\\.)dalailamacenter\\.org$\n(^|\\.)dalailama\\.com$\n(^|\\.)dalailamafellows\\.org$\n(^|\\.)dalailamafilm\\.com$\n(^|\\.)dalailamafoundation\\.org$\n(^|\\.)dalailamahindi\\.com$\n(^|\\.)dalailamainaustralia\\.org$\n(^|\\.)dalailamajapanese\\.com$\n(^|\\.)dalailama\\.mn$\n(^|\\.)dalailamaprotesters\\.info$\n(^|\\.)dalailamaquotes\\.org$\n(^|\\.)dalailama\\.ru$\n(^|\\.)dalailamatrust\\.org$\n(^|\\.)dalailama\\.usc\\.edu$\n(^|\\.)dalailamavisit\\.org\\.nz$\n(^|\\.)dalailamaworld\\.com$\n(^|\\.)dalianmeng\\.org$\n(^|\\.)daliulian\\.org$\n(^|\\.)danbooru\\.donmai\\.us$\n(^|\\.)danke4china\\.net$\n(^|\\.)danwei\\.org$\n(^|\\.)daodu14\\.jigsy\\.com$\n(^|\\.)daolan\\.net$\n(^|\\.)daozhongxing\\.org$\n(^|\\.)darktech\\.org$\n(^|\\.)darktoy\\.net$\n(^|\\.)darpa\\.mil$\n(^|\\.)dastrassi\\.org$\n(^|\\.)data\\.flurry\\.com$\n(^|\\.)data\\.gov\\.tw$\n(^|\\.)data-vocabulary\\.org$\n(^|\\.)daum\\.net$\n(^|\\.)david-kilgour\\.com$\n(^|\\.)dawangidc\\.com$\n(^|\\.)daxa\\.cn$\n(^|\\.)daylife\\.com$\n(^|\\.)dbc\\.hk$\n(^|\\.)db\\.tt$\n(^|\\.)dcard\\.tw$\n(^|\\.)dcmilitary\\.com$\n(^|\\.)ddc\\.com\\.tw$\n(^|\\.)ddhw\\.info$\n(^|\\.)ddns\\.info$\n(^|\\.)ddns\\.me\\.uk$\n(^|\\.)ddns\\.mobi$\n(^|\\.)ddns\\.ms$\n(^|\\.)ddns\\.name$\n(^|\\.)ddns\\.net$\n(^|\\.)ddns\\.us$\n(^|\\.)deaftone\\.com$\n(^|\\.)debug\\.com$\n(^|\\.)deck\\.ly$\n(^|\\.)decodet\\.co$\n(^|\\.)deepmind\\.com$\n(^|\\.)deezer\\.com$\n(^|\\.)definebabe\\.com$\n(^|\\.)deja\\.com$\n(^|\\.)delcamp\\.net$\n(^|\\.)delicious\\.com$\n(^|\\.)democrats\\.org$\n(^|\\.)demo\\.opera-mini\\.net$\n(^|\\.)demosisto\\.hk$\n(^|\\.)depositphotos\\.com$\n(^|\\.)derekhsu\\.homeip\\.net$\n(^|\\.)de-sci\\.org$\n(^|\\.)desc\\.se$\n(^|\\.)design\\.google$\n(^|\\.)desipro\\.de$\n(^|\\.)dessci\\.com$\n(^|\\.)destiny\\.xfiles\\.to$\n(^|\\.)destroy-china\\.jp$\n(^|\\.)deutsche-welle\\.de$\n(^|\\.)developers\\.box\\.net$\n(^|\\.)devio\\.us$\n(^|\\.)devpn\\.com$\n(^|\\.)dfas\\.mil$\n(^|\\.)dfn\\.org$\n(^|\\.)d-fukyu\\.com$\n(^|\\.)dharamsalanet\\.com$\n(^|\\.)dharmakara\\.net$\n(^|\\.)dhcp\\.biz$\n(^|\\.)diaoyuislands\\.org$\n(^|\\.)dictionary\\.goo\\.ne\\.jp$\n(^|\\.)difangwenge\\.org$\n(^|\\.)digiland\\.tw$\n(^|\\.)digisfera\\.com$\n(^|\\.)digitalnomadsproject\\.org$\n(^|\\.)diigo\\.com$\n(^|\\.)dilber\\.se$\n(^|\\.)dingchin\\.com\\.tw$\n(^|\\.)dipity\\.com$\n(^|\\.)directcreative\\.com$\n(^|\\.)discoins\\.com$\n(^|\\.)disconnect\\.me$\n(^|\\.)discordapp\\.com$\n(^|\\.)discordapp\\.net$\n(^|\\.)discuss4u\\.com$\n(^|\\.)discuss\\.com\\.hk$\n(^|\\.)dish\\.com$\n(^|\\.)disp\\.cc$\n(^|\\.)disqus\\.com$\n(^|\\.)dit-inc\\.us$\n(^|\\.)dizhidizhi\\.com$\n(^|\\.)dizhuzhishang\\.com$\n(^|\\.)djangosnippets\\.org$\n(^|\\.)djorz\\.com$\n(^|\\.)dl\\.box\\.net$\n(^|\\.)dl-laby\\.jp$\n(^|\\.)dlsite\\.com$\n(^|\\.)dlyoutube\\.com$\n(^|\\.)dm530\\.net$\n(^|\\.)dmcdn\\.net$\n(^|\\.)dmhy\\.org$\n(^|\\.)dmm\\.co\\.jp$\n(^|\\.)dns04\\.com$\n(^|\\.)dns05\\.com$\n(^|\\.)dns1\\.us$\n(^|\\.)dns2go\\.com$\n(^|\\.)dns2\\.us$\n(^|\\.)dnscrypt\\.org$\n(^|\\.)dns-dns\\.com$\n(^|\\.)dnset\\.com$\n(^|\\.)dns\\.google$\n(^|\\.)dnsrd\\.com$\n(^|\\.)dnssec\\.net$\n(^|\\.)dns-stuff\\.com$\n(^|\\.)dnvod\\.tv$\n(^|\\.)doctorvoice\\.org$\n(^|\\.)documentingreality\\.com$\n(^|\\.)dogfartnetwork\\.com$\n(^|\\.)dojin\\.com$\n(^|\\.)dok-forum\\.net$\n(^|\\.)dolc\\.de$\n(^|\\.)dolf\\.org\\.hk$\n(^|\\.)dollf\\.com$\n(^|\\.)domain\\.club\\.tw$\n(^|\\.)domainhelp\\.search\\.com$\n(^|\\.)domains\\.google$\n(^|\\.)domaintoday\\.com\\.au$\n(^|\\.)dongtaiwang\\.com$\n(^|\\.)dongtaiwang\\.net$\n(^|\\.)dongyangjing\\.com$\n(^|\\.)dontfilter\\.us$\n(^|\\.)dontmovetochina\\.com$\n(^|\\.)dorjeshugden\\.com$\n(^|\\.)dotplane\\.com$\n(^|\\.)dotsub\\.com$\n(^|\\.)dotvpn\\.com$\n(^|\\.)doubibackup\\.com$\n(^|\\.)doub\\.io$\n(^|\\.)doubmirror\\.cf$\n(^|\\.)dougscripts\\.com$\n(^|\\.)douhokanko\\.net$\n(^|\\.)doujincafe\\.com$\n(^|\\.)dowei\\.org$\n(^|\\.)download\\.aircrack-ng\\.org$\n(^|\\.)download\\.cnet\\.com$\n(^|\\.)download\\.ithome\\.com\\.tw$\n(^|\\.)dphk\\.org$\n(^|\\.)dpp\\.org\\.tw$\n(^|\\.)dpr\\.info$\n(^|\\.)dragonex\\.io$\n(^|\\.)dragonsprings\\.org$\n(^|\\.)dreamamateurs\\.com$\n(^|\\.)drepung\\.org$\n(^|\\.)drgan\\.net$\n(^|\\.)drmingxia\\.org$\n(^|\\.)dropbooks\\.tv$\n(^|\\.)dropbox\\.com$\n(^|\\.)dropboxusercontent\\.com$\n(^|\\.)drsunacademy\\.com$\n(^|\\.)drtuber\\.com$\n(^|\\.)dscn\\.info$\n(^|\\.)dsmtp\\.com$\n(^|\\.)dstk\\.dk$\n(^|\\.)dtdns\\.net$\n(^|\\.)dtiblog\\.com$\n(^|\\.)dtic\\.mil$\n(^|\\.)dtwang\\.org$\n(^|\\.)duanzhihu\\.com$\n(^|\\.)duck\\.com$\n(^|\\.)duckdns\\.org$\n(^|\\.)duckduckgo\\.com$\n(^|\\.)duckduckgo-owned-server\\.yahoo\\.net$\n(^|\\.)duckload\\.com$\n(^|\\.)duckmylife\\.com$\n(^|\\.)duga\\.jp$\n(^|\\.)duihuahrjournal\\.org$\n(^|\\.)duihua\\.org$\n(^|\\.)dumb1\\.com$\n(^|\\.)dunyabulteni\\.net$\n(^|\\.)duoweitimes\\.com$\n(^|\\.)duping\\.net$\n(^|\\.)duplicati\\.com$\n(^|\\.)dupola\\.com$\n(^|\\.)dupola\\.net$\n(^|\\.)dushi\\.ca$\n(^|\\.)dvdpac\\.com$\n(^|\\.)dvorak\\.org$\n(^|\\.)dw\\.com$\n(^|\\.)dw\\.de$\n(^|\\.)dwnews\\.com$\n(^|\\.)dwnews\\.net$\n(^|\\.)dw-world\\.com$\n(^|\\.)dw-world\\.de$\n(^|\\.)dynamicdns\\.biz$\n(^|\\.)dynamicdns\\.co\\.uk$\n(^|\\.)dynamicdns\\.me\\.uk$\n(^|\\.)dynamic-dns\\.net$\n(^|\\.)dynamicdns\\.org\\.uk$\n(^|\\.)dynawebinc\\.com$\n(^|\\.)dyndns-ip\\.com$\n(^|\\.)dyndns\\.org$\n(^|\\.)dyndns-pics\\.com$\n(^|\\.)dyndns\\.pro$\n(^|\\.)dynssl\\.com$\n(^|\\.)dynu\\.com$\n(^|\\.)dynu\\.net$\n(^|\\.)dynupdate\\.no-ip\\.com$\n(^|\\.)dysfz\\.cc$\n(^|\\.)dzze\\.com$\n(^|\\.)e123\\.hk$\n(^|\\.)earlytibet\\.com$\n(^|\\.)earthcam\\.com$\n(^|\\.)earthvpn\\.com$\n(^|\\.)eastern-ark\\.com$\n(^|\\.)easternlightning\\.org$\n(^|\\.)eastturkestan\\.com$\n(^|\\.)eastturkistancc\\.org$\n(^|\\.)eastturkistangovernmentinexile\\.us$\n(^|\\.)eastturkistan-gov\\.org$\n(^|\\.)easyca\\.ca$\n(^|\\.)easypic\\.com$\n(^|\\.)ebony-beauty\\.com$\n(^|\\.)ebookbrowse\\.com$\n(^|\\.)ebookee\\.com$\n(^|\\.)ebook\\.hyread\\.com\\.tw$\n(^|\\.)ebtcbank\\.com$\n(^|\\.)ecfa\\.org\\.tw$\n(^|\\.)echofon\\.com$\n(^|\\.)ecimg\\.tw$\n(^|\\.)e-classical\\.com\\.tw$\n(^|\\.)ecministry\\.net$\n(^|\\.)economist\\.com$\n(^|\\.)ecsm\\.vs\\.com$\n(^|\\.)edgecastcdn\\.net$\n(^|\\.)edicypages\\.com$\n(^|\\.)edmontonchina\\.cn$\n(^|\\.)edmontonservice\\.com$\n(^|\\.)edns\\.biz$\n(^|\\.)edoors\\.com$\n(^|\\.)edubridge\\.com$\n(^|\\.)edupro\\.org$\n(^|\\.)eeas\\.europa\\.eu$\n(^|\\.)eesti\\.ee$\n(^|\\.)eevpn\\.com$\n(^|\\.)efcc\\.org\\.hk$\n(^|\\.)effers\\.com$\n(^|\\.)efksoft\\.com$\n(^|\\.)efukt\\.com$\n(^|\\.)e-gold\\.com$\n(^|\\.)e-hentaidb\\.com$\n(^|\\.)e-hentai\\.org$\n(^|\\.)eic-av\\.com$\n(^|\\.)e-info\\.org\\.tw$\n(^|\\.)eireinikotaerukai\\.com$\n(^|\\.)eisbb\\.com$\n(^|\\.)eksisozluk\\.com$\n(^|\\.)electionsmeter\\.com$\n(^|\\.)elgoog\\.im$\n(^|\\.)ellawine\\.org$\n(^|\\.)elpais\\.com$\n(^|\\.)eltondisney\\.com$\n(^|\\.)emaga\\.com$\n(^|\\.)emanna\\.com$\n(^|\\.)embr\\.in$\n(^|\\.)emilylau\\.org\\.hk$\n(^|\\.)empfil\\.com$\n(^|\\.)emule-ed2k\\.com$\n(^|\\.)emulefans\\.com$\n(^|\\.)emuparadise\\.me$\n(^|\\.)enanyang\\.my$\n(^|\\.)encyclopedia\\.com$\n(^|\\.)enewstree\\.com$\n(^|\\.)enfal\\.de$\n(^|\\.)en\\.favotter\\.net$\n(^|\\.)engagedaily\\.org$\n(^|\\.)englishforeveryone\\.org$\n(^|\\.)englishfromengland\\.co\\.uk$\n(^|\\.)englishpen\\.org$\n(^|\\.)en\\.hao123\\.com$\n(^|\\.)enlighten\\.org\\.tw$\n(^|\\.)entermap\\.com$\n(^|\\.)entnt\\.com$\n(^|\\.)environment\\.google$\n(^|\\.)epac\\.to$\n(^|\\.)epa\\.gov\\.tw$\n(^|\\.)episcopalchurch\\.org$\n(^|\\.)epochhk\\.com$\n(^|\\.)epochtimes-bg\\.com$\n(^|\\.)epochtimes\\.co\\.il$\n(^|\\.)epochtimes\\.co\\.kr$\n(^|\\.)epochtimes\\.com$\n(^|\\.)epochtimes\\.cz$\n(^|\\.)epochtimes\\.de$\n(^|\\.)epochtimes\\.fr$\n(^|\\.)epochtimes\\.ie$\n(^|\\.)epochtimes\\.it$\n(^|\\.)epochtimes\\.jp$\n(^|\\.)epochtimes-romania\\.com$\n(^|\\.)epochtimes\\.ru$\n(^|\\.)epochtimes\\.se$\n(^|\\.)epochtimestr\\.com$\n(^|\\.)epochweek\\.com$\n(^|\\.)epochweekly\\.com$\n(^|\\.)eporner\\.com$\n(^|\\.)equinenow\\.com$\n(^|\\.)erabaru\\.net$\n(^|\\.)eracom\\.com\\.tw$\n(^|\\.)eraysoft\\.com\\.tr$\n(^|\\.)erepublik\\.com$\n(^|\\.)erights\\.net$\n(^|\\.)eriversoft\\.com$\n(^|\\.)erktv\\.com$\n(^|\\.)ernestmandel\\.org$\n(^|\\.)erodaizensyu\\.com$\n(^|\\.)erodoujinlog\\.com$\n(^|\\.)erodoujinworld\\.com$\n(^|\\.)eromangadouzin\\.com$\n(^|\\.)eromanga-kingdom\\.com$\n(^|\\.)eromon\\.net$\n(^|\\.)eroprofile\\.com$\n(^|\\.)eroticsaloon\\.net$\n(^|\\.)eslite\\.com$\n(^|\\.)esmtp\\.biz$\n(^|\\.)esurance\\.com$\n(^|\\.)etaa\\.org\\.au$\n(^|\\.)etadult\\.com$\n(^|\\.)etaiwannews\\.com$\n(^|\\.)etherdelta\\.com$\n(^|\\.)etizer\\.org$\n(^|\\.)etokki\\.com$\n(^|\\.)etools\\.ncol\\.com$\n(^|\\.)etowns\\.net$\n(^|\\.)etowns\\.org$\n(^|\\.)e-traderland\\.net$\n(^|\\.)ettoday\\.net$\n(^|\\.)etvonline\\.hk$\n(^|\\.)eucasino\\.com$\n(^|\\.)eulam\\.com$\n(^|\\.)eu\\.org$\n(^|\\.)eurekavpt\\.com$\n(^|\\.)euronews\\.com$\n(^|\\.)evchk\\.wikia\\.com$\n(^|\\.)evschool\\.net$\n(^|\\.)exblog\\.jp$\n(^|\\.)exchristian\\.hk$\n(^|\\.)exmo\\.com$\n(^|\\.)exmormon\\.org$\n(^|\\.)expatshield\\.com$\n(^|\\.)expecthim\\.com$\n(^|\\.)expekt\\.com$\n(^|\\.)experts-univers\\.com$\n(^|\\.)exploader\\.net$\n(^|\\.)expressvpn\\.com$\n(^|\\.)exrates\\.me$\n(^|\\.)extmatrix\\.com$\n(^|\\.)extremetube\\.com$\n(^|\\.)exx\\.com$\n(^|\\.)eyevio\\.jp$\n(^|\\.)eyny\\.com$\n(^|\\.)e-zone\\.com\\.hk$\n(^|\\.)ezpc\\.tk$\n(^|\\.)ezpeer\\.com$\n(^|\\.)ezua\\.com$\n(^|\\.)facebook\\.br$\n(^|\\.)facebook\\.com$\n(^|\\.)facebook\\.design$\n(^|\\.)facebook\\.hu$\n(^|\\.)facebook\\.in$\n(^|\\.)facebookmail\\.com$\n(^|\\.)facebook\\.nl$\n(^|\\.)facebookquotes4u\\.com$\n(^|\\.)facebook\\.se$\n(^|\\.)faceless\\.me$\n(^|\\.)facesofnyfw\\.com$\n(^|\\.)facesoftibetanselfimmolators\\.info$\n(^|\\.)fa\\.gov\\.tw$\n(^|\\.)fail\\.hk$\n(^|\\.)faith100\\.org$\n(^|\\.)faithfuleye\\.com$\n(^|\\.)faiththedog\\.info$\n(^|\\.)fakku\\.net$\n(^|\\.)falsefire\\.com$\n(^|\\.)falunart\\.org$\n(^|\\.)falunasia\\.info$\n(^|\\.)falunau\\.org$\n(^|\\.)falunaz\\.net$\n(^|\\.)falun\\.caltech\\.edu$\n(^|\\.)falun-co\\.org$\n(^|\\.)falundafa-dc\\.org$\n(^|\\.)falundafa-florida\\.org$\n(^|\\.)falundafaindia\\.org$\n(^|\\.)falundafamuseum\\.org$\n(^|\\.)falundafa-nc\\.org$\n(^|\\.)falundafa\\.org$\n(^|\\.)falundafa-pa\\.net$\n(^|\\.)falundafa-sacramento\\.org$\n(^|\\.)falungong\\.club$\n(^|\\.)falungong\\.de$\n(^|\\.)falungong\\.org\\.uk$\n(^|\\.)falunhr\\.org$\n(^|\\.)faluninfo\\.de$\n(^|\\.)faluninfo\\.net$\n(^|\\.)falun-ny\\.net$\n(^|\\.)falunpilipinas\\.net$\n(^|\\.)falunworld\\.net$\n(^|\\.)familyfed\\.org$\n(^|\\.)famunion\\.com$\n(^|\\.)fangbinxing\\.com$\n(^|\\.)fangeming\\.com$\n(^|\\.)fangeqiang\\.com$\n(^|\\.)fanglizhi\\.info$\n(^|\\.)fangmincn\\.org$\n(^|\\.)fangong\\.forums-free\\.com$\n(^|\\.)fangongheike\\.com$\n(^|\\.)fangong\\.org$\n(^|\\.)fanhaodang\\.com$\n(^|\\.)fan-qiang\\.com$\n(^|\\.)fanqiangdang\\.com$\n(^|\\.)fanqianghou\\.com$\n(^|\\.)fanqiang\\.tk$\n(^|\\.)fanqiangyakexi\\.net$\n(^|\\.)fanqiangzhe\\.com$\n(^|\\.)fanswong\\.com$\n(^|\\.)fanyue\\.info$\n(^|\\.)fapdu\\.com$\n(^|\\.)faproxy\\.com$\n(^|\\.)faqserv\\.com$\n(^|\\.)fartit\\.com$\n(^|\\.)farwestchina\\.com$\n(^|\\.)fastpic\\.ru$\n(^|\\.)fastssh\\.com$\n(^|\\.)faststone\\.org$\n(^|\\.)fast\\.wistia\\.com$\n(^|\\.)fatbtc\\.com$\n(^|\\.)favstar\\.fm$\n(^|\\.)fawanghuihui\\.org$\n(^|\\.)faydao\\.com$\n(^|\\.)fbaddins\\.com$\n(^|\\.)fbcdn\\.net$\n(^|\\.)fb\\.com$\n(^|\\.)fb\\.me$\n(^|\\.)fbsbx\\.com$\n(^|\\.)fbworkmail\\.com$\n(^|\\.)fc2blog\\.net$\n(^|\\.)fc2china\\.com$\n(^|\\.)fc2cn\\.com$\n(^|\\.)fc2\\.com$\n(^|\\.)fda\\.gov\\.tw$\n(^|\\.)fdc64\\.de$\n(^|\\.)fdc64\\.org$\n(^|\\.)fdc89\\.jp$\n(^|\\.)feedburner\\.com$\n(^|\\.)feeds\\.fileforum\\.com$\n(^|\\.)feedx\\.net$\n(^|\\.)feelssh\\.com$\n(^|\\.)feer\\.com$\n(^|\\.)feifeiss\\.com$\n(^|\\.)feitianacademy\\.org$\n(^|\\.)feitian-california\\.org$\n(^|\\.)feministteacher\\.com$\n(^|\\.)fengzhenghu\\.com$\n(^|\\.)fengzhenghu\\.net$\n(^|\\.)fevernet\\.com$\n(^|\\.)fffff\\.at$\n(^|\\.)ff\\.im$\n(^|\\.)fflick\\.com$\n(^|\\.)ffvpn\\.com$\n(^|\\.)fgmtv\\.net$\n(^|\\.)fgmtv\\.org$\n(^|\\.)fhreports\\.net$\n(^|\\.)fiddle\\.jshell\\.net$\n(^|\\.)figprayer\\.com$\n(^|\\.)fileflyer\\.com$\n(^|\\.)files2me\\.com$\n(^|\\.)fileserve\\.com$\n(^|\\.)filesor\\.com$\n(^|\\.)fillthesquare\\.org$\n(^|\\.)filmingfortibet\\.org$\n(^|\\.)filmy\\.olabloga\\.pl$\n(^|\\.)filthdump\\.com$\n(^|\\.)financetwitter\\.com$\n(^|\\.)finchvpn\\.com$\n(^|\\.)findmespot\\.com$\n(^|\\.)findyoutube\\.com$\n(^|\\.)findyoutube\\.net$\n(^|\\.)fingerdaily\\.com$\n(^|\\.)finler\\.net$\n(^|\\.)firearmsworld\\.net$\n(^|\\.)firebaseio\\.com$\n(^|\\.)fireofliberty\\.org$\n(^|\\.)firetweet\\.io$\n(^|\\.)firstfivefollowers\\.com$\n(^|\\.)flagsonline\\.it$\n(^|\\.)flecheinthepeche\\.fr$\n(^|\\.)fleshbot\\.com$\n(^|\\.)fleursdeslettres\\.com$\n(^|\\.)flgg\\.us$\n(^|\\.)flgjustice\\.org$\n(^|\\.)flickr\\.com$\n(^|\\.)flickrhivemind\\.net$\n(^|\\.)flickriver\\.com$\n(^|\\.)fling\\.com$\n(^|\\.)flipboard\\.com$\n(^|\\.)flipkart\\.com$\n(^|\\.)flitto\\.com$\n(^|\\.)flnet\\.org$\n(^|\\.)flog\\.tw$\n(^|\\.)flyvpn\\.com$\n(^|\\.)flyzy2005\\.com$\n(^|\\.)fnac\\.be$\n(^|\\.)fnac\\.com$\n(^|\\.)fochk\\.org$\n(^|\\.)focustaiwan\\.tw$\n(^|\\.)focusvpn\\.com$\n(^|\\.)fofg-europe\\.net$\n(^|\\.)fofg\\.org$\n(^|\\.)fofldfradio\\.org$\n(^|\\.)fooooo\\.com$\n(^|\\.)footwiball\\.com$\n(^|\\.)foreignpolicy\\.com$\n(^|\\.)forum4hk\\.com$\n(^|\\.)forum\\.baby-kingdom\\.com$\n(^|\\.)forum\\.cyberctm\\.com$\n(^|\\.)forum\\.idsam\\.com$\n(^|\\.)forum\\.my903\\.com$\n(^|\\.)forum\\.mymaji\\.com$\n(^|\\.)forum\\.omy\\.sg$\n(^|\\.)forum\\.palmislife\\.com$\n(^|\\.)forum\\.setty\\.com\\.tw$\n(^|\\.)forum\\.sina\\.com\\.hk$\n(^|\\.)forum\\.slime\\.com\\.tw$\n(^|\\.)forum\\.tvb\\.com$\n(^|\\.)forum\\.xinbao\\.de$\n(^|\\.)fotile\\.me$\n(^|\\.)fourface\\.nodesnoop\\.com$\n(^|\\.)fourthinternational\\.org$\n(^|\\.)foxdie\\.us$\n(^|\\.)foxgay\\.com$\n(^|\\.)foxsub\\.com$\n(^|\\.)foxtang\\.com$\n(^|\\.)fpmtmexico\\.org$\n(^|\\.)fpmt\\.org$\n(^|\\.)fpmt-osel\\.org$\n(^|\\.)fpmt\\.tw$\n(^|\\.)fqok\\.org$\n(^|\\.)fqrouter\\.com$\n(^|\\.)fq\\.wikia\\.com$\n(^|\\.)franklc\\.com$\n(^|\\.)freakshare\\.com$\n(^|\\.)free4u\\.com\\.ar$\n(^|\\.)freealim\\.com$\n(^|\\.)freebrowser\\.org$\n(^|\\.)freechal\\.com$\n(^|\\.)freechinaforum\\.org$\n(^|\\.)freechina\\.net$\n(^|\\.)freechina\\.news$\n(^|\\.)freechinaweibo\\.com$\n(^|\\.)freeddns\\.com$\n(^|\\.)freeddns\\.org$\n(^|\\.)freedomchina\\.info$\n(^|\\.)freedomcollection\\.org$\n(^|\\.)freedomhouse\\.org$\n(^|\\.)freedominfonetweb\\.wordpress\\.com$\n(^|\\.)freedomsherald\\.org$\n(^|\\.)freeforums\\.org$\n(^|\\.)freefq\\.com$\n(^|\\.)free\\.fr$\n(^|\\.)freefuckvids\\.com$\n(^|\\.)freegao\\.com$\n(^|\\.)free-gate\\.org$\n(^|\\.)free-hada-now\\.org$\n(^|\\.)freehongkong\\.org$\n(^|\\.)freeilhamtohti\\.org$\n(^|\\.)freekwonpyong\\.org$\n(^|\\.)freelotto\\.com$\n(^|\\.)freeman2\\.com$\n(^|\\.)freemoren\\.com$\n(^|\\.)freemorenews\\.com$\n(^|\\.)freemuse\\.org$\n(^|\\.)freenet-china\\.org$\n(^|\\.)freenetproject\\.org$\n(^|\\.)freenewscn\\.com$\n(^|\\.)freeopenvpn\\.com$\n(^|\\.)freeoz\\.org$\n(^|\\.)free-proxy\\.cz$\n(^|\\.)free-ssh\\.com$\n(^|\\.)freessh\\.us$\n(^|\\.)free-ss\\.site$\n(^|\\.)freetcp\\.com$\n(^|\\.)freetibetanheroes\\.org$\n(^|\\.)freetibet\\.net$\n(^|\\.)freetibet\\.org$\n(^|\\.)freeviewmovies\\.com$\n(^|\\.)freevpn\\.me$\n(^|\\.)freevpn\\.nl$\n(^|\\.)freewallpaper4\\.me$\n(^|\\.)freewebs\\.com$\n(^|\\.)freewechat\\.com$\n(^|\\.)freeweibo\\.com$\n(^|\\.)freewww\\.biz$\n(^|\\.)freewww\\.info$\n(^|\\.)freexinwen\\.com$\n(^|\\.)freeyellow\\.com$\n(^|\\.)freeyoutubeproxy\\.net$\n(^|\\.)friendfeed\\.com$\n(^|\\.)friendfeed-media\\.com$\n(^|\\.)friends-of-tibet\\.org$\n(^|\\.)friendsoftibet\\.org$\n(^|\\.)fring\\.com$\n(^|\\.)fringenetwork\\.com$\n(^|\\.)fromchinatousa\\.net$\n(^|\\.)frommel\\.net$\n(^|\\.)from-pr\\.com$\n(^|\\.)from-sd\\.com$\n(^|\\.)frontlinedefenders\\.org$\n(^|\\.)frootvpn\\.com$\n(^|\\.)fscked\\.org$\n(^|\\.)fsurf\\.com$\n(^|\\.)ftchinese\\.com$\n(^|\\.)ftp1\\.biz$\n(^|\\.)ftpserver\\.biz$\n(^|\\.)ftv\\.com\\.tw$\n(^|\\.)fucd\\.com$\n(^|\\.)fuckcnnic\\.net$\n(^|\\.)fuckgfw\\.org$\n(^|\\.)fulione\\.com$\n(^|\\.)fullerconsideration\\.com$\n(^|\\.)fulue\\.com$\n(^|\\.)funf\\.tw$\n(^|\\.)funkyimg\\.com$\n(^|\\.)funp\\.com$\n(^|\\.)fuq\\.com$\n(^|\\.)furbo\\.org$\n(^|\\.)furhhdl\\.org$\n(^|\\.)furinkan\\.com$\n(^|\\.)furl\\.net$\n(^|\\.)futurechinaforum\\.org$\n(^|\\.)futuremessage\\.org$\n(^|\\.)fux\\.com$\n(^|\\.)fuyindiantai\\.org$\n(^|\\.)fuyin\\.net$\n(^|\\.)fuyu\\.org\\.tw$\n(^|\\.)fw\\.cm$\n(^|\\.)fxcm-chinese\\.com$\n(^|\\.)fxnetworks\\.com$\n(^|\\.)fzh999\\.com$\n(^|\\.)fzh999\\.net$\n(^|\\.)fzlm\\.com$\n(^|\\.)g0v\\.social$\n(^|\\.)g6hentai\\.com$\n(^|\\.)gabocorp\\.com$\n(^|\\.)gaeproxy\\.com$\n(^|\\.)gaforum\\.org$\n(^|\\.)galaxymacau\\.com$\n(^|\\.)galenwu\\.com$\n(^|\\.)galstars\\.net$\n(^|\\.)game735\\.com$\n(^|\\.)gamebase\\.com\\.tw$\n(^|\\.)gamejolt\\.com$\n(^|\\.)gamer2-cds\\.cdn\\.hinet\\.net$\n(^|\\.)gamer-cds\\.cdn\\.hinet\\.net$\n(^|\\.)gamer\\.com\\.tw$\n(^|\\.)gamez\\.com\\.tw$\n(^|\\.)gamousa\\.com$\n(^|\\.)ganges\\.com$\n(^|\\.)gaoming\\.net$\n(^|\\.)gaopi\\.net$\n(^|\\.)gaozhisheng\\.net$\n(^|\\.)gaozhisheng\\.org$\n(^|\\.)gardennetworks\\.com$\n(^|\\.)gardennetworks\\.org$\n(^|\\.)g-area\\.org$\n(^|\\.)gartlive\\.com$\n(^|\\.)gatecoin\\.com$\n(^|\\.)gate\\.io$\n(^|\\.)gate-project\\.com$\n(^|\\.)gather\\.com$\n(^|\\.)gatherproxy\\.com$\n(^|\\.)gati\\.org\\.tw$\n(^|\\.)gaybubble\\.com$\n(^|\\.)gaycn\\.net$\n(^|\\.)gayhub\\.com$\n(^|\\.)gaymap\\.cc$\n(^|\\.)gaymenring\\.com$\n(^|\\.)gaytube\\.com$\n(^|\\.)gaywatch\\.com$\n(^|\\.)gazotube\\.com$\n(^|\\.)gcc\\.org\\.hk$\n(^|\\.)gclooney\\.com$\n(^|\\.)gcmasia\\.com$\n(^|\\.)g\\.co$\n(^|\\.)gcpnews\\.com$\n(^|\\.)gcr\\.io$\n(^|\\.)gdbt\\.net$\n(^|\\.)gdzf\\.org$\n(^|\\.)geek-art\\.net$\n(^|\\.)geekerhome\\.com$\n(^|\\.)geekheart\\.info$\n(^|\\.)gekikame\\.com$\n(^|\\.)gelbooru\\.com$\n(^|\\.)geocities\\.co\\.jp$\n(^|\\.)geocities\\.com$\n(^|\\.)geocities\\.jp$\n(^|\\.)gerefoundation\\.org$\n(^|\\.)get\\.app$\n(^|\\.)getastrill\\.com$\n(^|\\.)getchu\\.com$\n(^|\\.)getcloak\\.com$\n(^|\\.)get\\.dev$\n(^|\\.)getfoxyproxy\\.org$\n(^|\\.)getfreedur\\.com$\n(^|\\.)getgom\\.com$\n(^|\\.)get\\.how$\n(^|\\.)geti2p\\.net$\n(^|\\.)getiton\\.com$\n(^|\\.)getjetso\\.com$\n(^|\\.)getlantern\\.org$\n(^|\\.)getmdl\\.io$\n(^|\\.)getoutline\\.org$\n(^|\\.)get\\.page$\n(^|\\.)getsocialscope\\.com$\n(^|\\.)getsync\\.com$\n(^|\\.)gettrials\\.com$\n(^|\\.)gettyimages\\.com$\n(^|\\.)getuploader\\.com$\n(^|\\.)gfbv\\.de$\n(^|\\.)gfgold\\.com\\.hk$\n(^|\\.)gfsale\\.com$\n(^|\\.)gfw\\.org\\.ua$\n(^|\\.)gfw\\.press$\n(^|\\.)ggpht\\.com$\n(^|\\.)ggssl\\.com$\n(^|\\.)ghostpath\\.com$\n(^|\\.)ghut\\.org$\n(^|\\.)giantessnight\\.com$\n(^|\\.)gifree\\.com$\n(^|\\.)giga-web\\.jp$\n(^|\\.)gigporno\\.ru$\n(^|\\.)girlbanker\\.com$\n(^|\\.)gist\\.github\\.com$\n(^|\\.)github\\.com$\n(^|\\.)git\\.io$\n(^|\\.)gizlen\\.net$\n(^|\\.)gjczz\\.com$\n(^|\\.)glass8\\.eu$\n(^|\\.)global\\.bing\\.com$\n(^|\\.)globaljihad\\.net$\n(^|\\.)globalmediaoutreach\\.com$\n(^|\\.)globalmuseumoncommunism\\.org$\n(^|\\.)globalrescue\\.net$\n(^|\\.)globaltm\\.org$\n(^|\\.)globalvoicesonline\\.org$\n(^|\\.)globalvoices\\.org$\n(^|\\.)globalvpn\\.net$\n(^|\\.)glock\\.com$\n(^|\\.)gloryhole\\.com$\n(^|\\.)glorystar\\.me$\n(^|\\.)gluckman\\.com$\n(^|\\.)glype\\.com$\n(^|\\.)gmail\\.com$\n(^|\\.)gmbd\\.cn$\n(^|\\.)gmhz\\.org$\n(^|\\.)gmll\\.org$\n(^|\\.)gmodules\\.com$\n(^|\\.)gmozomg\\.izihost\\.org$\n(^|\\.)gnci\\.org\\.hk$\n(^|\\.)go141\\.com$\n(^|\\.)goagent\\.biz$\n(^|\\.)goagent\\.codeplex\\.com$\n(^|\\.)goagentplus\\.com$\n(^|\\.)gobet\\.cc$\n(^|\\.)godfootsteps\\.org$\n(^|\\.)godns\\.work$\n(^|\\.)godoc\\.org$\n(^|\\.)godsdirectcontact\\.co\\.uk$\n(^|\\.)godsdirectcontact\\.org$\n(^|\\.)godsdirectcontact\\.org\\.tw$\n(^|\\.)godsimmediatecontact\\.com$\n(^|\\.)gogotunnel\\.com$\n(^|\\.)gohappy\\.com\\.tw$\n(^|\\.)gojet\\.krtco\\.com\\.tw$\n(^|\\.)gokbayrak\\.com$\n(^|\\.)golang\\.org$\n(^|\\.)goldbet\\.com$\n(^|\\.)goldbetsports\\.com$\n(^|\\.)goldeneyevault\\.com$\n(^|\\.)goldenfrog\\.com$\n(^|\\.)goldjizz\\.com$\n(^|\\.)goldstep\\.net$\n(^|\\.)goldwave\\.com$\n(^|\\.)go\\.nesnode\\.com$\n(^|\\.)gongmeng\\.info$\n(^|\\.)gongm\\.in$\n(^|\\.)gongminliliang\\.com$\n(^|\\.)gongwt\\.com$\n(^|\\.)gooday\\.xyz$\n(^|\\.)gooddns\\.info$\n(^|\\.)goodreaders\\.com$\n(^|\\.)goodreads\\.com$\n(^|\\.)goodtv\\.com\\.tw$\n(^|\\.)goodtv\\.tv$\n(^|\\.)goofind\\.com$\n(^|\\.)goo\\.gl$\n(^|\\.)# Google TLDs$\n(^|\\.)google\\.ad$\n(^|\\.)google\\.ae$\n(^|\\.)google\\.al$\n(^|\\.)google\\.am$\n(^|\\.)google\\.as$\n(^|\\.)google\\.at$\n(^|\\.)google\\.az$\n(^|\\.)google\\.ba$\n(^|\\.)google\\.be$\n(^|\\.)google\\.bf$\n(^|\\.)google\\.bg$\n(^|\\.)google\\.bi$\n(^|\\.)google\\.bj$\n(^|\\.)google\\.bs$\n(^|\\.)google\\.bt$\n(^|\\.)google\\.by$\n(^|\\.)google\\.ca$\n(^|\\.)google\\.cat$\n(^|\\.)google\\.cd$\n(^|\\.)google\\.cf$\n(^|\\.)google\\.cg$\n(^|\\.)google\\.ch$\n(^|\\.)google\\.ci$\n(^|\\.)google\\.cl$\n(^|\\.)google\\.cm$\n(^|\\.)google\\.cn$\n(^|\\.)google\\.co\\.ao$\n(^|\\.)google\\.co\\.bw$\n(^|\\.)google\\.co\\.ck$\n(^|\\.)google\\.co\\.cr$\n(^|\\.)google\\.co\\.id$\n(^|\\.)google\\.co\\.il$\n(^|\\.)google\\.co\\.in$\n(^|\\.)google\\.co\\.jp$\n(^|\\.)google\\.co\\.ke$\n(^|\\.)google\\.co\\.kr$\n(^|\\.)google\\.co\\.ls$\n(^|\\.)google\\.co\\.ma$\n(^|\\.)google\\.co\\.mz$\n(^|\\.)google\\.co\\.nz$\n(^|\\.)google\\.co\\.th$\n(^|\\.)google\\.co\\.tz$\n(^|\\.)google\\.co\\.ug$\n(^|\\.)google\\.co\\.uk$\n(^|\\.)google\\.co\\.uz$\n(^|\\.)google\\.co\\.ve$\n(^|\\.)google\\.co\\.vi$\n(^|\\.)google\\.co\\.za$\n(^|\\.)google\\.co\\.zm$\n(^|\\.)google\\.co\\.zw$\n(^|\\.)google\\.com$\n(^|\\.)google\\.com\\.af$\n(^|\\.)google\\.com\\.ag$\n(^|\\.)google\\.com\\.ai$\n(^|\\.)google\\.com\\.ar$\n(^|\\.)google\\.com\\.au$\n(^|\\.)google\\.com\\.bd$\n(^|\\.)google\\.com\\.bh$\n(^|\\.)google\\.com\\.bn$\n(^|\\.)google\\.com\\.bo$\n(^|\\.)google\\.com\\.br$\n(^|\\.)google\\.com\\.bz$\n(^|\\.)google\\.com\\.co$\n(^|\\.)google\\.com\\.cu$\n(^|\\.)google\\.com\\.cy$\n(^|\\.)google\\.com\\.do$\n(^|\\.)google\\.com\\.ec$\n(^|\\.)google\\.com\\.eg$\n(^|\\.)google\\.com\\.et$\n(^|\\.)google\\.com\\.fj$\n(^|\\.)google\\.com\\.gh$\n(^|\\.)google\\.com\\.gi$\n(^|\\.)google\\.com\\.gt$\n(^|\\.)google\\.com\\.hk$\n(^|\\.)google\\.com\\.jm$\n(^|\\.)google\\.com\\.kh$\n(^|\\.)google\\.com\\.kw$\n(^|\\.)google\\.com\\.lb$\n(^|\\.)google\\.com\\.ly$\n(^|\\.)google\\.com\\.mm$\n(^|\\.)google\\.com\\.mt$\n(^|\\.)google\\.com\\.mx$\n(^|\\.)google\\.com\\.my$\n(^|\\.)google\\.com\\.na$\n(^|\\.)google\\.com\\.nf$\n(^|\\.)google\\.com\\.ng$\n(^|\\.)google\\.com\\.ni$\n(^|\\.)google\\.com\\.np$\n(^|\\.)google\\.com\\.om$\n(^|\\.)google\\.com\\.pa$\n(^|\\.)google\\.com\\.pe$\n(^|\\.)google\\.com\\.pg$\n(^|\\.)google\\.com\\.ph$\n(^|\\.)google\\.com\\.pk$\n(^|\\.)google\\.com\\.pr$\n(^|\\.)google\\.com\\.py$\n(^|\\.)google\\.com\\.qa$\n(^|\\.)google\\.com\\.sa$\n(^|\\.)google\\.com\\.sb$\n(^|\\.)google\\.com\\.sg$\n(^|\\.)google\\.com\\.sl$\n(^|\\.)google\\.com\\.sv$\n(^|\\.)google\\.com\\.tj$\n(^|\\.)google\\.com\\.tr$\n(^|\\.)google\\.com\\.tw$\n(^|\\.)google\\.com\\.ua$\n(^|\\.)google\\.com\\.uy$\n(^|\\.)google\\.com\\.vc$\n(^|\\.)google\\.com\\.vn$\n(^|\\.)google\\.cv$\n(^|\\.)google\\.cz$\n(^|\\.)google\\.de$\n(^|\\.)google\\.dj$\n(^|\\.)google\\.dk$\n(^|\\.)google\\.dm$\n(^|\\.)google\\.dz$\n(^|\\.)google\\.ee$\n(^|\\.)google\\.es$\n(^|\\.)google\\.fi$\n(^|\\.)google\\.fm$\n(^|\\.)google\\.fr$\n(^|\\.)google\\.ga$\n(^|\\.)google\\.ge$\n(^|\\.)google\\.gg$\n(^|\\.)google\\.gl$\n(^|\\.)google\\.gm$\n(^|\\.)google\\.gp$\n(^|\\.)google\\.gr$\n(^|\\.)google\\.gy$\n(^|\\.)google\\.hn$\n(^|\\.)google\\.hr$\n(^|\\.)google\\.ht$\n(^|\\.)google\\.hu$\n(^|\\.)google\\.ie$\n(^|\\.)google\\.im$\n(^|\\.)google\\.iq$\n(^|\\.)google\\.is$\n(^|\\.)google\\.it$\n(^|\\.)google\\.je$\n(^|\\.)google\\.jo$\n(^|\\.)google\\.kg$\n(^|\\.)google\\.ki$\n(^|\\.)google\\.kz$\n(^|\\.)google\\.la$\n(^|\\.)google\\.li$\n(^|\\.)google\\.lk$\n(^|\\.)google\\.lt$\n(^|\\.)google\\.lu$\n(^|\\.)google\\.lv$\n(^|\\.)google\\.md$\n(^|\\.)google\\.me$\n(^|\\.)google\\.mg$\n(^|\\.)google\\.mk$\n(^|\\.)google\\.ml$\n(^|\\.)google\\.mn$\n(^|\\.)google\\.ms$\n(^|\\.)google\\.mu$\n(^|\\.)google\\.mv$\n(^|\\.)google\\.mw$\n(^|\\.)google\\.ne$\n(^|\\.)google\\.nl$\n(^|\\.)google\\.no$\n(^|\\.)google\\.nr$\n(^|\\.)google\\.nu$\n(^|\\.)google\\.pl$\n(^|\\.)google\\.pn$\n(^|\\.)google\\.ps$\n(^|\\.)google\\.pt$\n(^|\\.)google\\.ro$\n(^|\\.)google\\.rs$\n(^|\\.)google\\.ru$\n(^|\\.)google\\.rw$\n(^|\\.)google\\.sc$\n(^|\\.)google\\.se$\n(^|\\.)google\\.sh$\n(^|\\.)google\\.si$\n(^|\\.)google\\.sk$\n(^|\\.)google\\.sm$\n(^|\\.)google\\.sn$\n(^|\\.)google\\.so$\n(^|\\.)google\\.sr$\n(^|\\.)google\\.st$\n(^|\\.)google\\.td$\n(^|\\.)google\\.tg$\n(^|\\.)google\\.tk$\n(^|\\.)google\\.tl$\n(^|\\.)google\\.tm$\n(^|\\.)google\\.tn$\n(^|\\.)google\\.to$\n(^|\\.)google\\.tt$\n(^|\\.)google\\.vg$\n(^|\\.)google\\.vu$\n(^|\\.)google\\.ws$\n(^|\\.)# Google TLDs end$\n(^|\\.)googleapis\\.cn$\n(^|\\.)googleapis\\.com$\n(^|\\.)googleapps\\.com$\n(^|\\.)googlearth\\.com$\n(^|\\.)googleartproject\\.com$\n(^|\\.)googleblog\\.com$\n(^|\\.)googlebot\\.com$\n(^|\\.)google\\.calstate\\.edu$\n(^|\\.)googlechinawebmaster\\.com$\n(^|\\.)googlecode\\.com$\n(^|\\.)googlecommerce\\.com$\n(^|\\.)googledomains\\.com$\n(^|\\.)googledrive\\.com$\n(^|\\.)googleearth\\.com$\n(^|\\.)googlegroups\\.com$\n(^|\\.)googlehosted\\.com$\n(^|\\.)googleideas\\.com$\n(^|\\.)googleinsidesearch\\.com$\n(^|\\.)googlelabs\\.com$\n(^|\\.)googlemail\\.com$\n(^|\\.)googlemashups\\.com$\n(^|\\.)googlepagecreator\\.com$\n(^|\\.)googleplay\\.com$\n(^|\\.)googleplus\\.com$\n(^|\\.)googlescholar\\.com$\n(^|\\.)googlesile\\.com$\n(^|\\.)googlesource\\.com$\n(^|\\.)googleusercontent\\.com$\n(^|\\.)googlevideo\\.com$\n(^|\\.)googleweblight\\.com$\n(^|\\.)googlezip\\.net$\n(^|\\.)gopetition\\.com$\n(^|\\.)go-pki\\.com$\n(^|\\.)goproxing\\.net$\n(^|\\.)goregrish\\.com$\n(^|\\.)gospelherald\\.com$\n(^|\\.)gotdns\\.ch$\n(^|\\.)got-game\\.org$\n(^|\\.)gotgeeks\\.com$\n(^|\\.)gotrusted\\.com$\n(^|\\.)gotw\\.ca$\n(^|\\.)gov\\.taipei$\n(^|\\.)gov\\.tw$\n(^|\\.)g-queen\\.com$\n(^|\\.)gr8domain\\.biz$\n(^|\\.)gr8name\\.biz$\n(^|\\.)grammaly\\.com$\n(^|\\.)grandtrial\\.org$\n(^|\\.)grangorz\\.org$\n(^|\\.)graphis\\.ne\\.jp$\n(^|\\.)graphql\\.org$\n(^|\\.)greasespot\\.net$\n(^|\\.)greatfire\\.org$\n(^|\\.)greatfire\\.us7\\.list-manage\\.com$\n(^|\\.)greatfirewall\\.biz$\n(^|\\.)great-firewall\\.com$\n(^|\\.)greatfirewallofchina\\.net$\n(^|\\.)greatfirewallofchina\\.org$\n(^|\\.)great-roc\\.org$\n(^|\\.)greatroc\\.org$\n(^|\\.)greatroc\\.tw$\n(^|\\.)greatzhonghua\\.org$\n(^|\\.)greenfieldbookstore\\.com\\.hk$\n(^|\\.)greenparty\\.org\\.tw$\n(^|\\.)greenpeace\\.com\\.tw$\n(^|\\.)greenpeace\\.org$\n(^|\\.)greenreadings\\.com$\n(^|\\.)greenvpn\\.net$\n(^|\\.)greenvpn\\.org$\n(^|\\.)grotty-monday\\.com$\n(^|\\.)groups\\.google\\.cn$\n(^|\\.)grow\\.google$\n(^|\\.)gs-discuss\\.com$\n(^|\\.)gsp\\.target\\.com$\n(^|\\.)gstatic\\.com$\n(^|\\.)gtricks\\.com$\n(^|\\.)gts-vpn\\.com$\n(^|\\.)guaguass\\.com$\n(^|\\.)guaguass\\.org$\n(^|\\.)guancha\\.org$\n(^|\\.)guaneryu\\.com$\n(^|\\.)guangming\\.com\\.my$\n(^|\\.)guangnianvpn\\.com$\n(^|\\.)guardster\\.com$\n(^|\\.)gu-chu-sum\\.org$\n(^|\\.)guishan\\.org$\n(^|\\.)gumroad\\.com$\n(^|\\.)gunsamerica\\.com$\n(^|\\.)gunsandammo\\.com$\n(^|\\.)gun-world\\.net$\n(^|\\.)guo\\.media$\n(^|\\.)guruonline\\.hk$\n(^|\\.)gutteruncensored\\.com$\n(^|\\.)gvlib\\.com$\n(^|\\.)gvm\\.com\\.tw$\n(^|\\.)gvt0\\.com$\n(^|\\.)gvt1\\.com$\n(^|\\.)gvt3\\.com$\n(^|\\.)gwtproject\\.org$\n(^|\\.)gyalwarinpoche\\.com$\n(^|\\.)gyatsostudio\\.com$\n(^|\\.)gzm\\.tv$\n(^|\\.)gzone-anime\\.info$\n(^|\\.)h1n1china\\.org$\n(^|\\.)h528\\.com$\n(^|\\.)h5dm\\.com$\n(^|\\.)h5galgame\\.me$\n(^|\\.)hacg\\.club$\n(^|\\.)hacg\\.in$\n(^|\\.)hacg\\.li$\n(^|\\.)hacg\\.me$\n(^|\\.)hacg\\.red$\n(^|\\.)hacken\\.cc$\n(^|\\.)hacker\\.org$\n(^|\\.)hackthatphone\\.net$\n(^|\\.)hahaxixi\\.github\\.io$\n(^|\\.)hahlo\\.com$\n(^|\\.)hakkatv\\.org\\.tw$\n(^|\\.)handcraftedsoftware\\.org$\n(^|\\.)hanime\\.tv$\n(^|\\.)hanunyi\\.com$\n(^|\\.)haoel\\.github\\.io$\n(^|\\.)hao\\.news$\n(^|\\.)happy-vpn\\.com$\n(^|\\.)haproxy\\.org$\n(^|\\.)hardsextube\\.com$\n(^|\\.)harunyahya\\.com$\n(^|\\.)hautelookcdn\\.com$\n(^|\\.)hautelook\\.com$\n(^|\\.)have8\\.com$\n(^|\\.)hbg\\.com$\n(^|\\.)hbo\\.com$\n(^|\\.)h-china\\.org$\n(^|\\.)hclips\\.com$\n(^|\\.)hdlt\\.me$\n(^|\\.)hd\\.stheadline\\.com$\n(^|\\.)hdtvb\\.net$\n(^|\\.)hdzog\\.com$\n(^|\\.)heartyit\\.com$\n(^|\\.)heavy-r\\.com$\n(^|\\.)hecaitou\\.net$\n(^|\\.)hechaji\\.com$\n(^|\\.)hec\\.su$\n(^|\\.)heeact\\.edu\\.tw$\n(^|\\.)hegre-art\\.com$\n(^|\\.)heix\\.pp\\.ru$\n(^|\\.)helloandroid\\.com$\n(^|\\.)helloqueer\\.com$\n(^|\\.)helloss\\.pw$\n(^|\\.)hellotxt\\.com$\n(^|\\.)hellouk\\.org$\n(^|\\.)helpeachpeople\\.com$\n(^|\\.)helplinfen\\.com$\n(^|\\.)help\\.linksalpha\\.com$\n(^|\\.)helpster\\.de$\n(^|\\.)helpzhuling\\.org$\n(^|\\.)hentai\\.to$\n(^|\\.)hentaitube\\.tv$\n(^|\\.)hentaivideoworld\\.com$\n(^|\\.)heqinglian\\.net$\n(^|\\.)heungkongdiscuss\\.com$\n(^|\\.)hexieshe\\.com$\n(^|\\.)hexieshe\\.xyz$\n(^|\\.)hexxeh\\.net$\n(^|\\.)heyzo\\.com$\n(^|\\.)hgseav\\.com$\n(^|\\.)hhdcb3office\\.org$\n(^|\\.)hhthesakyatrizin\\.org$\n(^|\\.)hidden-advent\\.org$\n(^|\\.)hidecloud\\.com$\n(^|\\.)hidein\\.net$\n(^|\\.)hideipvpn\\.com$\n(^|\\.)hideman\\.net$\n(^|\\.)hide\\.me$\n(^|\\.)hideme\\.nl$\n(^|\\.)hidemyass\\.com$\n(^|\\.)hidemycomp\\.com$\n(^|\\.)hidemy\\.name$\n(^|\\.)higfw\\.com$\n(^|\\.)highpeakspureearth\\.com$\n(^|\\.)highrockmedia\\.com$\n(^|\\.)hihiforum\\.com$\n(^|\\.)hihistory\\.net$\n(^|\\.)hiitch\\.com$\n(^|\\.)hikinggfw\\.org$\n(^|\\.)hilive\\.tv$\n(^|\\.)himalayan-foundation\\.org$\n(^|\\.)himalayanglacier\\.com$\n(^|\\.)himemix\\.com$\n(^|\\.)himemix\\.net$\n(^|\\.)hi-on\\.org\\.tw$\n(^|\\.)hitbtc\\.com$\n(^|\\.)hitomi\\.la$\n(^|\\.)hizb-ut-tahrir\\.info$\n(^|\\.)hizb-ut-tahrir\\.org$\n(^|\\.)hizbuttahrir\\.org$\n(^|\\.)hjclub\\.info$\n(^|\\.)hk01\\.com$\n(^|\\.)hk32168\\.com$\n(^|\\.)hka8964\\.wordpress\\.com$\n(^|\\.)hkacg\\.com$\n(^|\\.)hkacg\\.net$\n(^|\\.)hkanews\\.wordpress\\.com$\n(^|\\.)hkatvnews\\.com$\n(^|\\.)hkbc\\.net$\n(^|\\.)hkbf\\.org$\n(^|\\.)hkbookcity\\.com$\n(^|\\.)hkchurch\\.org$\n(^|\\.)hkci\\.org\\.hk$\n(^|\\.)hkcmi\\.edu$\n(^|\\.)hkcnews\\.com$\n(^|\\.)hkcoc\\.com$\n(^|\\.)hkcoc\\.weather\\.com\\.hk$\n(^|\\.)hkdailynews\\.com\\.hk$\n(^|\\.)hkday\\.net$\n(^|\\.)hkdf\\.org$\n(^|\\.)hkej\\.com$\n(^|\\.)hkepc\\.com$\n(^|\\.)hkfaa\\.com$\n(^|\\.)hkfreezone\\.com$\n(^|\\.)hk\\.frienddy\\.com$\n(^|\\.)hkfront\\.org$\n(^|\\.)hkgalden\\.com$\n(^|\\.)hk\\.geocities\\.com$\n(^|\\.)hkgolden\\.com$\n(^|\\.)hk\\.gradconnection\\.com$\n(^|\\.)hkgreenradio\\.org$\n(^|\\.)hk\\.hao123img\\.com$\n(^|\\.)hkheadline\\.com$\n(^|\\.)hkhkhk\\.com$\n(^|\\.)hkhrc\\.org\\.hk$\n(^|\\.)hkhrm\\.org\\.hk$\n(^|\\.)hkip\\.org\\.uk$\n(^|\\.)hkjc\\.com$\n(^|\\.)hk\\.jiepang\\.com$\n(^|\\.)hkjp\\.org$\n(^|\\.)hk\\.knowledge\\.yahoo\\.com$\n(^|\\.)hklft\\.com$\n(^|\\.)hklts\\.org\\.hk$\n(^|\\.)hk\\.myblog\\.yahoo\\.com$\n(^|\\.)hk\\.news\\.yahoo\\.com$\n(^|\\.)hkptu\\.org$\n(^|\\.)hk-pub\\.com$\n(^|\\.)hk\\.rd\\.yahoo\\.com$\n(^|\\.)hkreporter\\.com$\n(^|\\.)hkreporter\\.loved\\.hk$\n(^|\\.)hk\\.search\\.yahoo\\.com$\n(^|\\.)hkupop\\.hku\\.hk$\n(^|\\.)hkusu\\.net$\n(^|\\.)hk\\.video\\.news\\.yahoo\\.com$\n(^|\\.)hkvwet\\.com$\n(^|\\.)hkwcc\\.org\\.hk$\n(^|\\.)hk\\.yahoo\\.com$\n(^|\\.)hkzone\\.org$\n(^|\\.)h-moe\\.com$\n(^|\\.)hmonghot\\.com$\n(^|\\.)hmv\\.co\\.jp$\n(^|\\.)hmvdigital\\.ca$\n(^|\\.)hmvdigital\\.com$\n(^|\\.)hnjhj\\.com$\n(^|\\.)hnntube\\.com$\n(^|\\.)hola\\.com$\n(^|\\.)hola\\.org$\n(^|\\.)holymountaincn\\.com$\n(^|\\.)holyspiritspeaks\\.org$\n(^|\\.)homedepot\\.com$\n(^|\\.)homeperversion\\.com$\n(^|\\.)homeservershow\\.com$\n(^|\\.)home\\.sina\\.com$\n(^|\\.)home\\.so-net\\.net\\.tw$\n(^|\\.)hongkongfp\\.com$\n(^|\\.)hongmeimei\\.com$\n(^|\\.)hongzhi\\.li$\n(^|\\.)hootsuite\\.com$\n(^|\\.)hoovers\\.com$\n(^|\\.)hopedialogue\\.org$\n(^|\\.)hopto\\.org$\n(^|\\.)hornygamer\\.com$\n(^|\\.)hornytrip\\.com$\n(^|\\.)hotav\\.tv$\n(^|\\.)hotels\\.cn$\n(^|\\.)hotfrog\\.com\\.tw$\n(^|\\.)hotgoo\\.com$\n(^|\\.)hotpornshow\\.com$\n(^|\\.)hotpot\\.hk$\n(^|\\.)hotshame\\.com$\n(^|\\.)hotspotshield\\.com$\n(^|\\.)hotvpn\\.com$\n(^|\\.)hougaige\\.com$\n(^|\\.)howtoforge\\.com$\n(^|\\.)hoxx\\.com$\n(^|\\.)hpa\\.gov\\.tw$\n(^|\\.)hqcdp\\.org$\n(^|\\.)hqjapanesesex\\.com$\n(^|\\.)hqmovies\\.com$\n(^|\\.)hqsbnet\\.wordpress\\.com$\n(^|\\.)hqsbonline\\.wordpress\\.com$\n(^|\\.)hrcchina\\.org$\n(^|\\.)hrcir\\.com$\n(^|\\.)hrea\\.org$\n(^|\\.)hrichina\\.org$\n(^|\\.)hrtsea\\.com$\n(^|\\.)hrweb\\.org$\n(^|\\.)hrw\\.org$\n(^|\\.)hsjp\\.net$\n(^|\\.)hsselite\\.com$\n(^|\\.)hstern\\.net$\n(^|\\.)hst\\.net\\.tw$\n(^|\\.)hstt\\.net$\n(^|\\.)htkou\\.net$\n(^|\\.)htl\\.li$\n(^|\\.)ht\\.ly$\n(^|\\.)html5rocks\\.com$\n(^|\\.)https443\\.net$\n(^|\\.)https443\\.org$\n(^|\\.)huaglad\\.com$\n(^|\\.)huanghuagang\\.org$\n(^|\\.)huangyiyu\\.com$\n(^|\\.)huaren4us\\.com$\n(^|\\.)huaren\\.us$\n(^|\\.)huashangnews\\.com$\n(^|\\.)huaxiabao\\.org$\n(^|\\.)huaxia-news\\.com$\n(^|\\.)huaxin\\.ph$\n(^|\\.)hua-yue\\.net$\n(^|\\.)huayuworld\\.org$\n(^|\\.)hudatoriq\\.web\\.id$\n(^|\\.)hudson\\.org$\n(^|\\.)huffingtonpost\\.com$\n(^|\\.)hugoroy\\.eu$\n(^|\\.)huhaitai\\.com$\n(^|\\.)huhamhire\\.com$\n(^|\\.)huiyi\\.in$\n(^|\\.)hulkshare\\.com$\n(^|\\.)hulu\\.com$\n(^|\\.)huluim\\.com$\n(^|\\.)humanrightsbriefing\\.org$\n(^|\\.)hungerstrikeforaids\\.org$\n(^|\\.)hung-ya\\.com$\n(^|\\.)huobi\\.com$\n(^|\\.)huobi\\.pro$\n(^|\\.)huobipro\\.com$\n(^|\\.)huping\\.net$\n(^|\\.)hurgokbayrak\\.com$\n(^|\\.)hurriyet\\.com\\.tr$\n(^|\\.)hustlercash\\.com$\n(^|\\.)hut2\\.ru$\n(^|\\.)hutianyi\\.net$\n(^|\\.)hutong9\\.net$\n(^|\\.)huyandex\\.com$\n(^|\\.)hwadzan\\.tw$\n(^|\\.)hwayue\\.org\\.tw$\n(^|\\.)hwinfo\\.com$\n(^|\\.)hxwk\\.org$\n(^|\\.)hxwq\\.org$\n(^|\\.)hybrid-analysis\\.com$\n(^|\\.)hyperrate\\.com$\n(^|\\.)i1\\.hk$\n(^|\\.)i2p2\\.de$\n(^|\\.)i2runner\\.com$\n(^|\\.)i818hk\\.com$\n(^|\\.)iam\\.soy$\n(^|\\.)iamtopone\\.com$\n(^|\\.)iask\\.bz$\n(^|\\.)iask\\.ca$\n(^|\\.)iav19\\.com$\n(^|\\.)ibiblio\\.org$\n(^|\\.)iblist\\.com$\n(^|\\.)iblogserv-f\\.net$\n(^|\\.)ibros\\.org$\n(^|\\.)ibvpn\\.com$\n(^|\\.)i-cable\\.com$\n(^|\\.)icams\\.com$\n(^|\\.)ice\\.audionow\\.com$\n(^|\\.)icij\\.org$\n(^|\\.)icl-fi\\.org$\n(^|\\.)icoco\\.com$\n(^|\\.)iconpaper\\.org$\n(^|\\.)icu-project\\.org$\n(^|\\.)iddddg\\.com$\n(^|\\.)idemocracy\\.asia$\n(^|\\.)identi\\.ca$\n(^|\\.)id\\.hao123\\.com$\n(^|\\.)id\\.heroku\\.com$\n(^|\\.)idiomconnection\\.com$\n(^|\\.)idouga\\.com$\n(^|\\.)idreamx\\.com$\n(^|\\.)idv\\.tw$\n(^|\\.)ieasy5\\.com$\n(^|\\.)ied2k\\.net$\n(^|\\.)ienergy1\\.com$\n(^|\\.)ifan\\.cz\\.cc$\n(^|\\.)ifanqiang\\.com$\n(^|\\.)ifcss\\.org$\n(^|\\.)ifjc\\.org$\n(^|\\.)ifreewares\\.com$\n(^|\\.)if\\.ttt$\n(^|\\.)ift\\.tt$\n(^|\\.)igcd\\.net$\n(^|\\.)igfw\\.net$\n(^|\\.)igfw\\.tech$\n(^|\\.)igmg\\.de$\n(^|\\.)ignitedetroit\\.net$\n(^|\\.)igoogle\\.com$\n(^|\\.)igotmail\\.com\\.tw$\n(^|\\.)igvita\\.com$\n(^|\\.)ihakka\\.net$\n(^|\\.)ihao\\.org$\n(^|\\.)iicns\\.com$\n(^|\\.)iipdigital\\.usembassy\\.gov$\n(^|\\.)ikstar\\.com$\n(^|\\.)ikwb\\.com$\n(^|\\.)i\\.lithium\\.com$\n(^|\\.)illusionfactory\\.com$\n(^|\\.)ilove80\\.be$\n(^|\\.)ilovelongtoes\\.com$\n(^|\\.)im88\\.tw$\n(^|\\.)imageab\\.com$\n(^|\\.)imagefap\\.com$\n(^|\\.)imageflea\\.com$\n(^|\\.)images\\.comico\\.tw$\n(^|\\.)images-gaytube\\.com$\n(^|\\.)imageshack\\.us$\n(^|\\.)imagevenue\\.com$\n(^|\\.)imagezilla\\.net$\n(^|\\.)imb\\.org$\n(^|\\.)imdb\\.com$\n(^|\\.)imgchili\\.net$\n(^|\\.)img\\.dlsite\\.jp$\n(^|\\.)img\\.ly$\n(^|\\.)imgmega\\.com$\n(^|\\.)imgur\\.com$\n(^|\\.)imkev\\.com$\n(^|\\.)imlive\\.com$\n(^|\\.)immigration\\.gov\\.tw$\n(^|\\.)immoral\\.jp$\n(^|\\.)impact\\.org\\.au$\n(^|\\.)impp\\.mn$\n(^|\\.)im\\.tv$\n(^|\\.)in99\\.org$\n(^|\\.)incapdns\\.net$\n(^|\\.)incloak\\.com$\n(^|\\.)incredibox\\.fr$\n(^|\\.)indiandefensenews\\.in$\n(^|\\.)indiemerch\\.com$\n(^|\\.)in-disguise\\.com$\n(^|\\.)info-graf\\.fr$\n(^|\\.)initiativesforchina\\.org$\n(^|\\.)inkui\\.com$\n(^|\\.)inmediahk\\.net$\n(^|\\.)innermongolia\\.org$\n(^|\\.)inote\\.tw$\n(^|\\.)insecam\\.org$\n(^|\\.)insidevoa\\.com$\n(^|\\.)instagram\\.com$\n(^|\\.)instanthq\\.com$\n(^|\\.)institut-tibetain\\.org$\n(^|\\.)international-news\\.newsmagazine\\.asia$\n(^|\\.)internetdefenseleague\\.org$\n(^|\\.)internetfreedom\\.org$\n(^|\\.)internet\\.org$\n(^|\\.)internetpopculture\\.com$\n(^|\\.)inthenameofconfuciusmovie\\.com$\n(^|\\.)investigating\\.wordpress\\.com$\n(^|\\.)inxian\\.com$\n(^|\\.)iownyour\\.biz$\n(^|\\.)iownyour\\.org$\n(^|\\.)ipalter\\.com$\n(^|\\.)i-part\\.com\\.tw$\n(^|\\.)ipfire\\.org$\n(^|\\.)ipfs\\.io$\n(^|\\.)iphone4hongkong\\.com$\n(^|\\.)iphonehacks\\.com$\n(^|\\.)iphonetaiwan\\.org$\n(^|\\.)iphonix\\.fr$\n(^|\\.)ipicture\\.ru$\n(^|\\.)ipjetable\\.net$\n(^|\\.)ipobar\\.com$\n(^|\\.)ipoock\\.com$\n(^|\\.)iportal\\.me$\n(^|\\.)ippotv\\.com$\n(^|\\.)ipredator\\.se$\n(^|\\.)iptvbin\\.com$\n(^|\\.)iptv\\.com\\.tw$\n(^|\\.)ipvanish\\.com$\n(^|\\.)iredmail\\.org$\n(^|\\.)ironbigfools\\.compython\\.net$\n(^|\\.)ironpython\\.net$\n(^|\\.)ironsocket\\.com$\n(^|\\.)isaacmao\\.com$\n(^|\\.)is-a-hunter\\.com$\n(^|\\.)isasecret\\.com$\n(^|\\.)i-scmp\\.com$\n(^|\\.)isc\\.sans\\.edu$\n(^|\\.)is\\.gd$\n(^|\\.)isgreat\\.org$\n(^|\\.)islahhaber\\.net$\n(^|\\.)islamawareness\\.net$\n(^|\\.)islamhouse\\.com$\n(^|\\.)islamicity\\.com$\n(^|\\.)islamicpluralism\\.org$\n(^|\\.)islam\\.org\\.hk$\n(^|\\.)islamtoday\\.net$\n(^|\\.)ismaelan\\.com$\n(^|\\.)ismalltits\\.com$\n(^|\\.)ismprofessional\\.net$\n(^|\\.)isohunt\\.com$\n(^|\\.)israbox\\.com$\n(^|\\.)issuu\\.com$\n(^|\\.)istars\\.co\\.nz$\n(^|\\.)istiqlalhewer\\.com$\n(^|\\.)istockphoto\\.com$\n(^|\\.)isunaffairs\\.com$\n(^|\\.)isuntv\\.com$\n(^|\\.)itaboo\\.info$\n(^|\\.)itaiwan\\.gov\\.tw$\n(^|\\.)italiatibet\\.org$\n(^|\\.)itasoftware\\.com$\n(^|\\.)itemdb\\.com$\n(^|\\.)ithelp\\.ithome\\.com\\.tw$\n(^|\\.)itsaol\\.com$\n(^|\\.)its\\.caltech\\.edu$\n(^|\\.)itshidden\\.com$\n(^|\\.)itsky\\.it$\n(^|\\.)itweet\\.net$\n(^|\\.)iu45\\.com$\n(^|\\.)iuhrdf\\.org$\n(^|\\.)iuksky\\.com$\n(^|\\.)ivacy\\.com$\n(^|\\.)iverycd\\.com$\n(^|\\.)ivpn\\.net$\n(^|\\.)ixquick\\.com$\n(^|\\.)ixxx\\.com$\n(^|\\.)iyouport\\.com$\n(^|\\.)izaobao\\.us$\n(^|\\.)izlesem\\.org$\n(^|\\.)izles\\.net$\n(^|\\.)jamaat\\.org$\n(^|\\.)jamyangnorbu\\.com$\n(^|\\.)jandyx\\.com$\n(^|\\.)janwongphoto\\.com$\n(^|\\.)japanfirst\\.asianfreeforum\\.com$\n(^|\\.)japantimes\\.co\\.jp$\n(^|\\.)japan-whores\\.com$\n(^|\\.)jav101\\.com$\n(^|\\.)jav2be\\.com$\n(^|\\.)jav68\\.tv$\n(^|\\.)javakiba\\.org$\n(^|\\.)javbus\\.com$\n(^|\\.)jav\\.com$\n(^|\\.)javfor\\.me$\n(^|\\.)javhd\\.com$\n(^|\\.)javhip\\.com$\n(^|\\.)javhub\\.net$\n(^|\\.)javhuge\\.com$\n(^|\\.)javlibrary\\.com$\n(^|\\.)javmobile\\.net$\n(^|\\.)javmoo\\.com$\n(^|\\.)javmoo\\.xyz$\n(^|\\.)javseen\\.com$\n(^|\\.)javtag\\.com$\n(^|\\.)javzoo\\.com$\n(^|\\.)ja\\.wikipedia\\.org$\n(^|\\.)jbtalks\\.cc$\n(^|\\.)jbtalks\\.com$\n(^|\\.)jbtalks\\.my$\n(^|\\.)jcpenney\\.com$\n(^|\\.)jdwsy\\.com$\n(^|\\.)jeanyim\\.com$\n(^|\\.)jetos\\.com$\n(^|\\.)jex\\.com$\n(^|\\.)jfqu36\\.club$\n(^|\\.)jfqu37\\.xyz$\n(^|\\.)jgoodies\\.com$\n(^|\\.)jiangweiping\\.com$\n(^|\\.)jiaoyou8\\.com$\n(^|\\.)jiehua\\.cz$\n(^|\\.)jieshibaobao\\.com$\n(^|\\.)jigglegifs\\.com$\n(^|\\.)jigong1024\\.com$\n(^|\\.)jihadintel\\.meforum\\.org$\n(^|\\.)jihadology\\.net$\n(^|\\.)jiji\\.com$\n(^|\\.)jims\\.net$\n(^|\\.)jinbushe\\.org$\n(^|\\.)jingpin\\.org$\n(^|\\.)jingsim\\.org$\n(^|\\.)jinpianwang\\.com$\n(^|\\.)jinroukong\\.com$\n(^|\\.)jintian\\.net$\n(^|\\.)jinx\\.com$\n(^|\\.)jitouch\\.com$\n(^|\\.)jizzthis\\.com$\n(^|\\.)jjgirls\\.com$\n(^|\\.)jkb\\.cc$\n(^|\\.)jkforum\\.net$\n(^|\\.)jkub\\.com$\n(^|\\.)jma\\.go\\.jp$\n(^|\\.)j\\.mp$\n(^|\\.)jmscult\\.com$\n(^|\\.)joachims\\.org$\n(^|\\.)jobnewera\\.wordpress\\.com$\n(^|\\.)jobso\\.tv$\n(^|\\.)joinmastodon\\.org$\n(^|\\.)journalchretien\\.net$\n(^|\\.)journalofdemocracy\\.org$\n(^|\\.)joymiihub\\.com$\n(^|\\.)joyourself\\.com$\n(^|\\.)jp\\.hao123\\.com$\n(^|\\.)jpl\\.nasa\\.gov$\n(^|\\.)jpopforum\\.net$\n(^|\\.)jtvnw\\.net$\n(^|\\.)jubushoushen\\.com$\n(^|\\.)juhuaren\\.com$\n(^|\\.)jukujo-club\\.com$\n(^|\\.)juliepost\\.com$\n(^|\\.)juliereyc\\.com$\n(^|\\.)junauza\\.com$\n(^|\\.)june4commemoration\\.org$\n(^|\\.)junefourth-20\\.net$\n(^|\\.)jungleheart\\.com$\n(^|\\.)juoaa\\.com$\n(^|\\.)justdied\\.com$\n(^|\\.)justfreevpn\\.com$\n(^|\\.)justicefortenzin\\.org$\n(^|\\.)justpaste\\.it$\n(^|\\.)justtristan\\.com$\n(^|\\.)juyuange\\.org$\n(^|\\.)juziyue\\.com$\n(^|\\.)jwmusic\\.org$\n(^|\\.)jyxf\\.net$\n(^|\\.)kagyumonlam\\.org$\n(^|\\.)kagyunews\\.com\\.hk$\n(^|\\.)kagyuoffice\\.org$\n(^|\\.)kagyuoffice\\.org\\.tw$\n(^|\\.)kagyu\\.org$\n(^|\\.)kagyu\\.org\\.za$\n(^|\\.)kaiyuan\\.de$\n(^|\\.)kakao\\.com$\n(^|\\.)kalachakralugano\\.org$\n(^|\\.)kankan\\.today$\n(^|\\.)kannewyork\\.com$\n(^|\\.)kanshifang\\.com$\n(^|\\.)kantie\\.org$\n(^|\\.)kanzhongguo\\.com$\n(^|\\.)kanzhongguo\\.eu$\n(^|\\.)kaotic\\.com$\n(^|\\.)karayou\\.com$\n(^|\\.)karkhung\\.com$\n(^|\\.)karmapa\\.org$\n(^|\\.)karmapa-teachings\\.org$\n(^|\\.)ka-wai\\.com$\n(^|\\.)kawaiikawaii\\.jp$\n(^|\\.)kawase\\.com$\n(^|\\.)kba-tx\\.org$\n(^|\\.)kb\\.monitorware\\.com$\n(^|\\.)kcoolonline\\.com$\n(^|\\.)k-doujin\\.net$\n(^|\\.)kebrum\\.com$\n(^|\\.)kechara\\.com$\n(^|\\.)keepandshare\\.com$\n(^|\\.)keezmovies\\.com$\n(^|\\.)kendatire\\.com$\n(^|\\.)kendincos\\.net$\n(^|\\.)kenengba\\.com$\n(^|\\.)keontech\\.net$\n(^|\\.)kepard\\.com$\n(^|\\.)kex\\.com$\n(^|\\.)keycdn\\.com$\n(^|\\.)khabdha\\.org$\n(^|\\.)khatrimaza\\.org$\n(^|\\.)khmusic\\.com\\.tw$\n(^|\\.)kichiku-doujinko\\.com$\n(^|\\.)kik\\.com$\n(^|\\.)killwall\\.com$\n(^|\\.)kindleren\\.com$\n(^|\\.)kineox\\.free\\.fr$\n(^|\\.)kingdomsalvation\\.org$\n(^|\\.)kinghost\\.com$\n(^|\\.)kingstone\\.com\\.tw$\n(^|\\.)kink\\.com$\n(^|\\.)kinmen\\.org\\.tw$\n(^|\\.)kinmen\\.travel$\n(^|\\.)kinokuniya\\.com$\n(^|\\.)kir\\.jp$\n(^|\\.)kissbbao\\.cn$\n(^|\\.)kiwi\\.kz$\n(^|\\.)kkbox\\.com$\n(^|\\.)kknews\\.cc$\n(^|\\.)kk-whys\\.co\\.jp$\n(^|\\.)kmuh\\.org\\.tw$\n(^|\\.)knowledgerush\\.com$\n(^|\\.)kobobooks\\.com$\n(^|\\.)kobo\\.com$\n(^|\\.)kodingen\\.com$\n(^|\\.)kompozer\\.net$\n(^|\\.)konachan\\.com$\n(^|\\.)kone\\.com$\n(^|\\.)koolsolutions\\.com$\n(^|\\.)koornk\\.com$\n(^|\\.)koranmandarin\\.com$\n(^|\\.)korenan2\\.com$\n(^|\\.)ksdl\\.org$\n(^|\\.)ksnews\\.com\\.tw$\n(^|\\.)kspcoin\\.com$\n(^|\\.)ktzhk\\.com$\n(^|\\.)kucoin\\.com$\n(^|\\.)kui\\.name$\n(^|\\.)kun\\.im$\n(^|\\.)kurashsultan\\.com$\n(^|\\.)kurtmunger\\.com$\n(^|\\.)kusocity\\.com$\n(^|\\.)kwcg\\.ca$\n(^|\\.)kwongwah\\.com\\.my$\n(^|\\.)kxsw\\.life$\n(^|\\.)kyofun\\.com$\n(^|\\.)kyohk\\.net$\n(^|\\.)kyoyue\\.com$\n(^|\\.)kyzyhello\\.com$\n(^|\\.)kzeng\\.info$\n(^|\\.)labiennale\\.org$\n(^|\\.)ladbrokes\\.com$\n(^|\\.)la-forum\\.org$\n(^|\\.)lagranepoca\\.com$\n(^|\\.)lalulalu\\.com$\n(^|\\.)lama\\.com\\.tw$\n(^|\\.)lamayeshe\\.com$\n(^|\\.)lamnia\\.co\\.uk$\n(^|\\.)lamrim\\.com$\n(^|\\.)lanterncn\\.cn$\n(^|\\.)lantosfoundation\\.org$\n(^|\\.)laod\\.cn$\n(^|\\.)laogai\\.org$\n(^|\\.)laomiu\\.com$\n(^|\\.)laoyang\\.info$\n(^|\\.)laptoplockdown\\.com$\n(^|\\.)laqingdan\\.net$\n(^|\\.)larsgeorge\\.com$\n(^|\\.)lastcombat\\.com$\n(^|\\.)lastfm\\.es$\n(^|\\.)latelinenews\\.com$\n(^|\\.)latibet\\.org$\n(^|\\.)lbank\\.info$\n(^|\\.)ld\\.hao123img\\.com$\n(^|\\.)leafyvpn\\.net$\n(^|\\.)lecloud\\.net$\n(^|\\.)leeao\\.com\\.cn$\n(^|\\.)lefora\\.com$\n(^|\\.)left21\\.hk$\n(^|\\.)legalporno\\.com$\n(^|\\.)legaltech\\.law\\.com$\n(^|\\.)legsjapan\\.com$\n(^|\\.)leirentv\\.ca$\n(^|\\.)leisurecafe\\.ca$\n(^|\\.)leisurepro\\.com$\n(^|\\.)lematin\\.ch$\n(^|\\.)lemonde\\.fr$\n(^|\\.)lenwhite\\.com$\n(^|\\.)lerosua\\.org$\n(^|\\.)lers\\.google$\n(^|\\.)lesoir\\.be$\n(^|\\.)letou\\.com$\n(^|\\.)letscorp\\.net$\n(^|\\.)le-vpn\\.com$\n(^|\\.)lflink\\.com$\n(^|\\.)lflinkup\\.com$\n(^|\\.)lflinkup\\.net$\n(^|\\.)lflinkup\\.org$\n(^|\\.)lhakar\\.org$\n(^|\\.)lhasocialwork\\.org$\n(^|\\.)liangyou\\.net$\n(^|\\.)liangzhichuanmei\\.com$\n(^|\\.)lianyue\\.net$\n(^|\\.)liaowangxizang\\.net$\n(^|\\.)liberal\\.org\\.hk$\n(^|\\.)libertytimes\\.com\\.tw$\n(^|\\.)library\\.usc\\.cuhk\\.edu\\.hk$\n(^|\\.)lidecheng\\.com$\n(^|\\.)lifemiles\\.com$\n(^|\\.)lighten\\.org\\.tw$\n(^|\\.)lighti\\.me$\n(^|\\.)lightnovel\\.cn$\n(^|\\.)lightyearvpn\\.com$\n(^|\\.)lihkg\\.com$\n(^|\\.)like\\.com$\n(^|\\.)limiao\\.net$\n(^|\\.)line-apps\\.com$\n(^|\\.)linear-abematv\\.akamaized\\.net$\n(^|\\.)line\\.me$\n(^|\\.)line\\.naver\\.jp$\n(^|\\.)line-scdn\\.net$\n(^|\\.)linglingfa\\.com$\n(^|\\.)lingvodics\\.com$\n(^|\\.)linkideo\\.com$\n(^|\\.)link-o-rama\\.com$\n(^|\\.)linkuswell\\.com$\n(^|\\.)linux\\.org\\.hk$\n(^|\\.)linuxtoy\\.org$\n(^|\\.)lionsroar\\.com$\n(^|\\.)lipuman\\.com$\n(^|\\.)liquidvpn\\.com$\n(^|\\.)listentoyoutube\\.com$\n(^|\\.)listorious\\.com$\n(^|\\.)lists\\.w3\\.org$\n(^|\\.)liudejun\\.com$\n(^|\\.)liuhanyu\\.com$\n(^|\\.)liujianshu\\.com$\n(^|\\.)liuxiaobo\\.net$\n(^|\\.)liu-xiaobo\\.org$\n(^|\\.)liuxiaotong\\.com$\n(^|\\.)livecoin\\.net$\n(^|\\.)livedoor\\.jp$\n(^|\\.)liveleak\\.com$\n(^|\\.)livestation\\.com$\n(^|\\.)livestream\\.com$\n(^|\\.)livevideo\\.com$\n(^|\\.)livingonline\\.us$\n(^|\\.)livingstream\\.com$\n(^|\\.)liwangyang\\.com$\n(^|\\.)lizhizhuangbi\\.com$\n(^|\\.)lkcn\\.net$\n(^|\\.)llss\\.me$\n(^|\\.)load\\.to$\n(^|\\.)lobsangwangyal\\.com$\n(^|\\.)localbitcoins\\.com$\n(^|\\.)localdomain\\.ws$\n(^|\\.)localpresshk\\.com$\n(^|\\.)lockestek\\.com$\n(^|\\.)logbot\\.net$\n(^|\\.)login\\.target\\.com$\n(^|\\.)logiqx\\.com$\n(^|\\.)londonchinese\\.ca$\n(^|\\.)longhair\\.hk$\n(^|\\.)longmusic\\.com$\n(^|\\.)longtermly\\.net$\n(^|\\.)longtoes\\.com$\n(^|\\.)lookpic\\.com$\n(^|\\.)looktoronto\\.com$\n(^|\\.)lotsawahouse\\.org$\n(^|\\.)lotuslight\\.org\\.hk$\n(^|\\.)lotuslight\\.org\\.tw$\n(^|\\.)lovetvshow\\.com$\n(^|\\.)lpsg\\.com$\n(^|\\.)lrfz\\.com$\n(^|\\.)lrip\\.org$\n(^|\\.)lsd\\.org\\.hk$\n(^|\\.)lsforum\\.net$\n(^|\\.)lsmchinese\\.org$\n(^|\\.)lsmkorean\\.org$\n(^|\\.)lsm\\.org$\n(^|\\.)lsmradio\\.com$\n(^|\\.)lsmwebcast\\.com$\n(^|\\.)lsxszzg\\.com$\n(^|\\.)ltn\\.com\\.tw$\n(^|\\.)luke54\\.com$\n(^|\\.)luke54\\.org$\n(^|\\.)lupm\\.org$\n(^|\\.)lushstories\\.com$\n(^|\\.)luxebc\\.com$\n(^|\\.)lvhai\\.org$\n(^|\\.)lvv2\\.com$\n(^|\\.)lyfhk\\.net$\n(^|\\.)lzmtnews\\.org$\n(^|\\.)macgamestore\\.com$\n(^|\\.)macrovpn\\.com$\n(^|\\.)macts\\.com\\.tw$\n(^|\\.)mad-ar\\.ch$\n(^|\\.)madewithcode\\.com$\n(^|\\.)madonna-av\\.com$\n(^|\\.)madrau\\.com$\n(^|\\.)madthumbs\\.com$\n(^|\\.)magazines\\.sina\\.com\\.tw$\n(^|\\.)magic-net\\.info$\n(^|\\.)mahabodhi\\.org$\n(^|\\.)ma\\.hao123\\.com$\n(^|\\.)maiio\\.net$\n(^|\\.)mail-archive\\.com$\n(^|\\.)maildns\\.xyz$\n(^|\\.)maiplus\\.com$\n(^|\\.)maizhong\\.org$\n(^|\\.)makemymood\\.com$\n(^|\\.)makkahnewspaper\\.com$\n(^|\\.)makzhou\\.warehouse333\\.com$\n(^|\\.)malaysiakini\\.com$\n(^|\\.)mamingzhe\\.com$\n(^|\\.)manchukuo\\.net$\n(^|\\.)mangafox\\.com$\n(^|\\.)mangafox\\.me$\n(^|\\.)maniash\\.com$\n(^|\\.)manicur4ik\\.ru$\n(^|\\.)mansion\\.com$\n(^|\\.)mansionpoker\\.com$\n(^|\\.)manta\\.com$\n(^|\\.)maplew\\.com$\n(^|\\.)marc\\.info$\n(^|\\.)marguerite\\.su$\n(^|\\.)martau\\.com$\n(^|\\.)martincartoons\\.com$\n(^|\\.)martsangkagyuofficial\\.org$\n(^|\\.)maruta\\.be$\n(^|\\.)marxist\\.com$\n(^|\\.)marxist\\.net$\n(^|\\.)marxists\\.org$\n(^|\\.)mash\\.to$\n(^|\\.)maskedip\\.com$\n(^|\\.)mastodon\\.cloud$\n(^|\\.)mastodon\\.host$\n(^|\\.)mastodon\\.social$\n(^|\\.)matainja\\.com$\n(^|\\.)material\\.io$\n(^|\\.)mathable\\.io$\n(^|\\.)mathiew-badimon\\.com$\n(^|\\.)matome-plus\\.com$\n(^|\\.)matome-plus\\.net$\n(^|\\.)matsushimakaede\\.com$\n(^|\\.)matters\\.news$\n(^|\\.)mattwilcox\\.net$\n(^|\\.)maturejp\\.com$\n(^|\\.)maxing\\.jp$\n(^|\\.)mayimayi\\.com$\n(^|\\.)mcadforums\\.com$\n(^|\\.)mcaf\\.ee$\n(^|\\.)mcfog\\.com$\n(^|\\.)mcreasite\\.com$\n(^|\\.)md-t\\.org$\n(^|\\.)meansys\\.com$\n(^|\\.)mediachinese\\.com$\n(^|\\.)mediafire\\.com$\n(^|\\.)mediafreakcity\\.com$\n(^|\\.)media\\.nu\\.nl$\n(^|\\.)media\\.org\\.hk$\n(^|\\.)medium\\.com$\n(^|\\.)meetav\\.com$\n(^|\\.)meetup\\.com$\n(^|\\.)mefeedia\\.com$\n(^|\\.)mefound\\.com$\n(^|\\.)mega\\.nz$\n(^|\\.)megaproxy\\.com$\n(^|\\.)megarotic\\.com$\n(^|\\.)megavideo\\.com$\n(^|\\.)megurineluka\\.com$\n(^|\\.)meirixiaochao\\.com$\n(^|\\.)meltoday\\.com$\n(^|\\.)me\\.me$\n(^|\\.)memehk\\.com$\n(^|\\.)meme\\.yahoo\\.com$\n(^|\\.)memorybbs\\.com$\n(^|\\.)memrijttm\\.org$\n(^|\\.)memri\\.org$\n(^|\\.)mercatox\\.com$\n(^|\\.)mercyprophet\\.org$\n(^|\\.)mergersandinquisitions\\.org$\n(^|\\.)meridian-trust\\.org$\n(^|\\.)meripet\\.biz$\n(^|\\.)meripet\\.com$\n(^|\\.)merit-times\\.com\\.tw$\n(^|\\.)meshrep\\.com$\n(^|\\.)mesotw\\.com$\n(^|\\.)messenger\\.com$\n(^|\\.)metacafe\\.com$\n(^|\\.)metart\\.com$\n(^|\\.)metarthunter\\.com$\n(^|\\.)meteorshowersonline\\.com$\n(^|\\.)metrohk\\.com\\.hk$\n(^|\\.)metrolife\\.ca$\n(^|\\.)metroradio\\.com\\.hk$\n(^|\\.)meyou\\.jp$\n(^|\\.)me\\.youthwant\\.com\\.tw$\n(^|\\.)meyul\\.com$\n(^|\\.)mfxmedia\\.com$\n(^|\\.)mgoon\\.com$\n(^|\\.)mgstage\\.com$\n(^|\\.)mh4u\\.org$\n(^|\\.)m\\.hkgalden\\.com$\n(^|\\.)mhradio\\.org$\n(^|\\.)michaelanti\\.com$\n(^|\\.)michaelmarketl\\.com$\n(^|\\.)microvpn\\.com$\n(^|\\.)middle-way\\.net$\n(^|\\.)mihk\\.hk$\n(^|\\.)mihr\\.com$\n(^|\\.)mihua\\.org$\n(^|\\.)mike\\.cz\\.cc$\n(^|\\.)mikesoltys\\.com$\n(^|\\.)milph\\.net$\n(^|\\.)milsurps\\.com$\n(^|\\.)mimiai\\.net$\n(^|\\.)mimivip\\.com$\n(^|\\.)mimivv\\.com$\n(^|\\.)mindrolling\\.org$\n(^|\\.)minghui-a\\.org$\n(^|\\.)minghui-b\\.org$\n(^|\\.)minghui\\.org$\n(^|\\.)minghui\\.or\\.kr$\n(^|\\.)minghui-school\\.org$\n(^|\\.)minghuiyw\\.wordpress\\.com$\n(^|\\.)mingjinglishi\\.com$\n(^|\\.)mingjingnews\\.com$\n(^|\\.)mingjingtimes\\.com$\n(^|\\.)mingpaocanada\\.com$\n(^|\\.)mingpao\\.com$\n(^|\\.)mingpaomonthly\\.com$\n(^|\\.)mingpaonews\\.com$\n(^|\\.)mingpaony\\.com$\n(^|\\.)mingpaosf\\.com$\n(^|\\.)mingpaotor\\.com$\n(^|\\.)mingpaovan\\.com$\n(^|\\.)mingshengbao\\.com$\n(^|\\.)minhhue\\.net$\n(^|\\.)miniforum\\.org$\n(^|\\.)ministrybooks\\.org$\n(^|\\.)minzhuhua\\.net$\n(^|\\.)minzhuzhanxian\\.com$\n(^|\\.)minzhuzhongguo\\.org$\n(^|\\.)miroguide\\.com$\n(^|\\.)mirrorbooks\\.com$\n(^|\\.)mist\\.vip$\n(^|\\.)mitao\\.com\\.tw$\n(^|\\.)mitbbsau\\.com$\n(^|\\.)mitbbs\\.com$\n(^|\\.)mixero\\.com$\n(^|\\.)mixpod\\.com$\n(^|\\.)mixx\\.com$\n(^|\\.)mizzmona\\.com$\n(^|\\.)mjib\\.gov\\.tw$\n(^|\\.)mjlsh\\.usc\\.cuhk\\.edu\\.hk$\n(^|\\.)mk5000\\.com$\n(^|\\.)mlcool\\.com$\n(^|\\.)mlzs\\.work$\n(^|\\.)mmaaxx\\.com$\n(^|\\.)mm-cg\\.com$\n(^|\\.)m\\.me$\n(^|\\.)mmmca\\.com$\n(^|\\.)mnewstv\\.com$\n(^|\\.)mobatek\\.net$\n(^|\\.)mobile01\\.com$\n(^|\\.)mobileways\\.de$\n(^|\\.)mobypicture\\.com$\n(^|\\.)moby\\.to$\n(^|\\.)moeaic\\.gov\\.tw$\n(^|\\.)moeerolibrary\\.com$\n(^|\\.)mofa\\.gov\\.tw$\n(^|\\.)mofaxiehui\\.com$\n(^|\\.)mofos\\.com$\n(^|\\.)mog\\.com$\n(^|\\.)mohu\\.club$\n(^|\\.)mohu\\.ml$\n(^|\\.)mojim\\.com$\n(^|\\.)mol\\.gov\\.tw$\n(^|\\.)molihua\\.org$\n(^|\\.)mondex\\.org$\n(^|\\.)moneyhome\\.biz$\n(^|\\.)money-link\\.com\\.tw$\n(^|\\.)mo\\.nightlife141\\.com$\n(^|\\.)monitorchina\\.org$\n(^|\\.)monster\\.com$\n(^|\\.)moodyz\\.com$\n(^|\\.)moonbbs\\.com$\n(^|\\.)moonbingo\\.com$\n(^|\\.)morningsun\\.org$\n(^|\\.)moroneta\\.com$\n(^|\\.)mos\\.ru$\n(^|\\.)motherless\\.com$\n(^|\\.)motiyun\\.com$\n(^|\\.)motor4ik\\.ru$\n(^|\\.)mousebreaker\\.com$\n(^|\\.)movements\\.org$\n(^|\\.)moviefap\\.com$\n(^|\\.)mp3buscador\\.com$\n(^|\\.)mp3ye\\.eu$\n(^|\\.)mpettis\\.com$\n(^|\\.)mpfinance\\.com$\n(^|\\.)mpinews\\.com$\n(^|\\.)m\\.plixi\\.com$\n(^|\\.)mponline\\.hk$\n(^|\\.)mqxd\\.org$\n(^|\\.)mrbasic\\.com$\n(^|\\.)mrbonus\\.com$\n(^|\\.)mrface\\.com$\n(^|\\.)mrslove\\.com$\n(^|\\.)mrtweet\\.com$\n(^|\\.)msa-it\\.org$\n(^|\\.)msguancha\\.com$\n(^|\\.)msha\\.gov$\n(^|\\.)m\\.slandr\\.net$\n(^|\\.)mswe1\\.org$\n(^|\\.)m-team\\.cc$\n(^|\\.)mthruf\\.com$\n(^|\\.)mtw\\.tl$\n(^|\\.)muchosucko\\.com$\n(^|\\.)mullvad\\.net$\n(^|\\.)multiply\\.com$\n(^|\\.)multiproxy\\.org$\n(^|\\.)multiupload\\.com$\n(^|\\.)mummysgold\\.com$\n(^|\\.)murmur\\.tw$\n(^|\\.)musicade\\.net$\n(^|\\.)muslimvideo\\.com$\n(^|\\.)muzi\\.com$\n(^|\\.)muzi\\.net$\n(^|\\.)muzu\\.tv$\n(^|\\.)mvdis\\.gov\\.tw$\n(^|\\.)mvg\\.jp$\n(^|\\.)mx981\\.com$\n(^|\\.)mx\\.hao123\\.com$\n(^|\\.)my03\\.com$\n(^|\\.)myactimes\\.com$\n(^|\\.)myanniu\\.com$\n(^|\\.)myaudiocast\\.com$\n(^|\\.)myav\\.com\\.tw$\n(^|\\.)mybbs\\.us$\n(^|\\.)mybet\\.com$\n(^|\\.)myca168\\.com$\n(^|\\.)mycanadanow\\.com$\n(^|\\.)mychinamyhome\\.com$\n(^|\\.)mychinanet\\.com$\n(^|\\.)mychinanews\\.com$\n(^|\\.)mychinese\\.news$\n(^|\\.)mycnnews\\.com$\n(^|\\.)mycould\\.com$\n(^|\\.)mydad\\.info$\n(^|\\.)myddns\\.com$\n(^|\\.)myeasytv\\.com$\n(^|\\.)myeclipseide\\.com$\n(^|\\.)my-formosa\\.com$\n(^|\\.)myforum\\.com\\.hk$\n(^|\\.)myforum\\.com\\.uk$\n(^|\\.)myfreecams\\.com$\n(^|\\.)myfreepaysite\\.com$\n(^|\\.)myfreshnet\\.com$\n(^|\\.)myftp\\.info$\n(^|\\.)myftp\\.name$\n(^|\\.)myiphide\\.com$\n(^|\\.)mykomica\\.org$\n(^|\\.)mylftv\\.com$\n(^|\\.)my\\.mail\\.ru$\n(^|\\.)mymediarom\\.com$\n(^|\\.)mymoe\\.moe$\n(^|\\.)mymom\\.info$\n(^|\\.)mymusic\\.net\\.tw$\n(^|\\.)mynetav\\.net$\n(^|\\.)mynetav\\.org$\n(^|\\.)mynumber\\.org$\n(^|\\.)my\\.opera\\.com$\n(^|\\.)myparagliding\\.com$\n(^|\\.)my\\.pcloud\\.com$\n(^|\\.)mypicture\\.info$\n(^|\\.)mypop3\\.net$\n(^|\\.)mypop3\\.org$\n(^|\\.)mypopescu\\.com$\n(^|\\.)my-private-network\\.co\\.uk$\n(^|\\.)my-proxy\\.com$\n(^|\\.)myradio\\.hk$\n(^|\\.)myreadingmanga\\.info$\n(^|\\.)mysecondarydns\\.com$\n(^|\\.)myshare\\.url\\.com\\.tw$\n(^|\\.)mysinablog\\.com$\n(^|\\.)mysite\\.verizon\\.net$\n(^|\\.)myspacecdn\\.com$\n(^|\\.)myspace\\.com$\n(^|\\.)mytalkbox\\.com$\n(^|\\.)mytizi\\.com$\n(^|\\.)mywww\\.biz$\n(^|\\.)myz\\.info$\n(^|\\.)naacoalition\\.org$\n(^|\\.)naitik\\.net$\n(^|\\.)nakido\\.com$\n(^|\\.)nakuz\\.com$\n(^|\\.)nalandabodhi\\.org$\n(^|\\.)nalandawest\\.org$\n(^|\\.)namgyalmonastery\\.org$\n(^|\\.)namgyal\\.org$\n(^|\\.)namsisi\\.com$\n(^|\\.)nanyang\\.com$\n(^|\\.)nanyangpost\\.com$\n(^|\\.)nanzao\\.com$\n(^|\\.)naol\\.ca$\n(^|\\.)naol\\.cc$\n(^|\\.)nat\\.gov\\.tw$\n(^|\\.)national-lottery\\.co\\.uk$\n(^|\\.)nationsonline\\.org$\n(^|\\.)nationwide\\.com$\n(^|\\.)nat\\.moe$\n(^|\\.)naughtyamerica\\.com$\n(^|\\.)navyfamily\\.navy\\.mil$\n(^|\\.)navyreserve\\.navy\\.mil$\n(^|\\.)naweeklytimes\\.com$\n(^|\\.)nbtvpn\\.com$\n(^|\\.)nccwatch\\.org\\.tw$\n(^|\\.)nch\\.com\\.tw$\n(^|\\.)ncn\\.org$\n(^|\\.)nde\\.de$\n(^|\\.)ndr\\.de$\n(^|\\.)ned\\.org$\n(^|\\.)nekoslovakia\\.net$\n(^|\\.)nemesis2\\.qx\\.net$\n(^|\\.)neo-miracle\\.com$\n(^|\\.)nepusoku\\.com$\n(^|\\.)netbirds\\.com$\n(^|\\.)netcolony\\.com$\n(^|\\.)net-fits\\.pro$\n(^|\\.)netflix\\.com$\n(^|\\.)netme\\.cc$\n(^|\\.)netsneak\\.com$\n(^|\\.)network54\\.com$\n(^|\\.)networkedblogs\\.com$\n(^|\\.)networktunnel\\.net$\n(^|\\.)neverforget8964\\.org$\n(^|\\.)new-3lunch\\.net$\n(^|\\.)new96\\.ca$\n(^|\\.)new-akiba\\.com$\n(^|\\.)newcenturymc\\.com$\n(^|\\.)newcenturynews\\.com$\n(^|\\.)newchen\\.com$\n(^|\\.)newgrounds\\.com$\n(^|\\.)newipnow\\.com$\n(^|\\.)newlandmagazine\\.com\\.au$\n(^|\\.)newnews\\.ca$\n(^|\\.)news100\\.com\\.tw$\n(^|\\.)newsancai\\.com$\n(^|\\.)newschinacomment\\.org$\n(^|\\.)newscn\\.org$\n(^|\\.)news\\.cnyes\\.com$\n(^|\\.)newsdetox\\.ca$\n(^|\\.)newsdh\\.com$\n(^|\\.)news\\.hk\\.msn\\.com$\n(^|\\.)news\\.hkpeanut\\.com$\n(^|\\.)news\\.msn\\.com\\.tw$\n(^|\\.)news\\.nationalgeographic\\.com$\n(^|\\.)news\\.now\\.com$\n(^|\\.)news\\.omy\\.sg$\n(^|\\.)newspeak\\.cc$\n(^|\\.)news\\.seehua\\.com$\n(^|\\.)news\\.sina\\.com\\.hk$\n(^|\\.)news\\.sina\\.com\\.tw$\n(^|\\.)news\\.sinchew\\.com\\.my$\n(^|\\.)news\\.singtao\\.ca$\n(^|\\.)newstamago\\.com$\n(^|\\.)newstapa\\.org$\n(^|\\.)newstarnet\\.com$\n(^|\\.)news\\.tvb\\.com$\n(^|\\.)news\\.tvbs\\.com\\.tw$\n(^|\\.)news\\.yahoo\\.com$\n(^|\\.)newtaiwan\\.com\\.tw$\n(^|\\.)newtalk\\.tw$\n(^|\\.)newyorktimes\\.com$\n(^|\\.)nexon\\.com$\n(^|\\.)next11\\.co\\.jp$\n(^|\\.)nextmag\\.com\\.tw$\n(^|\\.)nextmedia\\.com$\n(^|\\.)nexton-net\\.jp$\n(^|\\.)nexttv\\.com\\.tw$\n(^|\\.)nf\\.id\\.au$\n(^|\\.)nfjtyd\\.com$\n(^|\\.)nflxext\\.com$\n(^|\\.)nflximg\\.com$\n(^|\\.)nflximg\\.net$\n(^|\\.)nflxso\\.net$\n(^|\\.)nflxvideo\\.net$\n(^|\\.)nga\\.mil$\n(^|\\.)ngensis\\.com$\n(^|\\.)nhentai\\.net$\n(^|\\.)nhi\\.gov\\.tw$\n(^|\\.)nhk-ondemand\\.jp$\n(^|\\.)nic\\.cz\\.cc$\n(^|\\.)nic\\.google$\n(^|\\.)nic\\.gov$\n(^|\\.)nicovideo\\.jp$\n(^|\\.)nighost\\.org$\n(^|\\.)nikkei\\.com$\n(^|\\.)ninecommentaries\\.com$\n(^|\\.)ninjacloak\\.com$\n(^|\\.)ninjaproxy\\.ninja$\n(^|\\.)nintendium\\.com$\n(^|\\.)ninth\\.biz$\n(^|\\.)niu\\.moe$\n(^|\\.)niusnews\\.com$\n(^|\\.)njactb\\.org$\n(^|\\.)njuice\\.com$\n(^|\\.)nko\\.navy\\.mil$\n(^|\\.)nlfreevpn\\.com$\n(^|\\.)nobelprize\\.org$\n(^|\\.)nobel\\.se$\n(^|\\.)nobodycanstop\\.us$\n(^|\\.)nofile\\.io$\n(^|\\.)no-ip\\.org$\n(^|\\.)nokogiri\\.org$\n(^|\\.)nokola\\.com$\n(^|\\.)noodlevpn\\.com$\n(^|\\.)norbulingka\\.org$\n(^|\\.)nordstrom\\.com$\n(^|\\.)nordstromimage\\.com$\n(^|\\.)nordstromrack\\.com$\n(^|\\.)nordvpn\\.com$\n(^|\\.)notify\\.dropboxapi\\.com$\n(^|\\.)nottinghampost\\.com$\n(^|\\.)novelasia\\.com$\n(^|\\.)now\\.com$\n(^|\\.)now\\.im$\n(^|\\.)nownews\\.com$\n(^|\\.)nowtorrents\\.com$\n(^|\\.)noypf\\.com$\n(^|\\.)npa\\.go\\.jp$\n(^|\\.)npa\\.gov\\.tw$\n(^|\\.)npnt\\.me$\n(^|\\.)npsboost\\.com$\n(^|\\.)nps\\.gov$\n(^|\\.)nradio\\.me$\n(^|\\.)nrk\\.no$\n(^|\\.)ns01\\.biz$\n(^|\\.)ns01\\.info$\n(^|\\.)ns01\\.us$\n(^|\\.)ns02\\.biz$\n(^|\\.)ns02\\.info$\n(^|\\.)ns02\\.us$\n(^|\\.)ns1\\.name$\n(^|\\.)ns2\\.name$\n(^|\\.)ns3\\.name$\n(^|\\.)nsc\\.gov\\.tw$\n(^|\\.)ntbk\\.gov\\.tw$\n(^|\\.)ntbna\\.gov\\.tw$\n(^|\\.)ntbt\\.gov\\.tw$\n(^|\\.)ntd\\.tv$\n(^|\\.)ntdtv\\.ca$\n(^|\\.)ntdtv\\.co\\.kr$\n(^|\\.)ntdtv\\.com$\n(^|\\.)ntdtv\\.cz$\n(^|\\.)ntdtvla\\.com$\n(^|\\.)ntdtv\\.org$\n(^|\\.)ntdtv\\.ru$\n(^|\\.)ntrfun\\.com$\n(^|\\.)ntsna\\.gov\\.tw$\n(^|\\.)nubiles\\.net$\n(^|\\.)nuexpo\\.com$\n(^|\\.)nukistream\\.com$\n(^|\\.)nurgo-software\\.com$\n(^|\\.)nusatrip\\.com$\n(^|\\.)nutaku\\.net$\n(^|\\.)nuuvem\\.com$\n(^|\\.)nuvid\\.com$\n(^|\\.)nuzcom\\.com$\n(^|\\.)nvdst\\.com$\n(^|\\.)nvquan\\.org$\n(^|\\.)nvtongzhisheng\\.org$\n(^|\\.)nwtca\\.org$\n(^|\\.)nyaa\\.eu$\n(^|\\.)nyaa\\.si$\n(^|\\.)nydus\\.ca$\n(^|\\.)nylon-angel\\.com$\n(^|\\.)nylonstockingsonline\\.com$\n(^|\\.)ny\\.stgloballink\\.com$\n(^|\\.)nytchina\\.com$\n(^|\\.)nytcn\\.me$\n(^|\\.)nytco\\.com$\n(^|\\.)nyt\\.com$\n(^|\\.)nytimes\\.com$\n(^|\\.)nytimes\\.map\\.fastly\\.net$\n(^|\\.)nytimg\\.com$\n(^|\\.)nyti\\.ms$\n(^|\\.)nytstyle\\.com$\n(^|\\.)ny\\.visiontimes\\.com$\n(^|\\.)nzchinese\\.com$\n(^|\\.)nzchinese\\.net\\.nz$\n(^|\\.)observechina\\.net$\n(^|\\.)obutu\\.com$\n(^|\\.)ocaspro\\.com$\n(^|\\.)occupytiananmen\\.com$\n(^|\\.)oclp\\.hk$\n(^|\\.)ocreampies\\.com$\n(^|\\.)ocry\\.com$\n(^|\\.)october-review\\.org$\n(^|\\.)oculuscdn\\.com$\n(^|\\.)oculus\\.com$\n(^|\\.)oex\\.com$\n(^|\\.)offbeatchina\\.com$\n(^|\\.)officeoftibet\\.com$\n(^|\\.)ofile\\.org$\n(^|\\.)ogaoga\\.org$\n(^|\\.)ogate\\.org$\n(^|\\.)oikos\\.com\\.tw$\n(^|\\.)oiktv\\.com$\n(^|\\.)oizoblog\\.com$\n(^|\\.)okayfreedom\\.com$\n(^|\\.)okex\\.com$\n(^|\\.)okk\\.tw$\n(^|\\.)ok\\.ru$\n(^|\\.)old-cat\\.net$\n(^|\\.)old\\.honeynet\\.org$\n(^|\\.)old\\.nabble\\.com$\n(^|\\.)olumpo\\.com$\n(^|\\.)olympicwatch\\.org$\n(^|\\.)omgili\\.com$\n(^|\\.)omni7\\.jp$\n(^|\\.)omnitalk\\.com$\n(^|\\.)omnitalk\\.org$\n(^|\\.)on2\\.com$\n(^|\\.)onapp\\.com$\n(^|\\.)on\\.cc$\n(^|\\.)onedrive\\.live\\.com$\n(^|\\.)onedumb\\.com$\n(^|\\.)onejav\\.com$\n(^|\\.)onion\\.city$\n(^|\\.)onlinecha\\.com$\n(^|\\.)online\\.recoveryversion\\.org$\n(^|\\.)onlineyoutube\\.com$\n(^|\\.)onlytweets\\.com$\n(^|\\.)onmoon\\.com$\n(^|\\.)onmoon\\.net$\n(^|\\.)onmypc\\.biz$\n(^|\\.)onmypc\\.info$\n(^|\\.)onmypc\\.net$\n(^|\\.)onmypc\\.org$\n(^|\\.)onmypc\\.us$\n(^|\\.)onthehunt\\.com$\n(^|\\.)ontrac\\.com$\n(^|\\.)oopsforum\\.com$\n(^|\\.)openallweb\\.com$\n(^|\\.)open\\.com\\.hk$\n(^|\\.)opendemocracy\\.net$\n(^|\\.)opendn\\.xyz$\n(^|\\.)openervpn\\.in$\n(^|\\.)openid\\.net$\n(^|\\.)openleaks\\.org$\n(^|\\.)openvpn\\.net$\n(^|\\.)openvpn\\.org$\n(^|\\.)openwebster\\.com$\n(^|\\.)openwrt\\.org\\.cn$\n(^|\\.)opml\\.radiotime\\.com$\n(^|\\.)opus-gaming\\.com$\n(^|\\.)organcare\\.org\\.tw$\n(^|\\.)organharvestinvestigation\\.net$\n(^|\\.)organiccrap\\.com$\n(^|\\.)orgasm\\.com$\n(^|\\.)orgfree\\.com$\n(^|\\.)orientaldaily\\.com\\.my$\n(^|\\.)orient-doll\\.com$\n(^|\\.)orn\\.jp$\n(^|\\.)orzistic\\.org$\n(^|\\.)osfoora\\.com$\n(^|\\.)otcbtc\\.com$\n(^|\\.)otnd\\.org$\n(^|\\.)otto\\.de$\n(^|\\.)otzo\\.com$\n(^|\\.)ourdearamy\\.com$\n(^|\\.)ourhobby\\.com$\n(^|\\.)oursogo\\.com$\n(^|\\.)oursteps\\.com\\.au$\n(^|\\.)oursweb\\.net$\n(^|\\.)ourtv\\.hk$\n(^|\\.)overplay\\.net$\n(^|\\.)oversea\\.istarshine\\.com$\n(^|\\.)owl\\.li$\n(^|\\.)ow\\.ly$\n(^|\\.)oyax\\.com$\n(^|\\.)oyghan\\.com$\n(^|\\.)ozchinese\\.com$\n(^|\\.)ozvoice\\.org$\n(^|\\.)ozxw\\.com$\n(^|\\.)ozyoyo\\.com$\n(^|\\.)pachosting\\.com$\n(^|\\.)pacificpoker\\.com$\n(^|\\.)packages\\.debian\\.org$\n(^|\\.)packetix\\.net$\n(^|\\.)pacopacomama\\.com$\n(^|\\.)padmanet\\.com$\n(^|\\.)page2rss\\.com$\n(^|\\.)page\\.bid\\.yahoo\\.com$\n(^|\\.)pagodabox\\.com$\n(^|\\.)palacemoon\\.com$\n(^|\\.)paldengyal\\.com$\n(^|\\.)paljorpublications\\.com$\n(^|\\.)paltalk\\.com$\n(^|\\.)panamapapers\\.sueddeutsche\\.de$\n(^|\\.)pandapow\\.co$\n(^|\\.)pandapow\\.net$\n(^|\\.)pandavpn-jp\\.com$\n(^|\\.)pandora\\.com$\n(^|\\.)pandora\\.tv$\n(^|\\.)panluan\\.net$\n(^|\\.)panoramio\\.com$\n(^|\\.)pao-pao\\.net$\n(^|\\.)paperb\\.us$\n(^|\\.)paper\\.li$\n(^|\\.)paradisehill\\.cc$\n(^|\\.)paradisepoker\\.com$\n(^|\\.)parkansky\\.com$\n(^|\\.)partycasino\\.com$\n(^|\\.)partypoker\\.com$\n(^|\\.)passion\\.com$\n(^|\\.)passiontimes\\.hk$\n(^|\\.)pastebin\\.com$\n(^|\\.)paste\\.ee$\n(^|\\.)pastie\\.org$\n(^|\\.)pbs\\.org$\n(^|\\.)pbwiki\\.com$\n(^|\\.)pbworks\\.com$\n(^|\\.)pbxes\\.com$\n(^|\\.)pbxes\\.org$\n(^|\\.)pcanywhere\\.net$\n(^|\\.)pcc\\.gov\\.tw$\n(^|\\.)pcdvd\\.com\\.tw$\n(^|\\.)pchome\\.com\\.tw$\n(^|\\.)pcij\\.org$\n(^|\\.)pcstore\\.com\\.tw$\n(^|\\.)pct\\.org\\.tw$\n(^|\\.)pdetails\\.com$\n(^|\\.)pdproxy\\.com$\n(^|\\.)pds\\.nasa\\.gov$\n(^|\\.)peace\\.ca$\n(^|\\.)peacefire\\.org$\n(^|\\.)peacehall\\.com$\n(^|\\.)pearlher\\.org$\n(^|\\.)peeasian\\.com$\n(^|\\.)pekingduck\\.org$\n(^|\\.)pemulihan\\.or\\.id$\n(^|\\.)penchinese\\.com$\n(^|\\.)penchinese\\.net$\n(^|\\.)pengyulong\\.com$\n(^|\\.)pen\\.io$\n(^|\\.)penisbot\\.com$\n(^|\\.)penthouse\\.com$\n(^|\\.)pentoy\\.hk$\n(^|\\.)peoplebookcafe\\.com$\n(^|\\.)peoplenews\\.tw$\n(^|\\.)peopo\\.org$\n(^|\\.)percy\\.in$\n(^|\\.)perfectgirls\\.net$\n(^|\\.)perfectvpn\\.net$\n(^|\\.)periscope\\.tv$\n(^|\\.)persecutionblog\\.com$\n(^|\\.)persiankitty\\.com$\n(^|\\.)pfd\\.org\\.hk$\n(^|\\.)phapluan\\.org$\n(^|\\.)phayul\\.com$\n(^|\\.)philborges\\.com$\n(^|\\.)philly\\.com$\n(^|\\.)phmsociety\\.org$\n(^|\\.)phncdn\\.com$\n(^|\\.)phobos\\.apple\\.com$\n(^|\\.)phosphation13\\.rssing\\.com$\n(^|\\.)photodharma\\.net$\n(^|\\.)photofocus\\.com$\n(^|\\.)phuquocservices\\.com$\n(^|\\.)picacomiccn\\.com$\n(^|\\.)picacomic\\.com$\n(^|\\.)picasaweb\\.com$\n(^|\\.)picidae\\.net$\n(^|\\.)picturedip\\.com$\n(^|\\.)picturesocial\\.com$\n(^|\\.)pictures\\.playboy\\.com$\n(^|\\.)pimg\\.tw$\n(^|\\.)pin6\\.com$\n(^|\\.)pin-cong\\.com$\n(^|\\.)pincong\\.rocks$\n(^|\\.)ping\\.fm$\n(^|\\.)pinimg\\.com$\n(^|\\.)pinkrod\\.com$\n(^|\\.)pinoy-n\\.com$\n(^|\\.)pinterest\\.at$\n(^|\\.)pinterest\\.ca$\n(^|\\.)pinterest\\.co\\.kr$\n(^|\\.)pinterest\\.com$\n(^|\\.)pinterest\\.co\\.uk$\n(^|\\.)pinterest\\.de$\n(^|\\.)pinterest\\.dk$\n(^|\\.)pinterest\\.fr$\n(^|\\.)pinterest\\.jp$\n(^|\\.)pinterest\\.nl$\n(^|\\.)pinterest\\.se$\n(^|\\.)pioneer-worker\\.forums-free\\.com$\n(^|\\.)pipii\\.tv$\n(^|\\.)piposay\\.com$\n(^|\\.)piraattilahti\\.org$\n(^|\\.)piring\\.com$\n(^|\\.)pixelqi\\.com$\n(^|\\.)pixiv\\.net$\n(^|\\.)pixnet\\.net$\n(^|\\.)pk\\.com$\n(^|\\.)pki\\.goog$\n(^|\\.)placemix\\.com$\n(^|\\.)playboy\\.com$\n(^|\\.)playboyplus\\.com$\n(^|\\.)player\\.fm$\n(^|\\.)playno1\\.com$\n(^|\\.)playpcesor\\.com$\n(^|\\.)plays\\.com\\.tw$\n(^|\\.)plm\\.org\\.hk$\n(^|\\.)plunder\\.com$\n(^|\\.)plurk\\.com$\n(^|\\.)plus28\\.com$\n(^|\\.)plusbb\\.com$\n(^|\\.)plus\\.codes$\n(^|\\.)pmatehunter\\.com$\n(^|\\.)pmates\\.com$\n(^|\\.)po2b\\.com$\n(^|\\.)pobieramy\\.top$\n(^|\\.)podictionary\\.com$\n(^|\\.)pokerstars\\.com$\n(^|\\.)pokerstars\\.net$\n(^|\\.)politicalchina\\.org$\n(^|\\.)politicalconsultation\\.org$\n(^|\\.)politiscales\\.net$\n(^|\\.)poloniex\\.com$\n(^|\\.)polymerhk\\.com$\n(^|\\.)polymer-project\\.org$\n(^|\\.)popo\\.tw$\n(^|\\.)popvote\\.hk$\n(^|\\.)popyard\\.com$\n(^|\\.)popyard\\.org$\n(^|\\.)porn2\\.com$\n(^|\\.)porn5\\.com$\n(^|\\.)pornbase\\.org$\n(^|\\.)porn\\.com$\n(^|\\.)pornerbros\\.com$\n(^|\\.)pornhd\\.com$\n(^|\\.)pornhost\\.com$\n(^|\\.)pornhub\\.com$\n(^|\\.)pornhubdeutsch\\.net$\n(^|\\.)pornmm\\.net$\n(^|\\.)pornoxo\\.com$\n(^|\\.)pornrapidshare\\.com$\n(^|\\.)pornsharing\\.com$\n(^|\\.)pornsocket\\.com$\n(^|\\.)pornstarclub\\.com$\n(^|\\.)porntube\\.com$\n(^|\\.)porntubenews\\.com$\n(^|\\.)porntvblog\\.com$\n(^|\\.)pornvisit\\.com$\n(^|\\.)port25\\.biz$\n(^|\\.)portablevpn\\.nl$\n(^|\\.)poskotanews\\.com$\n(^|\\.)post01\\.com$\n(^|\\.)post76\\.com$\n(^|\\.)post852\\.com$\n(^|\\.)postadult\\.com$\n(^|\\.)postimg\\.org$\n(^|\\.)potato\\.im$\n(^|\\.)potvpn\\.com$\n(^|\\.)powerapple\\.com$\n(^|\\.)power\\.com$\n(^|\\.)powercx\\.com$\n(^|\\.)powerphoto\\.org$\n(^|\\.)prayforchina\\.net$\n(^|\\.)premeforwindows7\\.com$\n(^|\\.)premproxy\\.com$\n(^|\\.)presentationzen\\.com$\n(^|\\.)presidentlee\\.tw$\n(^|\\.)prestige-av\\.com$\n(^|\\.)pride\\.google$\n(^|\\.)prism-break\\.org$\n(^|\\.)prisoneralert\\.com$\n(^|\\.)pritunl\\.com$\n(^|\\.)privacybox\\.de$\n(^|\\.)private\\.com$\n(^|\\.)privateinternetaccess\\.com$\n(^|\\.)privatepaste\\.com$\n(^|\\.)privatetunnel\\.com$\n(^|\\.)privatevpn\\.com$\n(^|\\.)procopytips\\.com$\n(^|\\.)prosiben\\.de$\n(^|\\.)protonvpn\\.com$\n(^|\\.)provideocoalition\\.com$\n(^|\\.)provpnaccounts\\.com$\n(^|\\.)proxfree\\.com$\n(^|\\.)proxifier\\.com$\n(^|\\.)proxomitron\\.info$\n(^|\\.)proxpn\\.com$\n(^|\\.)proxyanonimo\\.es$\n(^|\\.)proxydns\\.com$\n(^|\\.)proxylist\\.org\\.uk$\n(^|\\.)proxynetwork\\.org\\.uk$\n(^|\\.)proxypy\\.net$\n(^|\\.)proxyroad\\.com$\n(^|\\.)proxytunnel\\.net$\n(^|\\.)proyectoclubes\\.com$\n(^|\\.)prozz\\.net$\n(^|\\.)psblog\\.name$\n(^|\\.)pscp\\.tv$\n(^|\\.)psiphon3\\.com$\n(^|\\.)psiphon\\.ca$\n(^|\\.)psiphon\\.civisec\\.org$\n(^|\\.)psiphontoday\\.com$\n(^|\\.)pts\\.org\\.tw$\n(^|\\.)ptt\\.cc$\n(^|\\.)pttvan\\.org$\n(^|\\.)pubu\\.com\\.tw$\n(^|\\.)puffinbrowser\\.com$\n(^|\\.)puffstore\\.com$\n(^|\\.)pullfolio\\.com$\n(^|\\.)pulse\\.yahoo\\.com$\n(^|\\.)punyu\\.com$\n(^|\\.)pure18\\.com$\n(^|\\.)pureconcepts\\.net$\n(^|\\.)pureinsight\\.org$\n(^|\\.)purepdf\\.com$\n(^|\\.)purevpn\\.com$\n(^|\\.)purplelotus\\.org$\n(^|\\.)pursuestar\\.com$\n(^|\\.)pushchinawall\\.com$\n(^|\\.)pussyspace\\.com$\n(^|\\.)putihome\\.org$\n(^|\\.)putlocker\\.com$\n(^|\\.)putty\\.org$\n(^|\\.)puuko\\.com$\n(^|\\.)pwned\\.com$\n(^|\\.)python\\.com$\n(^|\\.)python\\.com\\.tw$\n(^|\\.)pythonhackers\\.com$\n(^|\\.)pytorch\\.org$\n(^|\\.)qanote\\.com$\n(^|\\.)qgirl\\.com\\.tw$\n(^|\\.)qhigh\\.com$\n(^|\\.)qiandao\\.today$\n(^|\\.)qiangyou\\.org$\n(^|\\.)qidian\\.ca$\n(^|\\.)qienkuen\\.org$\n(^|\\.)qi-gong\\.me$\n(^|\\.)qiwen\\.lu$\n(^|\\.)qixianglu\\.cn$\n(^|\\.)qkshare\\.com$\n(^|\\.)qoos\\.com$\n(^|\\.)qpoe\\.com$\n(^|\\.)qq\\.co\\.za$\n(^|\\.)qstatus\\.com$\n(^|\\.)qtrac\\.eu$\n(^|\\.)qtweeter\\.com$\n(^|\\.)quannengshen\\.org$\n(^|\\.)quantumbooter\\.net$\n(^|\\.)questvisual\\.com$\n(^|\\.)quitccp\\.net$\n(^|\\.)quitccp\\.org$\n(^|\\.)quoracdn\\.net$\n(^|\\.)quora\\.com$\n(^|\\.)quran\\.com$\n(^|\\.)quranexplorer\\.com$\n(^|\\.)qusi8\\.net$\n(^|\\.)qvodzy\\.org$\n(^|\\.)qxbbs\\.org$\n(^|\\.)qz\\.com$\n(^|\\.)r18\\.com$\n(^|\\.)radicalparty\\.org$\n(^|\\.)radiko\\.jp$\n(^|\\.)radioaustralia\\.net\\.au$\n(^|\\.)radiohilight\\.net$\n(^|\\.)radiovaticana\\.org$\n(^|\\.)radiovncr\\.com$\n(^|\\.)rael\\.org$\n(^|\\.)ra\\.gg$\n(^|\\.)raggedbanner\\.com$\n(^|\\.)raidcall\\.com\\.tw$\n(^|\\.)raidtalk\\.com\\.tw$\n(^|\\.)rainbowplan\\.org$\n(^|\\.)raindrop\\.io$\n(^|\\.)raizoji\\.or\\.jp$\n(^|\\.)ramcity\\.com\\.au$\n(^|\\.)rangwang\\.biz$\n(^|\\.)rangzen\\.com$\n(^|\\.)rangzen\\.net$\n(^|\\.)rangzen\\.org$\n(^|\\.)ranyunfei\\.com$\n(^|\\.)rapbull\\.net$\n(^|\\.)rapidgator\\.net$\n(^|\\.)rapidmoviez\\.com$\n(^|\\.)rapidvpn\\.com$\n(^|\\.)rarbgprx\\.org$\n(^|\\.)raremovie\\.cc$\n(^|\\.)raremovie\\.net$\n(^|\\.)rawgit\\.com$\n(^|\\.)rawgithub\\.com$\n(^|\\.)raw\\.githubusercontent\\.com$\n(^|\\.)razyboard\\.com$\n(^|\\.)rcam\\.target\\.com$\n(^|\\.)rcinet\\.ca$\n(^|\\.)rconversation\\.blogs\\.com$\n(^|\\.)rd\\.com$\n(^|\\.)rdio\\.com$\n(^|\\.)read01\\.com$\n(^|\\.)read100\\.com$\n(^|\\.)readingtimes\\.com\\.tw$\n(^|\\.)readmoo\\.com$\n(^|\\.)readydown\\.com$\n(^|\\.)realcourage\\.org$\n(^|\\.)realforum\\.zkiz\\.com$\n(^|\\.)realitykings\\.com$\n(^|\\.)realraptalk\\.com$\n(^|\\.)realsexpass\\.com$\n(^|\\.)rebatesrule\\.net$\n(^|\\.)recordhistory\\.org$\n(^|\\.)recovery\\.org\\.tw$\n(^|\\.)recoveryversion\\.com\\.tw$\n(^|\\.)redballoonsolidarity\\.org$\n(^|\\.)redchinacn\\.net$\n(^|\\.)redchinacn\\.org$\n(^|\\.)redd\\.it$\n(^|\\.)reddit\\.com$\n(^|\\.)redditlist\\.com$\n(^|\\.)redditmedia\\.com$\n(^|\\.)redditstatic\\.com$\n(^|\\.)redhotlabs\\.com$\n(^|\\.)red-lang\\.org$\n(^|\\.)redtube\\.com$\n(^|\\.)referer\\.us$\n(^|\\.)reflectivecode\\.com$\n(^|\\.)registry\\.google$\n(^|\\.)relaxbbs\\.com$\n(^|\\.)relay\\.com\\.tw$\n(^|\\.)releaseinternational\\.org$\n(^|\\.)religioustolerance\\.org$\n(^|\\.)renminbao\\.com$\n(^|\\.)renyurenquan\\.org$\n(^|\\.)research\\.jmsc\\.hku\\.hk$\n(^|\\.)resilio\\.com$\n(^|\\.)retweeteffect\\.com$\n(^|\\.)retweetist\\.com$\n(^|\\.)retweetrank\\.com$\n(^|\\.)reuters\\.com$\n(^|\\.)reutersmedia\\.net$\n(^|\\.)revleft\\.com$\n(^|\\.)revver\\.com$\n(^|\\.)rfachina\\.com$\n(^|\\.)rfalive1\\.akacast\\.akamaistream\\.net$\n(^|\\.)rfamobile\\.org$\n(^|\\.)rfa\\.org$\n(^|\\.)rfaweb\\.org$\n(^|\\.)rferl\\.org$\n(^|\\.)rfi\\.fr$\n(^|\\.)rfi\\.my$\n(^|\\.)rg3\\.github\\.io$\n(^|\\.)rightbtc\\.com$\n(^|\\.)rigpa\\.org$\n(^|\\.)riku\\.me$\n(^|\\.)rileyguide\\.com$\n(^|\\.)riseup\\.net$\n(^|\\.)ritouki\\.jp$\n(^|\\.)ritter\\.vg$\n(^|\\.)rixcloud\\.com$\n(^|\\.)rixcloud\\.us$\n(^|\\.)rlwlw\\.com$\n(^|\\.)rmjdw132\\.info$\n(^|\\.)rmjdw\\.com$\n(^|\\.)roadshow\\.hk$\n(^|\\.)roboforex\\.com$\n(^|\\.)robustnessiskey\\.com$\n(^|\\.)rocket-inc\\.net$\n(^|\\.)rocksdb\\.org$\n(^|\\.)rojo\\.com$\n(^|\\.)rolia\\.net$\n(^|\\.)ronjoneswriter\\.com$\n(^|\\.)roodo\\.com$\n(^|\\.)rosechina\\.net$\n(^|\\.)rotten\\.com$\n(^|\\.)rsdlmonitor\\.com$\n(^|\\.)rsf-chinese\\.org$\n(^|\\.)rsf\\.org$\n(^|\\.)rsgamen\\.org$\n(^|\\.)rssmeme\\.com$\n(^|\\.)rtalabel\\.org$\n(^|\\.)rthk\\.hk$\n(^|\\.)rthklive2-lh\\.akamaihd\\.net$\n(^|\\.)rthk\\.org\\.hk$\n(^|\\.)rti\\.org\\.tw$\n(^|\\.)rtycminnesota\\.org$\n(^|\\.)ruanyifeng\\.com$\n(^|\\.)rukor\\.org$\n(^|\\.)runbtx\\.com$\n(^|\\.)rushbee\\.com$\n(^|\\.)ruten\\.com\\.tw$\n(^|\\.)rutube\\.ru$\n(^|\\.)ruyiseek\\.com$\n(^|\\.)rxhj\\.net$\n(^|\\.)s1heng\\.com$\n(^|\\.)s1\\.nudezz\\.com$\n(^|\\.)s1s1s1\\.com$\n(^|\\.)s3\\.amazonaws\\.com$\n(^|\\.)s3-ap-northeast-1\\.amazonaws\\.com$\n(^|\\.)s3-ap-southeast-2\\.amazonaws\\.com$\n(^|\\.)s8forum\\.com$\n(^|\\.)sacks\\.com$\n(^|\\.)sacom\\.hk$\n(^|\\.)sadistic-v\\.com$\n(^|\\.)sadpanda\\.us$\n(^|\\.)safervpn\\.com$\n(^|\\.)safety\\.google$\n(^|\\.)sa\\.hao123\\.com$\n(^|\\.)saintyculture\\.com$\n(^|\\.)saiq\\.me$\n(^|\\.)sakuralive\\.com$\n(^|\\.)sakya\\.org$\n(^|\\.)salvation\\.org\\.hk$\n(^|\\.)samair\\.ru$\n(^|\\.)sambhota\\.org$\n(^|\\.)sanmin\\.com\\.tw$\n(^|\\.)sapikachu\\.net$\n(^|\\.)saveliuxiaobo\\.com$\n(^|\\.)savemedia\\.com$\n(^|\\.)savethedate\\.foo$\n(^|\\.)savethesounds\\.info$\n(^|\\.)savetibet\\.de$\n(^|\\.)savetibet\\.fr$\n(^|\\.)savetibet\\.nl$\n(^|\\.)savetibet\\.org$\n(^|\\.)savetibet\\.ru$\n(^|\\.)savetibetstore\\.org$\n(^|\\.)savevid\\.com$\n(^|\\.)say2\\.info$\n(^|\\.)sbme\\.me$\n(^|\\.)sbs\\.com\\.au$\n(^|\\.)scache1\\.vzw\\.com$\n(^|\\.)scache2\\.vzw\\.com$\n(^|\\.)scache\\.vzw\\.com$\n(^|\\.)scasino\\.com$\n(^|\\.)schema\\.org$\n(^|\\.)sciencenets\\.com$\n(^|\\.)scieron\\.com$\n(^|\\.)scmpchinese\\.com$\n(^|\\.)scmp\\.com$\n(^|\\.)scramble\\.io$\n(^|\\.)scribd\\.com$\n(^|\\.)scriptspot\\.com$\n(^|\\.)s-cute\\.com$\n(^|\\.)s-dragon\\.org$\n(^|\\.)seapuff\\.com$\n(^|\\.)search\\.aol\\.com$\n(^|\\.)searchtruth\\.com$\n(^|\\.)search\\.xxx$\n(^|\\.)search\\.yahoo\\.co\\.jp$\n(^|\\.)search\\.yahoo\\.com$\n(^|\\.)secretchina\\.com$\n(^|\\.)secretgarden\\.no$\n(^|\\.)secretsline\\.biz$\n(^|\\.)secure\\.hustler\\.com$\n(^|\\.)secure\\.logmein\\.com$\n(^|\\.)secure\\.raxcdn\\.com$\n(^|\\.)securetunnel\\.com$\n(^|\\.)securityinabox\\.org$\n(^|\\.)securitykiss\\.com$\n(^|\\.)seed4\\.me$\n(^|\\.)seesmic\\.com$\n(^|\\.)seevpn\\.com$\n(^|\\.)seezone\\.net$\n(^|\\.)sejie\\.com$\n(^|\\.)sellclassics\\.com$\n(^|\\.)sendsmtp\\.com$\n(^|\\.)sendspace\\.com$\n(^|\\.)servehttp\\.com$\n(^|\\.)serveuser\\.com$\n(^|\\.)serveusers\\.com$\n(^|\\.)sesawe\\.net$\n(^|\\.)sesawe\\.org$\n(^|\\.)sethwklein\\.net$\n(^|\\.)setn\\.com$\n(^|\\.)settv\\.com\\.tw$\n(^|\\.)sevenload\\.com$\n(^|\\.)sex-11\\.com$\n(^|\\.)sex3\\.com$\n(^|\\.)sex8\\.cc$\n(^|\\.)sexandsubmission\\.com$\n(^|\\.)sexbot\\.com$\n(^|\\.)sex\\.com$\n(^|\\.)sexhuang\\.com$\n(^|\\.)sexhu\\.com$\n(^|\\.)sexidude\\.com$\n(^|\\.)sexinsex\\.net$\n(^|\\.)sextvx\\.com$\n(^|\\.)sexxxy\\.biz$\n(^|\\.)sfileydy\\.com$\n(^|\\.)sf\\.net$\n(^|\\.)sfshibao\\.com$\n(^|\\.)sftindia\\.org$\n(^|\\.)sftuk\\.org$\n(^|\\.)shadeyouvpn\\.com$\n(^|\\.)shadow\\.ma$\n(^|\\.)shadowsky\\.xyz$\n(^|\\.)shadowsocks9\\.com$\n(^|\\.)shadowsocks\\.asia$\n(^|\\.)shadowsocks\\.be$\n(^|\\.)shadowsocks\\.com$\n(^|\\.)shadowsocks\\.com\\.hk$\n(^|\\.)shadowsocks\\.org$\n(^|\\.)shadowsocks-r\\.com$\n(^|\\.)shambalapost\\.com$\n(^|\\.)shambhalasun\\.com$\n(^|\\.)shangfang\\.org$\n(^|\\.)shapeservices\\.com$\n(^|\\.)share\\.america\\.gov$\n(^|\\.)sharebee\\.com$\n(^|\\.)sharecool\\.org$\n(^|\\.)share\\.dmhy\\.org$\n(^|\\.)share\\.ovi\\.com$\n(^|\\.)share\\.youthwant\\.com\\.tw$\n(^|\\.)sharpdaily\\.com\\.hk$\n(^|\\.)sharpdaily\\.hk$\n(^|\\.)sharpdaily\\.tw$\n(^|\\.)shattered\\.io$\n(^|\\.)shat-tibet\\.com$\n(^|\\.)sheikyermami\\.com$\n(^|\\.)shellfire\\.de$\n(^|\\.)shenshou\\.org$\n(^|\\.)shenyun\\.com$\n(^|\\.)shenyunperformingarts\\.org$\n(^|\\.)shenzhoufilm\\.com$\n(^|\\.)sherabgyaltsen\\.com$\n(^|\\.)shiatv\\.net$\n(^|\\.)shicheng\\.org$\n(^|\\.)shiksha\\.com$\n(^|\\.)shinychan\\.com$\n(^|\\.)shipcamouflage\\.com$\n(^|\\.)shireyishunjian\\.com$\n(^|\\.)shitaotv\\.org$\n(^|\\.)shixiao\\.org$\n(^|\\.)shizhao\\.org$\n(^|\\.)shkspr\\.mobi$\n(^|\\.)shodanhq\\.com$\n(^|\\.)shooshtime\\.com$\n(^|\\.)shop2000\\.com\\.tw$\n(^|\\.)shopping\\.com$\n(^|\\.)showbiz\\.omy\\.sg$\n(^|\\.)showhaotu\\.com$\n(^|\\.)showtime\\.jp$\n(^|\\.)shutterstock\\.com$\n(^|\\.)shwchurch3\\.com$\n(^|\\.)shwchurch\\.org$\n(^|\\.)siddharthasintent\\.org$\n(^|\\.)sidelinesnews\\.com$\n(^|\\.)sidelinessportseatery\\.com$\n(^|\\.)sierrafriendsoftibet\\.org$\n(^|\\.)sijihuisuo\\.club$\n(^|\\.)sijihuisuo\\.com$\n(^|\\.)sikaozhe1997\\.github\\.io$\n(^|\\.)silkbook\\.com$\n(^|\\.)simbolostwitter\\.com$\n(^|\\.)simplecd\\.org$\n(^|\\.)simpleproductivityblog\\.com$\n(^|\\.)sinchew\\.com\\.my$\n(^|\\.)singaporepools\\.com\\.sg$\n(^|\\.)singfortibet\\.com$\n(^|\\.)singpao\\.com\\.hk$\n(^|\\.)singtao\\.com$\n(^|\\.)singtaousa\\.com$\n(^|\\.)sinoants\\.com$\n(^|\\.)sinocast\\.com$\n(^|\\.)sinocism\\.com$\n(^|\\.)sino-monthly\\.com$\n(^|\\.)sinomontreal\\.ca$\n(^|\\.)sinonet\\.ca$\n(^|\\.)sinopitt\\.info$\n(^|\\.)sinoquebec\\.com$\n(^|\\.)sipml5\\.org$\n(^|\\.)sis001\\.com$\n(^|\\.)sis001\\.us$\n(^|\\.)sis\\.xxx$\n(^|\\.)site2unblock\\.com$\n(^|\\.)site90\\.net$\n(^|\\.)sitebro\\.tw$\n(^|\\.)sitekreator\\.com$\n(^|\\.)siteks\\.uk\\.to$\n(^|\\.)sitemaps\\.org$\n(^|\\.)six-degrees\\.io$\n(^|\\.)sixth\\.biz$\n(^|\\.)sjrt\\.org$\n(^|\\.)sjum\\.cn$\n(^|\\.)sketchappsources\\.com$\n(^|\\.)skimtube\\.com$\n(^|\\.)skybet\\.com$\n(^|\\.)skyking\\.com\\.tw$\n(^|\\.)skyvegas\\.com$\n(^|\\.)skyxvpn\\.com$\n(^|\\.)slacker\\.com$\n(^|\\.)slaytizle\\.com$\n(^|\\.)sleazydream\\.com$\n(^|\\.)slheng\\.com$\n(^|\\.)slickvpn\\.com$\n(^|\\.)slideshare\\.net$\n(^|\\.)slinkset\\.com$\n(^|\\.)slutload\\.com$\n(^|\\.)slutmoonbeam\\.com$\n(^|\\.)slyip\\.com$\n(^|\\.)slyip\\.net$\n(^|\\.)smartdnsproxy\\.com$\n(^|\\.)smarthide\\.com$\n(^|\\.)smchbooks\\.com$\n(^|\\.)smh\\.com\\.au$\n(^|\\.)smhric\\.org$\n(^|\\.)smith\\.edu$\n(^|\\.)sm-miracle\\.com$\n(^|\\.)smyxy\\.org$\n(^|\\.)snapchat\\.com$\n(^|\\.)snaptu\\.com$\n(^|\\.)sndcdn\\.com$\n(^|\\.)sneakme\\.net$\n(^|\\.)snowlionpub\\.com$\n(^|\\.)sobees\\.com$\n(^|\\.)socialwhale\\.com$\n(^|\\.)sockscap64\\.com$\n(^|\\.)sockslist\\.net$\n(^|\\.)socks-proxy\\.net$\n(^|\\.)soc\\.mil$\n(^|\\.)socrec\\.org$\n(^|\\.)sodatea\\.github\\.io$\n(^|\\.)sod\\.co\\.jp$\n(^|\\.)softether\\.co\\.jp$\n(^|\\.)softether-download\\.com$\n(^|\\.)softether\\.org$\n(^|\\.)softfamous\\.com$\n(^|\\.)softsmirror\\.cf$\n(^|\\.)softwarebychuck\\.com$\n(^|\\.)softwaredownload\\.gitbooks\\.io$\n(^|\\.)sogclub\\.com$\n(^|\\.)sogrady\\.me$\n(^|\\.)sohcradio\\.com$\n(^|\\.)sohfrance\\.org$\n(^|\\.)soh\\.tw$\n(^|\\.)sokamonline\\.com$\n(^|\\.)sokmil\\.com$\n(^|\\.)solarsystem\\.nasa\\.gov$\n(^|\\.)solidaritetibet\\.org$\n(^|\\.)solidfiles\\.com$\n(^|\\.)somee\\.com$\n(^|\\.)songjianjun\\.com$\n(^|\\.)sonicbbs\\.cc$\n(^|\\.)sonidodelaesperanza\\.org$\n(^|\\.)sopcast\\.com$\n(^|\\.)sopcast\\.org$\n(^|\\.)sorazone\\.net$\n(^|\\.)sorting-algorithms\\.com$\n(^|\\.)sos\\.org$\n(^|\\.)sosreader\\.com$\n(^|\\.)sostibet\\.org$\n(^|\\.)soubory\\.com$\n(^|\\.)soulcaliburhentai\\.net$\n(^|\\.)soul-plus\\.net$\n(^|\\.)soumo\\.info$\n(^|\\.)soundcloud\\.com$\n(^|\\.)soundofhope\\.kr$\n(^|\\.)soundofhope\\.org$\n(^|\\.)soup\\.io$\n(^|\\.)soupofmedia\\.com$\n(^|\\.)sourceforge\\.net$\n(^|\\.)sourcewadio\\.com$\n(^|\\.)southnews\\.com\\.tw$\n(^|\\.)sowers\\.org\\.hk$\n(^|\\.)soylentnews\\.org$\n(^|\\.)spaces\\.hightail\\.com$\n(^|\\.)spankbang\\.com$\n(^|\\.)spankingtube\\.com$\n(^|\\.)spankwire\\.com$\n(^|\\.)spb\\.com$\n(^|\\.)speakerdeck\\.com$\n(^|\\.)specxinzl\\.jigsy\\.com$\n(^|\\.)speedify\\.com$\n(^|\\.)spem\\.at$\n(^|\\.)spencertipping\\.com$\n(^|\\.)spendee\\.com$\n(^|\\.)spicevpn\\.com$\n(^|\\.)spideroak\\.com$\n(^|\\.)spike\\.com$\n(^|\\.)sports\\.williamhill\\.com$\n(^|\\.)spotflux\\.com$\n(^|\\.)spotify\\.com$\n(^|\\.)spreadshirt\\.es$\n(^|\\.)spring4u\\.info$\n(^|\\.)springboardplatform\\.com$\n(^|\\.)sprite\\.org$\n(^|\\.)sproutcore\\.com$\n(^|\\.)sproxy\\.info$\n(^|\\.)squirly\\.info$\n(^|\\.)srcf\\.ucam\\.org$\n(^|\\.)srocket\\.us$\n(^|\\.)ss7\\.vzw\\.com$\n(^|\\.)ss\\.carryzhou\\.com$\n(^|\\.)ssglobal\\.co$\n(^|\\.)ssglobal\\.me$\n(^|\\.)ssh91\\.com$\n(^|\\.)ssl443\\.org$\n(^|\\.)ss\\.levyhsu\\.com$\n(^|\\.)ss-link\\.com$\n(^|\\.)ssl\\.webpack\\.de$\n(^|\\.)sspanel\\.net$\n(^|\\.)sspro\\.ml$\n(^|\\.)ss\\.pythonic\\.life$\n(^|\\.)ssrshare\\.com$\n(^|\\.)ssr\\.tools$\n(^|\\.)sss\\.camp$\n(^|\\.)sstmlt\\.moe$\n(^|\\.)sstmlt\\.net$\n(^|\\.)stackoverflow\\.com$\n(^|\\.)stage64\\.hk$\n(^|\\.)standupfortibet\\.org$\n(^|\\.)stanford\\.edu$\n(^|\\.)starfishfx\\.com$\n(^|\\.)starp2p\\.com$\n(^|\\.)startpage\\.com$\n(^|\\.)startuplivingchina\\.com$\n(^|\\.)stat\\.gov\\.tw$\n(^|\\.)static01\\.nyt\\.com$\n(^|\\.)static\\.comico\\.tw$\n(^|\\.)static-economist\\.com$\n(^|\\.)staticflickr\\.com$\n(^|\\.)static\\.shemalez\\.com$\n(^|\\.)statueofdemocracy\\.org$\n(^|\\.)stc\\.com\\.sa$\n(^|\\.)steamcommunity\\.com$\n(^|\\.)steel-storm\\.com$\n(^|\\.)steemit\\.com$\n(^|\\.)steganos\\.com$\n(^|\\.)steganos\\.net$\n(^|\\.)stepchina\\.com$\n(^|\\.)stephaniered\\.com$\n(^|\\.)sthoo\\.com$\n(^|\\.)stickam\\.com$\n(^|\\.)stickeraction\\.com$\n(^|\\.)stileproject\\.com$\n(^|\\.)sto\\.cc$\n(^|\\.)stoporganharvesting\\.org$\n(^|\\.)stoptibetcrisis\\.net$\n(^|\\.)storagenewsletter\\.com$\n(^|\\.)store\\.steampowered\\.com$\n(^|\\.)stories\\.google$\n(^|\\.)storify\\.com$\n(^|\\.)stormmediagroup\\.com$\n(^|\\.)storm\\.mg$\n(^|\\.)stoweboyd\\.com$\n(^|\\.)stranabg\\.com$\n(^|\\.)straplessdildo\\.com$\n(^|\\.)streamingthe\\.net$\n(^|\\.)streema\\.com$\n(^|\\.)strikingly\\.com$\n(^|\\.)strongvpn\\.com$\n(^|\\.)strongwindpress\\.com$\n(^|\\.)studentsforafreetibet\\.org$\n(^|\\.)student\\.tw$\n(^|\\.)stumbleupon\\.com$\n(^|\\.)stupidvideos\\.com$\n(^|\\.)subacme\\.rerouted\\.org$\n(^|\\.)successfn\\.com$\n(^|\\.)sugarsync\\.com$\n(^|\\.)sugobbs\\.com$\n(^|\\.)sugumiru18\\.com$\n(^|\\.)suissl\\.com$\n(^|\\.)sujiatun\\.wordpress\\.com$\n(^|\\.)sukebei\\.nyaa\\.si$\n(^|\\.)sulian\\.me$\n(^|\\.)summify\\.com$\n(^|\\.)sumrando\\.com$\n(^|\\.)sun1911\\.com$\n(^|\\.)sunmedia\\.ca$\n(^|\\.)sunporno\\.com$\n(^|\\.)sunskyforum\\.com$\n(^|\\.)sunta\\.com\\.tw$\n(^|\\.)sunvpn\\.net$\n(^|\\.)sunwinism\\.joinbbs\\.net$\n(^|\\.)suoluo\\.org$\n(^|\\.)supchina\\.com$\n(^|\\.)superfreevpn\\.com$\n(^|\\.)superokayama\\.com$\n(^|\\.)superpages\\.com$\n(^|\\.)supervpn\\.net$\n(^|\\.)superzooi\\.com$\n(^|\\.)suppig\\.net$\n(^|\\.)suprememastertv\\.com$\n(^|\\.)surfeasy\\.com$\n(^|\\.)surfeasy\\.com\\.au$\n(^|\\.)suroot\\.com$\n(^|\\.)surrenderat20\\.net$\n(^|\\.)sustainability\\.google$\n(^|\\.)suyangg\\.com$\n(^|\\.)svsfx\\.com$\n(^|\\.)swagbucks\\.com$\n(^|\\.)swissinfo\\.ch$\n(^|\\.)swissvpn\\.net$\n(^|\\.)switch1\\.jp$\n(^|\\.)switchvpn\\.net$\n(^|\\.)sydneytoday\\.com$\n(^|\\.)sylfoundation\\.org$\n(^|\\.)syncback\\.com$\n(^|\\.)synergyse\\.com$\n(^|\\.)sysresccd\\.org$\n(^|\\.)sytes\\.net$\n(^|\\.)szbbs\\.net$\n(^|\\.)szetowah\\.org\\.hk$\n(^|\\.)t35\\.com$\n(^|\\.)t66y\\.com$\n(^|\\.)taa-usa\\.org$\n(^|\\.)taaze\\.tw$\n(^|\\.)tabtter\\.jp$\n(^|\\.)tacc\\.cwb\\.gov\\.tw$\n(^|\\.)tacem\\.org$\n(^|\\.)taconet\\.com\\.tw$\n(^|\\.)taedp\\.org\\.tw$\n(^|\\.)tafm\\.org$\n(^|\\.)tagwalk\\.com$\n(^|\\.)tagwa\\.org\\.au$\n(^|\\.)tahr\\.org\\.tw$\n(^|\\.)taipei\\.gov\\.tw$\n(^|\\.)taipeisociety\\.org$\n(^|\\.)taiwanbible\\.com$\n(^|\\.)taiwancon\\.com$\n(^|\\.)taiwandaily\\.net$\n(^|\\.)taiwandc\\.org$\n(^|\\.)taiwanjobs\\.gov\\.tw$\n(^|\\.)taiwanjustice\\.com$\n(^|\\.)taiwanjustice\\.net$\n(^|\\.)taiwankiss\\.com$\n(^|\\.)taiwannation\\.50webs\\.com$\n(^|\\.)taiwannation\\.com$\n(^|\\.)taiwannation\\.com\\.tw$\n(^|\\.)taiwanncf\\.org\\.tw$\n(^|\\.)taiwannews\\.com\\.tw$\n(^|\\.)taiwan-sex\\.com$\n(^|\\.)taiwantp\\.net$\n(^|\\.)taiwantt\\.org\\.tw$\n(^|\\.)taiwanus\\.net$\n(^|\\.)taiwanyes\\.com$\n(^|\\.)taiwanyes\\.ning\\.com$\n(^|\\.)talk853\\.com$\n(^|\\.)talkboxapp\\.com$\n(^|\\.)talkcc\\.com$\n(^|\\.)talkonly\\.net$\n(^|\\.)tamiaode\\.tk$\n(^|\\.)tanc\\.org$\n(^|\\.)tangben\\.com$\n(^|\\.)tangren\\.us$\n(^|\\.)taoism\\.net$\n(^|\\.)taolun\\.info$\n(^|\\.)tapanwap\\.com$\n(^|\\.)tapatalk\\.com$\n(^|\\.)tarr\\.uspto\\.gov$\n(^|\\.)tascn\\.com\\.au$\n(^|\\.)taup\\.net$\n(^|\\.)taweet\\.com$\n(^|\\.)tbcollege\\.org$\n(^|\\.)tbicn\\.org$\n(^|\\.)tbi\\.org\\.hk$\n(^|\\.)tbjyt\\.org$\n(^|\\.)tbpic\\.info$\n(^|\\.)tbrc\\.org$\n(^|\\.)tbsec\\.org$\n(^|\\.)tbskkinabalu\\.page\\.tl$\n(^|\\.)tbsmalaysia\\.org$\n(^|\\.)tbsn\\.org$\n(^|\\.)tbs-rainbow\\.org$\n(^|\\.)tbsseattle\\.org$\n(^|\\.)tbssqh\\.org$\n(^|\\.)tbswd\\.org$\n(^|\\.)tbtemple\\.org\\.uk$\n(^|\\.)tbthouston\\.org$\n(^|\\.)tccwonline\\.org$\n(^|\\.)tcewf\\.org$\n(^|\\.)tchrd\\.org$\n(^|\\.)tcnynj\\.org$\n(^|\\.)t\\.co$\n(^|\\.)tcpspeed\\.co$\n(^|\\.)tcpspeed\\.com$\n(^|\\.)tcsofbc\\.org$\n(^|\\.)tcsovi\\.org$\n(^|\\.)tdm\\.com\\.mo$\n(^|\\.)teachparentstech\\.org$\n(^|\\.)teamamericany\\.com$\n(^|\\.)tech2\\.in\\.com$\n(^|\\.)techviz\\.net$\n(^|\\.)teck\\.in$\n(^|\\.)teco-hk\\.org$\n(^|\\.)teco-mo\\.org$\n(^|\\.)teddysun\\.com$\n(^|\\.)teeniefuck\\.net$\n(^|\\.)teensinasia\\.com$\n(^|\\.)telecomspace\\.com$\n(^|\\.)telegram\\.dog$\n(^|\\.)telegramdownload\\.com$\n(^|\\.)telegram\\.me$\n(^|\\.)telegram\\.org$\n(^|\\.)telegraph\\.co\\.uk$\n(^|\\.)telesco\\.pe$\n(^|\\.)tellme\\.pw$\n(^|\\.)tenacy\\.com$\n(^|\\.)tensorflow\\.org$\n(^|\\.)tenzinpalmo\\.com$\n(^|\\.)terminus2049\\.github\\.io$\n(^|\\.)tew\\.org$\n(^|\\.)textnow\\.me$\n(^|\\.)tfhub\\.dev$\n(^|\\.)t-g\\.com$\n(^|\\.)thaicn\\.com$\n(^|\\.)thb\\.gov\\.tw$\n(^|\\.)theatrum-belli\\.com$\n(^|\\.)thebcomplex\\.com$\n(^|\\.)theblemish\\.com$\n(^|\\.)thebobs\\.com$\n(^|\\.)thebodyshop-usa\\.com$\n(^|\\.)thecenter\\.mit\\.edu$\n(^|\\.)thechinabeat\\.org$\n(^|\\.)thedalailamamovie\\.com$\n(^|\\.)thedw\\.us$\n(^|\\.)thefacebook\\.com$\n(^|\\.)thefrontier\\.hk$\n(^|\\.)thegioitinhoc\\.vn$\n(^|\\.)thegly\\.com$\n(^|\\.)thehots\\.info$\n(^|\\.)thehousenews\\.com$\n(^|\\.)thehun\\.net$\n(^|\\.)theinitium\\.com$\n(^|\\.)thenewslens\\.com$\n(^|\\.)thepiratebay\\.org$\n(^|\\.)theporndude\\.com$\n(^|\\.)theportalwiki\\.com$\n(^|\\.)thereallove\\.kr$\n(^|\\.)therock\\.net\\.nz$\n(^|\\.)thespeeder\\.com$\n(^|\\.)thestandnews\\.com$\n(^|\\.)thetibetcenter\\.org$\n(^|\\.)thetibetconnection\\.org$\n(^|\\.)thetibetmuseum\\.org$\n(^|\\.)thetibetpost\\.com$\n(^|\\.)thetinhat\\.com$\n(^|\\.)thetrotskymovie\\.com$\n(^|\\.)thevivekspot\\.com$\n(^|\\.)thewgo\\.org$\n(^|\\.)theync\\.com$\n(^|\\.)th\\.hao123\\.com$\n(^|\\.)thinkgeek\\.com$\n(^|\\.)thinkingtaiwan\\.com$\n(^|\\.)thinkwithgoogle\\.com$\n(^|\\.)thisav\\.com$\n(^|\\.)thlib\\.org$\n(^|\\.)thomasbernhard\\.org$\n(^|\\.)thongdreams\\.com$\n(^|\\.)threatchaos\\.com$\n(^|\\.)throughnightsfire\\.com$\n(^|\\.)thumbzilla\\.com$\n(^|\\.)thywords\\.com$\n(^|\\.)thywords\\.com\\.tw$\n(^|\\.)tiananmenduizhi\\.com$\n(^|\\.)tiananmenmother\\.org$\n(^|\\.)tiananmenuniv\\.com$\n(^|\\.)tiananmenuniv\\.net$\n(^|\\.)tiandixing\\.org$\n(^|\\.)tianhuayuan\\.com$\n(^|\\.)tianlawoffice\\.com$\n(^|\\.)tiantibooks\\.org$\n(^|\\.)tianti\\.io$\n(^|\\.)tianyantong\\.org\\.cn$\n(^|\\.)tianzhu\\.org$\n(^|\\.)tibet3rdpole\\.org$\n(^|\\.)tibetaction\\.net$\n(^|\\.)tibetaid\\.org$\n(^|\\.)tibetalk\\.com$\n(^|\\.)tibetanaidproject\\.org$\n(^|\\.)tibetan-alliance\\.org$\n(^|\\.)tibetanarts\\.org$\n(^|\\.)tibetanbuddhistinstitute\\.org$\n(^|\\.)tibetancommunity\\.org$\n(^|\\.)tibetancommunityuk\\.net$\n(^|\\.)tibetanculture\\.org$\n(^|\\.)tibetanfeministcollective\\.org$\n(^|\\.)tibetan\\.fr$\n(^|\\.)tibetanjournal\\.com$\n(^|\\.)tibetanlanguage\\.org$\n(^|\\.)tibetanliberation\\.org$\n(^|\\.)tibetanpaintings\\.com$\n(^|\\.)tibetanphotoproject\\.com$\n(^|\\.)tibetanpoliticalreview\\.org$\n(^|\\.)tibetanreview\\.net$\n(^|\\.)tibetansports\\.org$\n(^|\\.)tibetanwomen\\.org$\n(^|\\.)tibetanyouthcongress\\.org$\n(^|\\.)tibetanyouth\\.org$\n(^|\\.)tibet\\.a\\.se$\n(^|\\.)tibet\\.at$\n(^|\\.)tibet\\.ca$\n(^|\\.)tibetcharity\\.dk$\n(^|\\.)tibetcharity\\.in$\n(^|\\.)tibetchild\\.org$\n(^|\\.)tibetcity\\.com$\n(^|\\.)tibetcollection\\.com$\n(^|\\.)tibet\\.com$\n(^|\\.)tibetcorps\\.org$\n(^|\\.)tibet-envoy\\.eu$\n(^|\\.)tibetexpress\\.net$\n(^|\\.)tibetfocus\\.com$\n(^|\\.)tibet-foundation\\.org$\n(^|\\.)tibet\\.fr$\n(^|\\.)tibetfund\\.org$\n(^|\\.)tibetgermany\\.com$\n(^|\\.)tibetgermany\\.de$\n(^|\\.)tibethaus\\.com$\n(^|\\.)tibetheritagefund\\.org$\n(^|\\.)tibethouse\\.jp$\n(^|\\.)tibethouse\\.org$\n(^|\\.)tibet-house-trust\\.co\\.uk$\n(^|\\.)tibethouse\\.us$\n(^|\\.)tibet-info\\.net$\n(^|\\.)tibetinfonet\\.net$\n(^|\\.)tibet-initiative\\.de$\n(^|\\.)tibetjustice\\.org$\n(^|\\.)tibetkomite\\.dk$\n(^|\\.)tibetlibre\\.free\\.fr$\n(^|\\.)tibet-munich\\.de$\n(^|\\.)tibetmuseum\\.org$\n(^|\\.)tibet\\.net$\n(^|\\.)tibetnetwork\\.org$\n(^|\\.)tibet\\.nu$\n(^|\\.)tibetoffice\\.ch$\n(^|\\.)tibetoffice\\.com\\.au$\n(^|\\.)tibetoffice\\.eu$\n(^|\\.)tibetoffice\\.org$\n(^|\\.)tibetonline\\.com$\n(^|\\.)tibetonline\\.tv$\n(^|\\.)tibetoralhistory\\.org$\n(^|\\.)tibet\\.org$\n(^|\\.)tibet\\.org\\.tw$\n(^|\\.)tibetpolicy\\.eu$\n(^|\\.)tibetrelieffund\\.co\\.uk$\n(^|\\.)tibetsites\\.com$\n(^|\\.)tibet\\.sk$\n(^|\\.)tibetsociety\\.com$\n(^|\\.)tibetsun\\.com$\n(^|\\.)tibetsupportgroup\\.org$\n(^|\\.)tibetswiss\\.ch$\n(^|\\.)tibettelegraph\\.com$\n(^|\\.)tibettimes\\.net$\n(^|\\.)tibet\\.to$\n(^|\\.)tibetwrites\\.org$\n(^|\\.)ticket\\.com\\.tw$\n(^|\\.)tigervpn\\.com$\n(^|\\.)tiltbrush\\.com$\n(^|\\.)timdir\\.com$\n(^|\\.)time\\.com$\n(^|\\.)times\\.hinet\\.net$\n(^|\\.)timesofindia\\.indiatimes\\.com$\n(^|\\.)timsah\\.com$\n(^|\\.)tinc-vpn\\.org$\n(^|\\.)tineye\\.com$\n(^|\\.)tintuc101\\.com$\n(^|\\.)tiny\\.cc$\n(^|\\.)tinychat\\.com$\n(^|\\.)tinypaste\\.com$\n(^|\\.)tipo\\.gov\\.tw$\n(^|\\.)tistory\\.com$\n(^|\\.)tkcs-collins\\.com$\n(^|\\.)tl\\.gd$\n(^|\\.)tma\\.co\\.jp$\n(^|\\.)tmagazine\\.com$\n(^|\\.)tmdfish\\.com$\n(^|\\.)t\\.me$\n(^|\\.)tmi\\.me$\n(^|\\.)tmpp\\.org$\n(^|\\.)tn1\\.shemalez\\.com$\n(^|\\.)tn2\\.shemalez\\.com$\n(^|\\.)tn3\\.shemalez\\.com$\n(^|\\.)tnaflix\\.com$\n(^|\\.)tngrnow\\.com$\n(^|\\.)tngrnow\\.net$\n(^|\\.)tnp\\.org$\n(^|\\.)togetter\\.com$\n(^|\\.)toh\\.info$\n(^|\\.)tokyo-247\\.com$\n(^|\\.)tokyocn\\.com$\n(^|\\.)tokyo-hot\\.com$\n(^|\\.)tokyo-porn-tube\\.com$\n(^|\\.)tongil\\.or\\.kr$\n(^|\\.)tono-oka\\.jp$\n(^|\\.)tonyyan\\.net$\n(^|\\.)toodoc\\.com$\n(^|\\.)toonel\\.net$\n(^|\\.)top10vpn\\.com$\n(^|\\.)top81\\.ws$\n(^|\\.)topbtc\\.com$\n(^|\\.)topic\\.youthwant\\.com\\.tw$\n(^|\\.)topnews\\.in$\n(^|\\.)to-porno\\.com$\n(^|\\.)toppornsites\\.com$\n(^|\\.)topshareware\\.com$\n(^|\\.)topsy\\.com$\n(^|\\.)toptip\\.ca$\n(^|\\.)top\\.tv$\n(^|\\.)tora\\.to$\n(^|\\.)tor\\.blingblingsquad\\.net$\n(^|\\.)torcn\\.com$\n(^|\\.)tor\\.cn\\.uptodown\\.com$\n(^|\\.)torguard\\.net$\n(^|\\.)torproject\\.org$\n(^|\\.)torrentprivacy\\.com$\n(^|\\.)torrentproject\\.se$\n(^|\\.)torrenty\\.org$\n(^|\\.)torrentz\\.eu$\n(^|\\.)tor\\.updatestar\\.com$\n(^|\\.)torvpn\\.com$\n(^|\\.)t\\.orzdream\\.com$\n(^|\\.)tosh\\.comedycentral\\.com$\n(^|\\.)totalvpn\\.com$\n(^|\\.)toutiaoabc\\.com$\n(^|\\.)toutyrater\\.github\\.io$\n(^|\\.)towngain\\.com$\n(^|\\.)toypark\\.in$\n(^|\\.)toythieves\\.com$\n(^|\\.)toytractorshow\\.com$\n(^|\\.)tparents\\.org$\n(^|\\.)tpi\\.org\\.tw$\n(^|\\.)tracfone\\.com$\n(^|\\.)traffichaus\\.com$\n(^|\\.)transparency\\.org$\n(^|\\.)trans\\.wenweipo\\.com$\n(^|\\.)treemall\\.com\\.tw$\n(^|\\.)trendsmap\\.com$\n(^|\\.)trialofccp\\.org$\n(^|\\.)trickip\\.net$\n(^|\\.)trickip\\.org$\n(^|\\.)trimondi\\.de$\n(^|\\.)trouw\\.nl$\n(^|\\.)trtc\\.com\\.tw$\n(^|\\.)trt\\.net\\.tr$\n(^|\\.)truebuddha-md\\.org$\n(^|\\.)trulyergonomic\\.com$\n(^|\\.)truth101\\.co\\.tv$\n(^|\\.)truthontour\\.org$\n(^|\\.)truveo\\.com$\n(^|\\.)tryheart\\.jp$\n(^|\\.)tsctv\\.net$\n(^|\\.)tsdr\\.uspto\\.gov$\n(^|\\.)tsemtulku\\.com$\n(^|\\.)tsquare\\.tv$\n(^|\\.)tsunagarumon\\.com$\n(^|\\.)tsu\\.org\\.tw$\n(^|\\.)tt1069\\.com$\n(^|\\.)tttan\\.com$\n(^|\\.)ttvnw\\.net$\n(^|\\.)tu8964\\.com$\n(^|\\.)tubaholic\\.com$\n(^|\\.)tube8\\.com$\n(^|\\.)tube911\\.com$\n(^|\\.)tube\\.com$\n(^|\\.)tubecup\\.com$\n(^|\\.)tubegals\\.com$\n(^|\\.)tubeislam\\.com$\n(^|\\.)tubepornclassic\\.com$\n(^|\\.)tubestack\\.com$\n(^|\\.)tubewolf\\.com$\n(^|\\.)tuibeitu\\.net$\n(^|\\.)tuidang\\.net$\n(^|\\.)tuidang\\.org$\n(^|\\.)tuidang\\.se$\n(^|\\.)tui\\.orzdream\\.com$\n(^|\\.)tuitwit\\.com$\n(^|\\.)tumblr\\.com$\n(^|\\.)tumutanzi\\.com$\n(^|\\.)tumview\\.com$\n(^|\\.)tunein\\.com$\n(^|\\.)tunnelbear\\.com$\n(^|\\.)tunnelr\\.com$\n(^|\\.)tuo8\\.blue$\n(^|\\.)tuo8\\.cc$\n(^|\\.)tuo8\\.club$\n(^|\\.)tuo8\\.fit$\n(^|\\.)tuo8\\.hk$\n(^|\\.)tuo8\\.in$\n(^|\\.)tuo8\\.ninja$\n(^|\\.)tuo8\\.org$\n(^|\\.)tuo8\\.pw$\n(^|\\.)tuo8\\.red$\n(^|\\.)tuo8\\.space$\n(^|\\.)turansam\\.org$\n(^|\\.)turbobit\\.net$\n(^|\\.)turbohide\\.com$\n(^|\\.)turbotwitter\\.com$\n(^|\\.)turntable\\.fm$\n(^|\\.)tushycash\\.com$\n(^|\\.)tuvpn\\.com$\n(^|\\.)tuzaijidi\\.com$\n(^|\\.)tvants\\.com$\n(^|\\.)tvboxnow\\.com$\n(^|\\.)tv\\.com$\n(^|\\.)tvider\\.com$\n(^|\\.)tvmost\\.com\\.hk$\n(^|\\.)tvplayvideos\\.com$\n(^|\\.)tvunetworks\\.com$\n(^|\\.)tw01\\.org$\n(^|\\.)twaitter\\.com$\n(^|\\.)tw\\.answers\\.yahoo\\.com$\n(^|\\.)twapperkeeper\\.com$\n(^|\\.)twaud\\.io$\n(^|\\.)twavi\\.com$\n(^|\\.)twbbs\\.net\\.tw$\n(^|\\.)twbbs\\.org$\n(^|\\.)twbbs\\.tw$\n(^|\\.)tw\\.bid\\.yahoo\\.com$\n(^|\\.)tw-blog\\.com$\n(^|\\.)twblogger\\.com$\n(^|\\.)tweepguide\\.com$\n(^|\\.)tweeplike\\.me$\n(^|\\.)tweepmag\\.com$\n(^|\\.)tweepml\\.org$\n(^|\\.)tweetbackup\\.com$\n(^|\\.)tweetboard\\.com$\n(^|\\.)tweetboner\\.biz$\n(^|\\.)tweetcs\\.com$\n(^|\\.)tweetdeck\\.com$\n(^|\\.)tweetedtimes\\.com$\n(^|\\.)tweetmylast\\.fm$\n(^|\\.)tweetphoto\\.com$\n(^|\\.)tweetrans\\.com$\n(^|\\.)tweetree\\.com$\n(^|\\.)tweets\\.seraph\\.me$\n(^|\\.)tweettunnel\\.com$\n(^|\\.)tweetwally\\.com$\n(^|\\.)tweetymail\\.com$\n(^|\\.)tweez\\.net$\n(^|\\.)twelve\\.today$\n(^|\\.)twerkingbutt\\.com$\n(^|\\.)twftp\\.org$\n(^|\\.)tw\\.gigacircle\\.com$\n(^|\\.)twgreatdaily\\.com$\n(^|\\.)tw\\.hao123\\.com$\n(^|\\.)twibase\\.com$\n(^|\\.)twibble\\.de$\n(^|\\.)twibbon\\.com$\n(^|\\.)twibs\\.com$\n(^|\\.)twicountry\\.org$\n(^|\\.)twicsy\\.com$\n(^|\\.)twiends\\.com$\n(^|\\.)twifan\\.com$\n(^|\\.)twiffo\\.com$\n(^|\\.)twiggit\\.org$\n(^|\\.)twilightsex\\.com$\n(^|\\.)twilog\\.org$\n(^|\\.)twimbow\\.com$\n(^|\\.)twimg\\.com$\n(^|\\.)twimg\\.edgesuite\\.net$\n(^|\\.)twindexx\\.com$\n(^|\\.)twip\\.me$\n(^|\\.)twipple\\.jp$\n(^|\\.)tw\\.iqiyi\\.com$\n(^|\\.)twishort\\.com$\n(^|\\.)twistar\\.cc$\n(^|\\.)twisterio\\.com$\n(^|\\.)twister\\.net\\.co$\n(^|\\.)twisternow\\.com$\n(^|\\.)twistory\\.net$\n(^|\\.)twit2d\\.com$\n(^|\\.)twitbrowser\\.net$\n(^|\\.)twitcause\\.com$\n(^|\\.)twitchcdn\\.net$\n(^|\\.)twitch\\.tv$\n(^|\\.)twitgether\\.com$\n(^|\\.)twitgoo\\.com$\n(^|\\.)twitiq\\.com$\n(^|\\.)twitlonger\\.com$\n(^|\\.)twitmania\\.com$\n(^|\\.)twitoaster\\.com$\n(^|\\.)twitonmsn\\.com$\n(^|\\.)twitpic\\.com$\n(^|\\.)twitstat\\.com$\n(^|\\.)twittbot\\.net$\n(^|\\.)twitter4j\\.org$\n(^|\\.)twitter\\.com$\n(^|\\.)twittercounter\\.com$\n(^|\\.)twitterfeed\\.com$\n(^|\\.)twittergadget\\.com$\n(^|\\.)twitter\\.jp$\n(^|\\.)twitterkr\\.com$\n(^|\\.)twittermail\\.com$\n(^|\\.)twitterrific\\.com$\n(^|\\.)twittertim\\.es$\n(^|\\.)twitthat\\.com$\n(^|\\.)twitturk\\.com$\n(^|\\.)twitturly\\.com$\n(^|\\.)twitvid\\.com$\n(^|\\.)twitzap\\.com$\n(^|\\.)twiyia\\.com$\n(^|\\.)tw\\.jiepang\\.com$\n(^|\\.)tw\\.knowledge\\.yahoo\\.com$\n(^|\\.)tw\\.mall\\.yahoo\\.com$\n(^|\\.)tw\\.mobi\\.yahoo\\.com$\n(^|\\.)tw\\.money\\.yahoo\\.com$\n(^|\\.)tw\\.myblog\\.yahoo\\.com$\n(^|\\.)tw\\.news\\.yahoo\\.com$\n(^|\\.)twnorth\\.org\\.tw$\n(^|\\.)tw-npo\\.org$\n(^|\\.)twskype\\.com$\n(^|\\.)twstar\\.net$\n(^|\\.)tw\\.streetvoice\\.com$\n(^|\\.)twtkr\\.com$\n(^|\\.)tw\\.tomonews\\.net$\n(^|\\.)twtr2src\\.ogaoga\\.org$\n(^|\\.)twtrland\\.com$\n(^|\\.)twt\\.tl$\n(^|\\.)twttr\\.com$\n(^|\\.)twurl\\.nl$\n(^|\\.)tw\\.voa\\.mobi$\n(^|\\.)twyac\\.org$\n(^|\\.)tw\\.yahoo\\.com$\n(^|\\.)txxx\\.com$\n(^|\\.)tycool\\.com$\n(^|\\.)typepad\\.com$\n(^|\\.)u15\\.info$\n(^|\\.)u9un\\.com$\n(^|\\.)ub0\\.cc$\n(^|\\.)ubddns\\.org$\n(^|\\.)uberproxy\\.net$\n(^|\\.)ucdc1998\\.org$\n(^|\\.)uchicago\\.edu$\n(^|\\.)uc-japan\\.org$\n(^|\\.)uderzo\\.it$\n(^|\\.)udnbkk\\.com$\n(^|\\.)udn\\.com$\n(^|\\.)udn\\.com\\.tw$\n(^|\\.)uforadio\\.com\\.tw$\n(^|\\.)ufreevpn\\.com$\n(^|\\.)ugo\\.com$\n(^|\\.)uhdwallpapers\\.org$\n(^|\\.)uhrp\\.org$\n(^|\\.)uighurbiz\\.net$\n(^|\\.)uighur\\.narod\\.ru$\n(^|\\.)uighur\\.nl$\n(^|\\.)ukcdp\\.co\\.uk$\n(^|\\.)ukliferadio\\.co\\.uk$\n(^|\\.)uku\\.im$\n(^|\\.)ulike\\.net$\n(^|\\.)ulop\\.net$\n(^|\\.)ultravpn\\.fr$\n(^|\\.)ultraxs\\.com$\n(^|\\.)umich\\.edu$\n(^|\\.)unblock\\.cn\\.com$\n(^|\\.)unblockdmm\\.com$\n(^|\\.)unblocker\\.yt$\n(^|\\.)unblocksit\\.es$\n(^|\\.)unblock-us\\.com$\n(^|\\.)uncyclomedia\\.org$\n(^|\\.)uncyclopedia\\.hk$\n(^|\\.)uncyclopedia\\.tw$\n(^|\\.)underwoodammo\\.com$\n(^|\\.)unholyknight\\.com$\n(^|\\.)uni\\.cc$\n(^|\\.)unification\\.net$\n(^|\\.)unification\\.org\\.tw$\n(^|\\.)unirule\\.cloud$\n(^|\\.)unitedsocialpress\\.com$\n(^|\\.)unix100\\.com$\n(^|\\.)unknownspace\\.org$\n(^|\\.)unodedos\\.com$\n(^|\\.)unpo\\.org$\n(^|\\.)unseen\\.is$\n(^|\\.)untraceable\\.us$\n(^|\\.)uocn\\.org$\n(^|\\.)upcoming\\.yahoo\\.com$\n(^|\\.)updates\\.tdesktop\\.com$\n(^|\\.)upholdjustice\\.org$\n(^|\\.)upload4u\\.info$\n(^|\\.)uploaded\\.net$\n(^|\\.)uploaded\\.to$\n(^|\\.)uploadstation\\.com$\n(^|\\.)upmedia\\.mg$\n(^|\\.)upornia\\.com$\n(^|\\.)uproxy\\.org$\n(^|\\.)upwill\\.org$\n(^|\\.)ur7s\\.com$\n(^|\\.)uraban\\.me$\n(^|\\.)urbansurvival\\.com$\n(^|\\.)urchin\\.com$\n(^|\\.)urlborg\\.com$\n(^|\\.)urlparser\\.com$\n(^|\\.)usacn\\.com$\n(^|\\.)usaip\\.eu$\n(^|\\.)userapi\\.nytlog\\.com$\n(^|\\.)users\\.skynet\\.be$\n(^|\\.)usfk\\.mil$\n(^|\\.)ushuarencity\\.echainhost\\.com$\n(^|\\.)usinfo\\.state\\.gov$\n(^|\\.)usma\\.edu$\n(^|\\.)usmc\\.mil$\n(^|\\.)usmgtcg\\.ning\\.com$\n(^|\\.)usno\\.navy\\.mil$\n(^|\\.)usocctn\\.com$\n(^|\\.)us\\.to$\n(^|\\.)ustream\\.tv$\n(^|\\.)usunitednews\\.com$\n(^|\\.)usus\\.cc$\n(^|\\.)utopianpal\\.com$\n(^|\\.)uu-gg\\.com$\n(^|\\.)uukanshu\\.com$\n(^|\\.)uvwxyz\\.xyz$\n(^|\\.)uwants\\.com$\n(^|\\.)uwants\\.net$\n(^|\\.)uyghuramerican\\.org$\n(^|\\.)uyghurcanadiansociety\\.org$\n(^|\\.)uyghurcongress\\.org$\n(^|\\.)uyghur\\.co\\.uk$\n(^|\\.)uyghurensemble\\.co\\.uk$\n(^|\\.)uyghur-j\\.org$\n(^|\\.)uyghurpen\\.org$\n(^|\\.)uyghurpress\\.com$\n(^|\\.)uyghurstudies\\.org$\n(^|\\.)uygur\\.fc2web\\.com$\n(^|\\.)uygur\\.org$\n(^|\\.)uymaarip\\.com$\n(^|\\.)v2ex\\.com$\n(^|\\.)v2ray\\.com$\n(^|\\.)van001\\.com$\n(^|\\.)van698\\.com$\n(^|\\.)vanemu\\.cn$\n(^|\\.)vanilla-jp\\.com$\n(^|\\.)vanpeople\\.com$\n(^|\\.)vansky\\.com$\n(^|\\.)vaticannews\\.va$\n(^|\\.)vatn\\.org$\n(^|\\.)vcfbuilder\\.org$\n(^|\\.)vcf-online\\.org$\n(^|\\.)vds\\.rightster\\.com$\n(^|\\.)vegasred\\.com$\n(^|\\.)vegas\\.williamhill\\.com$\n(^|\\.)velkaepocha\\.sk$\n(^|\\.)venbbs\\.com$\n(^|\\.)venchina\\.com$\n(^|\\.)venetianmacao\\.com$\n(^|\\.)ventureswell\\.com$\n(^|\\.)veoh\\.com$\n(^|\\.)vermonttibet\\.org$\n(^|\\.)versavpn\\.com$\n(^|\\.)verybs\\.com$\n(^|\\.)vevo\\.com$\n(^|\\.)vft\\.com\\.tw$\n(^|\\.)viber\\.com$\n(^|\\.)vica\\.info$\n(^|\\.)victimsofcommunism\\.org$\n(^|\\.)vidble\\.com$\n(^|\\.)video\\.aol\\.ca$\n(^|\\.)video\\.aol\\.com$\n(^|\\.)video\\.aol\\.co\\.uk$\n(^|\\.)video\\.ap\\.org$\n(^|\\.)videobam\\.com$\n(^|\\.)videodetective\\.com$\n(^|\\.)video\\.fdbox\\.com$\n(^|\\.)video\\.foxbusiness\\.com$\n(^|\\.)videomega\\.tv$\n(^|\\.)videomo\\.com$\n(^|\\.)video\\.pbs\\.org$\n(^|\\.)videopediaworld\\.com$\n(^|\\.)videopress\\.com$\n(^|\\.)video\\.yahoo\\.com$\n(^|\\.)vidinfo\\.org$\n(^|\\.)vid\\.me$\n(^|\\.)vietdaikynguyen\\.com$\n(^|\\.)vijayatemple\\.org$\n(^|\\.)vimeo\\.com$\n(^|\\.)vimperator\\.org$\n(^|\\.)vincnd\\.com$\n(^|\\.)vine\\.co$\n(^|\\.)vinniev\\.com$\n(^|\\.)vip-enterprise\\.com$\n(^|\\.)virtualrealporn\\.com$\n(^|\\.)visibletweets\\.com$\n(^|\\.)vital247\\.org$\n(^|\\.)viu\\.com$\n(^|\\.)viu\\.tv$\n(^|\\.)vivahentai4u\\.net$\n(^|\\.)vivatube\\.com$\n(^|\\.)vivthomas\\.com$\n(^|\\.)vizvaz\\.com$\n(^|\\.)vjav\\.com$\n(^|\\.)vjmedia\\.com\\.hk$\n(^|\\.)vllcs\\.org$\n(^|\\.)vlog\\.xuite\\.net$\n(^|\\.)vmixcore\\.com$\n(^|\\.)vmpsoft\\.com$\n(^|\\.)vnet\\.link$\n(^|\\.)vn\\.hao123\\.com$\n(^|\\.)voa-11\\.akacast\\.akamaistream\\.net$\n(^|\\.)voacantonese\\.com$\n(^|\\.)voachineseblog\\.com$\n(^|\\.)voachinese\\.com$\n(^|\\.)voagd\\.com$\n(^|\\.)voanews\\.com$\n(^|\\.)voatibetan\\.com$\n(^|\\.)voatibetanenglish\\.com$\n(^|\\.)vocativ\\.com$\n(^|\\.)vocn\\.tv$\n(^|\\.)vod-abematv\\.akamaized\\.net$\n(^|\\.)vod\\.wwe\\.com$\n(^|\\.)vot\\.org$\n(^|\\.)vovo2000\\.com$\n(^|\\.)voxer\\.com$\n(^|\\.)voy\\.com$\n(^|\\.)vpn4all\\.com$\n(^|\\.)vpn\\.ac$\n(^|\\.)vpnaccount\\.org$\n(^|\\.)vpnaccounts\\.com$\n(^|\\.)vpnbook\\.com$\n(^|\\.)vpn\\.cjb\\.net$\n(^|\\.)vpn\\.cmu\\.edu$\n(^|\\.)vpncomparison\\.org$\n(^|\\.)vpncoupons\\.com$\n(^|\\.)vpncup\\.com$\n(^|\\.)vpndada\\.com$\n(^|\\.)vpnfan\\.com$\n(^|\\.)vpnfire\\.com$\n(^|\\.)vpnfires\\.biz$\n(^|\\.)vpnforgame\\.net$\n(^|\\.)vpngate\\.jp$\n(^|\\.)vpngate\\.net$\n(^|\\.)vpngratis\\.net$\n(^|\\.)vpnhq\\.com$\n(^|\\.)vpninja\\.net$\n(^|\\.)vpnintouch\\.com$\n(^|\\.)vpnintouch\\.net$\n(^|\\.)vpnjack\\.com$\n(^|\\.)vpnmaster\\.com$\n(^|\\.)vpnmentor\\.com$\n(^|\\.)vpnpick\\.com$\n(^|\\.)vpnpop\\.com$\n(^|\\.)vpnpronet\\.com$\n(^|\\.)vpnreactor\\.com$\n(^|\\.)vpnreviewz\\.com$\n(^|\\.)vpnsecure\\.me$\n(^|\\.)vpnshazam\\.com$\n(^|\\.)vpnshieldapp\\.com$\n(^|\\.)vpnsp\\.com$\n(^|\\.)vpn\\.sv\\.cmu\\.edu$\n(^|\\.)vpntraffic\\.com$\n(^|\\.)vpntunnel\\.com$\n(^|\\.)vpnuk\\.info$\n(^|\\.)vpnunlimitedapp\\.com$\n(^|\\.)vpnvip\\.com$\n(^|\\.)vpnworldwide\\.com$\n(^|\\.)vporn\\.com$\n(^|\\.)vpser\\.net$\n(^|\\.)vraiesagesse\\.net$\n(^|\\.)vrmtr\\.com$\n(^|\\.)vrsmash\\.com$\n(^|\\.)vtunnel\\.com$\n(^|\\.)vuku\\.cc$\n(^|\\.)vultryhw\\.com$\n(^|\\.)w3schools\\.com$\n(^|\\.)waffle1999\\.com$\n(^|\\.)wahas\\.com$\n(^|\\.)waigaobu\\.com$\n(^|\\.)waikeung\\.org$\n(^|\\.)wailaike\\.net$\n(^|\\.)waiwaier\\.com$\n(^|\\.)wallmama\\.com$\n(^|\\.)wallornot\\.org$\n(^|\\.)wallpapercasa\\.com$\n(^|\\.)wallproxy\\.com$\n(^|\\.)waltermartin\\.com$\n(^|\\.)waltermartin\\.org$\n(^|\\.)wanderinghorse\\.net$\n(^|\\.)wangafu\\.net$\n(^|\\.)wangjinbo\\.org$\n(^|\\.)wanglixiong\\.com$\n(^|\\.)wango\\.org$\n(^|\\.)wangruoshui\\.net$\n(^|\\.)want-daily\\.com$\n(^|\\.)wanz-factory\\.com$\n(^|\\.)wapedia\\.mobi$\n(^|\\.)warbler\\.iconfactory\\.net$\n(^|\\.)waselpro\\.com$\n(^|\\.)washeng\\.net$\n(^|\\.)washingtonpost\\.com$\n(^|\\.)watch8x\\.com$\n(^|\\.)watchinese\\.com$\n(^|\\.)watchmygf\\.net$\n(^|\\.)wattpad\\.com$\n(^|\\.)waveprotocol\\.org$\n(^|\\.)wav\\.tv$\n(^|\\.)waymo\\.com$\n(^|\\.)wda\\.gov\\.tw$\n(^|\\.)wdf5\\.com$\n(^|\\.)wearehairy\\.com$\n(^|\\.)wearn\\.com$\n(^|\\.)web2project\\.net$\n(^|\\.)webbang\\.net$\n(^|\\.)web\\.dev$\n(^|\\.)webevader\\.org$\n(^|\\.)webfreer\\.com$\n(^|\\.)webjb\\.org$\n(^|\\.)weblagu\\.com$\n(^|\\.)webmproject\\.org$\n(^|\\.)webrtc\\.org$\n(^|\\.)webrush\\.net$\n(^|\\.)website\\.informer\\.com$\n(^|\\.)websitepulse\\.com$\n(^|\\.)webs-tv\\.net$\n(^|\\.)webwarper\\.net$\n(^|\\.)webworkerdaily\\.com$\n(^|\\.)weekmag\\.info$\n(^|\\.)wefightcensorship\\.org$\n(^|\\.)wefong\\.com$\n(^|\\.)wego\\.here\\.com$\n(^|\\.)weiboleak\\.com$\n(^|\\.)weiboscope\\.jmsc\\.hku\\.hk$\n(^|\\.)weihuo\\.org$\n(^|\\.)weijingsheng\\.org$\n(^|\\.)weiming\\.info$\n(^|\\.)weiquanwang\\.org$\n(^|\\.)weisuo\\.ws$\n(^|\\.)welovecock\\.com$\n(^|\\.)wemigrate\\.org$\n(^|\\.)wengewang\\.com$\n(^|\\.)wengewang\\.org$\n(^|\\.)wenhui\\.ch$\n(^|\\.)wenxuecity\\.com$\n(^|\\.)wenyunchao\\.com$\n(^|\\.)wenzhao\\.ca$\n(^|\\.)westca\\.com$\n(^|\\.)westernshugdensociety\\.org$\n(^|\\.)westernwolves\\.com$\n(^|\\.)westkit\\.net$\n(^|\\.)westpoint\\.edu$\n(^|\\.)wetplace\\.com$\n(^|\\.)wetpussygames\\.com$\n(^|\\.)wexiaobo\\.org$\n(^|\\.)wezhiyong\\.org$\n(^|\\.)wezone\\.net$\n(^|\\.)wforum\\.com$\n(^|\\.)wha\\.la$\n(^|\\.)whatblocked\\.com$\n(^|\\.)whatbrowser\\.org$\n(^|\\.)whatsapp\\.com$\n(^|\\.)whatsapp\\.net$\n(^|\\.)whatsonweibo\\.com$\n(^|\\.)wheatseeds\\.org$\n(^|\\.)wheelockslatin\\.com$\n(^|\\.)whereiswerner\\.com$\n(^|\\.)wheretowatch\\.com$\n(^|\\.)whippedass\\.com$\n(^|\\.)whitebear\\.freebearblog\\.org$\n(^|\\.)whodns\\.xyz$\n(^|\\.)whoer\\.net$\n(^|\\.)whotalking\\.com$\n(^|\\.)whylover\\.com$\n(^|\\.)whyx\\.org$\n(^|\\.)w\\.idaiwan\\.com$\n(^|\\.)widevine\\.com$\n(^|\\.)wikaba\\.com$\n(^|\\.)wiki\\.cnitter\\.com$\n(^|\\.)wiki\\.esu\\.im$\n(^|\\.)wiki\\.gamerp\\.jp$\n(^|\\.)wiki\\.jqueryui\\.com$\n(^|\\.)wiki\\.keso\\.cn$\n(^|\\.)wikileaks\\.ch$\n(^|\\.)wikileaks\\.com$\n(^|\\.)wikileaks\\.de$\n(^|\\.)wikileaks\\.eu$\n(^|\\.)wikileaks-forum\\.com$\n(^|\\.)wikileaks\\.lu$\n(^|\\.)wikileaks\\.org$\n(^|\\.)wikileaks\\.pl$\n(^|\\.)wikilivres\\.info$\n(^|\\.)wikimapia\\.org$\n(^|\\.)wiki\\.moegirl\\.org$\n(^|\\.)wiki\\.oauth\\.net$\n(^|\\.)wikipedia\\.org$\n(^|\\.)wiki\\.phonegap\\.com$\n(^|\\.)wikiwiki\\.jp$\n(^|\\.)wildammo\\.com$\n(^|\\.)williamhill\\.com$\n(^|\\.)willw\\.net$\n(^|\\.)windowsphoneme\\.com$\n(^|\\.)windscribe\\.com$\n(^|\\.)wingamestore\\.com$\n(^|\\.)wingy\\.site$\n(^|\\.)winning11\\.com$\n(^|\\.)winwhispers\\.info$\n(^|\\.)wire\\.com$\n(^|\\.)wiredbytes\\.com$\n(^|\\.)wiredpen\\.com$\n(^|\\.)wisdompubs\\.org$\n(^|\\.)wisevid\\.com$\n(^|\\.)withgoogle\\.com$\n(^|\\.)withyoutube\\.com$\n(^|\\.)witnessleeteaching\\.com$\n(^|\\.)witopia\\.net$\n(^|\\.)wizcrafts\\.net$\n(^|\\.)wjbk\\.org$\n(^|\\.)wlcnew\\.jigsy\\.com$\n(^|\\.)wlx\\.sowiki\\.net$\n(^|\\.)wnacg\\.com$\n(^|\\.)wnacg\\.org$\n(^|\\.)wn\\.com$\n(^|\\.)wo3ttt\\.wordpress\\.com$\n(^|\\.)woeser\\.com$\n(^|\\.)woesermiddle-way\\.net$\n(^|\\.)wokar\\.org$\n(^|\\.)wolfax\\.com$\n(^|\\.)woolyss\\.com$\n(^|\\.)woopie\\.jp$\n(^|\\.)woopie\\.tv$\n(^|\\.)wordpress\\.com$\n(^|\\.)workatruna\\.com$\n(^|\\.)workerdemo\\.org\\.hk$\n(^|\\.)workerempowerment\\.org$\n(^|\\.)workersthebig\\.net$\n(^|\\.)worldcat\\.org$\n(^|\\.)worldjournal\\.com$\n(^|\\.)worldvpn\\.net$\n(^|\\.)wo\\.tc$\n(^|\\.)wow\\.com$\n(^|\\.)wowgirls\\.com$\n(^|\\.)wowlegacy\\.ml$\n(^|\\.)wow-life\\.net$\n(^|\\.)wowporn\\.com$\n(^|\\.)wowrk\\.com$\n(^|\\.)woxinghuiguo\\.com$\n(^|\\.)woyaolian\\.org$\n(^|\\.)wozy\\.in$\n(^|\\.)wp\\.com$\n(^|\\.)wpoforum\\.com$\n(^|\\.)wqyd\\.org$\n(^|\\.)wrchina\\.org$\n(^|\\.)wretch\\.cc$\n(^|\\.)writer\\.zoho\\.com$\n(^|\\.)wsgzao\\.github\\.io$\n(^|\\.)wsj\\.com$\n(^|\\.)wsjhk\\.com$\n(^|\\.)wsj\\.net$\n(^|\\.)wtbn\\.org$\n(^|\\.)wtfpeople\\.com$\n(^|\\.)wuerkaixi\\.com$\n(^|\\.)wufafangwen\\.com$\n(^|\\.)wufi\\.org\\.tw$\n(^|\\.)wuguoguang\\.com$\n(^|\\.)wujieliulan\\.com$\n(^|\\.)wujie\\.net$\n(^|\\.)wukangrui\\.net$\n(^|\\.)wuw\\.red$\n(^|\\.)wuyanblog\\.com$\n(^|\\.)wwitv\\.com$\n(^|\\.)www1\\.american\\.edu$\n(^|\\.)www1\\.biz$\n(^|\\.)www2\\.ohchr\\.org$\n(^|\\.)www2\\.rocketbbs\\.com$\n(^|\\.)www\\.abclite\\.net$\n(^|\\.)www\\.ajsands\\.com$\n(^|\\.)www\\.americorps\\.gov$\n(^|\\.)www\\.antd\\.org$\n(^|\\.)www\\.aolnews\\.com$\n(^|\\.)www\\.businessinsider\\.com\\.au$\n(^|\\.)www\\.citizenlab\\.org$\n(^|\\.)www\\.cmoinc\\.org$\n(^|\\.)www\\.cool18\\.com$\n(^|\\.)www\\.dmm\\.com$\n(^|\\.)www\\.dwheeler\\.com$\n(^|\\.)www\\.eastturkistan\\.net$\n(^|\\.)www\\.gmiddle\\.com$\n(^|\\.)www\\.gmiddle\\.net$\n(^|\\.)wwwhost\\.biz$\n(^|\\.)www\\.hustlercash\\.com$\n(^|\\.)www\\.idlcoyote\\.com$\n(^|\\.)www\\.imdb\\.com$\n(^|\\.)www\\.kindleren\\.com$\n(^|\\.)www\\.klip\\.me$\n(^|\\.)www\\.lamenhu\\.com$\n(^|\\.)www\\.lib\\.virginia\\.edu$\n(^|\\.)www\\.linksalpha\\.com$\n(^|\\.)www\\.metro\\.taipei$\n(^|\\.)www\\.monlamit\\.org$\n(^|\\.)www\\.moztw\\.org$\n(^|\\.)www\\.m-sport\\.co\\.uk$\n(^|\\.)www\\.nbc\\.com$\n(^|\\.)www\\.orchidbbs\\.com$\n(^|\\.)www\\.owind\\.com$\n(^|\\.)www\\.oxid\\.it$\n(^|\\.)www\\.powerpointninja\\.com$\n(^|\\.)www\\.s4miniarchive\\.com$\n(^|\\.)www\\.sciencemag\\.org$\n(^|\\.)www\\.shadowsocks\\.com$\n(^|\\.)www\\.shwchurch\\.org$\n(^|\\.)www\\.skype\\.com$\n(^|\\.)www\\.tablesgenerator\\.com$\n(^|\\.)www\\.taiwanonline\\.cc$\n(^|\\.)www\\.taup\\.org\\.tw$\n(^|\\.)www\\.thechinastory\\.org$\n(^|\\.)www\\.wangruowang\\.org$\n(^|\\.)www\\.wan-press\\.org$\n(^|\\.)www\\.websnapr\\.com$\n(^|\\.)www\\.zensur\\.freerk\\.com$\n(^|\\.)wzyboy\\.im$\n(^|\\.)x1949x\\.com$\n(^|\\.)x24hr\\.com$\n(^|\\.)x365x\\.com$\n(^|\\.)xanga\\.com$\n(^|\\.)x-art\\.com$\n(^|\\.)xa\\.yimg\\.com$\n(^|\\.)xbabe\\.com$\n(^|\\.)x-berry\\.com$\n(^|\\.)xbookcn\\.com$\n(^|\\.)xbtce\\.com$\n(^|\\.)xcafe\\.in$\n(^|\\.)xcity\\.jp$\n(^|\\.)x\\.company$\n(^|\\.)xcritic\\.com$\n(^|\\.)xda-developers\\.com$\n(^|\\.)xerotica\\.com$\n(^|\\.)xfinity\\.com$\n(^|\\.)xfm\\.pp\\.ru$\n(^|\\.)xgmyd\\.com$\n(^|\\.)xhamster\\.com$\n(^|\\.)xianba\\.net$\n(^|\\.)xianchawang\\.net$\n(^|\\.)xianjian\\.tw$\n(^|\\.)xianqiao\\.net$\n(^|\\.)xiaobaiwu\\.com$\n(^|\\.)xiaochuncnjp\\.com$\n(^|\\.)xiaod\\.in$\n(^|\\.)xiaohexie\\.com$\n(^|\\.)xiaolan\\.me$\n(^|\\.)xiaoma\\.org$\n(^|\\.)xiezhua\\.com$\n(^|\\.)xihua\\.es$\n(^|\\.)xijie\\.wordpress\\.com$\n(^|\\.)xing\\.com$\n(^|\\.)xinhuanet\\.org$\n(^|\\.)xinmiao\\.com\\.hk$\n(^|\\.)xinqimeng\\.over-blog\\.com$\n(^|\\.)xinsheng\\.net$\n(^|\\.)xinshijue\\.com$\n(^|\\.)xinyubbs\\.net$\n(^|\\.)xiongpian\\.com$\n(^|\\.)xiuren\\.org$\n(^|\\.)xizang-zhiye\\.org$\n(^|\\.)xjp\\.cc$\n(^|\\.)xjtravelguide\\.com$\n(^|\\.)xkiwi\\.tk$\n(^|\\.)xlfmtalk\\.com$\n(^|\\.)xlfmwz\\.info$\n(^|\\.)xm\\.com$\n(^|\\.)xml-training-guide\\.com$\n(^|\\.)xmovies\\.com$\n(^|\\.)xn--4gq171p\\.com$\n(^|\\.)xn--czq75pvv1aj5c\\.org$\n(^|\\.)xn--i2ru8q2qg\\.com$\n(^|\\.)xn--ngstr-lra8j\\.com$\n(^|\\.)xn--oiq\\.cc$\n(^|\\.)xn--p8j9a0d9c9a\\.xn--q9jyb4c$\n(^|\\.)xnxx\\.com$\n(^|\\.)xpdo\\.net$\n(^|\\.)xpud\\.org$\n(^|\\.)xrentdvd\\.com$\n(^|\\.)xskywalker\\.com$\n(^|\\.)xskywalker\\.net$\n(^|\\.)xtube\\.com$\n(^|\\.)xuchao\\.net$\n(^|\\.)xuchao\\.org$\n(^|\\.)xuehua\\.us$\n(^|\\.)xuzhiyong\\.net$\n(^|\\.)xvideo\\.cc$\n(^|\\.)xvideos\\.com$\n(^|\\.)xvideos\\.es$\n(^|\\.)x-wall\\.org$\n(^|\\.)xxbbx\\.com$\n(^|\\.)xxlmovies\\.com$\n(^|\\.)xxuz\\.com$\n(^|\\.)xxx\\.com$\n(^|\\.)xxxfuckmom\\.com$\n(^|\\.)xxxx\\.com\\.au$\n(^|\\.)xxx\\.xxx$\n(^|\\.)xxxy\\.biz$\n(^|\\.)xxxy\\.info$\n(^|\\.)xxxymovies\\.com$\n(^|\\.)xysblogs\\.org$\n(^|\\.)xys\\.dxiong\\.com$\n(^|\\.)xys\\.org$\n(^|\\.)xyy69\\.com$\n(^|\\.)xyy69\\.info$\n(^|\\.)yahoo\\.com\\.hk$\n(^|\\.)yakbutterblues\\.com$\n(^|\\.)yam\\.com$\n(^|\\.)yam\\.org\\.tw$\n(^|\\.)yanghengjun\\.com$\n(^|\\.)yangjianli\\.com$\n(^|\\.)yasni\\.co\\.uk$\n(^|\\.)yayabay\\.com$\n(^|\\.)ydy\\.com$\n(^|\\.)yeahteentube\\.com$\n(^|\\.)yecl\\.net$\n(^|\\.)yeelou\\.com$\n(^|\\.)yeeyi\\.com$\n(^|\\.)yegle\\.net$\n(^|\\.)yes123\\.com\\.tw$\n(^|\\.)yesasia\\.com$\n(^|\\.)yesasia\\.com\\.hk$\n(^|\\.)yes-news\\.com$\n(^|\\.)yespornplease\\.com$\n(^|\\.)yes\\.xxx$\n(^|\\.)yeyeclub\\.com$\n(^|\\.)ygto\\.com$\n(^|\\.)yhcw\\.net$\n(^|\\.)yibada\\.com$\n(^|\\.)yibaochina\\.com$\n(^|\\.)yidio\\.com$\n(^|\\.)yigeni\\.com$\n(^|\\.)yilubbs\\.com$\n(^|\\.)yingsuoss\\.com$\n(^|\\.)yinlei\\.org$\n(^|\\.)yipub\\.com$\n(^|\\.)yizhihongxing\\.com$\n(^|\\.)yobit\\.net$\n(^|\\.)yobt\\.com$\n(^|\\.)yobt\\.tv$\n(^|\\.)yogichen\\.org$\n(^|\\.)yolasite\\.com$\n(^|\\.)yomiuri\\.co\\.jp$\n(^|\\.)yong\\.hu$\n(^|\\.)yorkbbs\\.ca$\n(^|\\.)youdontcare\\.com$\n(^|\\.)you-get\\.org$\n(^|\\.)youjizz\\.com$\n(^|\\.)youmaker\\.com$\n(^|\\.)youngpornvideos\\.com$\n(^|\\.)youngspiration\\.hk$\n(^|\\.)youpai\\.org$\n(^|\\.)youporn\\.com$\n(^|\\.)youporngay\\.com$\n(^|\\.)yourepeat\\.com$\n(^|\\.)your-freedom\\.net$\n(^|\\.)yourlisten\\.com$\n(^|\\.)yourlust\\.com$\n(^|\\.)yourprivatevpn\\.com$\n(^|\\.)yourtrap\\.com$\n(^|\\.)yousendit\\.com$\n(^|\\.)youshun12\\.com$\n(^|\\.)youthnetradio\\.org$\n(^|\\.)youtu\\.be$\n(^|\\.)youtubecn\\.com$\n(^|\\.)youtube\\.com$\n(^|\\.)youtubeeducation\\.com$\n(^|\\.)youtubegaming\\.com$\n(^|\\.)youtube-nocookie\\.com$\n(^|\\.)youversion\\.com$\n(^|\\.)youwin\\.com$\n(^|\\.)youxu\\.info$\n(^|\\.)yt\\.be$\n(^|\\.)ytht\\.net$\n(^|\\.)ytimg\\.com$\n(^|\\.)ytn\\.co\\.kr$\n(^|\\.)yuanming\\.net$\n(^|\\.)yuanzhengtang\\.org$\n(^|\\.)yulghun\\.com$\n(^|\\.)yunchao\\.net$\n(^|\\.)yuntipub\\.com$\n(^|\\.)yuvutu\\.com$\n(^|\\.)yvesgeleyn\\.com$\n(^|\\.)ywpw\\.com$\n(^|\\.)yx51\\.net$\n(^|\\.)yyii\\.org$\n(^|\\.)yzzk\\.com$\n(^|\\.)zacebook\\.com$\n(^|\\.)zalmos\\.com$\n(^|\\.)zannel\\.com$\n(^|\\.)zaobao\\.com$\n(^|\\.)zaobao\\.com\\.sg$\n(^|\\.)zaozon\\.com$\n(^|\\.)zapto\\.org$\n(^|\\.)zattoo\\.com$\n(^|\\.)zb\\.com$\n(^|\\.)zdnet\\.com\\.tw$\n(^|\\.)zello\\.com$\n(^|\\.)zengjinyan\\.org$\n(^|\\.)zenmate\\.com$\n(^|\\.)zenmate\\.com\\.ru$\n(^|\\.)zeronet\\.io$\n(^|\\.)zeutch\\.com$\n(^|\\.)zfreet\\.com$\n(^|\\.)zgsddh\\.com$\n(^|\\.)zgzcjj\\.net$\n(^|\\.)zhanbin\\.net$\n(^|\\.)zhangboli\\.net$\n(^|\\.)zhangtianliang\\.com$\n(^|\\.)zhanlve\\.org$\n(^|\\.)zhao\\.1984\\.city$\n(^|\\.)zhao\\.jinhai\\.de$\n(^|\\.)zh\\.bitterwinter\\.org$\n(^|\\.)zh\\.ecdm\\.wikia\\.com$\n(^|\\.)zhenghui\\.org$\n(^|\\.)zhengjian\\.org$\n(^|\\.)zhengwunet\\.org$\n(^|\\.)zhenlibu1984\\.com$\n(^|\\.)zhenlibu\\.info$\n(^|\\.)zhenxiang\\.biz$\n(^|\\.)zhinengluyou\\.com$\n(^|\\.)zhongguo\\.ca$\n(^|\\.)zhongguorenquan\\.org$\n(^|\\.)zhongguotese\\.net$\n(^|\\.)zhongmeng\\.org$\n(^|\\.)zhoushuguang\\.com$\n(^|\\.)zh\\.pokerstrategy\\.com$\n(^|\\.)zh\\.pttpedia\\.wikia\\.com$\n(^|\\.)zhreader\\.com$\n(^|\\.)zhuangbi\\.me$\n(^|\\.)zhuanxing\\.cn$\n(^|\\.)zhuatieba\\.com$\n(^|\\.)zhuichaguoji\\.org$\n(^|\\.)zh\\.uncyclopedia\\.wikia\\.com$\n(^|\\.)zh\\.wikinews\\.org$\n(^|\\.)zh\\.wikisource\\.org$\n(^|\\.)ziddu\\.com$\n(^|\\.)zillionk\\.com$\n(^|\\.)zim\\.vn$\n(^|\\.)zinio\\.com$\n(^|\\.)ziporn\\.com$\n(^|\\.)zippyshare\\.com$\n(^|\\.)zkaip\\.com$\n(^|\\.)zmw\\.cn$\n(^|\\.)zodgame\\.us$\n(^|\\.)zomobo\\.net$\n(^|\\.)zonaeuropa\\.com$\n(^|\\.)zonghexinwen\\.com$\n(^|\\.)zonghexinwen\\.net$\n(^|\\.)zoogvpn\\.com$\n(^|\\.)zootool\\.com$\n(^|\\.)zoozle\\.net$\n(^|\\.)zorrovpn\\.com$\n(^|\\.)zozotown\\.com$\n(^|\\.)zpn\\.im$\n(^|\\.)zspeeder\\.me$\n(^|\\.)zsrhao\\.com$\n(^|\\.)zuobiao\\.me$\n(^|\\.)zuo\\.la$\n(^|\\.)zuola\\.com$\n(^|\\.)zvereff\\.com$\n(^|\\.)zynaima\\.com$\n(^|\\.)zynamics\\.com$\n(^|\\.)zyns\\.com$\n(^|\\.)zyzc9\\.com$\n(^|\\.)zzcartoon\\.com$\n(^|\\.)zzcloud\\.me$\n(^|\\.)zzux\\.com$\n\n# Amazon\n(^|\\.)amazon\\.co\\.jp$\n(^|\\.)amazon\\.com$\n(^|\\.)amazonaws\\.com$\n13.32.0.0/15\n13.35.0.0/17\n18.184.0.0/15\n18.194.0.0/15\n18.208.0.0/13\n18.232.0.0/14\n52.58.0.0/15\n52.74.0.0/16\n52.77.0.0/16\n52.84.0.0/15\n52.200.0.0/13\n54.93.0.0/16\n54.156.0.0/14\n54.226.0.0/15\n54.230.156.0/22\n\n# BBC\n(^|\\.)\\w*uk-live\\w*\\.\\w*$\n(^|\\.)bbc\\.co$\n(^|\\.)bbc\\.com$\n\n# Discord\n(^|\\.)discord\\.gg$\n(^|\\.)discord\\.media$\n(^|\\.)discordapp\\.com$\n(^|\\.)discordapp\\.net$\n\n# Facebook\n(^|\\.)facebook\\.com$\n(^|\\.)fb\\.com$\n(^|\\.)fb\\.me$\n(^|\\.)fbcdn\\.com$\n(^|\\.)fbcdn\\.net$\n31.13.24.0/21\n31.13.64.0/18\n45.64.40.0/22\n66.220.144.0/20\n69.63.176.0/20\n69.171.224.0/19\n74.119.76.0/22\n103.4.96.0/22\n129.134.0.0/17\n157.240.0.0/17\n173.252.64.0/18\n179.60.192.0/22\n185.60.216.0/22\n204.15.20.0/22\n\n# Github\n(^|\\.)github\\.com$\n(^|\\.)github\\.io$\n(^|\\.)githubapp\\.com$\n(^|\\.)githubassets\\.com$\n(^|\\.)githubusercontent\\.com$\n(^|\\.)s3\\.amazonaws\\.com$\n\n# Google\n(^|\\.)1e100\\.net$\n(^|\\.)2mdn\\.net$\n(^|\\.)app-measurement\\.net$\n(^|\\.)g\\.co$\n(^|\\.)ggpht\\.com$\n(^|\\.)goo\\.gl$\n(^|\\.)googleapis\\.cn$\n(^|\\.)googleapis\\.com$\n(^|\\.)gstatic\\.cn$\n(^|\\.)gstatic\\.com$\n(^|\\.)gvt0\\.com$\n(^|\\.)gvt1\\.com$\n(^|\\.)gvt2\\.com$\n(^|\\.)gvt3\\.com$\n(^|\\.)xn--ngstr-lra8j\\.com$\n(^|\\.)youtu\\.be$\n(^|\\.)youtube-nocookie\\.com$\n(^|\\.)youtube\\.com$\n(^|\\.)yt\\.be$\n(^|\\.)ytimg\\.com$\n8.8.8.8\n8.8.4.4\n74.125.0.0/16\n173.194.0.0/16\n\n# Instagram\n(^|\\.)cdninstagram\\.com$\n(^|\\.)instagram\\.com$\n(^|\\.)instagr\\.am$\n(^|\\.)akamaihd\\.net$\n\n# Kakao Talk\n(^|\\.)kakao\\.com$\n(^|\\.)kakao\\.co\\.kr$\n(^|\\.)kakaocdn\\.net$\n1.201.0.0/24\n27.0.236.0/22\n103.27.148.0/22\n103.246.56.0/22\n110.76.140.0/22\n113.61.104.0/22\n\n# Line\n(^|\\.)lin\\.ee$\n(^|\\.)line-apps\\.com$\n(^|\\.)line-cdn\\.net$\n(^|\\.)line-scdn\\.net$\n(^|\\.)line\\.me$\n(^|\\.)line\\.naver\\.jp$\n(^|\\.)nhncorp\\.jp$\n103.2.28.0/24\n103.2.30.0/23\n119.235.224.0/24\n119.235.232.0/24\n119.235.235.0/24\n119.235.236.0/23\n147.92.128.0/17\n203.104.128.0/19\n\n# Microsoft\n(^|\\.)1drv\\.com$\n(^|\\.)aadrm\\.com$\n(^|\\.)acompli\\.com$\n(^|\\.)acompli\\.net$\n(^|\\.)aka\\.ms$\n(^|\\.)akadns\\.net$\n(^|\\.)aspnetcdn\\.com$\n(^|\\.)assets-yammer\\.com$\n(^|\\.)azure\\.com$\n(^|\\.)azure\\.net$\n(^|\\.)azureedge\\.net$\n(^|\\.)azurerms\\.com$\n(^|\\.)bing\\.com$\n(^|\\.)cloudapp\\.net$\n(^|\\.)cloudappsecurity\\.com$\n(^|\\.)edgesuite\\.net$\n(^|\\.)getmicrosoftkey\\.com$\n(^|\\.)gfx\\.ms$\n(^|\\.)hotmail\\.com$\n(^|\\.)live\\.com$\n(^|\\.)live\\.net$\n(^|\\.)lync\\.com$\n(^|\\.)microsoft\\.com$\n(^|\\.)microsoftazuread-sso\\.com$\n(^|\\.)microsoftonline-p\\.com$\n(^|\\.)microsoftonline-p\\.net$\n(^|\\.)microsoftonline\\.com$\n(^|\\.)microsoftstream\\.com$\n(^|\\.)msappproxy\\.net$\n(^|\\.)msauth\\.net$\n(^|\\.)msauthimages\\.net$\n(^|\\.)msecnd\\.net$\n(^|\\.)msedge\\.net$\n(^|\\.)msft\\.net$\n(^|\\.)msftauth\\.net$\n(^|\\.)msftauthimages\\.net$\n(^|\\.)msftidentity\\.com$\n(^|\\.)msidentity\\.com$\n(^|\\.)msn\\.com$\n(^|\\.)msocdn\\.com$\n(^|\\.)msocsp\\.com$\n(^|\\.)mstea\\.ms$\n(^|\\.)o365weve\\.com$\n(^|\\.)oaspapps\\.com$\n(^|\\.)office\\.com$\n(^|\\.)office\\.net$\n(^|\\.)office365\\.com$\n(^|\\.)officecdn-microsoft-com\\.akamaized\\.net$\n(^|\\.)officeppe\\.net$\n(^|\\.)omniroot\\.com$\n(^|\\.)onedrive\\.com$\n(^|\\.)onenote\\.com$\n(^|\\.)onenote\\.net$\n(^|\\.)onestore\\.ms$\n(^|\\.)onmicrosoft\\.com$\n(^|\\.)outlook\\.com$\n(^|\\.)outlookmobile\\.com$\n(^|\\.)phonefactor\\.net$\n(^|\\.)public-trust\\.com$\n(^|\\.)s-microsoft\\.com$\n(^|\\.)sfbassets\\.com$\n(^|\\.)sfx\\.ms$\n(^|\\.)sharepoint\\.com$\n(^|\\.)sharepointonline\\.com$\n(^|\\.)skype\\.com$\n(^|\\.)skypeassets\\.com$\n(^|\\.)skypeforbusiness\\.com$\n(^|\\.)staffhub\\.ms$\n(^|\\.)svc\\.ms$\n(^|\\.)sway-cdn\\.com$\n(^|\\.)sway-extensions\\.com$\n(^|\\.)sway\\.com$\n(^|\\.)trafficmanager\\.net$\n(^|\\.)uservoice\\.com$\n(^|\\.)virtualearth\\.net$\n(^|\\.)visualstudio\\.com$\n(^|\\.)windows-ppe\\.net$\n(^|\\.)windows\\.com$\n(^|\\.)windows\\.net$\n(^|\\.)windowsazure\\.com$\n(^|\\.)windowsupdate\\.com$\n(^|\\.)wunderlist\\.com$\n(^|\\.)yammer\\.com$\n(^|\\.)yammerusercontent\\.com$\n\n# MytvSUPER\n(^|\\.)\\w*nowtv100\\w*\\.\\w*$\n(^|\\.)\\w*rthklive\\w*\\.\\w*$\n(^|\\.)mytvsuper\\.com$\n\n# Netflix\n(^|\\.)netflix\\.com$\n(^|\\.)netflix\\.net$\n(^|\\.)nflxext\\.com$\n(^|\\.)nflximg\\.com$\n(^|\\.)nflximg\\.net$\n(^|\\.)nflxvideo\\.net$\n8.41.4.0/24\n23.246.0.0/18\n37.77.184.0/21\n45.57.0.0/17\n64.120.128.0/17\n66.197.128.0/17\n69.53.224.0/19\n108.175.32.0/20\n185.2.220.0/22\n185.9.188.0/22\n192.173.64.0/18\n198.38.96.0/19\n198.45.48.0/20\n207.45.72.0/22\n208.75.76.0/22\n\n# OneDrive\n(^|\\.)\\w*1drv\\w*\\.\\w*$\n(^|\\.)\\w*onedrive\\w*\\.\\w*$\n(^|\\.)\\w*skydrive\\w*\\.\\w*$\n(^|\\.)livefilestore\\.com$\n(^|\\.)oneclient\\.sfx\\.ms$\n(^|\\.)onedrive\\.com$\n(^|\\.)onedrive\\.live\\.com$\n(^|\\.)photos\\.live\\.com$\n(^|\\.)skydrive\\.wns\\.windows\\.com$\n(^|\\.)spoprod-a\\.akamaihd\\.net$\n(^|\\.)storage\\.live.com$\n(^|\\.)storage\\.msn.com$\n\n# Pixiv\n(^|\\.)pixiv\\.net$\n(^|\\.)pximg\\.net$\n\n# Porn\n(^|\\.)\\w*porn\\w*\\.\\w*$\n(^|\\.)8teenxxx\\.com$\n(^|\\.)ahcdn\\.com$\n(^|\\.)bcvcdn\\.com$\n(^|\\.)bongacams\\.com$\n(^|\\.)chaturbate\\.com$\n(^|\\.)dditscdn\\.com$\n(^|\\.)livejasmin\\.com$\n(^|\\.)rdtcdn\\.com$\n(^|\\.)redtube\\.com$\n(^|\\.)sb-cd\\.com$\n(^|\\.)spankbang\\.com$\n(^|\\.)t66y\\.com$\n(^|\\.)xhamster\\.com$\n(^|\\.)xnxx-cdn\\.com$\n(^|\\.)xnxx\\.com$\n(^|\\.)xvideos-cdn\\.com$\n(^|\\.)xvideos\\.com$\n(^|\\.)ypncdn\\.com$\n\n# ResiloSync\n(^|\\.)config\\.getsync\\.com$\n(^|\\.)config\\.resilio\\.com$\n54.235.182.157/32\n107.182.230.198/32\n173.244.209.150/32\n173.244.217.42/32\n209.95.56.60/32\n\n# Steam\n(^|\\.)fanatical\\.com$\n(^|\\.)humblebundle\\.com$\n(^|\\.)steamcommunity\\.com$\n(^|\\.)steampowered\\.com$\n(^|\\.)steamstatic\\.com$\n\n# Telegram\n(^|\\.)t\\.me$\n(^|\\.)tdesktop\\.com$\n(^|\\.)telegra\\.ph$\n(^|\\.)telegram\\.me$\n(^|\\.)telegram\\.org$\n91.108.0.0/16\n109.239.140.0/24\n149.154.160.0/20\n2001:67c:4e8::/48\n2001:b28:f23d::/48\n2001:b28:f23f::/48\n\n# Twitch\n(^|\\.)twitch\\.tv$\n(^|\\.)ttvnw\\.net$\n(^|\\.)jtvnw\\.net$\n(^|\\.)akamaized\\.net$\n\n# Twitter\n(^|\\.)t\\.co$\n(^|\\.)twimg\\.co$\n(^|\\.)twimg\\.com$\n(^|\\.)twimg\\.org$\n\n# Whatsapp\n18.194.0.0/15\n34.224.0.0/12\n54.242.0.0/15\n50.22.198.204/30\n208.43.122.128/27\n108.168.174.0/16\n173.192.231.32/27\n158.85.5.192/27\n174.37.243.0/16\n158.85.46.128/27\n173.192.222.160/27\n184.173.128.0/17\n158.85.224.160/27\n75.126.150.0/16\n69.171.235.0/16\n\n#飞流直播\n(^|\\.)neulion\\.com$\n(^|\\.)icntv\\.xyz$\n(^|\\.)flzbcdn\\.xyz$\n\n#华文电视\n(^|\\.)ocnttv\\.com$\n"
  },
  {
    "path": "Trojan/File/chn.acl",
    "content": "#**********************************************************************\n# 04.15\n# 2020年4月15日21:18:34\n# 转载需要注明版权和来源\n#\n# 屏蔽常用网站、视频、手机rom广告&运营商劫持广告&数据跟踪&开屏广告\n#\n# 参照lhie1的surge规则改编，致谢!! https://github.com/lhie1/Surge\n# 参照scomper的surge规则改编，致谢!! https://gist.github.com/scomper/915b04a974f9e11952babfd0bbb241a8/revisions\n#\n# 参数解释：\n# [proxy_all] 默认代理-本规则使用\n# [bypass_all] 默认直连\n# [outbound_block_list] 禁止访问列表 在25行\n# [bypass_list] 直连列表 在1207多行\n# [proxy_list] 代理列表 在6874多行\n# [remote_dns] 远程 DNS 解析 -不加使用本地 DNS\n#\n#**********************************************************************\n\n[proxy_all]\n# 默认代理\n\n#**********************************************************************\n[outbound_block_list]\n# 禁止访问列表\n\n# 广告关键词\n(^|\\.)\\w*admarvel\\w*\\.\\w*$\n(^|\\.)\\w*admaster\\w*\\.\\w*$\n(^|\\.)\\w*adsage\\w*\\.\\w*$\n(^|\\.)\\w*adsensor\\w*\\.\\w*$\n(^|\\.)\\w*adservice\\w*\\.\\w*$\n(^|\\.)\\w*adsh\\w*\\.\\w*$\n(^|\\.)\\w*adsmogo\\w*\\.\\w*$\n(^|\\.)\\w*adsrvmedia\\w*\\.\\w*$\n(^|\\.)\\w*adsserving\\w*\\.\\w*$\n(^|\\.)\\w*adsystem\\w*\\.\\w*$\n(^|\\.)\\w*adwords\\w*\\.\\w*$\n(^|\\.)\\w*analysis\\w*\\.\\w*$\n(^|\\.)\\w*analytics\\w*\\.\\w*$\n(^|\\.)\\w*applovin\\w*\\.\\w*$\n(^|\\.)\\w*appsflyer\\w*\\.\\w*$\n(^|\\.)\\w*domob\\w*\\.\\w*$\n(^|\\.)\\w*duomeng\\w*\\.\\w*$\n(^|\\.)\\w*dwtrack\\w*\\.\\w*$\n(^|\\.)\\w*guanggao\\w*\\.\\w*$\n(^|\\.)\\w*lianmeng\\w*\\.\\w*$\n(^|\\.)\\w*monitor\\w*\\.\\w*$\n(^|\\.)\\w*omgmta\\w*\\.\\w*$\n(^|\\.)\\w*omniture\\w*\\.\\w*$\n(^|\\.)\\w*openx\\w*\\.\\w*$\n(^|\\.)\\w*partnerad\\w*\\.\\w*$\n(^|\\.)\\w*pingfore\\w*\\.\\w*$\n(^|\\.)\\w*socdm\\w*\\.\\w*$\n(^|\\.)\\w*supersonicads\\w*\\.\\w*$\n(^|\\.)\\w*tracking\\w*\\.\\w*$\n(^|\\.)\\w*uedas\\w*\\.\\w*$\n(^|\\.)\\w*usage\\w*\\.\\w*$\n(^|\\.)\\w*wlmonitor\\w*\\.\\w*$\n(^|\\.)\\w*zjtoolbar\\w*\\.\\w*$\n(^|\\.)ad\\d{0,3}\\..*$\n(^|\\.)ads\\d{0,3}\\..*$\n(^|\\.)tracking\\..*$\n\n# 163\n(^|\\.)(adgeo|bobo|fa|g|g1|gb|nex)(\\.corp|)\\.163\\.com$\n(^|\\.)(analytics|img1|img2|mimg|push)\\.126\\.net$\n(^|\\.)(a|c|clkservice|conv|dsp|dsp-impr2|gorgon|rlogs|union|ydpushserver)\\.youdao\\.com$\n(^|\\.)(nc004x|nc045x|qt002x|tb060x|tb104x)\\.corp\\.youdao\\.com$\n(^|\\.)(haitaoad|iadmatvideo)\\.nosdn\\.127\\.net$\n(^|\\.)ir\\.mail\\.126\\.com$\n(^|\\.)ir\\.mail\\.yeah\\.net$\n(^|\\.)oimagea2\\.ydstatic\\.com$\n(^|\\.)pagechoice\\.net$\n(^|\\.)prom\\.gome\\.com\\.cn$\n(^|\\.)qchannel0\\d\\.cn$\n(^|\\.)static\\.flv\\.uuzuonline\\.com$\n(^|\\.)wanproxy\\.127\\.net$\n\n# 17173\n(^|\\.)cvda\\.17173\\.com$\n(^|\\.)imgapp\\.yeyou\\.com$\n(^|\\.)log1\\.17173\\.com$\n(^|\\.)s\\.17173cdn\\.com$\n(^|\\.)ue\\.yeyoucdn\\.com$\n(^|\\.)vda\\.17173\\.com$\n\n# 178\n(^|\\.)analytics\\.wanmei\\.com$\n(^|\\.)gg\\.stargame\\.com$\n\n# 2345\n(^|\\.)(dl|download|houtai|jifen|minipage|wan|jifendownload|zhushou)\\.2345\\.cn$\n\n# 360\n(^|\\.)3600\\.com$\n(^|\\.)gamebox\\.360\\.cn$\n(^|\\.)jiagu\\.360\\.cn$\n(^|\\.)kuaikan\\.netmon\\.360safe\\.com$\n(^|\\.)leak\\.360\\.cn$\n(^|\\.)lianmeng\\.360\\.cn$\n(^|\\.)pub\\.se\\.360\\.cn$\n(^|\\.)s\\.so\\.360\\.cn$\n(^|\\.)shouji\\.360\\.cn$\n(^|\\.)soft\\.data\\.weather\\.360\\.cn$\n(^|\\.)stat\\.360safe\\.com$\n(^|\\.)stat\\.m\\.360\\.cn$\n(^|\\.)update\\.360safe\\.com$\n(^|\\.)wan\\.360\\.cn$\n\n# 58\n(^|\\.)(58|imp|stat)\\.xgo\\.com\\.cn$\n(^|\\.)(brandshow|jing|track|tracklog)\\.58\\.com$\n\n# Alibaba\n(^|\\.)(adashx4yt|adash-c|ai|re|rj|simaba)\\.m\\.taobao\\.com$\n(^|\\.)(afp|atanx|atanx2|gma|gtms\\d\\d)\\.alicdn\\.com$\n(^|\\.)(fav|m|redirect|srd|tns)\\.simba\\.taobao\\.com$\n(^|\\.)(sdkinit|simaba|tyh)\\.taobao\\.com$\n(^|\\.)acjs\\.aliyun\\.com$\n(^|\\.)(adash-c|adashbc|adashxgc)\\.ut\\.taobao\\.com$\n(^|\\.)alipaylog\\.com$\n(^|\\.)amdc\\.alipay\\.com$\n(^|\\.)click\\.mz\\.simba\\.taobao\\.com$\n(^|\\.)g\\.click\\.taobao\\.com$\n(^|\\.)g\\.tbcdn\\.cn$\n(^|\\.)hydra\\.alibaba\\.com$\n(^|\\.)pindao\\.huoban\\.taobao\\.com$\n(^|\\.)show\\.re\\.taobao\\.com$\n(^|\\.)strip\\.taobaocdn\\.com$\n(^|\\.)userimg\\.qunar\\.com$\n(^|\\.)yiliao\\.hupan\\.com$\n\n# Adobe\n(^|\\.)3dns-2\\.adobe\\.com$\n(^|\\.)3dns-3\\.adobe\\.com$\n(^|\\.)activate\\.adobe\\.com$\n(^|\\.)activate\\.wip3\\.adobe\\.com$\n(^|\\.)activate-sea\\.adobe\\.com$\n(^|\\.)activate-sjc0\\.adobe\\.com$\n(^|\\.)adobe-dns\\.adobe\\.com$\n(^|\\.)adobe-dns-2\\.adobe\\.com$\n(^|\\.)adobe-dns-3\\.adobe\\.com$\n(^|\\.)ereg\\.adobe\\.com$\n(^|\\.)ereg\\.wip3\\.adobe\\.com$\n(^|\\.)geo2\\.adobe\\.com$\n(^|\\.)hl2rcv\\.adobe\\.com$\n(^|\\.)hlrcv\\.stage\\.adobe\\.com$\n(^|\\.)lm\\.licenses\\.adobe\\.com$\n(^|\\.)lmlicenses\\.wip4\\.adobe\\.com$\n(^|\\.)na1r\\.services\\.adobe\\.com$\n(^|\\.)na2m-pr\\.licenses\\.adobe\\.com$\n(^|\\.)practivate\\.adobe\\.com$\n(^|\\.)wip3\\.adobe\\.com$\n(^|\\.)wwis-dubc1-vip60\\.adobe\\.com$\n\n# Apple\n(^|\\.)adserver\\.unityads\\.unity3d\\.com$\n\n# AutoHome\n(^|\\.)(33|adproxy|al|alert|applogapi|c|cmx|dspmnt|pcd|pvx|rd|rdx|stats)\\.autohome\\.com\\.cn$\n(^|\\.)adm\\d\\.autoimg\\.cn$\n(^|\\.)push\\.app\\.autohome\\.com\\.cn$\n\n# Baidu\n(^|\\.)(a|adm|adscdn|afd|als|anquan|appc|as|c|cb|cbjs|cbjslog|cjhq|cpro|cpro2|cpu|cpu-admin|crs|drmcmm|e|eclick|eiv|entry)\\.baidu\\.(com|cn)$\n(^|\\.)(hc|hm|hmma|hpd|imageplus|ma|mobads-logs|mobads|mtj|nsclick)\\.baidu\\.(com|cn)$\n(^|\\.)(pups|rj|rp|spcode|tk|tongji|tuisong|ucstat|ufosdk|union|utility|utk|videopush|wangmeng|wm|znsv)\\.baidu\\.(com|cn)$\n(^|\\.)ad\\.duapps\\.com$\n(^|\\.)ad\\.player\\.baidu\\.com$\n(^|\\.)adx\\.xiaodutv\\.com$\n(^|\\.)ae\\.bdstatic\\.com$\n(^|\\.)antivirus\\.baidu\\.com$\n(^|\\.)api\\.cpu\\.baidu\\.com$\n(^|\\.)api\\.mobula\\.sdk\\.duapps\\.com$\n(^|\\.)ashifen\\.com$\n(^|\\.)baichuan\\.baidu\\.com$\n(^|\\.)baidu9635\\.com$\n(^|\\.)baidustatic\\.com$\n(^|\\.)baidutv\\.baidu\\.com$\n(^|\\.)baikebcs\\.bdimg\\.com$\n(^|\\.)banlv\\.baidu\\.com$\n(^|\\.)bar\\.baidu\\.com$\n(^|\\.)bdimg\\.share\\.baidu\\.com$\n(^|\\.)bdplus\\.baidu\\.com$\n(^|\\.)btlaunch\\.baidu\\.com$\n(^|\\.)cleaner\\.baidu\\.com$\n(^|\\.)click\\.bes\\.baidu\\.com$\n(^|\\.)click\\.hm\\.baidu\\.com$\n(^|\\.)click\\.qianqian\\.com$\n(^|\\.)cm\\.baidu\\.com$\n(^|\\.)cm\\.pos\\.baidu\\.com$\n(^|\\.)cpro\\.baidustatic\\.com$\n(^|\\.)cpro\\.tieba\\.baidu\\.com$\n(^|\\.)cpro\\.zhidao\\.baidu\\.com$\n(^|\\.)datax\\.baidu\\.com$\n(^|\\.)dl-vip\\.bav\\.baidu\\.com$\n(^|\\.)dl-vip\\.pcfaster\\.baidu\\.co\\.th$\n(^|\\.)dl1sw\\.baidu\\.com$\n(^|\\.)dl2\\.bav\\.baidu\\.com$\n(^|\\.)dl\\.client\\.baidu\\.com$\n(^|\\.)dl\\.ops\\.baidu\\.com$\n(^|\\.)dlsw\\.baidu\\.com$\n(^|\\.)dlsw\\.br\\.baidu\\.com$\n(^|\\.)download\\.bav\\.baidu\\.com$\n(^|\\.)download\\.sd\\.baidu\\.com$\n(^|\\.)drmcmm\\.baidu\\.com$\n(^|\\.)dup\\.baidustatic\\.com$\n(^|\\.)dxp\\.baidu\\.com$\n(^|\\.)dzl\\.baidu\\.com$\n(^|\\.)ecma\\.bdimg\\.com$\n(^|\\.)ecmb\\.bdimg\\.com$\n(^|\\.)ecmc\\.bdimg\\.com$\n(^|\\.)em\\.baidu\\.com$\n(^|\\.)ers\\.baidu\\.com$\n(^|\\.)f10\\.baidu\\.com$\n(^|\\.)fc-\\.cdn\\.bcebos\\.com$\n(^|\\.)fc-feed\\.cdn\\.bcebos\\.com$\n(^|\\.)fclick\\.baidu\\.com$\n(^|\\.)feed\\.baidu\\.com$\n(^|\\.)fexclick\\.baidu\\.com$\n(^|\\.)g\\.baidu\\.com$\n(^|\\.)gimg\\.baidu\\.com$\n(^|\\.)guanjia\\.baidu\\.com$\n(^|\\.)idm-su\\.baidu\\.com$\n(^|\\.)iebar\\.baidu\\.com$\n(^|\\.)ikcode\\.baidu\\.com$\n(^|\\.)img01\\.taotaosou\\.cn$\n(^|\\.)img\\.taotaosou\\.cn$\n(^|\\.)itsdata\\.map\\.baidu\\.com$\n(^|\\.)j\\.br\\.baidu\\.com$\n(^|\\.)kstj\\.baidu\\.com$\n(^|\\.)log\\.music\\.baidu\\.com$\n(^|\\.)log\\.nuomi\\.com$\n(^|\\.)m1\\.baidu\\.com$\n(^|\\.)mg09\\.zhaopin\\.com$\n(^|\\.)mipcache\\.bdstatic\\.com$\n(^|\\.)mpro\\.baidu\\.com$\n(^|\\.)msite\\.baidu\\.com$\n(^|\\.)neirong\\.baidu\\.com$\n(^|\\.)nsclickvideo\\.baidu\\.com$\n(^|\\.)openrcv\\.baidu\\.com$\n(^|\\.)pc\\.videoclick\\.baidu\\.com$\n(^|\\.)pos\\.baidu\\.com$\n(^|\\.)pups\\.bdimg\\.com$\n(^|\\.)push\\.music\\.baidu\\.com$\n(^|\\.)push\\.zhanzhang\\.baidu\\.com$\n(^|\\.)qchannel0\\d\\.cn$\n(^|\\.)qianclick\\.baidu\\.com$\n(^|\\.)release\\.baidu\\.com$\n(^|\\.)res\\.limei\\.com$\n(^|\\.)res\\.mi\\.baidu\\.com$\n(^|\\.)rigel\\.baidustatic\\.com$\n(^|\\.)river\\.zhidao\\.baidu\\.com$\n(^|\\.)rplog\\.baidu\\.com$\n(^|\\.)s\\.baidu\\.com$\n(^|\\.)s\\.cpro\\.baidu\\.com$\n(^|\\.)sa\\.tuisong\\.baidu\\.com$\n(^|\\.)sclick\\.baidu\\.com$\n(^|\\.)sestat\\.baidu\\.com$\n(^|\\.)shadu\\.baidu\\.com$\n(^|\\.)share\\.baidu\\.com$\n(^|\\.)shifen\\.com$\n(^|\\.)snippet\\.pos\\.baidu\\.com$\n(^|\\.)sobar\\.baidu\\.com$\n(^|\\.)sobartop\\.baidu\\.com$\n(^|\\.)stat\\.v\\.baidu\\.com$\n(^|\\.)su\\.bdimg\\.com$\n(^|\\.)su\\.bdstatic\\.com$\n(^|\\.)t10\\.baidu\\.com$\n(^|\\.)t11\\.baidu\\.com$\n(^|\\.)t12\\.baidu\\.com$\n(^|\\.)tkweb\\.baidu\\.com$\n(^|\\.)tob-cms\\.bj\\.bcebos\\.com$\n(^|\\.)toolbar\\.baidu\\.com$\n(^|\\.)tracker\\.baidu\\.com$\n(^|\\.)tuijian\\.baidu\\.com$\n(^|\\.)uat1\\.bfsspadserver\\.8le8le\\.com$\n(^|\\.)ubmcmm\\.baidustatic\\.com$\n(^|\\.)ulic\\.baidu\\.com$\n(^|\\.)ulog\\.imap\\.baidu\\.com$\n(^|\\.)unionimage\\.baidu\\.com$\n(^|\\.)vv84\\.bj\\.bcebos\\.com$\n(^|\\.)w\\.gdown\\.baidu\\.com$\n(^|\\.)w\\.x\\.baidu\\.com$\n(^|\\.)weishi\\.baidu\\.com$\n(^|\\.)wenku-cms\\.bj\\.bcebos\\.com$\n(^|\\.)wisepush\\.video\\.baidu\\.com$\n(^|\\.)wn\\.pos\\.baidu\\.com$\n(^|\\.)zz\\.bdstatic\\.com$\n(^|\\.)zzy1\\.quyaoya\\.com$\n\n# Book-app 起点 掌阅 书旗 宜搜\n(^|\\.)(adm|assets|tjlog)(\\.ps|)\\.easou\\.com$\n(^|\\.)(ad|push|sys)\\.zhangyue\\.com$\n(^|\\.)(cj|game|tongji)\\.qidian\\.com$\n(^|\\.)aishowbger\\.com$\n(^|\\.)api\\.itaoxiaoshuo\\.com$\n(^|\\.)bbcoe\\.cn$\n(^|\\.)dkeyn\\.com$\n(^|\\.)drdwy\\.com$\n(^|\\.)e701\\.net$\n(^|\\.)e\\.aa985\\.cn$\n(^|\\.)e\\.v02u9\\.cn$\n(^|\\.)ehxyz\\.com$\n(^|\\.)ethod\\.gzgmjcx\\.com$\n(^|\\.)focuscat\\.com$\n(^|\\.)hdswgc\\.com$\n(^|\\.)jyd\\.fjzdmy\\.com$\n(^|\\.)m\\.ourlj\\.com$\n(^|\\.)m\\.txtxr\\.com$\n(^|\\.)m\\.vsxet\\.com$\n(^|\\.)miam4\\.cn$\n(^|\\.)o\\.if\\.qidian\\.com$\n(^|\\.)p\\.vq6nsu\\.cn$\n(^|\\.)picture\\.duokan\\.com$\n(^|\\.)pyerc\\.com$\n(^|\\.)s1\\.cmfu\\.com$\n(^|\\.)sc\\.shayugg\\.com$\n(^|\\.)sdk\\.cferw\\.com$\n(^|\\.)sezvc\\.com$\n(^|\\.)ut2\\.shuqistat\\.com$\n(^|\\.)xgcsr\\.com$\n(^|\\.)xjq\\.jxmqkj\\.com$\n(^|\\.)xpe\\.cxaerp\\.com$\n(^|\\.)xtzxmy\\.com$\n(^|\\.)xyrkl\\.com$\n(^|\\.)zhuanfakong\\.com$\n\n# ByteDance 头条抖音\n(^|\\.)(ad|sm|dsp|nativeapp|partner|track)\\.toutiao\\.com$\n(^|\\.)ic\\.snssdk\\.com$\n(^|\\.)log\\.snssdk\\.com$\n(^|\\.)xlog\\.snssdk\\.com$\n\n# Dangdang\n(^|\\.)(a|click|schprompt|t)\\.dangdang\\.com$\n\n# Duomi\n(^|\\.)ad\\.duomi\\.com$\n(^|\\.)boxshows\\.com$\n\n# Facebook\n(^|\\.)staticxx\\.facebook\\.com$\n\n# Fang\n(^|\\.)click1n\\.soufun\\.com$\n(^|\\.)clickm\\.fang\\.com$\n(^|\\.)clickn\\.fang\\.com$\n(^|\\.)countpvn\\.light\\.fang\\.com$\n(^|\\.)countubn\\.light\\.soufun\\.com$\n(^|\\.)mshow\\.fang\\.com$\n(^|\\.)tongji\\.home\\.soufun\\.com$\n\n# Google\n(^|\\.)admob\\.com$\n(^|\\.)ads\\.gmodules\\.com$\n(^|\\.)ads\\.google\\.com$\n(^|\\.)adservice\\.google\\.com$\n(^|\\.)afd\\.l\\.google\\.com$\n(^|\\.)badad\\.googleplex\\.com$\n(^|\\.)csi\\.gstatic\\.com$\n(^|\\.)doubleclick(\\.com|\\.net)$\n(^|\\.)google-analytics\\.com$\n(^|\\.)googleadservices\\.com$\n(^|\\.)googleadsserving\\.cn$\n(^|\\.)googlecommerce\\.com$\n(^|\\.)googlesyndication\\.com$\n(^|\\.)mobileads\\.google\\.com$\n(^|\\.)pagead-tpc\\.l\\.google\\.com$\n(^|\\.)pagead\\.google\\.com$\n(^|\\.)pagead\\.l\\.google\\.com$\n(^|\\.)service\\.urchin\\.com$\n\n# JD\n(^|\\.)(c-nfa|img-x|jrclick|jzt|policy)\\.jd\\.com$\n(^|\\.)ads\\.union\\.jd\\.com$\n(^|\\.)cps\\.360buy\\.com$\n(^|\\.)stat\\.m\\.jd\\.com$\n\n# Kugou\n(^|\\.)(bssdl|bssdlbig|d|downmobile|fanxing|gad|game|gamebox|gg|install|install2|kgmobilestat|minidcsc|mo|mobilelog|mvads|p|rtmonitor|sdn|tj)\\.kugou\\.com$\n(^|\\.)(msg|push|update)\\.mobile\\.kugou\\.com$\n(^|\\.)ads\\.service\\.kugou\\.com$\n(^|\\.)gcapi\\.sy\\.kugou\\.com$\n(^|\\.)kuaikaiapp\\.com$\n(^|\\.)log\\.stat\\.kugou\\.com$\n(^|\\.)log\\.web\\.kugou\\.com$\n\n# Kuwo\n(^|\\.)(deliver|g|log|kwmsg|mobilead|msclick2|msphoneclick|updatepage|wa|webstat)\\.kuwo\\.cn$\n(^|\\.)apk\\.shouji\\.koowo\\.com$\n(^|\\.)g\\.koowo\\.com$\n\n# Meizu flyme 魅族\n(^|\\.)(aider-res|api-flow|api-game|api-push|cal|ebook|game-res|infocenter|openapi-news|reader|tongji-res1|tongji|uxip)\\.meizu\\.com$\n(^|\\.)(bro|t-e|t-flow)\\.flyme\\.cn$\n(^|\\.)(ebook|game|push|reader|upush)\\.res\\.meizu\\.com$\n(^|\\.)aries\\.mzres\\.com$\n(^|\\.)umid\\.orion\\.meizu\\.com$\n\n# Meitu\n(^|\\.)(corp|gg|message|tuiguang)\\.meitu\\.com$\n(^|\\.)(dc|mdc|rabbit)\\.meitustat\\.com$\n(^|\\.)a\\.koudai\\.com$\n(^|\\.)adui\\.tg\\.meitu\\.com$\n(^|\\.)meitubeauty\\.meitudata\\.com$\n(^|\\.)rabbit\\.tg\\.meitu\\.com$\n(^|\\.)xiuxiu\\.android\\.dl\\.meitu\\.com$\n(^|\\.)xiuxiu\\.mobile\\.meitudata\\.com$\n\n# Miui 小米\n(^|\\.)(ad|ad1|shenghuo|xmpush)\\.xiaomi\\.com$\n(^|\\.)(a|wtradv)\\.market\\.xiaomi\\.com$\n(^|\\.)(bss|de|dvb|jellyfish|stat)\\.pandora\\.xiaomi\\.com$\n(^|\\.)(d|migc|migcreport|mis)\\.g\\.mi\\.com$\n(^|\\.)(notice|ppurifier)\\.game\\.xiaomi\\.com$\n(^|\\.)(r|security)\\.browser\\.miui\\.com$\n(^|\\.)tracking\\.miui\\.com$\n(^|\\.)union\\.mi\\.com$\n\n# Moji\n(^|\\.)ad\\.api\\.moji\\.com$\n(^|\\.)app\\.moji001\\.com$\n(^|\\.)cdn\\.moji002\\.com$\n(^|\\.)cdn2\\.moji002\\.com$\n(^|\\.)fds\\.api\\.moji\\.com$\n(^|\\.)log\\.moji\\.com$\n(^|\\.)stat\\.moji\\.com$\n(^|\\.)ugc\\.moji001\\.com$\n\n# Qingting\\.fm\n(^|\\.)(ad|admgr|logger)\\.qingting\\.fm$\n(^|\\.)dload\\.qd\\.qingting\\.fm$\n(^|\\.)s\\.qd\\.qingting\\.fm$\n(^|\\.)s\\.qd\\.qingtingfm\\.com$\n\n# QQ\n(^|\\.)\\w*omgmta\\w*\\.\\w*$\n(^|\\.)(act|adsfile|bugly|buluo|gdt|monitor|pingma|pingtcss|report|tajs|tcss|uu)\\.qq\\.com$\n(^|\\.)ad\\.qun\\.qq\\.com$\n\n# RenRen\n(^|\\.)jebe\\.renren\\.com$\n(^|\\.)ebp\\.renren\\.com$\n(^|\\.)jebe\\.xnimg\\.cn$\n\n# Sina\n(^|\\.)(adimg|pay|sax|sdkapp|sdkclick|trends|u1\\.img|wbapp|wbclick|wbpctips)\\.mobile\\.sina\\.cn$\n(^|\\.)(ad|ad\\d|adbox|adm|d\\d|dcads|dmp|leju|sax|sax\\d|slog)\\.sina\\.com(\\.cn|)$\n(^|\\.)(alitui|biz|game|wax)\\.weibo\\.com(\\.cn|)$\n(^|\\.)cre\\.dp\\.sina\\.cn$\n(^|\\.)gw5\\.push\\.mcp\\.weibo\\.cn$\n(^|\\.)log\\.mix\\.sina\\.com\\.cn$\n(^|\\.)mobileads\\.dx\\.cn$\n(^|\\.)newspush\\.sinajs\\.cn$\n(^|\\.)sdkapp\\.uve\\.weibo\\.com$\n(^|\\.)tui\\.weibo\\.com$\n(^|\\.)wbapp\\.uve\\.weibo\\.com$\n(^|\\.)zymo\\.mps\\.weibo\\.com$\n\n# Sougou\n(^|\\.)(123|adsence|brand|cpc|epro|fair|files2|goto|golden1|inte|iwan|lu|pb|pd|pv|theta|wan|wangmeng)\\.sogou\\.com$\n(^|\\.)(123|galaxy|lu)\\.sogoucdn\\.com$\n(^|\\.)amfi\\.gou\\.sogou\\.com$\n\n# Teleplus\n(^|\\.)applovin\\.com$\n(^|\\.)guangzhuiyuan\\.com$\n\n# Twitter\n(^|\\.)(ads|syndication|syndication-o|analytics|scribe|p)\\.twitter\\.com$\n(^|\\.)ads-twitter\\.com$\n(^|\\.)tellapart\\.com$\n(^|\\.)urls\\.api\\.twitter\\.com$\n\n# UC ali\n(^|\\.)(adslot|applog|track)\\.uc\\.cn$\n(^|\\.)(cms|puds|uc|ucsec1|ucsec)\\.ucweb\\.com$\n(^|\\.)(log|patriot)\\.cs\\.pp\\.cn$\n(^|\\.)api\\.mp\\.uc\\.cn$\n(^|\\.)client\\.video\\.ucweb\\.com$\n(^|\\.)dispatcher\\.upmc\\.uc\\.cn$\n(^|\\.)huichuan\\.sm\\.cn$\n(^|\\.)iflow\\.uczzd(\\.\\w{2,3}){1,2}$\n(^|\\.)m\\.uczzd\\.cn$\n(^|\\.)server\\.m\\.pp\\.cn$\n(^|\\.)u\\.uc123\\.com$\n(^|\\.)u\\.ucfly\\.com$\n\n# Weifeng\n(^|\\.)(aoodoo|push|yes1)\\.feng\\.com$\n(^|\\.)fengbuy\\.com$\n(^|\\.)push\\.feng\\.com$\n(^|\\.)we\\.tm$\n\n# WPS Office\n(^|\\.)(bannera|rating6|cloudservice.*)\\.kingsoft-office-service\\.com$\n(^|\\.)(docerad|gou|info|minfo|notify|pcfg|push|wpsweb-dc)\\.wps\\.cn$\n(^|\\.)ad\\.docer\\.wps\\.cn$\n(^|\\.)adm\\.zookingsoft\\.com$\n(^|\\.)bole\\.shangshufang\\.ksosoft\\.com$\n(^|\\.)counter\\.kingsoft\\.com$\n(^|\\.)dl\\.op\\.wpscdn\\.cn$\n(^|\\.)hoplink\\.ksosoft\\.com$\n(^|\\.)ic\\.ksosoft\\.com$\n(^|\\.)img.*\\.mini\\.cache\\.wps\\.cn$\n(^|\\.)img\\.gou\\.wpscdn\\.cn$\n(^|\\.)ios-informationplatform\\.wps\\.cn$\n(^|\\.)mo\\.res\\.wpscdn\\.cn$\n(^|\\.)news\\.docer\\.com$\n(^|\\.)news\\.op\\.wpscdn\\.cn$\n(^|\\.)pc\\.uf\\.ksosoft\\.com$\n(^|\\.)pixiu\\.shangshufang\\.ksosoft\\.com$\n(^|\\.)up\\.wps\\.kingsoft\\.com$\n\n# Wi-Fi key\n(^|\\.)(c|cdsget|news-imgpb|wifiapi\\d\\d|wkanc)\\.51y5\\.net$\n\n# Ximalaya 喜马拉雅\n(^|\\.)(adse|linkeye|location|xdcs-collector)\\.ximalaya\\.com$\n\n# Xunlei 迅雷app&看看\n(^|\\.)biz5\\.kankan\\.com$\n(^|\\.)float\\.kankan\\.com$\n(^|\\.)logic\\.cpm\\.cm\\.kankan\\.com$\n(^|\\.)hub5btmain\\.sandai\\.net$\n(^|\\.)hub5emu\\.sandai\\.net$\n(^|\\.)upgrade\\.xl9\\.xunlei\\.com$\n\n# Yahoo\n(^|\\.)(ads|adserver|adss|analytics|beap-bc|comet|geo|gemini|p3p|ybp)\\.yahoo\\.com$\n(^|\\.)(analytics|locdrop|onepush)\\.query\\.yahoo\\.com$\n(^|\\.)(ard|ane|yads)\\.yahoo\\.co\\.jp$\n(^|\\.)(js-apac-ss|partnerads)\\.ysm\\.yahoo\\.com$\n(^|\\.)ad\\.wretch\\.cc$\n(^|\\.)clicks\\.beap\\.bc\\.yahoo\\.com$\n(^|\\.)doubleplay-conf-yql\\.media\\.yahoo\\.com$\n(^|\\.)flurry\\.com$\n(^|\\.)m\\.yap\\.yahoo\\.com$\n(^|\\.)uservoice\\.com$\n(^|\\.)ws\\.progrss\\.yahoo\\.com$\n\n# Zhihu\n(^|\\.)(sugar|zhihu-web-analytics)\\.zhihu\\.com$\n\n# Ads in Video apps********************下面都是\n\n# 6间房\n(^|\\.)(shrek|simba|union)\\.6\\.cn$\n\n# Baofeng 暴风影音\n(^|\\.)logger\\.baofeng\\.com$\n(^|\\.)xs\\.houyi\\.baofeng\\.net$\n\n# Douyu\n(^|\\.)dotcounter\\.douyutv\\.com$\n\n# Fenghuang 凤凰TV\n(^|\\.)(game|stadig)\\.ifeng\\.com$\n(^|\\.)api\\.newad\\.ifeng\\.com$\n(^|\\.)exp\\.3g\\.ifeng\\.com$\n(^|\\.)iis3g\\.deliver\\.ifeng\\.com$\n(^|\\.)mfp\\.deliver\\.ifeng\\.com$\n\n# Funshion 风行\n(^|\\.)(pub|adm|jobsfe|po|pv|stat)\\.funshion\\.com$\n\n# iqiyi PPS 爱奇艺\n(^|\\.)ad\\.m\\.iqiyi\\.com$\n(^|\\.)afp\\.iqiyi\\.com$\n(^|\\.)c\\.uaa\\.iqiyi\\.com$\n(^|\\.)cloudpush\\.iqiyi\\.com$\n(^|\\.)cm\\.passport\\.iqiyi\\.com$\n(^|\\.)cupid\\.iqiyi\\.com$\n(^|\\.)emoticon\\.sns\\.iqiyi\\.com$\n(^|\\.)gamecenter\\.iqiyi\\.com$\n(^|\\.)ifacelog\\.iqiyi\\.com$\n(^|\\.)mbdlog\\.iqiyi\\.com$\n(^|\\.)meta\\.video\\.qiyi\\.com$\n(^|\\.)msg1\\.video\\.qiyi\\.com$\n(^|\\.)msg2\\.video\\.qiyi\\.com$\n(^|\\.)msg\\.71\\.am$\n(^|\\.)paopao\\.iqiyi\\.com$\n(^|\\.)paopao\\d\\.qiyipic\\.com$\n(^|\\.)policy\\.video\\.iqiyi\\.com$\n(^|\\.)yuedu\\.iqiyi\\.com$\n101.227.200.0/24\n101.227.200.11/32\n101.227.200.28/32\n101.227.97.240/32\n124.192.153.42/32\n\n# Ku6 酷6\n(^|\\.)gug\\.ku6cdn\\.com$\n(^|\\.)st\\.vq\\.ku6\\.cn$\n(^|\\.)pq\\.stat\\.ku6\\.com$\n(^|\\.)static\\.ku6\\.com$\n\n# LeTV 乐视\n(^|\\.)(ark|dc|fz|g3|minisite|pro|stat)\\.letv\\.com$\n(^|\\.)(1|2)\\.letvlive\\.com$\n(^|\\.)(i0|i3)\\.letvimg\\.com$\n(^|\\.)game\\.letvstore\\.com$\n(^|\\.)n\\.mark\\.letv\\.com$\n(^|\\.)pro\\.hoye\\.letv\\.com$\n(^|\\.)static\\.app\\.m\\.letv\\.com$\n\n# MGTV 芒果TV\n(^|\\.)(click|da|log|p2|res)\\.hunantv\\.com$\n(^|\\.)da\\.mgtv\\.com$\n(^|\\.)log\\.v2\\.hunantv\\.com$\n\n# Sohu 搜狐\n(^|\\.)(888|lm|push)\\.tv\\.sohu\\.com$\n(^|\\.)(aty|bd|click|click2|ctr|pv|pb|wl|um)\\.hd\\.sohu\\.com$\n(^|\\.)(ads|adnet|aty|epro|go|golden1|hui|inte|uranus|wan|yule|pv)\\.sohu\\.com$\n(^|\\.)(epro|golden1|inte|uranus|pv)\\.sogou\\.com$\n(^|\\.)(inte|lu|theta)\\.sogoucdn\\.com$\n\n# PPTV、PPLive\n(^|\\.)(de|jp)\\.as\\.pptv\\.com$\n(^|\\.)(app|as)\\.aplus\\.pptv\\.com$\n(^|\\.)afp\\.pplive\\.com$\n(^|\\.)asimgs\\.pplive\\.cn$\n(^|\\.)pp2\\.pptv\\.com$\n(^|\\.)stat\\.pptv\\.com$\n\n# QQ Live\n(^|\\.)aiseet\\.aa\\.atianqi\\.com$\n(^|\\.)aiseet\\.atianqi\\.com$\n(^|\\.)btrace\\.video\\.qq\\.com$\n(^|\\.)c\\.l\\.qq\\.com$\n(^|\\.)dp3\\.qq\\.com$\n(^|\\.)livep\\.l\\.qq\\.com$\n(^|\\.)lives\\.l\\.qq\\.com$\n(^|\\.)livew\\.l\\.qq\\.com$\n(^|\\.)mcgi\\.v\\.qq\\.com$\n(^|\\.)mdevstat\\.qqlive\\.qq\\.com$\n(^|\\.)omgmta1\\.qq\\.com$\n(^|\\.)p\\.l\\.qq\\.com$\n(^|\\.)rcgi\\.video\\.qq\\.com$\n(^|\\.)t\\.l\\.qq\\.com$\n(^|\\.)u\\.l\\.qq\\.com$\n\n# Youku & Tudou\n(^|\\.)(actives|dmapp|hz|iyes|l|lstat|lvip|msg|mobilemsg|myes|passport-log|stat|tdrec|wan|ykatr|ykrec|ykrectab)\\.youku\\.com$\n(^|\\.)(adcontrol|adplay|goods|iwstat|nstat|stat|stats)\\.tudou\\.com$\n(^|\\.)(ad|gamex)\\.mobile\\.youku\\.com$\n(^|\\.)(dev-push|push|sdk)\\.m\\.youku\\.com$\n(^|\\.)(p|r|v)\\.l\\.youku\\.com$\n(^|\\.)a-dxk\\.play\\.api\\.3g\\.youku\\.com$\n(^|\\.)ad\\.api\\.3g(\\.tudou|\\.youku)\\.com$\n(^|\\.)ad\\.api\\.mobile\\.youku\\.com$\n(^|\\.)b\\.smartvideo\\.youku\\.com$\n(^|\\.)c\\.yes\\.youku\\.com$\n(^|\\.)dl\\.g\\.youku\\.com$\n(^|\\.)e\\.stat\\.ykimg\\.com$\n(^|\\.)hudong\\.pl\\.youku\\.com$\n(^|\\.)l\\.ykimg\\.com$\n(^|\\.)p-log\\.ykimg\\.com$\n(^|\\.)p\\.l\\.ykimg\\.com$\n(^|\\.)s\\.p\\.youku\\.com$\n(^|\\.)store\\.tv\\.api\\.3g\\.youku\\.com$\n(^|\\.)store\\.xl\\.api\\.3g\\.youku\\.com$\n(^|\\.)test\\.ott\\.youku\\.com$\n(^|\\.)val\\.api\\.youku\\.com$\n117.177.248.17/32\n117.177.248.41/32\n223.87.176.139/32\n223.87.176.176/32\n223.87.177.180/32\n223.87.177.182/32\n223.87.177.184/32\n223.87.177.43/32\n223.87.177.47/32\n223.87.177.80/32\n223.87.182.101/32\n223.87.182.102/32\n223.87.182.11/32\n223.87.182.52/32\n\n# Youtube\n(^|\\.)azabu-u\\.ac\\.jp$\n(^|\\.)couchcoaster\\.jp$\n(^|\\.)delivery\\.dmkt-sp\\.jp$\n(^|\\.)ehg-youtube\\.hitbox\\.com$\n(^|\\.)m-78\\.jp$\n(^|\\.)nichibenren\\.or\\.jp$\n(^|\\.)nicorette\\.co\\.kr$\n(^|\\.)ssl-youtube\\.2cnt\\.net$\n(^|\\.)youtube\\.112\\.2o7\\.net$\n(^|\\.)youtube\\.2cnt\\.net$\n\n# Others ads in Video apps\n(^|\\.)(acsystem|ads|afp)\\.wasu\\.tv$\n(^|\\.)ads\\.cdn\\.tvb\\.com$\n(^|\\.)c\\.algovid\\.com$\n(^|\\.)cc\\.xtgreat\\.com$\n(^|\\.)d\\.dsp\\.imageter\\.com$\n(^|\\.)gg\\.jtertp\\.com$\n(^|\\.)gridsum-vd\\.cntv\\.cn$\n(^|\\.)kwflvcdn\\.000dn\\.com$\n(^|\\.)logstat\\.t\\.sfht\\.com$\n(^|\\.)match\\.rtbidder\\.net$\n(^|\\.)n-st\\.vip\\.com$\n(^|\\.)pop\\.uusee\\.com$\n(^|\\.)static\\.bshare\\.cn$\n(^|\\.)static\\.duoshuo\\.com$\n(^|\\.)t\\.cr-nielsen\\.com$\n(^|\\.)terren\\.cntv\\.cn$\n\n# Ads in Video apps end ********************上面都是\n\n\n# 常用网站广告****************\n(^|\\.)(168|adshownew|stat)\\.it168\\.com$\n(^|\\.)(1|2)\\.win7china\\.com$\n(^|\\.)(801|803|806|808|bdj|dol|click)\\.(tianya|tianyaui)\\.cn$\n(^|\\.)(92x|its-dori)\\.tumblr\\.com$\n(^|\\.)(adm|eq|fund|ozone|stat|vaserviece)\\.10jqka\\.com\\.cn$\n(^|\\.)(ad|adadmin|ads)\\.house365\\.com$\n(^|\\.)(ad|ads|counter)\\.csdn\\.net$\n(^|\\.)(ad|analytics|click|ganjituiguang|sta|tralog)\\.ganji\\.com$\n(^|\\.)(app-monitor|client-api|grand|mobile-pubt|newton-api)\\.ele\\.me$\n(^|\\.)(bd1|bd2)\\.52che\\.com$\n(^|\\.)(click|media|pv)\\.(cheshi|cheshi-img)\\.com$\n(^|\\.)(d0|dw|pv)\\.xcar\\.com\\.cn$\n(^|\\.)a1\\.itc\\.cn$\n(^|\\.)ad\\.12306\\.cn$\n(^|\\.)ad\\.3\\.cn$\n(^|\\.)ad\\.95306\\.cn$\n(^|\\.)ad\\.caiyunapp\\.com$\n(^|\\.)ad\\.cctv\\.com$\n(^|\\.)ad\\.cmvideo\\.cn$\n(^|\\.)ad\\.thepaper\\.cn$\n(^|\\.)ad\\.unimhk\\.com$\n(^|\\.)adhome\\.1fangchan\\.com$\n(^|\\.)adm\\.easou\\.com$\n(^|\\.)ads\\.feedly\\.com$\n(^|\\.)ads\\.genieessp\\.com$\n(^|\\.)ads\\.linkedin\\.com$\n(^|\\.)adv\\.ccb\\.com$\n(^|\\.)advert\\.api\\.thejoyrun\\.com$\n(^|\\.)api-deal\\.kechenggezi\\.com$\n(^|\\.)api-z\\.weidian\\.com$\n(^|\\.)bam\\.nr-data\\.net$\n(^|\\.)mobileads\\.msn\\.com$\n(^|\\.)bat\\.bing\\.com$\n(^|\\.)beacon\\.tingyun\\.com$\n(^|\\.)cdn\\.jiuzhilan\\.com$\n(^|\\.)collector\\.githubapp\\.com$\n(^|\\.)de\\.soquair\\.com$\n(^|\\.)e\\.nexac\\.com$\n(^|\\.)erebor\\.douban\\.com$\n(^|\\.)exp\\.17wo\\.cn$\n(^|\\.)game\\.51yund\\.com$\n(^|\\.)hosting\\.miarroba\\.info$\n(^|\\.)iadsdk\\.apple\\.com$\n(^|\\.)image\\.gentags\\.com$\n(^|\\.)log\\.outbrain\\.com$\n(^|\\.)m\\.12306media\\.com$\n(^|\\.)n\\.cosbot\\.cn$\n(^|\\.)pdl\\.gionee\\.com$\n(^|\\.)pica-juicy\\.picacomic\\.com$\n(^|\\.)pixel\\.wp\\.com$\n(^|\\.)pub\\.mop\\.com$\n(^|\\.)push\\.wandoujia\\.com$\n(^|\\.)qdp\\.qidian\\.com$\n(^|\\.)res\\.gwifi\\.com\\.cn$\n(^|\\.)ssp\\.kssws\\.ks-cdn\\.com$\n(^|\\.)stats\\.chinaz\\.com$\n(^|\\.)stats\\.developingperspective\\.com$\n(^|\\.)tjlog\\.easou\\.com$\n(^|\\.)tjlog\\.ps\\.easou\\.com$\n(^|\\.)track\\.hujiang\\.com$\n(^|\\.)tracker\\.yhd\\.com$\n(^|\\.)up\\.qingdaonews\\.com$\n\n# 广告联盟-国内****************\n(^|\\.)09mk\\.cn$\n(^|\\.)100peng\\.com$\n(^|\\.)114la\\.com$\n(^|\\.)123juzi\\.net$\n(^|\\.)138lm\\.com$\n(^|\\.)17un\\.com$\n(^|\\.)2cnt\\.net$\n(^|\\.)3gmimo\\.com$\n(^|\\.)3xx\\.vip$\n(^|\\.)51\\.la$\n(^|\\.)51taifu\\.com$\n(^|\\.)51yes\\.com$\n(^|\\.)600ad\\.com$\n(^|\\.)6dad\\.com$\n(^|\\.)70e\\.com$\n(^|\\.)86\\.cc$\n(^|\\.)8le8le\\.com$\n(^|\\.)8ox\\.cn$\n(^|\\.)95558000\\.com$\n(^|\\.)99click\\.com$\n(^|\\.)99youmeng\\.com$\n(^|\\.)a3p4\\.net$\n(^|\\.)acs86\\.com$\n(^|\\.)acxiom-online\\.com$\n(^|\\.)ad-brix\\.com$\n(^|\\.)ad-delivery\\.net$\n(^|\\.)ad-locus\\.com$\n(^|\\.)ad-plus\\.cn$\n(^|\\.)ad7\\.com$\n(^|\\.)adadapted\\.com$\n(^|\\.)adadvisor\\.net$\n(^|\\.)adap\\.tv$\n(^|\\.)adbana\\.com$\n(^|\\.)adchina\\.com$\n(^|\\.)adcome\\.cn$\n(^|\\.)ader\\.mobi$\n(^|\\.)adform\\.net$\n(^|\\.)adfuture\\.cn$\n(^|\\.)adhouyi\\.com$\n(^|\\.)adinfuse\\.com$\n(^|\\.)adirects\\.com$\n(^|\\.)adjust\\.com$\n(^|\\.)adjust\\.io$\n(^|\\.)adkmob\\.com$\n(^|\\.)adlive\\.cn$\n(^|\\.)adlocus\\.com$\n(^|\\.)admaji\\.com$\n(^|\\.)admin6\\.com$\n(^|\\.)admon\\.cn$\n(^|\\.)adnyg\\.com$\n(^|\\.)adpolestar\\.net$\n(^|\\.)adpro\\.cn$\n(^|\\.)adpush\\.cn$\n(^|\\.)adquan\\.com$\n(^|\\.)adreal\\.cn$\n(^|\\.)ads8\\.com$\n(^|\\.)adsame\\.com$\n(^|\\.)adsmogo\\.com$\n(^|\\.)adsmogo\\.org$\n(^|\\.)adsunflower\\.com$\n(^|\\.)adsunion\\.com$\n(^|\\.)adtrk\\.me$\n(^|\\.)adups\\.com$\n(^|\\.)aduu\\.cn$\n(^|\\.)advertising\\.com$\n(^|\\.)adview\\.cn$\n(^|\\.)advmob\\.cn$\n(^|\\.)adwetec\\.com$\n(^|\\.)adwhirl\\.com$\n(^|\\.)adwo\\.com$\n(^|\\.)adxmi\\.com$\n(^|\\.)adyun\\.com$\n(^|\\.)adzerk\\.net$\n(^|\\.)agrant\\.cn$\n(^|\\.)agrantsem\\.com$\n(^|\\.)aihaoduo\\.cn$\n(^|\\.)ajapk\\.com$\n(^|\\.)allyes\\.cn$\n(^|\\.)allyes\\.com$\n(^|\\.)amazon-adsystem\\.com$\n(^|\\.)amplitude\\.com$\n(^|\\.)analysys\\.cn$\n(^|\\.)angsrvr\\.com$\n(^|\\.)anquan\\.org$\n(^|\\.)anysdk\\.com$\n(^|\\.)appadhoc\\.com$\n(^|\\.)appads\\.com$\n(^|\\.)appboy\\.com$\n(^|\\.)appdriver\\.cn$\n(^|\\.)appjiagu\\.com$\n(^|\\.)applifier\\.com$\n(^|\\.)appsflyer\\.com$\n(^|\\.)atdmt\\.com$\n(^|\\.)baifendian\\.com$\n(^|\\.)banmamedia\\.com$\n(^|\\.)baoyatu\\.cc$\n(^|\\.)baycode\\.cn$\n(^|\\.)bayimob\\.com$\n(^|\\.)behe\\.com$\n(^|\\.)bfshan\\.cn$\n(^|\\.)biddingos\\.com$\n(^|\\.)biddingx\\.com$\n(^|\\.)bjvvqu\\.cn$\n(^|\\.)bjxiaohua\\.com$\n(^|\\.)bloggerads\\.net$\n(^|\\.)branch\\.io$\n(^|\\.)bsdev\\.cn$\n(^|\\.)bshare\\.cn$\n(^|\\.)btyou\\.com$\n(^|\\.)bugtags\\.com$\n(^|\\.)buysellads\\.com$\n(^|\\.)c0563\\.com$\n(^|\\.)cacafly\\.com$\n(^|\\.)casee\\.cn$\n(^|\\.)cdnmaster\\.com$\n(^|\\.)chance-ad\\.com$\n(^|\\.)chanet\\.com\\.cn$\n(^|\\.)chartbeat\\.com$\n(^|\\.)chartboost\\.com$\n(^|\\.)chengadx\\.com$\n(^|\\.)chmae\\.com$\n(^|\\.)clickadu\\.com$\n(^|\\.)clicki\\.cn$\n(^|\\.)clicktracks\\.com$\n(^|\\.)clickzs\\.com$\n(^|\\.)cloudmobi\\.net$\n(^|\\.)cmcore\\.com$\n(^|\\.)cnxad\\.com$\n(^|\\.)cnzz\\.com$\n(^|\\.)cnzzlink\\.com$\n(^|\\.)cocounion\\.com$\n(^|\\.)coocaatv\\.com$\n(^|\\.)cooguo\\.com$\n(^|\\.)coolguang\\.com$\n(^|\\.)coremetrics\\.com$\n(^|\\.)cpmchina\\.co$\n(^|\\.)cpx24\\.com$\n(^|\\.)crasheye\\.cn$\n(^|\\.)crosschannel\\.com$\n(^|\\.)ctrmi\\.com$\n(^|\\.)customer-security\\.online$\n(^|\\.)daoyoudao\\.com$\n(^|\\.)datouniao\\.com$\n(^|\\.)ddapp\\.cn$\n(^|\\.)dianjoy\\.com$\n(^|\\.)dianru\\.com$\n(^|\\.)disqusads\\.com$\n(^|\\.)domob\\.cn$\n(^|\\.)domob\\.com\\.cn$\n(^|\\.)domob\\.org$\n(^|\\.)dotmore\\.com\\.tw$\n(^|\\.)doubleverify\\.com$\n(^|\\.)doudouguo\\.com$\n(^|\\.)doumob\\.com$\n(^|\\.)duanat\\.com$\n(^|\\.)duiba\\.com\\.cn$\n(^|\\.)duomeng\\.cn$\n(^|\\.)dxpmedia\\.com$\n(^|\\.)edigitalsurvey\\.com$\n(^|\\.)eduancm\\.com$\n(^|\\.)emarbox\\.com$\n(^|\\.)epsilon\\.com$\n(^|\\.)exosrv\\.com$\n(^|\\.)fancyapi\\.com$\n(^|\\.)feitian001\\.com$\n(^|\\.)feixin2\\.com$\n(^|\\.)flashtalking\\.com$\n(^|\\.)fraudmetrix\\.cn$\n(^|\\.)gentags\\.net$\n(^|\\.)gepush\\.com$\n(^|\\.)getui\\.com$\n(^|\\.)glispa\\.com$\n(^|\\.)go-mpulse$\n(^|\\.)go-mpulse\\.net$\n(^|\\.)godloveme\\.cn$\n(^|\\.)gridsum\\.com$\n(^|\\.)gridsumdissector\\.cn$\n(^|\\.)gridsumdissector\\.com$\n(^|\\.)growingio\\.com$\n(^|\\.)guohead\\.com$\n(^|\\.)guomob\\.com$\n(^|\\.)haoghost\\.com$\n(^|\\.)hivecn\\.cn$\n(^|\\.)hypers\\.com$\n(^|\\.)icast\\.cn$\n(^|\\.)igexin\\.com$\n(^|\\.)il8r\\.com$\n(^|\\.)imageter\\.com$\n(^|\\.)immob\\.cn$\n(^|\\.)inad\\.com$\n(^|\\.)inmobi\\.cn$\n(^|\\.)inmobi\\.net$\n(^|\\.)inmobicdn\\.cn$\n(^|\\.)inmobicdn\\.net$\n(^|\\.)innity\\.com$\n(^|\\.)instabug\\.com$\n(^|\\.)intely\\.cn$\n(^|\\.)iperceptions\\.com$\n(^|\\.)ipinyou\\.com$\n(^|\\.)irs01\\.com$\n(^|\\.)irs01\\.net$\n(^|\\.)irs09\\.com$\n(^|\\.)istreamsche\\.com$\n(^|\\.)jesgoo\\.com$\n(^|\\.)jiaeasy\\.net$\n(^|\\.)jiguang\\.cn$\n(^|\\.)jimdo\\.com$\n(^|\\.)jisucn\\.com$\n(^|\\.)jmgehn\\.cn$\n(^|\\.)jpush\\.cn$\n(^|\\.)jusha\\.com$\n(^|\\.)juzi\\.cn$\n(^|\\.)juzilm\\.com$\n(^|\\.)kejet\\.com$\n(^|\\.)kejet\\.net$\n(^|\\.)keydot\\.net$\n(^|\\.)keyrun\\.cn$\n(^|\\.)kmd365\\.com$\n(^|\\.)krux\\.net$\n(^|\\.)lnk0\\.com$\n(^|\\.)lnk8\\.cn$\n(^|\\.)localytics\\.com$\n(^|\\.)lomark\\.cn$\n(^|\\.)lotuseed\\.com$\n(^|\\.)lrswl\\.com$\n(^|\\.)lufax\\.com$\n(^|\\.)madhouse\\.cn$\n(^|\\.)madmini\\.com$\n(^|\\.)madserving\\.com$\n(^|\\.)magicwindow\\.cn$\n(^|\\.)mathtag\\.com$\n(^|\\.)maysunmedia\\.com$\n(^|\\.)mbai\\.cn$\n(^|\\.)mediaplex\\.com$\n(^|\\.)mediav\\.com$\n(^|\\.)megajoy\\.com$\n(^|\\.)meiqia\\.com$\n(^|\\.)mgogo\\.com$\n(^|\\.)miaozhen\\.com$\n(^|\\.)microad-cn\\.com$\n(^|\\.)miidi\\.net$\n(^|\\.)mijifen\\.com$\n(^|\\.)mixpanel\\.com$\n(^|\\.)mjmobi\\.com$\n(^|\\.)mng-ads\\.com$\n(^|\\.)moad\\.cn$\n(^|\\.)moatads\\.com$\n(^|\\.)mobaders\\.com$\n(^|\\.)mobclix\\.com$\n(^|\\.)mobgi\\.com$\n(^|\\.)mobisage\\.cn$\n(^|\\.)mobvista\\.com$\n(^|\\.)mopub\\.com$\n(^|\\.)moquanad\\.com$\n(^|\\.)mpush\\.cn$\n(^|\\.)mxpnl\\.com$\n(^|\\.)myhug\\.cn$\n(^|\\.)mzy2014\\.com$\n(^|\\.)networkbench\\.com$\n(^|\\.)newrelic\\.com$\n(^|\\.)ninebox\\.cn$\n(^|\\.)ntalker\\.com$\n(^|\\.)nylalobghyhirgh\\.com$\n(^|\\.)o2omobi\\.com$\n(^|\\.)oadz\\.com$\n(^|\\.)oneapm\\.com$\n(^|\\.)onetad\\.com$\n(^|\\.)optaim\\.com$\n(^|\\.)optimix\\.asia$\n(^|\\.)optimix\\.cn$\n(^|\\.)optimizely\\.com$\n(^|\\.)optimizelyapis\\.com$\n(^|\\.)overture\\.com$\n(^|\\.)p0y\\.cn$\n(^|\\.)pagechoice\\.net$\n(^|\\.)pingdom\\.net$\n(^|\\.)plugrush\\.com$\n(^|\\.)popin\\.cc$\n(^|\\.)pro\\.cn$\n(^|\\.)publicidad\\.net$\n(^|\\.)publicidad\\.tv$\n(^|\\.)pubmatic\\.com$\n(^|\\.)pubnub\\.com$\n(^|\\.)qcl777\\.com$\n(^|\\.)qiyou\\.com$\n(^|\\.)qtmojo\\.com$\n(^|\\.)quantcount\\.com$\n(^|\\.)qucaigg\\.com$\n(^|\\.)qumi\\.com$\n(^|\\.)qxxys\\.com$\n(^|\\.)reachmax\\.cn$\n(^|\\.)responsys\\.net$\n(^|\\.)revsci\\.net$\n(^|\\.)rlcdn\\.com$\n(^|\\.)rtbasia\\.com$\n(^|\\.)sanya1\\.com$\n(^|\\.)scupio\\.com$\n(^|\\.)serving-sys\\.com$\n(^|\\.)shuiguo\\.com$\n(^|\\.)shuzilm\\.cn$\n(^|\\.)similarweb\\.com$\n(^|\\.)sitemeter\\.com$\n(^|\\.)sitescout\\.com$\n(^|\\.)sitetag\\.us$\n(^|\\.)smartmad\\.com$\n(^|\\.)social-touch\\.com$\n(^|\\.)somecoding\\.com$\n(^|\\.)sponsorpay\\.com$\n(^|\\.)stargame\\.com$\n(^|\\.)stg8\\.com$\n(^|\\.)switchadhub\\.com$\n(^|\\.)sycbbs\\.com$\n(^|\\.)synacast\\.com$\n(^|\\.)sysdig\\.com$\n(^|\\.)tagtic\\.cn$\n(^|\\.)talkingdata\\.com$\n(^|\\.)talkingdata\\.net$\n(^|\\.)tansuotv\\.com$\n(^|\\.)tanv\\.com$\n(^|\\.)tanx\\.com$\n(^|\\.)tapjoy\\.cn$\n(^|\\.)th7\\.cn$\n(^|\\.)thoughtleadr\\.com$\n(^|\\.)tianmidian\\.com$\n(^|\\.)tiqcdn\\.com$\n(^|\\.)touclick\\.com$\n(^|\\.)trafficjam\\.cn$\n(^|\\.)trafficmp\\.com$\n(^|\\.)tuia\\.cn$\n(^|\\.)ueadlian\\.com$\n(^|\\.)uerzyr\\.cn$\n(^|\\.)ugdtimg\\.com$\n(^|\\.)ugvip\\.com$\n(^|\\.)ujian\\.cc$\n(^|\\.)ukeiae\\.com$\n(^|\\.)umeng\\.co$\n(^|\\.)umeng\\.com$\n(^|\\.)umtrack\\.com$\n(^|\\.)unimhk\\.com$\n(^|\\.)union-wifi\\.com$\n(^|\\.)union001\\.com$\n(^|\\.)unionsy\\.com$\n(^|\\.)unlitui\\.com$\n(^|\\.)uri6\\.com$\n(^|\\.)ushaqi\\.com$\n(^|\\.)usingde\\.com$\n(^|\\.)uuzu\\.com$\n(^|\\.)uyunad\\.com$\n(^|\\.)vamaker\\.com$\n(^|\\.)voiceads\\.cn$\n(^|\\.)voiceads\\.com$\n(^|\\.)vpon\\.com$\n(^|\\.)vungle\\.cn$\n(^|\\.)vungle\\.com$\n(^|\\.)waps\\.cn$\n(^|\\.)wapx\\.cn$\n(^|\\.)webterren\\.com$\n(^|\\.)whpxy\\.com$\n(^|\\.)winads\\.cn$\n(^|\\.)winasdaq\\.com$\n(^|\\.)wiyun\\.com$\n(^|\\.)wooboo\\.com\\.cn$\n(^|\\.)wqmobile\\.com$\n(^|\\.)wrating\\.com$\n(^|\\.)wumii\\.cn$\n(^|\\.)xcy8\\.com$\n(^|\\.)xdrig\\.com$\n(^|\\.)xiaozhen\\.com$\n(^|\\.)xibao100\\.com$\n(^|\\.)xtgreat\\.com$\n(^|\\.)xy\\.com$\n(^|\\.)yandui\\.com$\n(^|\\.)yigao\\.com$\n(^|\\.)yijifen\\.com$\n(^|\\.)yinooo\\.com$\n(^|\\.)yiqifa\\.com$\n(^|\\.)yiwk\\.com$\n(^|\\.)ylunion\\.com$\n(^|\\.)ymapp\\.com$\n(^|\\.)ymcdn\\.cn$\n(^|\\.)yongyuelm\\.com$\n(^|\\.)yooli\\.com$\n(^|\\.)youmi\\.net$\n(^|\\.)youxiaoad\\.com$\n(^|\\.)yoyi\\.com\\.cn$\n(^|\\.)yoyi\\.tv$\n(^|\\.)yrxmr\\.com$\n(^|\\.)ysjwj\\.com$\n(^|\\.)yunjiasu\\.com$\n(^|\\.)yunpifu\\.cn$\n(^|\\.)zampdsp\\.com$\n(^|\\.)zamplus\\.com$\n(^|\\.)zcdsp\\.com$\n(^|\\.)zhidian3g\\.cn$\n(^|\\.)zhiziyun\\.com$\n(^|\\.)zhjfad\\.com$\n(^|\\.)zqzxz\\.com$\n(^|\\.)zzsx8\\.com$\n\n# 广告联盟-国外****************\n(^|\\.)acuityplatform\\.com$\n(^|\\.)ad-stir\\.com$\n(^|\\.)ad-survey\\.com$\n(^|\\.)ad4game\\.com$\n(^|\\.)adcloud\\.jp$\n(^|\\.)adcolony\\.com$\n(^|\\.)addthis\\.com$\n(^|\\.)adfurikun\\.jp$\n(^|\\.)adhigh\\.net$\n(^|\\.)adhood\\.com$\n(^|\\.)adinall\\.com$\n(^|\\.)adition\\.com$\n(^|\\.)adk2x\\.com$\n(^|\\.)admarket\\.mobi$\n(^|\\.)admarvel\\.com$\n(^|\\.)admedia\\.com$\n(^|\\.)adnxs\\.com$\n(^|\\.)adotmob\\.com$\n(^|\\.)adperium\\.com$\n(^|\\.)adriver\\.ru$\n(^|\\.)adroll\\.com$\n(^|\\.)adsco\\.re$\n(^|\\.)adservice\\.com$\n(^|\\.)adsrvr\\.org$\n(^|\\.)adsymptotic\\.com$\n(^|\\.)adtaily\\.com$\n(^|\\.)adtech\\.de$\n(^|\\.)adtechjp\\.com$\n(^|\\.)adtechus\\.com$\n(^|\\.)airpush\\.com$\n(^|\\.)am15\\.net$\n(^|\\.)amobee\\.com$\n(^|\\.)appier\\.net$\n(^|\\.)applift\\.com$\n(^|\\.)apsalar\\.com$\n(^|\\.)atas\\.io$\n(^|\\.)awempire\\.com$\n(^|\\.)axonix\\.com$\n(^|\\.)beintoo\\.com$\n(^|\\.)bepolite\\.eu$\n(^|\\.)bidtheatre\\.com$\n(^|\\.)bidvertiser\\.com$\n(^|\\.)blismedia\\.com$\n(^|\\.)brucelead\\.com$\n(^|\\.)bttrack\\.com$\n(^|\\.)casalemedia\\.com$\n(^|\\.)channeladvisor\\.com$\n(^|\\.)connexity\\.net$\n(^|\\.)criteo\\.com$\n(^|\\.)criteo\\.net$\n(^|\\.)csbew\\.com$\n(^|\\.)demdex\\.net$\n(^|\\.)directrev\\.com$\n(^|\\.)dumedia\\.ru$\n(^|\\.)effectivemeasure\\.com$\n(^|\\.)effectivemeasure\\.net$\n(^|\\.)eqads\\.com$\n(^|\\.)everesttech\\.net$\n(^|\\.)exoclick\\.com$\n(^|\\.)extend\\.tv$\n(^|\\.)eyereturn\\.com$\n(^|\\.)fastapi\\.net$\n(^|\\.)fastclick\\.com$\n(^|\\.)fastclick\\.net$\n(^|\\.)flurry\\.com$\n(^|\\.)gosquared\\.com$\n(^|\\.)gtags\\.net$\n(^|\\.)heyzap\\.com$\n(^|\\.)histats\\.com$\n(^|\\.)hitslink\\.com$\n(^|\\.)hot-mob\\.com$\n(^|\\.)hyperpromote\\.com$\n(^|\\.)i-mobile\\.co\\.jp$\n(^|\\.)imrworldwide\\.com$\n(^|\\.)inmobi\\.com$\n(^|\\.)intentiq\\.com$\n(^|\\.)inter1ads\\.com$\n(^|\\.)ipredictive\\.com$\n(^|\\.)ironsrc\\.com$\n(^|\\.)iskyworker\\.com$\n(^|\\.)jizzads\\.com$\n(^|\\.)juicyads\\.com$\n(^|\\.)kochava\\.com$\n(^|\\.)leadbolt\\.com$\n(^|\\.)leadbolt\\.net$\n(^|\\.)leadboltads\\.net$\n(^|\\.)leadboltapps\\.net$\n(^|\\.)leadboltmobile\\.net$\n(^|\\.)lenzmx\\.com$\n(^|\\.)liveadvert\\.com$\n(^|\\.)marketgid\\.com$\n(^|\\.)marketo\\.com$\n(^|\\.)mdotm\\.com$\n(^|\\.)medialytics\\.com$\n(^|\\.)medialytics\\.io$\n(^|\\.)meetrics\\.com$\n(^|\\.)meetrics\\.net$\n(^|\\.)mgid\\.com$\n(^|\\.)millennialmedia\\.com$\n(^|\\.)mobadme\\.jp$\n(^|\\.)mobfox\\.com$\n(^|\\.)mobileadtrading\\.com$\n(^|\\.)mobilityware\\.com$\n(^|\\.)mookie1\\.com$\n(^|\\.)msads\\.net$\n(^|\\.)mydas\\.mobi$\n(^|\\.)nend\\.net$\n(^|\\.)netshelter\\.net$\n(^|\\.)nexage\\.com$\n(^|\\.)owneriq\\.net$\n(^|\\.)pixels\\.asia$\n(^|\\.)plista\\.com$\n(^|\\.)popads\\.net$\n(^|\\.)powerlinks\\.com$\n(^|\\.)propellerads\\.com$\n(^|\\.)quantserve\\.com$\n(^|\\.)rayjump\\.com$\n(^|\\.)revdepo\\.com$\n(^|\\.)rubiconproject\\.com$\n(^|\\.)sape\\.ru$\n(^|\\.)scorecardresearch\\.com$\n(^|\\.)segment\\.com$\n(^|\\.)serving-sys\\.com$\n(^|\\.)sharethis\\.com$\n(^|\\.)smaato\\.com$\n(^|\\.)smaato\\.net$\n(^|\\.)smartadserver\\.com$\n(^|\\.)smartnews-ads\\.com$\n(^|\\.)startapp\\.com$\n(^|\\.)startappexchange\\.com$\n(^|\\.)statcounter\\.com$\n(^|\\.)steelhousemedia\\.com$\n(^|\\.)stickyadstv\\.com$\n(^|\\.)supersonic\\.com$\n(^|\\.)tapjoy\\.com$\n(^|\\.)tapjoyads\\.com$\n(^|\\.)trafficjunky\\.com$\n(^|\\.)tribalfusion\\.com$\n(^|\\.)turn\\.com$\n(^|\\.)vidoomy\\.com$\n(^|\\.)viglink\\.com$\n(^|\\.)voicefive\\.com$\n(^|\\.)wedolook\\.com$\n(^|\\.)yadro\\.ru$\n(^|\\.)yengo\\.com$\n(^|\\.)zedo\\.com$\n(^|\\.)zemanta\\.com$\n\n# 垃圾网站\n(^|\\.)11h5\\.com$\n(^|\\.)1kxun\\.mobi$\n(^|\\.)519397\\.com$\n(^|\\.)626uc\\.com$\n(^|\\.)915\\.com$\n(^|\\.)appget\\.cn$\n(^|\\.)appuu\\.cn$\n(^|\\.)coinhive\\.com$\n(^|\\.)huodonghezi\\.cn$\n(^|\\.)wanfeng1\\.com$\n(^|\\.)wep016\\.top\n(^|\\.)win-stock\\.com\\.cn$\n(^|\\.)zantainet\\.com$\n\n### 运营商广告\n(^|\\.)\\w\\w(\\w|)dnserror\\d(\\d|)\\.wo\\.com\\.cn\n(^|\\.)114so\\.cn$\n(^|\\.)go\\.10086\\.cn$\n(^|\\.)navi\\.gd\\.chinamobile\\.com$\n(^|\\.)hivedata\\.cc$\n\n# 运营商广告IP段\n1.3.0.10/32\n10.72.25.0/24\n23.42.186.24/32\n23.66.147.48/32\n23.235.156.167/32\n27.255.67.120/32\n42.51.146.207/32\n45.34.240.72/32\n46.165.197.153/32\n46.165.197.231/32\n47.89.59.182/32\n47.90.50.177/32\n47.93.103.196/32\n47.94.89.32/32\n47.96.162.122/32\n58.215.179.159/32\n60.19.29.16/28\n60.19.29.21/28\n60.190.139.164/32\n60.191.124.196/32\n60.210.17.0/24\n60.210.17.12/24\n61.129.70.132/32\n61.132.216.232/32\n61.132.221.146/32\n61.132.255.128/25\n61.132.255.212/32\n61.132.255.222/25\n61.147.184.18/32\n61.152.223.15/32\n61.160.200.223/32\n61.160.200.242/32\n61.160.200.252/32\n61.174.50.128/25\n61.174.50.167/25\n61.191.12.74/32\n61.191.206.4/32\n67.229.224.28/32\n69.28.57.245/32\n74.117.182.77/32\n78.140.131.214/32\n101.201.29.182/32\n101.251.211.235/32\n103.249.254.113/32\n104.195.62.12/32\n104.197.140.120/32\n104.198.198.188/32\n106.75.65.90/32\n106.75.65.92/32\n106.187.95.251/32\n107.21.113.76/32\n108.171.248.234/32\n111.30.135.167/32\n111.63.135.0/24\n111.73.45.147/32\n111.175.220.160/29\n111.175.220.164/32\n111.206.13.0/24\n111.206.22.0/24\n112.74.95.46/32\n112.124.115.215/32\n113.57.230.88/32\n113.207.57.24/32\n114.55.123.44/32\n114.95.102.77/32\n114.247.28.96/32\n115.29.141.121/32\n115.29.247.48/32\n115.182.16.79/32\n116.55.227.242/32\n116.206.22.7/32\n117.25.133.209/32\n117.144.242.32/32\n118.144.88.126/32\n118.144.88.208/28\n118.144.88.215/28\n118.144.88.215/32\n119.4.249.166/32\n119.188.13.0/24\n120.26.151.246/32\n120.27.34.156/32\n120.55.199.139/32\n120.76.189.132/32\n120.80.57.123/32\n120.132.57.41/32\n120.132.63.203/32\n120.197.89.239/32\n120.198.116.0/24\n121.15.207.243/32\n121.43.75.169/32\n121.199.73.185/32\n121.201.11.95/32\n121.201.108.2/32\n121.251.255.0/24\n122.225.103.120/32\n122.226.223.163/32\n122.227.254.195/32\n122.228.236.165/32\n123.56.152.96/32\n123.57.94.184/32\n123.57.162.39/32\n123.59.78.229/32\n123.59.152.170/32\n123.125.111.0/24\n123.139.154.0/24\n123.139.154.201/24\n124.14.21.147/32\n124.14.21.151/32\n124.160.194.11/32\n124.232.160.178/32\n125.46.61.28/32\n125.89.69.5/32\n139.159.32.82/32\n139.196.239.52/32\n139.224.26.92/32\n139.224.74.148/32\n146.148.85.61/32\n162.212.181.32/32\n173.208.177.227/32\n175.6.223.15/32\n180.76.155.58/32\n180.76.162.60/32\n180.76.171.28/32\n180.76.172.149/32\n180.76.181.213/32\n180.166.52.24/32\n182.92.81.104/32\n183.6.188.224/29\n183.6.188.226/29\n183.59.53.184/29\n183.59.53.187/29\n183.59.53.237/32\n183.131.79.30/32\n183.131.79.130/32\n198.40.52.11/32\n202.104.1.27/32\n202.105.165.202/32\n205.209.138.102/32\n211.98.71.192/29\n211.98.71.195/29\n211.103.159.32/32\n211.137.132.89/32\n211.139.178.49/32\n211.149.225.23/32\n211.167.105.131/32\n218.25.246.118/32\n218.93.127.37/32\n219.234.83.60/32\n220.115.251.25/32\n220.196.52.141/32\n221.179.46.128/25\n221.179.46.190/25\n221.179.140.0/24\n221.179.183.0/24\n221.179.191.0/24\n221.204.213.222/32\n221.228.17.152/32\n221.228.214.101/32\n221.231.6.79/32\n222.73.156.235/32\n222.186.61.91/32\n222.186.61.95/32\n222.186.61.96/32\n222.186.61.97/32\n222.187.226.96/32\n223.6.255.99/32\n\n#**********************************************************************\n[bypass_list]\n# 直连列表\n\n# MyList\n(^|\\.)423down\\.com$\n(^|\\.)chaipip\\.com$\n(^|\\.)hrtsea\\.com$\n(^|\\.)laomo\\.me$\n(^|\\.)mpyit\\.com$\n\n# CN域名直连\n(^|\\.)cn$\n(^|\\.)edu\\.cn$\n(^|\\.)gov\\.cn$\n(^|\\.)net\\.cn$\n(^|\\.)org\\.cn$\n(^|\\.)中国$\n(^|\\.)公司$\n(^|\\.)网络$\n\n# 中国国内常见域名关键词直连\n(^|\\.)\\w*-cn\\w*\\.\\w*$\n(^|\\.)\\w*0x\\w*\\.\\w*$\n(^|\\.)\\w*360buy\\w*\\.\\w*$\n(^|\\.)\\w*alicdn\\w*\\.\\w*$\n(^|\\.)\\w*alimama\\w*\\.\\w*$\n(^|\\.)\\w*alipay\\w*\\.\\w*$\n(^|\\.)\\w*appzapp\\w*\\.\\w*$\n(^|\\.)\\w*baidupcs\\w*\\.\\w*$\n(^|\\.)\\w*bilibili\\w*\\.\\w*$\n(^|\\.)\\w*ccgslb\\w*\\.\\w*$\n(^|\\.)\\w*chinacache\\w*\\.\\w*$\n(^|\\.)\\w*duobao\\w*\\.\\w*$\n(^|\\.)\\w*duolingo\\w*\\.\\w*$\n(^|\\.)\\w*jdpay\\w*\\.\\w*$\n(^|\\.)\\w*moke\\w*\\.\\w*$\n(^|\\.)\\w*qhimg\\w*\\.\\w*$\n(^|\\.)\\w*vpimg\\w*\\.\\w*$\n(^|\\.)\\w*xiami\\w*\\.\\w*$\n(^|\\.)\\w*xiaomi\\w*\\.\\w*$\n\n# 360\n(^|\\.)360\\.com$\n(^|\\.)360kuai\\.com$\n(^|\\.)360safe\\.com$\n(^|\\.)dhrest\\.com$\n(^|\\.)qhres\\.com$\n(^|\\.)qhstatic\\.com$\n(^|\\.)qhupdate\\.com$\n(^|\\.)so\\.com$\n\n# 4399\n(^|\\.)4399\\.com$\n(^|\\.)4399pk\\.com$\n(^|\\.)5054399\\.com$\n(^|\\.)img4399\\.com$\n\n# 58\n(^|\\.)58\\.com$\n\n# Alibaba\n(^|\\.)1688\\.com$\n(^|\\.)aliapp\\.org$\n(^|\\.)alibaba\\.com$\n(^|\\.)alibabacloud\\.com$\n(^|\\.)alibabausercontent\\.com$\n(^|\\.)alicdn\\.com$\n(^|\\.)aliexpress\\.com$\n(^|\\.)aliimg\\.com$\n(^|\\.)alikunlun\\.com$\n(^|\\.)alipay\\.com$\n(^|\\.)alipayobjects\\.com$\n(^|\\.)alisoft\\.com$\n(^|\\.)aliyun\\.com$\n(^|\\.)aliyuncdn\\.com$\n(^|\\.)aliyuncs\\.com$\n(^|\\.)amap\\.com$\n(^|\\.)autonavi\\.com$\n(^|\\.)dingtalk\\.com$\n(^|\\.)ele\\.me$\n(^|\\.)hichina\\.com$\n(^|\\.)mmstat\\.com$\n(^|\\.)mxhichina\\.com$\n(^|\\.)soku\\.com$\n(^|\\.)taobao\\.com$\n(^|\\.)taobaocdn\\.com$\n(^|\\.)tbcache\\.com$\n(^|\\.)tbcdn\\.com$\n(^|\\.)tmall\\.com$\n(^|\\.)tmall\\.hk$\n(^|\\.)ucweb\\.com$\n(^|\\.)xiami\\.com$\n(^|\\.)xiami\\.net$\n(^|\\.)ykimg\\.com$\n(^|\\.)youku\\.com$\n\n# Apple\n(^|\\.)aaplimg\\.com$\n(^|\\.)akadns\\.net$\n(^|\\.)apple-cloudkit\\.com$\n(^|\\.)apple\\.co$\n(^|\\.)apple\\.com$\n(^|\\.)appstore\\.com$\n(^|\\.)cdn-apple\\.com$\n(^|\\.)crashlytics\\.com$\n(^|\\.)icloud-content\\.com$\n(^|\\.)icloud\\.com$\n(^|\\.)me\\.com$\n(^|\\.)mzstatic\\.com$\n\n# Baidu\n(^|\\.)baidu\\.com$\n(^|\\.)baidubcr\\.com$\n(^|\\.)baidupcs\\.com$\n(^|\\.)baidustatic\\.com$\n(^|\\.)bcebos\\.com$\n(^|\\.)bdimg\\.com$\n(^|\\.)bdstatic\\.com$\n(^|\\.)bdurl\\.net$\n(^|\\.)hao123\\.com$\n(^|\\.)hao123img\\.com$\n(^|\\.)jomodns\\.com$\n(^|\\.)yunjiasu-cdn\\.net$\n\n# Bilibili\n(^|\\.)acg\\.tv$\n(^|\\.)acgvideo\\.com$\n(^|\\.)b23\\.tv$\n(^|\\.)biliapi\\.com$\n(^|\\.)biliapi\\.net$\n(^|\\.)bilibili\\.com$\n(^|\\.)bilibili\\.tv$\n(^|\\.)biligame\\.com$\n(^|\\.)biligame\\.net$\n(^|\\.)hdslb\\.com$\n(^|\\.)im9\\.com$\n\n# Blizzard\n(^|\\.)battle\\.net$\n(^|\\.)battlenet\\.com$\n(^|\\.)blizzard\\.com$\n\n# ByteDance\n(^|\\.)bytedance\\.com$\n(^|\\.)bytedance\\.net$\n(^|\\.)bytedns\\.net$\n(^|\\.)byteimg\\.com$\n(^|\\.)feiliao\\.com$\n(^|\\.)gifshow\\.com$\n(^|\\.)huoshan\\.com$\n(^|\\.)iesdouyin\\.com$\n(^|\\.)ixigua\\.com$\n(^|\\.)kspkg\\.com$\n(^|\\.)pstatp\\.com$\n(^|\\.)snssdk\\.com$\n(^|\\.)toutiao\\.com$\n(^|\\.)toutiao13\\.com$\n(^|\\.)toutiaocdn\\.com$\n(^|\\.)toutiaocdn\\.net$\n(^|\\.)toutiaocloud\\.com$\n(^|\\.)toutiaohao\\.com$\n(^|\\.)toutiaohao\\.net$\n(^|\\.)toutiaoimg\\.com$\n(^|\\.)toutiaopage\\.com$\n(^|\\.)wukong\\.com$\n(^|\\.)zijieimg\\.com$\n(^|\\.)zjbyte\\.com$\n(^|\\.)zjcdn\\.com$\n\n# CCTV\n(^|\\.)cctv\\.com$\n(^|\\.)cctvpic\\.com$\n(^|\\.)livechina\\.com$\n\n# ChinaNet\n(^|\\.)21cn\\.com$\n\n# DiDi\n(^|\\.)didialift\\.com$\n(^|\\.)didiglobal\\.com$\n(^|\\.)udache\\.com$\n\n# Douyu 斗鱼\n(^|\\.)douyu\\.com$\n(^|\\.)douyu\\.tv$\n(^|\\.)douyutv\\.com$\n\n# Epic\n(^|\\.)epicgames\\.com$\n(^|\\.)helpshift\\.com$\n(^|\\.)paragon\\.com$\n(^|\\.)unrealengine\\.com$\n\n# Google China\n(^|\\.)265\\.com$\n(^|\\.)2mdn\\.net$\n(^|\\.)alt[0-8]-mtalk\\.google\\.com$\n(^|\\.)app-measurement\\.com$\n(^|\\.)beacons\\.gcp\\.gvt2\\.com$\n(^|\\.)beacons\\.gvt2\\.com$\n(^|\\.)beacons3\\.gvt2\\.com$\n(^|\\.)c\\.android\\.clients\\.google\\.com$\n(^|\\.)cache\\.pack\\.google\\.com$\n(^|\\.)checkin\\.gstatic\\.com$\n(^|\\.)clickserve\\.dartsearch\\.net$\n(^|\\.)clientservices\\.googleapis\\.com$\n(^|\\.)connectivitycheck\\.gstatic\\.com$\n(^|\\.)crl\\.pki\\.goog$\n(^|\\.)dl\\.google\\.com$\n(^|\\.)dl\\.l\\.google\\.com$\n(^|\\.)fonts\\.googleapis\\.com$\n(^|\\.)fonts\\.gstatic\\.com$\n(^|\\.)googletagmanager\\.com$\n(^|\\.)googletagservices\\.com$\n(^|\\.)gtm\\.oasisfeng\\.com$\n(^|\\.)imasdk\\.googleapis\\.com$\n(^|\\.)kh\\.google\\.com$\n(^|\\.)khm\\.google\\.com$\n(^|\\.)khm\\.googleapis\\.com$\n(^|\\.)khm0\\.google\\.com$\n(^|\\.)khm0\\.googleapis\\.com$\n(^|\\.)khm1\\.google\\.com$\n(^|\\.)khm1\\.googleapis\\.com$\n(^|\\.)khm2\\.google\\.com$\n(^|\\.)khm2\\.googleapis\\.com$\n(^|\\.)khm3\\.google\\.com$\n(^|\\.)khm3\\.googleapis\\.com$\n(^|\\.)khmdb\\.google\\.com$\n(^|\\.)khmdb\\.googleapis\\.com$\n(^|\\.)mtalk\\.google\\.com$\n(^|\\.)ocsp\\.pki\\.goog$\n(^|\\.)recaptcha\\.net$\n(^|\\.)redirector\\.gvt1\\.com$\n(^|\\.)safebrowsing-cache\\.google\\.com$\n(^|\\.)safebrowsing\\.googleapis\\.com$\n(^|\\.)settings\\.crashlytics\\.com$\n(^|\\.)ssl-google-analytics\\.l\\.google\\.com$\n(^|\\.)ssl\\.gstatic\\.com$\n(^|\\.)toolbarqueries\\.google\\.com$\n(^|\\.)tools\\.google\\.com$\n(^|\\.)tools\\.l\\.google\\.com$\n(^|\\.)update\\.googleapis\\.com$\n(^|\\.)www-googletagmanager\\.l\\.google\\.com$\n(^|\\.)www\\.gstatic\\.com$\n\n# HuaWei\n(^|\\.)dbankcdn\\.com$\n(^|\\.)hc-cdn\\.com$\n(^|\\.)hicloud\\.com$\n(^|\\.)huawei\\.com$\n(^|\\.)huaweicloud\\.com$\n(^|\\.)huaweishop\\.net$\n(^|\\.)hwccpc\\.com$\n(^|\\.)vmall\\.com$\n(^|\\.)vmallres\\.com$\n\n# Iflytek 科大讯飞\n(^|\\.)iflyink\\.com$\n(^|\\.)iflyrec\\.com$\n(^|\\.)iflytek\\.com$\n\n# Iqiyi\n(^|\\.)71\\.am$\n(^|\\.)71edge\\.com$\n(^|\\.)iqiyi\\.com$\n(^|\\.)iqiyipic\\.com$\n(^|\\.)ppsimg\\.com$\n(^|\\.)qiyi\\.com$\n(^|\\.)qiyipic\\.com$\n(^|\\.)qy\\.net$\n\n# JD\n(^|\\.)360buy\\.com$\n(^|\\.)360buyimg\\.com$\n(^|\\.)jcloudcs\\.com$\n(^|\\.)jd\\.com$\n(^|\\.)jd\\.hk$\n(^|\\.)jdcloud\\.com$\n(^|\\.)jdpay\\.com$\n(^|\\.)paipai\\.com$\n\n# Kingsoft\n(^|\\.)iciba\\.com$\n(^|\\.)ksosoft\\.com$\n(^|\\.)ksyun\\.com$\n\n# Kuaishou 快手\n(^|\\.)kuaishou\\.com$\n(^|\\.)yximgs\\.com$\n\n# Meitu\n(^|\\.)meitu\\.com$\n(^|\\.)meitudata\\.com$\n(^|\\.)meitustat\\.com$\n(^|\\.)meipai\\.com$\n\n# LeTV 乐视\n(^|\\.)le\\.com$\n(^|\\.)lecloud\\.com$\n(^|\\.)letv\\.com$\n(^|\\.)letvcloud\\.com$\n(^|\\.)letvimg\\.com$\n(^|\\.)letvlive\\.com$\n(^|\\.)letvstore\\.com$\n\n# MGTV 芒果TV\n(^|\\.)hitv\\.com$\n(^|\\.)hunantv\\.com$\n(^|\\.)mgtv\\.com$\n\n# MI\n(^|\\.)duokan\\.com$\n(^|\\.)mi-img\\.com$\n(^|\\.)mi\\.com$\n(^|\\.)miui\\.com$\n(^|\\.)xiaomi\\.com$\n(^|\\.)xiaomi\\.net$\n(^|\\.)xiaomicp\\.com$\n\n# NetEase\n(^|\\.)126\\.com$\n(^|\\.)126\\.net$\n(^|\\.)127\\.net$\n(^|\\.)163\\.com$\n(^|\\.)163yun\\.com$\n(^|\\.)lofter\\.com$\n(^|\\.)netease\\.com$\n(^|\\.)ydstatic\\.com$\n(^|\\.)youdao\\.com$\n\n# PPTV、PPLive\n(^|\\.)pplive\\.com$\n(^|\\.)pptv\\.com$\n\n# PDD 拼多多\n(^|\\.)pinduoduo\\.com$\n(^|\\.)yangkeduo\\.com$\n\n# Sina\n(^|\\.)leju\\.com$\n(^|\\.)miaopai\\.com$\n(^|\\.)sina\\.com$\n(^|\\.)sinaapp\\.com$\n(^|\\.)sinaimg\\.com$\n(^|\\.)weibo\\.com$\n(^|\\.)weibocdn\\.com$\n(^|\\.)xiaoka\\.tv$\n\n# Sohu Sogo\n(^|\\.)go2map\\.com$\n(^|\\.)sogo\\.com$\n(^|\\.)sogou\\.com$\n(^|\\.)sogoucdn\\.com$\n(^|\\.)sohu-inc\\.com$\n(^|\\.)sohu\\.com$\n(^|\\.)sohucs\\.com$\n(^|\\.)sohuno\\.com$\n(^|\\.)sohurdc\\.com$\n(^|\\.)v-56\\.com$\n\n# Sony\n(^|\\.)playstation\\.com$\n(^|\\.)playstation\\.net$\n(^|\\.)playstationnetwork\\.com$\n(^|\\.)sony\\.com$\n(^|\\.)sonyentertainmentnetwork\\.com$\n\n# Spark\n(^|\\.)amplitude\\.com$\n(^|\\.)firebaseio\\.com$\n(^|\\.)hockeyapp\\.net$\n(^|\\.)smartmailcloud\\.com$\n\n# Steam\n(^|\\.)steam-chat\\.com$\n(^|\\.)steamgames\\.com$\n(^|\\.)steamusercontent\\.com$\n(^|\\.)steamcontent\\.com$\n(^|\\.)steamstatic\\.com$\n(^|\\.)steamcdn-a\\.akamaihd\\.net$\n(^|\\.)steamstat\\.us$\n\n# Tencent\n(^|\\.)foxmail\\.com$\n(^|\\.)gtimg\\.com$\n(^|\\.)idqqimg\\.com$\n(^|\\.)igamecj\\.com$\n(^|\\.)myapp\\.com$\n(^|\\.)myqcloud\\.com$\n(^|\\.)qq\\.com$\n(^|\\.)qqmail\\.com$\n(^|\\.)qqurl\\.com$\n(^|\\.)smtcdns\\.com$\n(^|\\.)smtcdns\\.net$\n(^|\\.)soso\\.com$\n(^|\\.)tencent-cloud\\.net$\n(^|\\.)tencent\\.com$\n(^|\\.)tencentmind\\.com$\n(^|\\.)tenpay\\.com$\n(^|\\.)wechat\\.com$\n(^|\\.)weixin\\.com$\n(^|\\.)weiyun\\.com$\n\n# Vip 唯品会\n(^|\\.)appsimg\\.com$\n(^|\\.)appvipshop\\.com$\n(^|\\.)vip\\.com$\n(^|\\.)vipstatic\\.com$\n\n# Ximalaya 喜马拉雅\n(^|\\.)ximalaya\\.com$\n(^|\\.)xmcdn\\.com$\n\n# Xunlei 迅雷\n(^|\\.)00cdn\\.com$\n(^|\\.)88cdn\\.com$\n(^|\\.)kanimg\\.com$\n(^|\\.)kankan\\.com$\n(^|\\.)p2cdn\\.com$\n(^|\\.)sandai\\.net$\n(^|\\.)thundercdn\\.com$\n(^|\\.)xunlei\\.com$\n\n# YYeTs 人人影视\n(^|\\.)jstucdn\\.com$\n(^|\\.)zimuzu\\.io$\n(^|\\.)zimuzu\\.tv$\n(^|\\.)zmz001\\.com$\n(^|\\.)zmz002\\.com$\n(^|\\.)zmz003\\.com$\n(^|\\.)zmz004\\.com$\n(^|\\.)zmz2019\\.com$\n(^|\\.)zmzapi\\.com$\n(^|\\.)zmzapi\\.net$\n(^|\\.)zmzfile\\.com$\n\n# Private Tracker\n(^|\\.)\\w*announce\\w*\\.\\w*$\n(^|\\.)\\w*torrent\\w*\\.\\w*$\n(^|\\.)\\w*tracker\\w*\\.\\w*$\n(^|\\.)animetorrents\\.me$\n(^|\\.)awesome-hd\\.me$\n(^|\\.)beitai\\.pt$\n(^|\\.)bittorrent\\.com$\n(^|\\.)broadcasthe\\.net$\n(^|\\.)chdbits\\.co$\n(^|\\.)classix-unlimited\\.co\\.uk$\n(^|\\.)empornium\\.me$\n(^|\\.)gazellegames\\.net$\n(^|\\.)hd4fans\\.org$\n(^|\\.)hdchina\\.org$\n(^|\\.)hdhome\\.org$\n(^|\\.)hdsky\\.me$\n(^|\\.)hdtime\\.org$\n(^|\\.)hdzone\\.me$\n(^|\\.)icetorrent\\.org$\n(^|\\.)jpopsuki\\.eu$\n(^|\\.)keepfrds\\.com$\n(^|\\.)leaguehd\\.com$\n(^|\\.)m-team\\.cc$\n(^|\\.)madsrevolution\\.net$\n(^|\\.)msg\\.vg$\n(^|\\.)nanyangpt\\.com$\n(^|\\.)ncore\\.cc$\n(^|\\.)open\\.cd$\n(^|\\.)ourbits\\.club$\n(^|\\.)passthepopcorn\\.me$\n(^|\\.)privatehd\\.to$\n(^|\\.)pthome\\.net$\n(^|\\.)redacted\\.ch$\n(^|\\.)springsunday\\.net$\n(^|\\.)tjupt\\.org$\n(^|\\.)totheglory\\.im$\n\n# TeamViewer\n(^|\\.)teamviewer\\.com$\n109.239.140.0/24\n139.220.243.27/32\n172.16.102.56/32\n185.188.32.1/28\n221.226.128.146/32\n\n# Public Direct CDN 公共直连cdn\n(^|\\.)baomitu\\.com$\n(^|\\.)bootcss\\.com$\n(^|\\.)jiasule\\.com$\n(^|\\.)jsdelivr\\.net$\n(^|\\.)staticfile\\.org$\n(^|\\.)upaiyun\\.com$\n\n# AccelerateDirectSites\n(^|\\.)12306\\.com$\n(^|\\.)17173\\.com$\n(^|\\.)17k\\.com$\n(^|\\.)360doc\\.com$\n(^|\\.)36kr\\.com$\n(^|\\.)3dmgame\\.com$\n(^|\\.)51cto\\.com$\n(^|\\.)51job\\.com$\n(^|\\.)51jobcdn\\.com$\n(^|\\.)56\\.com$\n(^|\\.)8686c\\.com$\n(^|\\.)abchina\\.com$\n(^|\\.)abercrombie\\.com$\n(^|\\.)acfun\\.tv$\n(^|\\.)air-matters\\.com$\n(^|\\.)air-matters\\.io$\n(^|\\.)aixifan\\.com$\n(^|\\.)algocasts\\.io$\n(^|\\.)babytree\\.com$\n(^|\\.)babytreeimg\\.com$\n(^|\\.)baicizhan\\.com$\n(^|\\.)baidupan\\.com$\n(^|\\.)baike\\.com$\n(^|\\.)biqudu\\.com$\n(^|\\.)biquge\\.com$\n(^|\\.)bitauto\\.com$\n(^|\\.)c-ctrip\\.com$\n(^|\\.)camera360\\.com$\n(^|\\.)cdnmama\\.com$\n(^|\\.)chaoxing\\.com$\n(^|\\.)che168\\.com$\n(^|\\.)chinacache\\.net$\n(^|\\.)chinaso\\.com$\n(^|\\.)chinaz\\.com$\n(^|\\.)chinaz\\.net$\n(^|\\.)chuimg\\.com$\n(^|\\.)cibntv\\.net$\n(^|\\.)clouddn\\.com$\n(^|\\.)cloudxns\\.net$\n(^|\\.)cn163\\.net$\n(^|\\.)cnbeta\\.com$\n(^|\\.)cnbetacdn\\.com$\n(^|\\.)cnblogs\\.com$\n(^|\\.)cnki\\.net$\n(^|\\.)cnmstl\\.net$\n(^|\\.)coolapk\\.com$\n(^|\\.)coolapkmarket\\.com$\n(^|\\.)csdn\\.net$\n(^|\\.)ctrip\\.com$\n(^|\\.)dangdang\\.com$\n(^|\\.)dfcfw\\.com$\n(^|\\.)dianping\\.com$\n(^|\\.)dilidili\\.wang$\n(^|\\.)douban\\.com$\n(^|\\.)doubanio\\.com$\n(^|\\.)dpfile\\.com$\n(^|\\.)duowan\\.com$\n(^|\\.)dxycdn\\.com$\n(^|\\.)dytt8\\.net$\n(^|\\.)easou\\.com$\n(^|\\.)eastday\\.com$\n(^|\\.)eastmoney\\.com$\n(^|\\.)ecitic\\.com$\n(^|\\.)ewqcxz\\.com$\n(^|\\.)fang\\.com$\n(^|\\.)fantasy\\.tv$\n(^|\\.)feng\\.com$\n(^|\\.)fengkongcloud\\.com$\n(^|\\.)fir\\.im$\n(^|\\.)frdic\\.com$\n(^|\\.)fresh-ideas\\.cc$\n(^|\\.)ganji\\.com$\n(^|\\.)ganjistatic1\\.com$\n(^|\\.)geetest\\.com$\n(^|\\.)geilicdn\\.com$\n(^|\\.)godic\\.net$\n(^|\\.)gravatar\\.com$\n(^|\\.)guazi\\.com$\n(^|\\.)gwdang\\.com$\n(^|\\.)gzlzfm\\.com$\n(^|\\.)haibian\\.com$\n(^|\\.)haosou\\.com$\n(^|\\.)hollisterco\\.com$\n(^|\\.)hongxiu\\.com$\n(^|\\.)huajiao\\.com$\n(^|\\.)hupu\\.com$\n(^|\\.)huxiucdn\\.com$\n(^|\\.)huya\\.com$\n(^|\\.)ifeng\\.com$\n(^|\\.)ifengimg\\.com$\n(^|\\.)images-amazon\\.com$\n(^|\\.)infzm\\.com$\n(^|\\.)ipip\\.net$\n(^|\\.)it168\\.com$\n(^|\\.)ithome\\.com$\n(^|\\.)ixdzs\\.com$\n(^|\\.)jianguoyun\\.com$\n(^|\\.)jianshu\\.com$\n(^|\\.)jianshu\\.io$\n(^|\\.)jianshuapi\\.com$\n(^|\\.)jiathis\\.com$\n(^|\\.)jmstatic\\.com$\n(^|\\.)jumei\\.com$\n(^|\\.)kaola\\.com$\n(^|\\.)knewone\\.com$\n(^|\\.)koowo\\.com$\n(^|\\.)ksyungslb\\.com$\n(^|\\.)kuaidi100\\.com$\n(^|\\.)kugou\\.com$\n(^|\\.)lancdns\\.com$\n(^|\\.)landiannews\\.com$\n(^|\\.)lanzou\\.com$\n(^|\\.)lemicp\\.com$\n(^|\\.)letitfly\\.me$\n(^|\\.)linkedin\\.com$\n(^|\\.)lizhi\\.fm$\n(^|\\.)lizhi\\.io$\n(^|\\.)lizhifm\\.com$\n(^|\\.)loli\\.net$\n(^|\\.)luoo\\.net$\n(^|\\.)lvmama\\.com$\n(^|\\.)lxdns\\.com$\n(^|\\.)maoyan\\.com$\n(^|\\.)meilishuo\\.com$\n(^|\\.)meituan\\.com$\n(^|\\.)meituan\\.net$\n(^|\\.)meizu\\.com$\n(^|\\.)miguvideo\\.com$\n(^|\\.)mobike\\.com$\n(^|\\.)mogu\\.com$\n(^|\\.)mogucdn\\.com$\n(^|\\.)mogujie\\.com$\n(^|\\.)moji\\.com$\n(^|\\.)moke\\.com$\n(^|\\.)msstatic\\.com$\n(^|\\.)mubu\\.com$\n(^|\\.)myunlu\\.com$\n(^|\\.)nruan\\.com$\n(^|\\.)nuomi\\.com$\n(^|\\.)onedns\\.net$\n(^|\\.)onlinedown\\.net$\n(^|\\.)oracle\\.com$\n(^|\\.)oschina\\.net$\n(^|\\.)ourdvs\\.com$\n(^|\\.)overcast\\.fm$\n(^|\\.)paypal\\.com$\n(^|\\.)polyv\\.net$\n(^|\\.)qbox\\.me$\n(^|\\.)qcloud\\.com$\n(^|\\.)qcloudcdn\\.com$\n(^|\\.)qdaily\\.com$\n(^|\\.)qdmm\\.com$\n(^|\\.)qhimg\\.com$\n(^|\\.)qianqian\\.com$\n(^|\\.)qidian\\.com$\n(^|\\.)qihucdn\\.com$\n(^|\\.)qin\\.io$\n(^|\\.)qiniu\\.com$\n(^|\\.)qiniucdn\\.com$\n(^|\\.)qiniudn\\.com$\n(^|\\.)qiushibaike\\.com$\n(^|\\.)quanmin\\.tv$\n(^|\\.)qunar\\.com$\n(^|\\.)qunarzz\\.com$\n(^|\\.)rarbg\\.to$\n(^|\\.)repaik\\.com$\n(^|\\.)rrmj\\.tv$\n(^|\\.)ruguoapp\\.com$\n(^|\\.)runoob\\.com$\n(^|\\.)sankuai\\.com$\n(^|\\.)segmentfault\\.com$\n(^|\\.)sf-express\\.com$\n(^|\\.)shumilou\\.net$\n(^|\\.)simplecd\\.me$\n(^|\\.)sm\\.ms$\n(^|\\.)smzdm\\.com$\n(^|\\.)snwx\\.com$\n(^|\\.)soufunimg\\.com$\n(^|\\.)ssl-images-amazon\\.com$\n(^|\\.)sspai\\.com$\n(^|\\.)startssl\\.com$\n(^|\\.)suning\\.com$\n(^|\\.)taihe\\.com$\n(^|\\.)th-sjy\\.com$\n(^|\\.)tianqi\\.com$\n(^|\\.)tianqistatic\\.com$\n(^|\\.)tianyancha\\.com$\n(^|\\.)tianyaui\\.com$\n(^|\\.)tietuku\\.com$\n(^|\\.)tiexue\\.net$\n(^|\\.)tmiaoo\\.com$\n(^|\\.)trip\\.com$\n(^|\\.)ttmeiju\\.com$\n(^|\\.)tudou\\.com$\n(^|\\.)tuniu\\.com$\n(^|\\.)tuniucdn\\.com$\n(^|\\.)umengcloud\\.com$\n(^|\\.)upyun\\.com$\n(^|\\.)uxengine\\.net$\n(^|\\.)videocc\\.net$\n(^|\\.)vmware\\.com$\n(^|\\.)wandoujia\\.com$\n(^|\\.)weather\\.com$\n(^|\\.)weico\\.cc$\n(^|\\.)weidian\\.com$\n(^|\\.)weiphone\\.com$\n(^|\\.)weiphone\\.net$\n(^|\\.)womai\\.com$\n(^|\\.)wscdns\\.com$\n(^|\\.)xdrig\\.com$\n(^|\\.)xhscdn\\.com$\n(^|\\.)xiachufang\\.com$\n(^|\\.)xiaohongshu\\.com$\n(^|\\.)xiaojukeji\\.com$\n(^|\\.)xinhuanet\\.com$\n(^|\\.)xitek\\.com$\n(^|\\.)xiumi\\.us$\n(^|\\.)xslb\\.net$\n(^|\\.)xueqiu\\.com$\n(^|\\.)yach\\.me$\n(^|\\.)yeepay\\.com$\n(^|\\.)yhd\\.com$\n(^|\\.)yihaodianimg\\.com$\n(^|\\.)yinxiang\\.com$\n(^|\\.)yinyuetai\\.com$\n(^|\\.)yixia\\.com$\n(^|\\.)ys168\\.com$\n(^|\\.)yuewen\\.com$\n(^|\\.)yy\\.com$\n(^|\\.)yystatic\\.com$\n(^|\\.)zealer\\.com$\n(^|\\.)zhangzishi\\.cc$\n(^|\\.)zhanqi\\.tv$\n(^|\\.)zhaopin\\.com$\n(^|\\.)zhihu\\.com$\n(^|\\.)zhimg\\.com$\n(^|\\.)zhongsou\\.com$\n(^|\\.)zhuihd\\.com$\n\n#**********************************************************************\n# 本地/局域网地址\n^(.*\\.)?local$\n^(.*\\.)?localhost$\n^(.*\\.)?ip6-localhost$\n^(.*\\.)?ip6-loopback$\n\n# Router managed 路由器管理域名\n(^|\\.)hiwifi\\.com$\n(^|\\.)leike\\.cc$\n(^|\\.)miwifi\\.com$\n(^|\\.)my\\.router$\n(^|\\.)p\\.to$\n(^|\\.)peiluyou\\.com$\n(^|\\.)phicomm\\.me$\n(^|\\.)routerlogin\\.com$\n(^|\\.)tendawifi\\.com$\n(^|\\.)zte\\.home$\n(^|\\.)router\\.asus\\.com$\n\n::ffff:0:0:0:0/1\n::ffff:128:0:0:0/1\n10.0.0.0/8\n100.64.0.0/10\n127.0.0.0/8\n172.16.0.0/12\n192.168.0.0/16\n\n# 中国云服务商ip端\n# 阿里\n8.128.0.0/10\n8.208.0.0/12\n14.1.112.0/22\n41.222.240.0/22\n41.223.119.0/24\n43.242.168.0/22\n45.112.212.0/22\n47.52.0.0/16\n47.56.0.0/15\n47.74.0.0/15\n47.76.0.0/14\n47.80.0.0/12\n47.235.0.0/16\n47.236.0.0/14\n47.240.0.0/14\n47.244.0.0/15\n47.246.0.0/16\n47.250.0.0/15\n47.252.0.0/15\n47.254.0.0/16\n59.82.0.0/20\n59.82.240.0/21\n59.82.248.0/22\n72.254.0.0/16\n103.38.56.0/22\n103.52.76.0/22\n103.206.40.0/22\n110.76.21.0/24\n110.76.23.0/24\n112.125.0.0/17\n116.251.64.0/18\n119.38.208.0/20\n119.38.224.0/20\n119.42.224.0/20\n139.95.0.0/16\n140.205.1.0/24\n140.205.122.0/24\n147.139.0.0/16\n149.129.0.0/16\n155.102.0.0/16\n161.117.0.0/16\n163.181.0.0/16\n170.33.0.0/16\n198.11.128.0/18\n205.204.96.0/19\n\n# 腾讯 qq\n19.28.0.0/23\n45.40.192.0/19\n49.51.0.0/16\n62.234.0.0/16\n94.191.0.0/17\n103.7.28.0/22\n103.116.50.0/23\n103.231.60.0/24\n109.244.0.0/16\n111.30.128.0/21\n111.30.136.0/24\n111.30.139.0/24\n111.30.140.0/23\n115.159.0.0/16\n119.28.0.0/15\n120.88.56.0/23\n121.51.0.0/16\n129.28.0.0/16\n129.204.0.0/16\n129.211.0.0/16\n132.232.0.0/16\n134.175.0.0/16\n146.56.192.0/18\n148.70.0.0/16\n150.109.0.0/16\n152.136.0.0/16\n162.14.0.0/16\n162.62.0.0/16\n170.106.130.0/24\n182.254.0.0/16\n188.131.128.0/17\n203.195.128.0/17\n203.205.128.0/17\n210.4.138.0/24\n211.152.128.0/23\n211.152.132.0/23\n211.152.148.0/23\n212.64.0.0/17\n212.129.128.0/17\n\n# 百度 Baidu\n45.113.192.0/22\n63.217.23.0/24\n63.243.252.0/24\n103.235.44.0/22\n104.193.88.0/22\n106.12.0.0/15\n114.28.224.0/20\n119.63.192.0/21\n180.76.0.0/24\n180.76.0.0/16\n182.61.0.0/16\n185.10.104.0/22\n202.46.48.0/20\n203.90.238.0/24\n\n# 华为 huwei\n43.254.0.0/22\n45.249.212.0/22\n49.4.0.0/17\n78.101.192.0/19\n78.101.224.0/20\n81.52.161.0/24\n85.97.220.0/22\n103.31.200.0/22\n103.69.140.0/23\n103.218.216.0/22\n114.115.128.0/17\n114.116.0.0/16\n116.63.128.0/18\n116.66.184.0/22\n116.71.96.0/20\n116.71.128.0/21\n116.71.136.0/22\n116.71.141.0/24\n116.71.142.0/24\n116.71.243.0/24\n116.71.244.0/24\n116.71.251.0/24\n117.78.0.0/18\n119.3.0.0/16\n119.8.0.0/21\n119.8.32.0/19\n121.36.0.0/17\n121.36.128.0/18\n121.37.0.0/17\n122.112.128.0/17\n139.9.0.0/18\n139.9.64.0/19\n139.9.100.0/22\n139.9.104.0/21\n139.9.112.0/20\n139.9.128.0/18\n139.9.192.0/19\n139.9.224.0/20\n139.9.240.0/21\n139.9.248.0/22\n139.159.128.0/19\n139.159.160.0/22\n139.159.164.0/23\n139.159.168.0/21\n139.159.176.0/20\n139.159.192.0/18\n159.138.0.0/18\n159.138.64.0/21\n159.138.79.0/24\n159.138.80.0/20\n159.138.96.0/20\n159.138.112.0/21\n159.138.125.0/24\n159.138.128.0/18\n159.138.192.0/20\n159.138.223.0/24\n159.138.224.0/19\n168.195.92.0/22\n185.176.76.0/22\n197.199.0.0/18\n197.210.163.0/24\n197.252.1.0/24\n197.252.2.0/23\n197.252.4.0/22\n197.252.8.0/21\n200.32.52.0/24\n200.32.54.0/24\n200.32.57.0/24\n203.135.0.0/22\n203.135.4.0/23\n203.135.8.0/23\n203.135.11.0/24\n203.135.13.0/24\n203.135.20.0/24\n203.135.22.0/23\n203.135.24.0/23\n203.135.26.0/24\n203.135.29.0/24\n203.135.33.0/24\n203.135.38.0/23\n203.135.40.0/24\n203.135.43.0/24\n203.135.48.0/24\n203.135.50.0/24\n\n# 网易 NetEase\n42.186.0.0/16\n45.127.128.0/22\n45.195.24.0/24\n45.253.132.0/22\n45.253.240.0/22\n45.254.48.0/23\n59.111.0.0/20\n59.111.128.0/17\n103.71.120.0/21\n103.71.128.0/22\n103.71.196.0/22\n103.71.200.0/22\n103.72.12.0/22\n103.72.18.0/23\n103.72.24.0/22\n103.72.28.0/23\n103.72.38.0/23\n103.72.40.0/23\n103.72.44.0/22\n103.72.48.0/21\n103.72.128.0/21\n103.74.24.0/21\n103.74.48.0/22\n103.126.92.0/22\n103.129.252.0/22\n103.131.252.0/22\n103.135.240.0/22\n103.196.64.0/22\n106.2.32.0/19\n106.2.64.0/18\n114.113.196.0/22\n114.113.200.0/22\n115.236.112.0/20\n115.238.76.0/22\n123.58.160.0/19\n223.252.192.0/19\n\n# 360\n101.198.128.0/18\n101.198.192.0/19\n101.199.196.0/22\n\n# 国内ip地址\n1.0.1.0/24\n1.0.2.0/23\n1.0.8.0/21\n1.0.32.0/19\n1.1.0.0/24\n1.1.2.0/23\n1.1.4.0/22\n1.1.8.0/21\n1.1.16.0/20\n1.1.32.0/19\n1.2.0.0/23\n1.2.2.0/24\n1.2.5.0/24\n1.2.6.0/23\n1.2.8.0/21\n1.2.16.0/20\n1.2.32.0/19\n1.2.64.0/18\n1.3.0.0/16\n1.4.1.0/24\n1.4.2.0/23\n1.4.4.0/22\n1.4.8.0/21\n1.4.16.0/20\n1.4.32.0/19\n1.4.64.0/18\n1.8.0.0/18\n1.8.64.0/19\n1.8.96.0/22\n1.8.100.0/23\n1.8.112.0/20\n1.8.128.0/20\n1.8.144.0/22\n1.8.148.0/23\n1.8.154.0/23\n1.8.156.0/22\n1.8.160.0/19\n1.8.192.0/19\n1.8.224.0/20\n1.8.244.0/22\n1.8.248.0/21\n1.10.0.0/21\n1.10.8.0/23\n1.10.11.0/24\n1.10.12.0/22\n1.10.16.0/20\n1.10.32.0/19\n1.10.64.0/18\n1.12.0.0/14\n1.18.128.0/24\n1.24.0.0/13\n1.45.0.0/16\n1.48.0.0/14\n1.56.0.0/13\n1.68.0.0/14\n1.80.0.0/12\n1.116.0.0/15\n1.118.1.0/24\n1.118.2.0/23\n1.118.4.0/22\n1.118.8.0/21\n1.118.16.0/20\n1.118.32.0/19\n1.118.64.0/18\n1.118.128.0/17\n1.119.0.0/16\n1.180.0.0/14\n1.184.0.0/15\n1.188.0.0/14\n1.192.0.0/13\n1.202.0.0/15\n1.204.0.0/14\n2.20.54.23/32\n8.128.0.0/10\n8.209.36.0/22\n8.209.40.0/21\n8.209.48.0/20\n8.209.192.0/18\n8.210.0.0/15\n8.212.0.0/14\n8.216.0.0/13\n14.0.0.0/21\n14.0.12.0/22\n14.1.0.0/22\n14.1.24.0/22\n14.1.108.0/22\n14.16.0.0/12\n14.102.128.0/22\n14.102.180.0/22\n14.103.0.0/16\n14.104.0.0/13\n14.112.0.0/12\n14.130.0.0/15\n14.134.0.0/15\n14.144.0.0/12\n14.192.60.0/22\n14.192.76.0/22\n14.196.0.0/15\n14.204.0.0/15\n14.208.0.0/12\n20.81.0.0/24\n20.134.160.0/20\n20.139.160.0/20\n20.249.255.0/24\n20.251.0.0/22\n23.236.64.0/25\n23.236.64.128/26\n23.236.64.192/27\n27.0.128.0/21\n27.0.160.0/21\n27.0.188.0/22\n27.0.204.0/22\n27.0.208.0/21\n27.8.0.0/13\n27.16.0.0/12\n27.34.232.0/21\n27.36.0.0/14\n27.40.0.0/13\n27.50.40.0/21\n27.50.128.0/17\n27.54.72.0/21\n27.54.152.0/21\n27.54.192.0/18\n27.98.208.0/20\n27.98.224.0/19\n27.99.128.0/17\n27.103.0.0/16\n27.106.128.0/18\n27.106.204.0/22\n27.109.32.0/19\n27.109.124.0/22\n27.112.0.0/18\n27.112.80.0/20\n27.112.112.0/21\n27.113.128.0/18\n27.115.0.0/17\n27.116.44.0/22\n27.121.72.0/21\n27.121.120.0/21\n27.128.0.0/15\n27.131.220.0/22\n27.144.0.0/16\n27.148.0.0/14\n27.152.0.0/13\n27.184.0.0/13\n27.192.0.0/11\n27.224.0.0/14\n36.0.0.0/22\n36.0.16.0/20\n36.0.32.0/19\n36.0.64.0/18\n36.0.128.0/17\n36.1.0.0/16\n36.4.0.0/14\n36.16.0.0/12\n36.32.0.0/14\n36.36.0.0/16\n36.37.0.0/19\n36.37.36.0/23\n36.37.39.0/24\n36.37.40.0/21\n36.37.48.0/20\n36.40.0.0/13\n36.48.0.0/15\n36.51.0.0/17\n36.51.128.0/18\n36.51.192.0/19\n36.51.224.0/20\n36.51.240.0/21\n36.51.248.0/22\n36.51.252.0/23\n36.56.0.0/13\n36.96.0.0/11\n36.128.0.0/10\n36.192.0.0/11\n36.248.0.0/14\n36.254.0.0/16\n36.255.116.0/22\n36.255.128.0/22\n36.255.164.0/22\n36.255.172.0/22\n36.255.176.0/22\n38.142.239.114/32\n39.0.0.0/24\n39.0.2.0/23\n39.0.4.0/22\n39.0.8.0/21\n39.0.16.0/20\n39.0.32.0/19\n39.0.64.0/18\n39.0.128.0/17\n39.64.0.0/11\n39.96.0.0/13\n39.104.0.0/14\n39.108.0.0/16\n39.109.120.0/23\n39.128.0.0/10\n40.0.176.0/20\n40.0.247.0/24\n40.0.248.0/22\n40.0.252.0/23\n40.0.255.0/24\n40.72.0.0/15\n40.77.136.112/28\n40.77.236.224/27\n40.77.254.64/27\n40.125.128.0/17\n40.126.64.0/18\n40.198.10.0/24\n40.198.16.0/21\n40.198.24.0/23\n40.251.225.0/24\n40.251.227.0/24\n42.0.0.0/22\n42.0.8.0/21\n42.0.16.0/21\n42.0.24.0/22\n42.0.32.0/19\n42.0.128.0/17\n42.1.0.0/19\n42.1.32.0/20\n42.1.48.0/21\n42.1.56.0/22\n42.4.0.0/14\n42.48.0.0/13\n42.56.0.0/14\n42.62.0.0/17\n42.62.128.0/19\n42.62.160.0/20\n42.62.180.0/22\n42.62.184.0/21\n42.63.0.0/16\n42.80.0.0/15\n42.83.64.0/20\n42.83.80.0/22\n42.83.88.0/21\n42.83.96.0/19\n42.83.128.0/23\n42.83.134.0/24\n42.83.139.0/24\n42.83.140.0/22\n42.83.144.0/20\n42.83.160.0/19\n42.83.192.0/18\n42.84.0.0/14\n42.88.0.0/13\n42.96.64.0/19\n42.96.96.0/21\n42.96.108.0/22\n42.96.112.0/20\n42.96.128.0/17\n42.97.0.0/16\n42.99.0.0/18\n42.99.64.0/19\n42.99.96.0/20\n42.99.112.0/22\n42.99.120.0/21\n42.100.0.0/14\n42.120.0.0/15\n42.122.0.0/16\n42.123.0.0/19\n42.123.36.0/22\n42.123.40.0/21\n42.123.48.0/20\n42.123.64.0/18\n42.123.128.0/17\n42.128.0.0/12\n42.156.0.0/19\n42.156.36.0/22\n42.156.40.0/21\n42.156.48.0/20\n42.156.64.0/18\n42.156.128.0/17\n42.157.0.0/21\n42.157.8.0/22\n42.157.14.0/23\n42.157.16.0/20\n42.157.32.0/19\n42.157.64.0/18\n42.157.128.0/17\n42.158.0.0/15\n42.160.0.0/12\n42.176.0.0/13\n42.184.0.0/15\n42.186.0.0/16\n42.187.0.0/18\n42.187.64.0/19\n42.187.96.0/20\n42.187.112.0/21\n42.187.120.0/22\n42.187.128.0/17\n42.192.0.0/13\n42.201.0.0/17\n42.202.0.0/15\n42.204.0.0/14\n42.208.0.0/12\n42.224.0.0/12\n42.240.0.0/16\n42.242.0.0/15\n42.244.0.0/15\n42.246.0.0/16\n42.247.0.0/22\n42.247.4.0/24\n42.247.5.0/25\n42.247.5.128/26\n42.247.5.204/30\n42.247.5.208/28\n42.247.5.224/27\n42.247.6.0/23\n42.247.8.0/21\n42.247.16.0/20\n42.247.32.0/19\n42.247.64.0/18\n42.247.128.0/17\n42.248.0.0/13\n43.224.12.0/22\n43.224.24.0/22\n43.224.44.0/22\n43.224.52.0/22\n43.224.56.0/22\n43.224.68.0/22\n43.224.72.0/22\n43.224.80.0/22\n43.224.100.0/22\n43.224.144.0/22\n43.224.160.0/22\n43.224.176.0/22\n43.224.184.0/22\n43.224.200.0/21\n43.224.208.0/21\n43.224.216.0/22\n43.224.240.0/22\n43.225.76.0/22\n43.225.86.0/24\n43.225.120.0/22\n43.225.180.0/22\n43.225.208.0/22\n43.225.216.0/21\n43.225.224.0/20\n43.225.240.0/21\n43.225.252.0/22\n43.226.32.0/19\n43.226.64.0/19\n43.226.96.0/20\n43.226.112.0/21\n43.226.120.0/22\n43.226.128.0/19\n43.226.160.0/21\n43.226.236.0/22\n43.226.240.0/20\n43.227.0.0/21\n43.227.8.0/22\n43.227.32.0/19\n43.227.64.0/19\n43.227.104.0/22\n43.227.136.0/21\n43.227.144.0/22\n43.227.152.0/21\n43.227.160.0/20\n43.227.176.0/21\n43.227.188.0/22\n43.227.192.0/19\n43.227.232.0/22\n43.227.248.0/21\n43.228.0.0/18\n43.228.64.0/21\n43.228.76.0/22\n43.228.100.0/22\n43.228.116.0/24\n43.228.118.0/23\n43.228.132.0/22\n43.228.136.0/22\n43.228.148.0/22\n43.228.152.0/22\n43.228.188.0/22\n43.229.40.0/22\n43.229.48.0/22\n43.229.56.0/22\n43.229.96.0/22\n43.229.136.0/21\n43.229.168.0/21\n43.229.176.0/20\n43.229.192.0/21\n43.229.216.0/21\n43.229.232.0/21\n43.230.20.0/22\n43.230.32.0/22\n43.230.68.0/22\n43.230.72.0/22\n43.230.84.0/22\n43.230.124.0/22\n43.230.220.0/22\n43.230.224.0/19\n43.231.12.0/22\n43.231.32.0/20\n43.231.80.0/20\n43.231.96.0/20\n43.231.136.0/21\n43.231.144.0/20\n43.231.160.0/20\n43.231.176.0/21\n43.236.0.0/15\n43.238.0.0/16\n43.239.0.0/19\n43.239.32.0/20\n43.239.48.0/22\n43.239.116.0/22\n43.239.120.0/22\n43.239.172.0/22\n43.240.0.0/22\n43.240.56.0/21\n43.240.68.0/22\n43.240.72.0/21\n43.240.84.0/22\n43.240.124.0/22\n43.240.128.0/21\n43.240.136.0/22\n43.240.156.0/22\n43.240.160.0/19\n43.240.192.0/19\n43.240.240.0/20\n43.241.0.0/20\n43.241.16.0/21\n43.241.48.0/22\n43.241.76.0/22\n43.241.80.0/20\n43.241.112.0/22\n43.241.168.0/21\n43.241.176.0/21\n43.241.184.0/22\n43.241.208.0/20\n43.241.224.0/20\n43.241.240.0/22\n43.241.248.0/22\n43.242.8.0/21\n43.242.16.0/20\n43.242.48.0/22\n43.242.53.0/24\n43.242.54.0/23\n43.242.56.0/21\n43.242.64.0/22\n43.242.72.0/21\n43.242.80.0/20\n43.242.96.0/22\n43.242.144.0/20\n43.242.160.0/21\n43.242.180.0/22\n43.242.188.0/22\n43.242.192.0/21\n43.242.204.0/22\n43.242.216.0/21\n43.242.252.0/22\n43.243.4.0/22\n43.243.8.0/21\n43.243.16.0/22\n43.243.88.0/22\n43.243.128.0/22\n43.243.136.0/22\n43.243.144.0/21\n43.243.156.0/22\n43.243.180.0/22\n43.243.228.0/22\n43.243.232.0/22\n43.243.244.0/22\n43.246.0.0/18\n43.246.64.0/19\n43.246.96.0/22\n43.246.228.0/22\n43.247.4.0/22\n43.247.8.0/22\n43.247.44.0/22\n43.247.48.0/22\n43.247.68.0/22\n43.247.76.0/22\n43.247.84.0/22\n43.247.88.0/21\n43.247.96.0/21\n43.247.108.0/22\n43.247.112.0/22\n43.247.148.0/22\n43.247.152.0/22\n43.247.176.0/20\n43.247.196.0/22\n43.247.200.0/21\n43.247.208.0/20\n43.247.224.0/19\n43.248.0.0/21\n43.248.20.0/22\n43.248.28.0/22\n43.248.48.0/22\n43.248.76.0/22\n43.248.80.0/20\n43.248.96.0/19\n43.248.128.0/20\n43.248.144.0/21\n43.248.176.0/20\n43.248.192.0/20\n43.248.208.0/22\n43.248.228.0/22\n43.248.232.0/22\n43.248.244.0/22\n43.249.4.0/22\n43.249.120.0/22\n43.249.132.0/22\n43.249.136.0/22\n43.249.144.0/20\n43.249.160.0/21\n43.249.168.0/22\n43.249.192.0/22\n43.249.236.0/22\n43.250.4.0/22\n43.250.12.0/22\n43.250.16.0/21\n43.250.28.0/22\n43.250.32.0/22\n43.250.96.0/21\n43.250.108.0/22\n43.250.112.0/21\n43.250.128.0/22\n43.250.144.0/21\n43.250.160.0/22\n43.250.168.0/22\n43.250.176.0/22\n43.250.200.0/22\n43.250.212.0/22\n43.250.216.0/21\n43.250.236.0/22\n43.250.244.0/22\n43.251.4.0/22\n43.251.36.0/22\n43.251.192.0/22\n43.251.232.0/22\n43.251.244.0/22\n43.252.48.0/22\n43.252.56.0/22\n43.252.224.0/22\n43.254.0.0/21\n43.254.8.0/22\n43.254.24.0/22\n43.254.36.0/22\n43.254.44.0/22\n43.254.52.0/22\n43.254.64.0/22\n43.254.72.0/22\n43.254.84.0/22\n43.254.88.0/21\n43.254.100.0/22\n43.254.104.0/22\n43.254.112.0/21\n43.254.128.0/22\n43.254.136.0/21\n43.254.144.0/20\n43.254.168.0/21\n43.254.180.0/22\n43.254.184.0/21\n43.254.192.0/22\n43.254.200.0/22\n43.254.208.0/22\n43.254.220.0/22\n43.254.224.0/20\n43.254.240.0/22\n43.254.248.0/21\n43.255.0.0/21\n43.255.8.0/22\n43.255.16.0/22\n43.255.48.0/22\n43.255.64.0/20\n43.255.84.0/22\n43.255.96.0/22\n43.255.144.0/22\n43.255.176.0/22\n43.255.184.0/22\n43.255.192.0/22\n43.255.200.0/21\n43.255.208.0/21\n43.255.224.0/21\n43.255.232.0/22\n43.255.244.0/22\n45.40.192.0/20\n45.40.208.0/21\n45.40.224.0/19\n45.65.16.0/20\n45.112.132.0/22\n45.112.188.0/22\n45.112.208.0/22\n45.112.216.0/21\n45.112.228.0/22\n45.112.232.0/21\n45.113.12.0/22\n45.113.16.0/20\n45.113.40.0/22\n45.113.52.0/22\n45.113.72.0/22\n45.113.144.0/21\n45.113.168.0/22\n45.113.184.0/22\n45.113.200.0/21\n45.113.208.0/20\n45.113.240.0/22\n45.113.252.0/22\n45.114.0.0/22\n45.114.32.0/22\n45.114.52.0/22\n45.114.96.0/22\n45.114.136.0/22\n45.114.196.0/22\n45.114.200.0/22\n45.114.228.0/22\n45.114.237.0/24\n45.114.238.0/23\n45.114.252.0/22\n45.115.44.0/22\n45.115.100.0/22\n45.115.120.0/22\n45.115.132.0/22\n45.115.144.0/22\n45.115.156.0/22\n45.115.164.0/22\n45.115.200.0/22\n45.115.212.0/22\n45.115.244.0/22\n45.115.248.0/22\n45.116.16.0/22\n45.116.24.0/22\n45.116.32.0/21\n45.116.52.0/22\n45.116.96.0/21\n45.116.140.0/22\n45.116.152.0/22\n45.116.208.0/22\n45.117.8.0/22\n45.117.20.0/22\n45.117.68.0/22\n45.117.124.0/22\n45.117.252.0/22\n45.119.60.0/22\n45.119.64.0/21\n45.119.72.0/22\n45.119.104.0/22\n45.119.232.0/22\n45.120.100.0/22\n45.120.140.0/22\n45.120.164.0/22\n45.120.180.128/27\n45.120.240.0/22\n45.121.52.0/22\n45.121.64.0/21\n45.121.72.0/22\n45.121.92.0/22\n45.121.96.0/22\n45.121.172.0/22\n45.121.176.0/22\n45.121.240.0/20\n45.122.0.0/19\n45.122.32.0/21\n45.122.40.0/22\n45.122.60.0/22\n45.122.64.0/19\n45.122.96.0/20\n45.122.112.0/21\n45.122.160.0/19\n45.122.192.0/20\n45.122.208.0/21\n45.122.216.0/22\n45.123.28.0/22\n45.123.32.0/21\n45.123.44.0/22\n45.123.48.0/20\n45.123.64.0/20\n45.123.80.0/21\n45.123.120.0/22\n45.123.128.0/21\n45.123.136.0/22\n45.123.148.0/22\n45.123.152.0/21\n45.123.164.0/22\n45.123.168.0/21\n45.123.176.0/21\n45.123.184.0/22\n45.123.204.0/22\n45.123.212.0/22\n45.123.224.0/19\n45.124.0.0/22\n45.124.20.0/22\n45.124.28.0/22\n45.124.32.0/21\n45.124.44.0/22\n45.124.68.0/22\n45.124.76.0/22\n45.124.80.0/22\n45.124.100.0/22\n45.124.124.0/22\n45.124.172.0/22\n45.124.176.0/22\n45.124.208.0/22\n45.124.248.0/22\n45.125.24.0/22\n45.125.44.0/22\n45.125.52.0/22\n45.125.56.0/22\n45.125.76.0/22\n45.125.80.0/20\n45.125.96.0/21\n45.125.136.0/22\n45.126.48.0/21\n45.126.108.0/22\n45.126.112.0/21\n45.126.120.0/22\n45.126.220.0/22\n45.127.8.0/21\n45.127.128.0/22\n45.127.144.0/21\n45.127.156.0/22\n45.248.8.0/22\n45.248.80.0/22\n45.248.88.0/22\n45.248.96.0/20\n45.248.128.0/21\n45.248.204.0/22\n45.248.208.0/20\n45.248.224.0/19\n45.249.0.0/21\n45.249.12.0/22\n45.249.16.0/20\n45.249.32.0/21\n45.249.112.0/22\n45.249.188.0/22\n45.249.192.0/20\n45.249.208.0/21\n45.250.12.0/22\n45.250.16.0/22\n45.250.28.0/22\n45.250.32.0/21\n45.250.40.0/22\n45.250.76.0/22\n45.250.80.0/20\n45.250.96.0/22\n45.250.104.0/21\n45.250.112.0/20\n45.250.128.0/20\n45.250.144.0/21\n45.250.152.0/22\n45.250.164.0/22\n45.250.180.0/22\n45.250.184.0/21\n45.250.192.0/22\n45.251.0.0/22\n45.251.8.0/22\n45.251.16.0/21\n45.251.52.0/22\n45.251.84.0/22\n45.251.88.0/21\n45.251.96.0/21\n45.251.120.0/21\n45.251.137.0/24\n45.251.138.0/23\n45.251.140.0/22\n45.251.144.0/20\n45.251.160.0/19\n45.251.192.0/19\n45.251.224.0/22\n45.252.0.0/19\n45.252.32.0/20\n45.252.48.0/22\n45.252.84.0/22\n45.252.88.0/21\n45.252.96.0/19\n45.252.128.0/19\n45.252.160.0/20\n45.252.176.0/22\n45.252.192.0/19\n45.252.224.0/21\n45.252.232.0/22\n45.253.0.0/18\n45.253.64.0/20\n45.253.80.0/21\n45.253.92.0/22\n45.253.96.0/20\n45.253.112.0/21\n45.253.120.0/22\n45.253.130.0/23\n45.253.132.0/22\n45.253.136.0/21\n45.253.144.0/20\n45.253.160.0/19\n45.253.192.0/19\n45.253.224.0/20\n45.253.240.0/22\n45.254.0.0/20\n45.254.16.0/21\n45.254.28.0/22\n45.254.40.0/22\n45.254.48.0/20\n45.254.64.0/18\n45.254.128.0/18\n45.254.192.0/19\n45.254.224.0/21\n45.254.236.0/22\n45.254.240.0/22\n45.254.248.0/22\n45.255.0.0/18\n45.255.64.0/19\n45.255.96.0/20\n45.255.112.0/21\n45.255.120.0/22\n45.255.136.0/21\n45.255.144.0/20\n45.255.160.0/19\n45.255.192.0/19\n45.255.224.0/20\n45.255.240.0/21\n45.255.248.0/22\n46.248.24.0/23\n47.92.0.0/14\n47.96.0.0/11\n49.4.0.0/14\n49.51.56.0/22\n49.51.60.0/23\n49.51.110.0/23\n49.51.112.0/20\n49.52.0.0/14\n49.64.0.0/11\n49.112.0.0/13\n49.120.0.0/14\n49.128.0.0/24\n49.128.2.0/23\n49.128.4.0/22\n49.140.0.0/15\n49.152.0.0/14\n49.208.0.0/14\n49.220.0.0/14\n49.232.0.0/14\n49.239.0.0/18\n49.239.192.0/18\n52.80.0.0/14\n52.94.249.0/27\n52.130.0.0/15\n54.222.0.0/15\n54.231.208.0/20\n54.240.224.0/24\n57.92.96.0/20\n58.14.0.0/15\n58.16.0.0/13\n58.24.0.0/15\n58.30.0.0/15\n58.32.0.0/11\n58.65.232.0/21\n58.66.0.0/15\n58.68.128.0/19\n58.68.160.0/23\n58.68.163.0/24\n58.68.164.0/22\n58.68.179.0/24\n58.68.180.0/24\n58.68.200.0/21\n58.68.208.0/20\n58.68.224.0/19\n58.82.0.0/17\n58.83.0.0/16\n58.87.64.0/18\n58.99.128.0/17\n58.100.0.0/15\n58.116.0.0/14\n58.128.0.0/13\n58.144.0.0/16\n58.154.0.0/15\n58.192.0.0/11\n58.240.0.0/12\n59.32.0.0/11\n59.64.0.0/12\n59.80.0.0/15\n59.82.0.0/16\n59.83.0.0/18\n59.83.132.0/22\n59.83.136.0/21\n59.83.144.0/20\n59.83.160.0/19\n59.83.192.0/19\n59.83.224.0/20\n59.83.240.0/21\n59.83.248.0/22\n59.83.252.0/23\n59.83.254.0/24\n59.107.0.0/16\n59.108.0.0/14\n59.151.0.0/17\n59.152.16.0/20\n59.152.36.0/22\n59.152.64.0/20\n59.152.112.0/21\n59.153.4.0/22\n59.153.32.0/22\n59.153.64.0/21\n59.153.72.0/22\n59.153.92.0/22\n59.153.136.0/22\n59.153.152.0/21\n59.153.164.0/22\n59.153.168.0/21\n59.153.176.0/20\n59.153.192.0/22\n59.155.0.0/16\n59.172.0.0/14\n59.191.0.0/17\n59.192.0.0/10\n60.0.0.0/11\n60.55.0.0/16\n60.63.0.0/16\n60.160.0.0/11\n60.194.0.0/15\n60.200.0.0/13\n60.208.0.0/12\n60.232.0.0/15\n60.235.0.0/16\n60.245.128.0/17\n60.247.0.0/16\n60.252.0.0/16\n60.253.128.0/17\n60.255.0.0/16\n61.4.81.0/24\n61.4.82.0/23\n61.4.84.0/22\n61.4.88.0/21\n61.4.176.0/20\n61.8.160.0/20\n61.14.212.0/22\n61.14.216.0/21\n61.14.240.0/21\n61.28.0.0/17\n61.29.128.0/18\n61.29.192.0/19\n61.29.224.0/20\n61.45.128.0/18\n61.45.224.0/20\n61.47.128.0/18\n61.48.0.0/13\n61.87.192.0/18\n61.128.0.0/10\n61.232.0.0/14\n61.236.0.0/15\n61.240.0.0/14\n62.234.0.0/16\n68.79.0.0/18\n69.230.192.0/18\n69.231.128.0/18\n69.234.192.0/18\n69.235.128.0/18\n71.131.192.0/18\n71.132.0.0/18\n71.136.64.0/18\n71.137.0.0/18\n72.163.240.0/23\n72.163.248.0/22\n81.68.0.0/14\n81.161.63.0/24\n82.156.0.0/15\n87.254.207.0/24\n91.223.53.0/24\n91.239.190.0/24\n93.183.14.0/24\n93.183.18.0/24\n94.191.0.0/17\n101.0.0.0/22\n101.1.0.0/22\n101.2.172.0/22\n101.4.0.0/14\n101.16.0.0/12\n101.32.0.0/14\n101.36.0.0/18\n101.36.64.0/20\n101.36.88.0/21\n101.36.96.0/19\n101.36.128.0/17\n101.37.0.0/16\n101.38.0.0/15\n101.40.0.0/13\n101.48.0.0/15\n101.50.8.0/21\n101.50.56.0/22\n101.52.0.0/16\n101.53.100.0/22\n101.54.0.0/16\n101.55.224.0/21\n101.64.0.0/13\n101.72.0.0/14\n101.76.0.0/15\n101.78.0.0/22\n101.78.32.0/19\n101.80.0.0/12\n101.96.0.0/21\n101.96.8.0/22\n101.96.16.0/20\n101.96.128.0/17\n101.99.96.0/19\n101.101.64.0/19\n101.101.100.0/24\n101.101.102.0/23\n101.101.104.0/21\n101.101.112.0/20\n101.102.64.0/19\n101.102.100.0/23\n101.102.102.0/24\n101.102.104.0/21\n101.102.112.0/20\n101.104.0.0/14\n101.110.64.0/19\n101.110.96.0/20\n101.110.116.0/22\n101.110.120.0/21\n101.120.0.0/14\n101.124.0.0/15\n101.126.0.0/16\n101.128.0.0/22\n101.128.8.0/21\n101.128.16.0/20\n101.128.32.0/19\n101.129.0.0/16\n101.130.0.0/15\n101.132.0.0/15\n101.134.0.0/17\n101.134.128.0/19\n101.134.160.0/20\n101.134.176.0/21\n101.134.184.0/22\n101.134.189.0/24\n101.134.190.0/23\n101.134.192.0/18\n101.135.0.0/16\n101.144.0.0/12\n101.192.0.0/14\n101.196.0.0/16\n101.198.128.0/18\n101.198.194.0/24\n101.198.196.0/23\n101.198.200.0/22\n101.198.224.0/19\n101.199.0.0/19\n101.199.48.0/20\n101.199.64.0/18\n101.199.128.0/17\n101.200.0.0/15\n101.203.128.0/19\n101.203.160.0/21\n101.203.172.0/22\n101.203.176.0/20\n101.204.0.0/14\n101.224.0.0/13\n101.232.0.0/15\n101.234.64.0/21\n101.234.76.0/22\n101.234.80.0/20\n101.234.96.0/19\n101.236.0.0/14\n101.240.0.0/13\n101.248.0.0/15\n101.251.0.0/22\n101.251.8.0/21\n101.251.16.0/20\n101.251.32.0/19\n101.251.64.0/18\n101.251.128.0/17\n101.252.0.0/15\n101.254.0.0/16\n102.176.130.0/24\n103.1.8.0/22\n103.1.20.0/22\n103.1.24.0/22\n103.1.88.0/22\n103.1.168.0/22\n103.2.108.0/22\n103.2.156.0/22\n103.2.164.0/22\n103.2.200.0/21\n103.2.208.0/21\n103.3.84.0/22\n103.3.88.0/21\n103.3.96.0/19\n103.3.128.0/20\n103.3.148.0/22\n103.3.152.0/21\n103.4.56.0/22\n103.4.168.0/22\n103.4.184.0/22\n103.5.36.0/22\n103.5.52.0/23\n103.5.56.0/22\n103.5.152.0/22\n103.5.168.0/22\n103.5.192.0/22\n103.5.252.0/22\n103.6.76.0/22\n103.6.108.0/22\n103.6.120.0/22\n103.6.220.0/22\n103.6.228.0/22\n103.7.140.0/22\n103.7.212.0/22\n103.7.216.0/21\n103.8.0.0/21\n103.8.8.0/22\n103.8.32.0/22\n103.8.52.0/22\n103.8.68.0/22\n103.8.108.0/22\n103.8.156.0/22\n103.8.200.0/21\n103.8.220.0/22\n103.9.8.0/22\n103.9.24.0/22\n103.9.108.0/22\n103.9.152.0/22\n103.9.248.0/21\n103.10.0.0/22\n103.10.16.0/22\n103.10.84.0/22\n103.10.111.0/24\n103.10.140.0/22\n103.11.16.0/22\n103.11.168.0/22\n103.11.180.0/22\n103.12.32.0/22\n103.12.136.0/22\n103.12.184.0/22\n103.12.232.0/22\n103.13.12.0/22\n103.13.124.0/22\n103.13.144.0/22\n103.13.196.0/22\n103.13.244.0/22\n103.14.84.0/22\n103.14.132.0/22\n103.14.136.0/22\n103.14.156.0/22\n103.14.240.0/22\n103.15.4.0/22\n103.15.8.0/22\n103.15.16.0/22\n103.15.96.0/22\n103.15.200.0/22\n103.16.52.0/22\n103.16.80.0/21\n103.16.88.0/22\n103.16.108.0/22\n103.16.124.0/22\n103.17.40.0/22\n103.17.64.0/22\n103.17.120.0/23\n103.17.136.0/22\n103.17.160.0/22\n103.17.204.0/22\n103.17.228.0/22\n103.18.192.0/22\n103.18.208.0/21\n103.18.224.0/22\n103.19.12.0/22\n103.19.40.0/21\n103.19.64.0/21\n103.19.72.0/22\n103.19.232.0/22\n103.20.12.0/22\n103.20.32.0/23\n103.20.34.0/24\n103.20.68.0/22\n103.20.112.0/22\n103.20.128.0/22\n103.20.160.0/22\n103.20.248.0/22\n103.21.112.0/21\n103.21.140.0/22\n103.21.176.0/22\n103.21.240.0/22\n103.22.0.0/18\n103.22.64.0/19\n103.22.100.0/22\n103.22.104.0/21\n103.22.112.0/20\n103.22.188.0/22\n103.22.228.0/22\n103.22.252.0/22\n103.23.8.0/22\n103.23.56.0/22\n103.23.160.0/21\n103.23.176.0/22\n103.23.228.0/22\n103.24.24.0/22\n103.24.116.0/22\n103.24.128.0/22\n103.24.144.0/22\n103.24.176.0/22\n103.24.184.0/22\n103.24.228.0/22\n103.24.252.0/22\n103.25.20.0/22\n103.25.24.0/21\n103.25.32.0/21\n103.25.40.0/22\n103.25.48.0/22\n103.25.64.0/21\n103.25.148.0/22\n103.25.156.0/22\n103.25.216.0/22\n103.26.0.0/22\n103.26.64.0/22\n103.26.76.0/22\n103.26.116.0/22\n103.26.156.0/22\n103.26.160.0/22\n103.26.228.0/22\n103.26.240.0/22\n103.27.4.0/22\n103.27.12.0/22\n103.27.24.0/22\n103.27.56.0/22\n103.27.96.0/22\n103.27.240.0/22\n103.28.4.0/22\n103.28.8.0/22\n103.28.184.0/22\n103.28.204.0/22\n103.28.212.0/22\n103.29.16.0/22\n103.29.128.0/21\n103.29.136.0/22\n103.30.20.0/22\n103.30.96.0/22\n103.30.148.0/22\n103.30.202.0/23\n103.30.228.0/22\n103.30.236.0/22\n103.31.0.0/22\n103.31.48.0/21\n103.31.60.0/22\n103.31.64.0/21\n103.31.72.0/24\n103.31.148.0/22\n103.31.160.0/22\n103.31.168.0/22\n103.31.200.0/22\n103.31.236.0/22\n103.32.0.0/15\n103.34.0.0/16\n103.35.0.0/19\n103.35.32.0/20\n103.35.48.0/22\n103.35.104.0/22\n103.35.220.0/22\n103.36.28.0/22\n103.36.36.0/22\n103.36.56.0/21\n103.36.64.0/22\n103.36.72.0/22\n103.36.96.0/22\n103.36.132.0/22\n103.36.136.0/22\n103.36.160.0/19\n103.36.192.0/19\n103.36.224.0/20\n103.36.240.0/21\n103.37.12.0/22\n103.37.16.0/22\n103.37.24.0/22\n103.37.44.0/22\n103.37.52.0/22\n103.37.56.0/22\n103.37.72.0/22\n103.37.100.0/22\n103.37.104.0/22\n103.37.136.0/21\n103.37.144.0/20\n103.37.160.0/21\n103.37.172.0/22\n103.37.176.0/22\n103.37.188.0/22\n103.37.208.0/20\n103.37.252.0/22\n103.38.0.0/22\n103.38.32.0/22\n103.38.40.0/21\n103.38.76.0/22\n103.38.84.0/22\n103.38.92.0/22\n103.38.96.0/22\n103.38.116.0/22\n103.38.132.0/22\n103.38.140.0/22\n103.38.220.0/22\n103.38.224.0/21\n103.38.232.0/22\n103.38.252.0/23\n103.39.64.0/22\n103.39.88.0/22\n103.39.100.0/22\n103.39.104.0/22\n103.39.160.0/19\n103.39.200.0/21\n103.39.208.0/20\n103.39.224.0/21\n103.39.232.0/22\n103.40.12.0/22\n103.40.16.0/20\n103.40.32.0/20\n103.40.88.0/22\n103.40.192.0/22\n103.40.212.0/22\n103.40.220.0/22\n103.40.228.0/22\n103.40.232.0/21\n103.40.240.0/20\n103.41.0.0/22\n103.41.52.0/22\n103.41.140.0/22\n103.41.148.0/22\n103.41.152.0/22\n103.41.160.0/21\n103.41.220.0/22\n103.41.224.0/21\n103.41.232.0/22\n103.42.8.0/22\n103.42.24.0/22\n103.42.32.0/22\n103.42.64.0/21\n103.42.76.0/22\n103.42.232.0/22\n103.43.26.0/23\n103.43.96.0/21\n103.43.104.0/22\n103.43.124.0/22\n103.43.184.0/22\n103.43.192.0/21\n103.43.208.0/22\n103.43.220.0/22\n103.43.224.0/22\n103.43.240.0/22\n103.44.58.0/23\n103.44.80.0/22\n103.44.120.0/21\n103.44.144.0/22\n103.44.152.0/22\n103.44.168.0/22\n103.44.176.0/20\n103.44.192.0/20\n103.44.224.0/22\n103.44.236.0/22\n103.44.240.0/20\n103.45.0.0/18\n103.45.72.0/21\n103.45.80.0/20\n103.45.96.0/19\n103.45.128.0/18\n103.45.192.0/19\n103.45.224.0/22\n103.45.248.0/22\n103.46.0.0/22\n103.46.12.0/22\n103.46.16.0/20\n103.46.32.0/19\n103.46.64.0/18\n103.46.128.0/21\n103.46.136.0/22\n103.46.152.0/21\n103.46.160.0/20\n103.46.176.0/21\n103.46.244.0/22\n103.46.248.0/22\n103.47.4.0/22\n103.47.20.0/22\n103.47.36.0/22\n103.47.40.0/22\n103.47.48.0/22\n103.47.80.0/22\n103.47.96.0/22\n103.47.116.0/22\n103.47.120.0/22\n103.47.136.0/21\n103.47.212.0/22\n103.48.52.0/22\n103.48.92.0/22\n103.48.148.0/22\n103.48.152.0/22\n103.48.202.0/23\n103.48.216.0/21\n103.48.224.0/20\n103.48.240.0/21\n103.49.12.0/22\n103.49.20.0/22\n103.49.72.0/21\n103.49.96.0/22\n103.49.108.0/22\n103.49.128.0/22\n103.49.176.0/21\n103.50.36.0/22\n103.50.44.0/22\n103.50.48.0/20\n103.50.64.0/21\n103.50.72.0/22\n103.50.92.0/22\n103.50.108.0/22\n103.50.112.0/20\n103.50.132.0/22\n103.50.136.0/21\n103.50.172.0/22\n103.50.176.0/20\n103.50.192.0/21\n103.50.200.0/22\n103.50.220.0/22\n103.50.224.0/20\n103.50.240.0/21\n103.50.248.0/22\n103.52.40.0/22\n103.52.72.0/21\n103.52.80.0/21\n103.52.96.0/21\n103.52.104.0/22\n103.52.160.0/21\n103.52.172.0/22\n103.52.176.0/22\n103.52.184.0/22\n103.52.196.0/22\n103.53.64.0/21\n103.53.92.0/22\n103.53.124.0/22\n103.53.128.0/20\n103.53.144.0/22\n103.53.160.0/22\n103.53.180.0/22\n103.53.204.0/22\n103.53.208.0/21\n103.53.236.0/22\n103.53.248.0/22\n103.54.8.0/22\n103.54.48.0/22\n103.54.160.0/21\n103.54.212.0/22\n103.54.228.0/22\n103.54.240.0/22\n103.55.80.0/22\n103.55.120.0/22\n103.55.152.0/22\n103.55.172.0/22\n103.55.204.0/22\n103.55.208.0/22\n103.55.228.0/22\n103.55.236.0/22\n103.55.240.0/22\n103.56.20.0/22\n103.56.32.0/22\n103.56.56.0/21\n103.56.72.0/21\n103.56.140.0/22\n103.56.152.0/22\n103.56.184.0/22\n103.56.200.0/22\n103.57.12.0/22\n103.57.52.0/22\n103.57.56.0/22\n103.57.76.0/22\n103.57.136.0/22\n103.57.196.0/22\n103.58.24.0/22\n103.59.76.0/22\n103.59.112.0/21\n103.59.120.0/24\n103.59.123.0/24\n103.59.124.0/22\n103.59.128.0/22\n103.59.148.0/22\n103.60.32.0/22\n103.60.44.0/22\n103.60.164.0/22\n103.60.228.0/22\n103.60.236.0/22\n103.61.60.0/24\n103.61.104.0/22\n103.61.140.0/22\n103.61.152.0/21\n103.61.160.0/22\n103.61.172.0/22\n103.61.176.0/22\n103.62.24.0/22\n103.62.72.0/21\n103.62.80.0/21\n103.62.88.0/22\n103.62.96.0/19\n103.62.128.0/21\n103.62.156.0/22\n103.62.160.0/19\n103.62.192.0/22\n103.62.204.0/22\n103.62.208.0/20\n103.62.224.0/22\n103.63.32.0/19\n103.63.64.0/20\n103.63.80.0/21\n103.63.88.0/22\n103.63.140.0/22\n103.63.144.0/22\n103.63.152.0/22\n103.63.160.0/20\n103.63.176.0/21\n103.63.184.0/22\n103.63.192.0/20\n103.63.208.0/22\n103.63.240.0/20\n103.64.0.0/21\n103.64.24.0/21\n103.64.32.0/19\n103.64.64.0/18\n103.64.140.0/22\n103.64.144.0/22\n103.64.152.0/21\n103.64.160.0/19\n103.64.192.0/18\n103.65.0.0/21\n103.65.12.0/22\n103.65.16.0/22\n103.65.48.0/20\n103.65.64.0/19\n103.65.100.0/22\n103.65.104.0/21\n103.65.112.0/20\n103.65.128.0/21\n103.65.136.0/22\n103.65.144.0/20\n103.65.160.0/20\n103.66.32.0/22\n103.66.40.0/22\n103.66.108.0/22\n103.66.200.0/22\n103.66.240.0/20\n103.67.0.0/21\n103.67.8.0/22\n103.67.40.0/21\n103.67.48.0/20\n103.67.64.0/18\n103.67.128.0/20\n103.67.144.0/21\n103.67.172.0/24\n103.67.175.0/24\n103.67.192.0/22\n103.67.212.0/22\n103.68.88.0/22\n103.68.100.0/22\n103.68.128.0/22\n103.69.16.0/22\n103.69.212.0/23\n103.70.8.0/22\n103.70.148.0/22\n103.70.236.0/22\n103.70.252.0/22\n103.71.0.0/22\n103.71.68.0/22\n103.71.72.0/22\n103.71.80.0/21\n103.71.88.0/22\n103.71.120.0/21\n103.71.128.0/22\n103.71.196.0/22\n103.71.200.0/22\n103.71.232.0/22\n103.72.12.0/22\n103.72.16.0/20\n103.72.32.0/20\n103.72.48.0/21\n103.72.112.0/21\n103.72.124.0/22\n103.72.128.0/21\n103.72.149.0/24\n103.72.150.0/23\n103.72.172.0/22\n103.72.180.0/22\n103.72.224.0/19\n103.73.0.0/19\n103.73.48.0/22\n103.73.116.0/22\n103.73.120.0/22\n103.73.128.0/20\n103.73.168.0/22\n103.73.176.0/22\n103.73.204.0/22\n103.73.208.0/22\n103.73.240.0/23\n103.73.244.0/22\n103.73.248.0/22\n103.74.24.0/21\n103.74.32.0/20\n103.74.48.0/22\n103.74.56.0/21\n103.74.80.0/22\n103.74.124.0/22\n103.74.148.0/22\n103.74.152.0/21\n103.74.204.0/22\n103.74.232.0/22\n103.75.87.0/24\n103.75.88.0/21\n103.75.104.0/21\n103.75.112.0/22\n103.75.120.0/22\n103.75.128.0/22\n103.75.144.0/22\n103.75.152.0/22\n103.76.60.0/22\n103.76.64.0/21\n103.76.72.0/22\n103.76.92.0/22\n103.76.216.0/21\n103.76.224.0/22\n103.77.28.0/22\n103.77.52.0/22\n103.77.56.0/22\n103.77.88.0/22\n103.77.132.0/22\n103.77.148.0/22\n103.77.220.0/22\n103.78.56.0/21\n103.78.64.0/22\n103.78.124.0/22\n103.78.172.0/22\n103.78.176.0/22\n103.78.196.0/22\n103.78.228.0/22\n103.79.24.0/21\n103.79.36.0/22\n103.79.40.0/21\n103.79.56.0/21\n103.79.64.0/21\n103.79.80.0/21\n103.79.136.0/22\n103.79.188.0/22\n103.79.192.0/20\n103.79.208.0/21\n103.79.243.0/24\n103.80.44.0/22\n103.80.72.0/22\n103.80.176.0/21\n103.80.184.0/22\n103.80.192.0/22\n103.80.200.0/22\n103.80.232.0/22\n103.81.4.0/22\n103.81.44.0/22\n103.81.48.0/22\n103.81.96.0/22\n103.81.120.0/22\n103.81.148.0/22\n103.81.164.0/22\n103.81.200.0/22\n103.81.232.0/22\n103.82.60.0/22\n103.82.68.0/22\n103.82.84.0/22\n103.82.104.0/22\n103.82.224.0/22\n103.82.236.0/22\n103.83.44.0/22\n103.83.52.0/22\n103.83.60.0/22\n103.83.72.0/22\n103.83.112.0/22\n103.83.132.0/22\n103.83.180.0/22\n103.84.0.0/22\n103.84.12.0/22\n103.84.20.0/22\n103.84.24.0/21\n103.84.48.0/22\n103.84.56.0/22\n103.84.64.0/22\n103.84.72.0/22\n103.85.44.0/22\n103.85.48.0/21\n103.85.56.0/22\n103.85.84.0/22\n103.85.136.0/22\n103.85.144.0/22\n103.85.164.0/22\n103.85.168.0/21\n103.85.176.0/22\n103.86.28.0/22\n103.86.32.0/22\n103.86.60.0/22\n103.86.129.0/24\n103.86.204.0/22\n103.86.208.0/20\n103.86.224.0/19\n103.87.0.0/21\n103.87.20.0/22\n103.87.32.0/22\n103.87.96.0/22\n103.87.132.0/22\n103.87.180.0/22\n103.87.224.0/22\n103.88.4.0/22\n103.88.8.0/21\n103.88.16.0/21\n103.88.32.0/21\n103.88.60.0/22\n103.88.64.0/22\n103.88.72.0/22\n103.88.96.0/21\n103.88.152.0/23\n103.88.164.0/22\n103.88.212.0/22\n103.89.28.0/22\n103.89.96.0/20\n103.89.112.0/22\n103.89.148.0/22\n103.89.172.0/22\n103.89.184.0/21\n103.89.192.0/19\n103.89.224.0/21\n103.90.52.0/22\n103.90.92.0/22\n103.90.100.0/22\n103.90.104.0/21\n103.90.112.0/20\n103.90.128.0/21\n103.90.152.0/22\n103.90.168.0/22\n103.90.173.0/24\n103.90.176.0/22\n103.90.188.0/22\n103.90.192.0/22\n103.91.36.0/22\n103.91.40.0/22\n103.91.108.0/22\n103.91.152.0/22\n103.91.176.0/22\n103.91.200.0/22\n103.91.208.0/21\n103.91.236.0/22\n103.92.48.0/20\n103.92.64.0/20\n103.92.80.0/22\n103.92.88.0/22\n103.92.108.0/22\n103.92.124.0/22\n103.92.132.0/22\n103.92.156.0/22\n103.92.164.0/22\n103.92.168.0/21\n103.92.176.0/20\n103.92.192.0/22\n103.92.236.0/22\n103.92.240.0/20\n103.93.0.0/21\n103.93.28.0/22\n103.93.84.0/22\n103.93.152.0/22\n103.93.180.0/22\n103.93.204.0/22\n103.94.12.0/22\n103.94.20.0/22\n103.94.28.0/22\n103.94.32.0/20\n103.94.72.0/22\n103.94.88.0/22\n103.94.116.0/22\n103.94.160.0/22\n103.94.182.0/24\n103.94.200.0/22\n103.95.31.0/24\n103.95.52.0/22\n103.95.70.0/23\n103.95.88.0/21\n103.95.136.0/21\n103.95.144.0/22\n103.95.152.0/22\n103.95.216.0/21\n103.95.224.0/22\n103.95.236.0/22\n103.95.240.0/20\n103.96.8.0/22\n103.96.124.0/22\n103.96.136.0/22\n103.96.152.0/21\n103.96.160.0/19\n103.96.192.0/20\n103.96.208.0/21\n103.96.216.0/22\n103.97.40.0/22\n103.97.60.0/23\n103.97.112.0/21\n103.97.148.0/22\n103.97.188.0/22\n103.97.192.0/22\n103.98.40.0/21\n103.98.48.0/22\n103.98.56.0/22\n103.98.80.0/22\n103.98.88.0/22\n103.98.100.0/22\n103.98.124.0/24\n103.98.126.0/23\n103.98.136.0/21\n103.98.144.0/22\n103.98.164.0/22\n103.98.168.0/22\n103.98.180.0/22\n103.98.196.0/22\n103.98.216.0/21\n103.98.224.0/21\n103.98.232.0/22\n103.98.240.0/21\n103.98.248.0/23\n103.98.250.0/24\n103.98.252.0/22\n103.99.56.0/22\n103.99.104.0/22\n103.99.116.0/22\n103.99.120.0/22\n103.99.132.0/22\n103.99.136.0/21\n103.99.144.0/22\n103.99.152.0/22\n103.99.220.0/22\n103.99.232.0/21\n103.100.0.0/22\n103.100.32.0/22\n103.100.40.0/22\n103.100.48.0/22\n103.100.56.0/22\n103.100.64.0/22\n103.100.88.0/22\n103.100.116.0/22\n103.100.144.0/22\n103.100.240.0/22\n103.100.248.0/21\n103.101.4.0/22\n103.101.8.0/21\n103.101.60.0/22\n103.101.121.0/24\n103.101.122.0/23\n103.101.124.0/24\n103.101.126.0/23\n103.101.144.0/21\n103.101.180.0/22\n103.101.184.0/22\n103.102.76.0/22\n103.102.80.0/22\n103.102.168.0/21\n103.102.180.0/22\n103.102.184.0/21\n103.102.192.0/22\n103.102.196.0/24\n103.102.200.0/22\n103.102.208.0/21\n103.103.12.0/22\n103.103.16.0/22\n103.103.36.0/22\n103.103.72.0/22\n103.103.188.0/22\n103.103.204.0/22\n103.104.36.0/22\n103.104.40.0/22\n103.104.64.0/22\n103.104.152.0/22\n103.104.252.0/22\n103.105.0.0/21\n103.105.12.0/22\n103.105.16.0/22\n103.105.60.0/22\n103.105.116.0/22\n103.105.180.0/22\n103.105.184.0/22\n103.105.200.0/21\n103.105.220.0/22\n103.106.36.0/22\n103.106.40.0/21\n103.106.60.0/22\n103.106.68.0/22\n103.106.96.0/22\n103.106.120.0/22\n103.106.128.0/21\n103.106.190.0/23\n103.106.196.0/22\n103.106.212.0/22\n103.106.252.0/22\n103.107.0.0/22\n103.107.28.0/22\n103.107.32.0/22\n103.107.44.0/22\n103.107.72.0/22\n103.107.164.0/22\n103.107.168.0/22\n103.107.188.0/22\n103.107.192.0/22\n103.107.208.0/20\n103.108.52.0/22\n103.108.160.0/21\n103.108.194.0/24\n103.108.196.0/22\n103.108.208.0/21\n103.108.224.0/22\n103.108.244.0/22\n103.108.251.0/24\n103.109.20.0/22\n103.109.48.0/22\n103.109.88.0/22\n103.109.106.0/23\n103.109.248.0/22\n103.110.32.0/22\n103.110.92.0/22\n103.110.119.0/24\n103.110.127.0/24\n103.110.128.0/23\n103.110.131.0/24\n103.110.132.0/22\n103.110.136.0/22\n103.110.156.0/22\n103.110.188.0/22\n103.110.204.0/22\n103.111.64.0/22\n103.111.172.0/22\n103.111.252.0/22\n103.112.72.0/22\n103.112.88.0/21\n103.112.108.0/22\n103.112.112.0/22\n103.112.140.0/22\n103.113.4.0/22\n103.113.144.0/22\n103.113.220.0/22\n103.113.232.0/21\n103.114.4.0/22\n103.114.68.0/22\n103.114.100.0/22\n103.114.148.0/22\n103.114.156.0/23\n103.114.159.0/24\n103.114.212.0/22\n103.114.236.0/22\n103.114.240.0/22\n103.115.52.0/22\n103.115.68.0/22\n103.115.92.0/22\n103.115.120.0/22\n103.115.148.0/22\n103.115.248.0/22\n103.116.76.0/22\n103.116.92.0/22\n103.116.120.0/22\n103.116.128.0/22\n103.116.150.0/23\n103.116.184.0/22\n103.116.220.0/22\n103.116.224.0/21\n103.117.16.0/22\n103.117.88.0/22\n103.117.188.0/22\n103.117.220.0/22\n103.118.19.0/24\n103.118.52.0/22\n103.118.56.0/21\n103.118.64.0/21\n103.118.72.0/22\n103.118.88.0/22\n103.118.173.0/24\n103.119.115.0/24\n103.119.156.0/22\n103.119.180.0/22\n103.119.200.0/22\n103.119.224.0/22\n103.120.52.0/22\n103.120.72.0/22\n103.120.76.0/24\n103.120.88.0/22\n103.120.96.0/22\n103.120.140.0/22\n103.120.196.0/22\n103.120.224.0/22\n103.121.52.0/22\n103.121.160.0/21\n103.121.250.0/24\n103.121.252.0/22\n103.122.48.0/22\n103.122.178.0/23\n103.122.192.0/22\n103.122.240.0/23\n103.122.242.0/24\n103.123.4.0/22\n103.123.56.0/22\n103.123.88.0/21\n103.123.116.0/22\n103.123.176.0/22\n103.123.200.0/21\n103.123.208.0/21\n103.124.24.0/22\n103.124.48.0/22\n103.124.64.0/22\n103.124.212.0/22\n103.124.216.0/22\n103.125.20.0/22\n103.125.44.0/22\n103.125.132.0/22\n103.125.164.0/22\n103.125.196.0/22\n103.125.236.0/22\n103.126.0.0/22\n103.126.16.0/23\n103.126.44.0/22\n103.126.124.0/22\n103.126.128.0/22\n103.129.53.0/24\n103.129.54.0/23\n103.129.148.0/22\n103.130.132.0/22\n103.130.160.0/22\n103.130.228.0/22\n103.131.20.0/22\n103.131.36.0/22\n103.131.152.0/22\n103.131.168.0/22\n103.131.224.0/21\n103.131.240.0/22\n103.132.60.0/22\n103.132.64.0/20\n103.132.80.0/22\n103.132.104.0/21\n103.132.112.0/21\n103.132.120.0/22\n103.132.188.0/22\n103.132.208.0/21\n103.133.12.0/22\n103.133.40.0/22\n103.133.128.0/22\n103.133.232.0/22\n103.134.196.0/22\n103.135.80.0/22\n103.135.124.0/22\n103.135.148.0/22\n103.135.156.0/22\n103.135.160.0/21\n103.135.176.0/22\n103.135.184.0/22\n103.135.192.0/21\n103.135.236.0/22\n103.136.128.0/22\n103.136.232.0/22\n103.137.58.0/23\n103.137.60.0/24\n103.137.136.0/23\n103.137.149.0/24\n103.137.180.0/22\n103.137.236.0/22\n103.138.2.0/23\n103.138.134.0/23\n103.138.208.0/23\n103.138.220.0/23\n103.138.248.0/23\n103.139.22.0/23\n103.139.134.0/23\n103.139.136.0/23\n103.139.172.0/23\n103.139.204.0/23\n103.139.212.0/23\n103.140.14.0/23\n103.140.46.0/23\n103.140.140.0/23\n103.140.144.0/23\n103.140.192.0/23\n103.141.10.0/23\n103.141.58.0/23\n103.141.128.0/23\n103.141.186.0/23\n103.141.242.0/23\n103.142.0.0/23\n103.142.28.0/23\n103.142.58.0/23\n103.142.82.0/23\n103.142.96.0/23\n103.142.122.0/23\n103.142.128.0/23\n103.142.154.0/23\n103.142.156.0/23\n103.142.180.0/23\n103.142.186.0/23\n103.142.220.0/23\n103.142.230.0/24\n103.142.234.0/23\n103.142.238.0/23\n103.143.16.0/22\n103.143.31.0/24\n103.143.74.0/23\n103.143.124.0/23\n103.143.132.0/22\n103.143.174.0/23\n103.143.228.0/23\n103.144.66.0/23\n103.144.70.0/23\n103.144.72.0/23\n103.144.136.0/23\n103.144.158.0/23\n103.145.40.0/22\n103.145.73.0/24\n103.145.80.0/23\n103.145.90.0/23\n103.145.92.0/22\n103.145.98.0/23\n103.145.107.0/24\n103.145.188.0/23\n103.146.6.0/23\n103.146.72.0/23\n103.146.90.0/23\n103.146.126.0/23\n103.146.138.0/23\n103.146.236.0/23\n103.146.252.0/23\n103.147.124.0/23\n103.147.198.0/23\n103.147.206.0/23\n103.148.174.0/23\n103.192.0.0/19\n103.192.48.0/21\n103.192.56.0/22\n103.192.84.0/22\n103.192.88.0/21\n103.192.96.0/20\n103.192.112.0/22\n103.192.128.0/20\n103.192.144.0/22\n103.192.164.0/22\n103.192.188.0/22\n103.192.208.0/21\n103.192.216.0/22\n103.192.252.0/22\n103.193.40.0/21\n103.193.120.0/22\n103.193.140.0/22\n103.193.160.0/22\n103.193.188.0/22\n103.193.192.0/22\n103.193.212.0/22\n103.193.216.0/21\n103.193.224.0/20\n103.194.16.0/22\n103.194.230.0/23\n103.195.112.0/22\n103.195.152.0/22\n103.195.160.0/22\n103.196.64.0/22\n103.196.72.0/22\n103.196.88.0/21\n103.196.96.0/22\n103.196.168.0/22\n103.196.185.0/24\n103.196.186.0/23\n103.197.181.0/24\n103.197.183.0/24\n103.197.228.0/22\n103.197.253.0/24\n103.197.254.0/23\n103.198.20.0/22\n103.198.60.0/22\n103.198.64.0/22\n103.198.72.0/22\n103.198.124.0/22\n103.198.156.0/22\n103.198.180.0/22\n103.198.196.0/22\n103.198.200.0/22\n103.198.216.0/21\n103.198.224.0/20\n103.198.240.0/21\n103.199.164.0/22\n103.199.196.0/22\n103.199.228.0/22\n103.199.252.0/22\n103.200.52.0/22\n103.200.64.0/21\n103.200.136.0/21\n103.200.144.0/20\n103.200.160.0/19\n103.200.192.0/22\n103.200.220.0/22\n103.200.224.0/19\n103.201.0.0/20\n103.201.16.0/21\n103.201.28.0/22\n103.201.32.0/19\n103.201.64.0/22\n103.201.76.0/22\n103.201.80.0/20\n103.201.96.0/20\n103.201.112.0/21\n103.201.120.0/22\n103.201.152.0/21\n103.201.160.0/19\n103.201.192.0/18\n103.202.0.0/19\n103.202.32.0/20\n103.202.56.0/21\n103.202.64.0/18\n103.202.128.0/20\n103.202.144.0/22\n103.202.152.0/21\n103.202.160.0/19\n103.202.192.0/20\n103.202.212.0/22\n103.202.228.0/22\n103.202.236.0/22\n103.202.240.0/20\n103.203.0.0/19\n103.203.32.0/22\n103.203.96.0/19\n103.203.128.0/22\n103.203.140.0/22\n103.203.164.0/22\n103.203.168.0/22\n103.203.192.0/22\n103.203.200.0/22\n103.203.212.0/22\n103.203.216.0/22\n103.204.24.0/22\n103.204.88.0/22\n103.204.112.0/22\n103.204.136.0/21\n103.204.144.0/21\n103.204.152.0/22\n103.204.196.0/22\n103.204.232.0/21\n103.205.4.0/22\n103.205.40.0/21\n103.205.52.0/22\n103.205.108.0/22\n103.205.116.0/22\n103.205.120.0/24\n103.205.136.0/22\n103.205.162.0/24\n103.205.188.0/22\n103.205.192.0/21\n103.205.200.0/22\n103.205.236.0/22\n103.205.248.0/21\n103.206.0.0/22\n103.206.44.0/22\n103.206.148.0/22\n103.207.104.0/22\n103.207.184.0/21\n103.207.192.0/20\n103.207.208.0/21\n103.207.220.0/22\n103.207.228.0/22\n103.207.232.0/22\n103.208.12.0/22\n103.208.16.0/22\n103.208.28.0/22\n103.208.48.0/22\n103.208.148.0/22\n103.209.112.0/22\n103.209.136.0/22\n103.209.200.0/22\n103.209.208.0/22\n103.209.216.0/22\n103.210.0.0/22\n103.210.96.0/22\n103.210.156.0/22\n103.210.160.0/19\n103.210.217.0/24\n103.210.218.0/23\n103.211.44.0/22\n103.211.96.0/23\n103.211.98.0/24\n103.211.100.0/22\n103.211.156.0/22\n103.211.165.0/24\n103.211.168.0/22\n103.211.220.0/22\n103.211.248.0/22\n103.212.0.0/20\n103.212.44.0/22\n103.212.48.0/22\n103.212.84.0/22\n103.212.100.0/22\n103.212.148.0/22\n103.212.164.0/22\n103.212.196.0/22\n103.212.200.0/22\n103.212.252.0/22\n103.213.40.0/21\n103.213.48.0/20\n103.213.64.0/19\n103.213.96.0/22\n103.213.132.0/22\n103.213.136.0/21\n103.213.144.0/20\n103.213.160.0/19\n103.213.252.0/22\n103.214.48.0/22\n103.214.84.0/22\n103.214.212.0/22\n103.214.240.0/21\n103.215.28.0/22\n103.215.32.0/21\n103.215.44.0/22\n103.215.100.0/23\n103.215.108.0/22\n103.215.116.0/22\n103.215.120.0/22\n103.215.140.0/22\n103.216.4.0/22\n103.216.8.0/21\n103.216.16.0/20\n103.216.32.0/20\n103.216.64.0/22\n103.216.108.0/22\n103.216.136.0/22\n103.216.152.0/22\n103.216.224.0/21\n103.216.240.0/20\n103.217.0.0/18\n103.217.168.0/22\n103.217.180.0/22\n103.217.184.0/21\n103.217.192.0/20\n103.218.8.0/21\n103.218.16.0/21\n103.218.29.0/24\n103.218.30.0/23\n103.218.32.0/19\n103.218.64.0/19\n103.218.192.0/20\n103.218.208.0/21\n103.218.216.0/22\n103.219.24.0/21\n103.219.32.0/21\n103.219.64.0/22\n103.219.84.0/22\n103.219.88.0/21\n103.219.96.0/21\n103.219.176.0/22\n103.219.184.0/22\n103.220.48.0/20\n103.220.64.0/22\n103.220.92.0/22\n103.220.96.0/22\n103.220.104.0/21\n103.220.116.0/22\n103.220.120.0/21\n103.220.128.0/20\n103.220.144.0/21\n103.220.152.0/22\n103.220.160.0/19\n103.220.192.0/21\n103.220.200.0/22\n103.220.240.0/20\n103.221.0.0/19\n103.221.32.0/21\n103.221.88.0/21\n103.221.96.0/19\n103.221.128.0/18\n103.221.192.0/20\n103.222.0.0/20\n103.222.16.0/22\n103.222.24.0/21\n103.222.33.0/24\n103.222.34.0/23\n103.222.36.0/22\n103.222.40.0/21\n103.222.48.0/20\n103.222.64.0/18\n103.222.128.0/18\n103.222.192.0/19\n103.222.224.0/21\n103.222.232.0/22\n103.222.240.0/21\n103.223.16.0/20\n103.223.32.0/19\n103.223.64.0/19\n103.223.96.0/20\n103.223.112.0/21\n103.223.124.0/22\n103.223.128.0/21\n103.223.140.0/22\n103.223.144.0/20\n103.223.160.0/20\n103.223.176.0/21\n103.223.188.0/22\n103.223.192.0/18\n103.224.0.0/22\n103.224.40.0/21\n103.224.60.0/22\n103.224.220.0/22\n103.224.224.0/21\n103.224.232.0/22\n103.226.40.0/22\n103.226.56.0/21\n103.226.80.0/22\n103.226.116.0/22\n103.226.132.0/22\n103.226.156.0/22\n103.226.180.0/22\n103.226.196.0/22\n103.227.48.0/22\n103.227.72.0/21\n103.227.80.0/22\n103.227.100.0/22\n103.227.120.0/22\n103.227.132.0/22\n103.227.136.0/22\n103.227.196.0/22\n103.227.204.0/23\n103.227.206.0/24\n103.227.212.0/22\n103.227.228.0/22\n103.228.12.0/22\n103.228.88.0/22\n103.228.136.0/22\n103.228.160.0/22\n103.228.176.0/22\n103.228.204.0/22\n103.228.208.0/22\n103.228.228.0/22\n103.228.232.0/22\n103.229.20.0/22\n103.229.136.0/22\n103.229.148.0/22\n103.229.172.0/22\n103.229.212.0/22\n103.229.216.0/21\n103.229.228.0/22\n103.229.236.0/22\n103.229.240.0/22\n103.230.0.0/22\n103.230.28.0/22\n103.230.40.0/21\n103.230.96.0/22\n103.230.196.0/22\n103.230.200.0/21\n103.230.212.0/22\n103.230.236.0/22\n103.231.16.0/21\n103.231.64.0/21\n103.231.144.0/22\n103.231.180.0/22\n103.231.244.0/22\n103.232.4.0/22\n103.232.17.168/29\n103.232.144.0/22\n103.233.4.0/22\n103.233.44.0/22\n103.233.52.0/22\n103.233.104.0/22\n103.233.128.0/22\n103.233.136.0/22\n103.233.228.0/22\n103.234.0.0/22\n103.234.20.0/22\n103.234.56.0/22\n103.234.124.0/22\n103.234.128.0/22\n103.234.172.0/22\n103.234.180.0/22\n103.235.56.0/21\n103.235.80.0/22\n103.235.85.0/24\n103.235.86.0/23\n103.235.128.0/20\n103.235.144.0/21\n103.235.184.0/22\n103.235.192.0/22\n103.235.200.0/22\n103.235.220.0/22\n103.235.224.0/19\n103.236.0.0/18\n103.236.64.0/19\n103.236.96.0/22\n103.236.120.0/22\n103.236.184.0/22\n103.236.240.0/20\n103.237.0.0/20\n103.237.24.0/21\n103.237.68.0/22\n103.237.88.0/22\n103.237.152.0/22\n103.237.176.0/20\n103.237.192.0/18\n103.238.0.0/21\n103.238.18.0/23\n103.238.20.0/22\n103.238.24.0/21\n103.238.32.0/20\n103.238.48.0/21\n103.238.56.0/22\n103.238.88.0/21\n103.238.96.0/22\n103.238.132.0/22\n103.238.140.0/22\n103.238.144.0/22\n103.238.160.0/22\n103.238.165.0/24\n103.238.166.0/23\n103.238.168.0/21\n103.238.176.0/20\n103.238.196.0/22\n103.238.204.0/22\n103.238.252.0/22\n103.239.0.0/22\n103.239.44.0/22\n103.239.68.0/22\n103.239.152.0/21\n103.239.180.0/22\n103.239.184.0/22\n103.239.192.0/21\n103.239.204.0/22\n103.239.208.0/22\n103.239.224.0/22\n103.239.244.0/22\n103.240.16.0/22\n103.240.36.0/22\n103.240.72.0/22\n103.240.84.0/22\n103.240.124.0/22\n103.240.172.0/22\n103.240.188.0/22\n103.240.244.0/22\n103.241.12.0/22\n103.241.92.0/22\n103.241.96.0/22\n103.241.160.0/22\n103.241.184.0/21\n103.241.220.0/22\n103.242.64.0/23\n103.242.128.0/23\n103.242.160.0/22\n103.242.168.0/21\n103.242.176.0/22\n103.242.200.0/22\n103.242.212.0/22\n103.242.220.0/22\n103.242.240.0/22\n103.243.136.0/22\n103.243.252.0/22\n103.244.16.0/22\n103.244.58.0/23\n103.244.60.0/22\n103.244.64.0/20\n103.244.80.0/21\n103.244.116.0/22\n103.244.164.0/22\n103.244.232.0/22\n103.244.252.0/22\n103.245.23.0/24\n103.245.52.0/22\n103.245.60.0/22\n103.245.80.0/22\n103.245.124.0/22\n103.245.128.0/22\n103.246.8.0/21\n103.246.120.0/21\n103.246.132.0/22\n103.246.152.0/22\n103.247.168.0/21\n103.247.176.0/22\n103.247.200.0/22\n103.247.212.0/22\n103.248.64.0/23\n103.248.100.0/22\n103.248.124.0/22\n103.248.152.0/22\n103.248.168.0/22\n103.248.192.0/22\n103.248.212.0/22\n103.248.224.0/21\n103.249.8.0/21\n103.249.52.0/22\n103.249.128.0/22\n103.249.136.0/22\n103.249.144.0/22\n103.249.164.0/22\n103.249.168.0/21\n103.249.176.0/22\n103.249.188.0/22\n103.249.192.0/22\n103.249.244.0/22\n103.249.252.0/22\n103.250.32.0/22\n103.250.104.0/22\n103.250.124.0/22\n103.250.180.0/22\n103.250.192.0/22\n103.250.216.0/22\n103.250.224.0/22\n103.250.236.0/22\n103.250.248.0/21\n103.251.32.0/22\n103.251.84.0/22\n103.251.96.0/22\n103.251.124.0/22\n103.251.160.0/22\n103.251.192.0/22\n103.251.204.0/22\n103.251.240.0/22\n103.252.28.0/22\n103.252.36.0/22\n103.252.64.0/22\n103.252.96.0/22\n103.252.104.0/22\n103.252.172.0/22\n103.252.204.0/22\n103.252.208.0/22\n103.252.232.0/22\n103.252.248.0/22\n103.253.4.0/22\n103.253.60.0/22\n103.253.204.0/22\n103.253.220.0/22\n103.253.224.0/22\n103.253.232.0/22\n103.254.8.0/22\n103.254.20.0/22\n103.254.64.0/21\n103.254.76.0/22\n103.254.112.0/22\n103.254.176.0/22\n103.254.188.0/22\n103.255.68.0/22\n103.255.88.0/21\n103.255.136.0/21\n103.255.184.0/22\n103.255.200.0/22\n103.255.208.0/22\n103.255.228.0/22\n104.222.196.0/24\n106.0.0.0/24\n106.0.2.0/23\n106.0.4.0/22\n106.0.8.0/21\n106.0.16.0/20\n106.0.44.0/22\n106.0.64.0/18\n106.2.0.0/23\n106.2.3.0/24\n106.2.4.0/22\n106.2.8.0/21\n106.2.16.0/20\n106.2.32.0/19\n106.2.64.0/18\n106.2.128.0/17\n106.3.16.0/20\n106.3.32.0/19\n106.3.64.0/20\n106.3.80.0/22\n106.3.88.0/21\n106.3.96.0/19\n106.3.128.0/19\n106.3.164.0/22\n106.3.168.0/21\n106.3.176.0/20\n106.3.192.0/18\n106.4.0.0/14\n106.8.0.0/15\n106.11.0.0/16\n106.12.0.0/14\n106.16.0.0/12\n106.32.0.0/12\n106.48.0.0/21\n106.48.8.0/22\n106.48.16.0/20\n106.48.32.0/20\n106.48.57.0/24\n106.48.60.0/24\n106.48.63.0/24\n106.48.64.0/18\n106.48.128.0/17\n106.49.1.0/24\n106.49.2.0/23\n106.49.4.0/22\n106.49.8.0/21\n106.49.16.0/20\n106.49.32.0/19\n106.49.64.0/19\n106.49.96.0/24\n106.49.98.0/23\n106.49.100.0/22\n106.49.104.0/21\n106.49.112.0/20\n106.49.128.0/17\n106.50.0.0/16\n106.52.0.0/14\n106.56.0.0/13\n106.74.0.0/16\n106.75.0.0/17\n106.75.128.0/18\n106.75.201.0/24\n106.75.204.0/22\n106.75.208.0/20\n106.75.224.0/19\n106.80.0.0/12\n106.108.0.0/14\n106.112.0.0/12\n106.224.0.0/12\n109.71.4.0/24\n109.244.0.0/16\n110.6.0.0/15\n110.16.0.0/14\n110.34.40.0/21\n110.40.0.0/15\n110.42.0.0/16\n110.43.0.0/18\n110.43.64.0/21\n110.43.72.0/22\n110.43.76.0/23\n110.43.80.0/20\n110.43.96.0/19\n110.43.128.0/17\n110.44.12.0/22\n110.44.144.0/20\n110.48.0.0/16\n110.51.0.0/16\n110.52.0.0/15\n110.56.0.0/13\n110.64.0.0/15\n110.72.0.0/15\n110.75.0.0/16\n110.76.0.0/20\n110.76.16.0/22\n110.76.20.0/24\n110.76.22.0/24\n110.76.24.0/21\n110.76.32.0/19\n110.76.132.0/22\n110.76.156.0/22\n110.76.184.0/22\n110.76.192.0/18\n110.77.0.0/17\n110.80.0.0/13\n110.88.0.0/14\n110.92.68.0/22\n110.93.32.0/19\n110.94.0.0/15\n110.96.0.0/11\n110.152.0.0/14\n110.156.0.0/15\n110.166.0.0/15\n110.172.192.0/18\n110.173.0.0/19\n110.173.32.0/20\n110.173.64.0/19\n110.173.192.0/19\n110.176.0.0/12\n110.192.0.0/11\n110.228.0.0/14\n110.232.32.0/19\n110.236.0.0/15\n110.240.0.0/12\n111.0.0.0/10\n111.66.0.0/16\n111.67.192.0/20\n111.68.64.0/19\n111.72.0.0/13\n111.85.0.0/16\n111.91.192.0/19\n111.92.248.0/21\n111.112.0.0/14\n111.116.0.0/15\n111.118.200.0/21\n111.119.64.0/18\n111.119.128.0/19\n111.120.0.0/14\n111.124.0.0/16\n111.126.0.0/15\n111.128.0.0/11\n111.160.0.0/13\n111.170.0.0/16\n111.172.0.0/14\n111.176.0.0/13\n111.186.0.0/15\n111.192.0.0/12\n111.208.0.0/13\n111.221.28.0/24\n111.221.128.0/17\n111.222.0.0/16\n111.223.4.0/22\n111.223.8.0/21\n111.223.16.0/22\n111.223.240.0/22\n111.223.249.0/24\n111.223.250.0/23\n111.224.0.0/13\n111.235.96.0/19\n111.235.156.0/22\n111.235.160.0/21\n111.235.170.0/23\n111.235.172.0/22\n111.235.176.0/20\n112.0.0.0/10\n112.64.0.0/14\n112.73.64.0/18\n112.74.0.0/16\n112.80.0.0/12\n112.96.0.0/13\n112.109.128.0/17\n112.111.0.0/16\n112.112.0.0/14\n112.116.0.0/15\n112.122.0.0/15\n112.124.0.0/14\n112.128.0.0/14\n112.132.0.0/16\n112.137.48.0/21\n112.192.0.0/14\n112.224.0.0/11\n113.0.0.0/13\n113.8.0.0/15\n113.11.192.0/19\n113.12.0.0/14\n113.16.0.0/15\n113.18.0.0/16\n113.21.232.0/21\n113.24.0.0/14\n113.31.0.0/16\n113.44.0.0/14\n113.48.0.0/14\n113.52.160.0/19\n113.52.228.0/22\n113.54.0.0/15\n113.56.0.0/15\n113.58.0.0/16\n113.59.0.0/17\n113.59.224.0/22\n113.62.0.0/15\n113.64.0.0/10\n113.128.0.0/15\n113.130.96.0/20\n113.130.112.0/21\n113.132.0.0/14\n113.136.0.0/13\n113.194.0.0/15\n113.197.100.0/23\n113.197.102.0/24\n113.197.104.0/22\n113.200.0.0/15\n113.202.0.0/16\n113.204.0.0/14\n113.208.96.0/19\n113.208.128.0/17\n113.209.0.0/16\n113.212.0.0/18\n113.212.100.0/22\n113.212.184.0/21\n113.213.0.0/17\n113.214.0.0/15\n113.218.0.0/15\n113.220.0.0/14\n113.224.0.0/12\n113.240.0.0/13\n113.248.0.0/14\n114.28.0.0/17\n114.28.128.0/18\n114.28.192.0/19\n114.28.232.0/22\n114.28.236.0/23\n114.28.240.0/20\n114.31.64.0/21\n114.54.0.0/15\n114.60.0.0/14\n114.64.0.0/14\n114.68.0.0/16\n114.79.64.0/18\n114.80.0.0/12\n114.96.0.0/13\n114.104.0.0/14\n114.110.0.0/20\n114.110.64.0/18\n114.111.0.0/19\n114.111.160.0/19\n114.112.4.0/22\n114.112.8.0/22\n114.112.24.0/21\n114.112.32.0/19\n114.112.64.0/19\n114.112.96.0/20\n114.112.116.0/22\n114.112.120.0/21\n114.112.136.0/21\n114.112.144.0/20\n114.112.160.0/19\n114.112.192.0/19\n114.113.0.0/17\n114.113.128.0/21\n114.113.140.0/22\n114.113.144.0/20\n114.113.160.0/19\n114.113.196.0/22\n114.113.200.0/21\n114.113.208.0/20\n114.113.224.0/20\n114.114.0.0/15\n114.116.0.0/15\n114.118.0.0/16\n114.119.0.0/17\n114.119.192.0/18\n114.132.0.0/16\n114.135.0.0/16\n114.138.0.0/15\n114.141.64.0/21\n114.141.80.0/21\n114.141.128.0/18\n114.196.0.0/15\n114.198.248.0/21\n114.208.0.0/12\n114.224.0.0/11\n115.24.0.0/14\n115.28.0.0/15\n115.31.64.0/20\n115.32.0.0/14\n115.42.56.0/22\n115.44.0.0/14\n115.48.0.0/12\n115.69.64.0/20\n115.84.0.0/18\n115.84.192.0/19\n115.85.192.0/18\n115.100.0.0/14\n115.104.0.0/14\n115.120.0.0/14\n115.124.16.0/20\n115.148.0.0/14\n115.152.0.0/13\n115.166.64.0/19\n115.168.0.0/16\n115.169.0.0/23\n115.169.3.0/24\n115.169.6.0/24\n115.169.9.0/24\n115.169.14.0/23\n115.169.16.0/20\n115.169.39.0/24\n115.169.42.0/23\n115.169.44.0/22\n115.169.48.0/20\n115.169.64.0/18\n115.169.128.0/17\n115.170.0.0/15\n115.172.0.0/14\n115.180.0.0/14\n115.187.0.0/20\n115.190.0.0/15\n115.192.0.0/11\n115.224.0.0/12\n116.0.8.0/21\n116.0.24.0/21\n116.1.0.0/16\n116.2.0.0/15\n116.4.0.0/14\n116.8.0.0/14\n116.13.0.0/16\n116.16.0.0/12\n116.50.0.0/20\n116.52.0.0/14\n116.56.0.0/15\n116.58.128.0/20\n116.58.208.0/20\n116.60.0.0/14\n116.66.0.0/18\n116.66.64.0/19\n116.66.96.0/20\n116.66.120.0/22\n116.68.136.0/21\n116.68.176.0/21\n116.69.0.0/16\n116.70.0.0/17\n116.76.0.0/14\n116.85.0.0/17\n116.85.128.0/18\n116.85.192.0/19\n116.85.224.0/20\n116.85.240.0/21\n116.85.248.0/23\n116.85.250.0/24\n116.85.252.0/22\n116.89.144.0/20\n116.90.80.0/20\n116.90.184.0/21\n116.95.0.0/16\n116.112.0.0/14\n116.116.0.0/15\n116.128.0.0/10\n116.192.0.0/16\n116.193.16.0/20\n116.193.32.0/19\n116.193.176.0/21\n116.194.0.0/15\n116.196.0.0/21\n116.196.8.0/22\n116.196.12.0/23\n116.196.16.0/20\n116.196.32.0/19\n116.196.64.0/18\n116.196.128.0/18\n116.196.192.0/21\n116.196.200.0/23\n116.196.203.0/24\n116.196.204.0/22\n116.196.208.0/20\n116.196.224.0/19\n116.197.160.0/21\n116.197.180.0/23\n116.198.0.0/16\n116.199.0.0/17\n116.199.128.0/19\n116.204.0.0/17\n116.204.232.0/22\n116.205.0.0/16\n116.207.0.0/16\n116.208.0.0/14\n116.212.160.0/20\n116.213.64.0/18\n116.213.128.0/17\n116.214.32.0/19\n116.214.64.0/20\n116.214.128.0/17\n116.215.0.0/16\n116.216.0.0/14\n116.224.0.0/12\n116.242.0.0/15\n116.244.0.0/14\n116.248.0.0/15\n116.252.0.0/15\n116.254.104.0/21\n116.254.129.0/24\n116.254.130.0/23\n116.254.132.0/22\n116.254.136.0/21\n116.254.144.0/20\n116.254.160.0/19\n116.254.192.0/18\n116.255.128.0/17\n117.8.0.0/13\n117.21.0.0/16\n117.22.0.0/15\n117.24.0.0/13\n117.32.0.0/13\n117.40.0.0/14\n117.44.0.0/15\n117.48.0.0/15\n117.50.0.0/16\n117.51.128.0/23\n117.51.131.0/24\n117.51.132.0/22\n117.51.136.0/21\n117.51.144.0/20\n117.51.160.0/19\n117.51.192.0/18\n117.53.48.0/20\n117.53.176.0/20\n117.57.0.0/16\n117.58.0.0/18\n117.59.0.0/16\n117.60.0.0/14\n117.64.0.0/13\n117.72.0.0/15\n117.74.64.0/19\n117.74.128.0/17\n117.75.0.0/16\n117.76.0.0/14\n117.80.0.0/12\n117.100.0.0/15\n117.103.16.0/20\n117.103.40.0/21\n117.103.72.0/21\n117.103.128.0/20\n117.104.168.0/21\n117.106.0.0/15\n117.112.0.0/13\n117.120.64.0/18\n117.120.128.0/17\n117.121.0.0/19\n117.121.32.0/21\n117.121.40.0/22\n117.121.44.0/23\n117.121.46.0/24\n117.121.48.0/20\n117.121.64.0/18\n117.121.128.0/20\n117.121.148.0/22\n117.121.152.0/21\n117.121.160.0/19\n117.121.192.0/21\n117.122.128.0/17\n117.124.0.0/14\n117.128.0.0/10\n118.24.0.0/15\n118.26.0.0/19\n118.26.36.0/22\n118.26.40.0/21\n118.26.48.0/20\n118.26.64.0/19\n118.26.104.0/21\n118.26.112.0/20\n118.26.128.0/17\n118.28.0.0/15\n118.30.0.0/20\n118.30.16.0/21\n118.30.24.0/22\n118.30.32.0/19\n118.30.64.0/18\n118.30.128.0/17\n118.31.0.0/16\n118.64.0.0/15\n118.66.0.0/16\n118.67.112.0/20\n118.72.0.0/13\n118.80.0.0/15\n118.84.0.0/15\n118.88.32.0/19\n118.88.64.0/18\n118.88.128.0/17\n118.89.0.0/16\n118.102.16.0/20\n118.102.32.0/21\n118.103.164.0/22\n118.103.168.0/21\n118.103.176.0/22\n118.103.245.0/24\n118.103.246.0/23\n118.112.0.0/13\n118.120.0.0/14\n118.124.0.0/15\n118.126.1.0/24\n118.126.2.0/23\n118.126.4.0/22\n118.126.8.0/21\n118.126.16.0/23\n118.126.18.0/24\n118.126.32.0/19\n118.126.64.0/18\n118.126.128.0/17\n118.127.128.0/19\n118.132.0.0/14\n118.144.0.0/14\n118.178.0.0/16\n118.180.0.0/14\n118.184.5.0/24\n118.184.10.0/24\n118.184.115.0/24\n118.184.116.0/22\n118.184.120.0/23\n118.184.122.0/24\n118.184.128.0/18\n118.184.192.0/19\n118.184.240.0/20\n118.186.0.0/15\n118.188.0.0/16\n118.190.0.0/16\n118.191.0.0/20\n118.191.24.0/21\n118.191.32.0/19\n118.191.64.0/18\n118.191.144.0/21\n118.191.153.0/24\n118.191.154.0/23\n118.191.156.0/22\n118.191.160.0/19\n118.191.192.0/20\n118.191.209.0/24\n118.191.210.0/23\n118.191.212.0/22\n118.191.248.0/21\n118.192.0.0/16\n118.193.0.0/22\n118.193.32.0/20\n118.193.56.0/21\n118.193.68.0/22\n118.193.72.0/24\n118.193.77.0/24\n118.193.96.0/19\n118.194.0.0/17\n118.194.128.0/18\n118.194.192.0/19\n118.194.232.0/21\n118.194.240.0/20\n118.195.0.0/16\n118.196.0.0/14\n118.202.0.0/15\n118.204.0.0/14\n118.212.0.0/15\n118.215.192.0/18\n118.224.0.0/14\n118.228.0.0/17\n118.228.128.0/20\n118.228.144.0/21\n118.228.156.0/22\n118.228.160.0/19\n118.228.192.0/18\n118.229.0.0/16\n118.230.0.0/16\n118.239.0.0/16\n118.242.0.0/16\n118.244.0.0/14\n118.248.0.0/13\n119.0.0.0/15\n119.2.0.0/19\n119.2.128.0/17\n119.3.0.0/16\n119.4.0.0/14\n119.10.0.0/17\n119.15.136.0/21\n119.16.0.0/16\n119.18.192.0/20\n119.18.208.0/21\n119.18.224.0/19\n119.19.0.0/16\n119.20.0.0/14\n119.27.64.0/18\n119.27.128.0/17\n119.28.28.0/24\n119.29.0.0/16\n119.30.48.0/20\n119.31.192.0/19\n119.32.0.0/14\n119.36.0.0/15\n119.38.0.0/17\n119.38.128.0/18\n119.38.192.0/20\n119.38.208.0/22\n119.38.212.0/23\n119.38.214.0/27\n119.38.214.56/29\n119.38.214.64/26\n119.38.214.128/25\n119.38.215.0/24\n119.38.216.0/21\n119.39.0.0/16\n119.40.0.0/18\n119.40.64.0/20\n119.40.128.0/17\n119.41.0.0/16\n119.42.0.0/19\n119.42.52.0/22\n119.42.128.0/20\n119.42.224.0/19\n119.44.0.0/15\n119.48.0.0/13\n119.57.0.0/16\n119.58.0.0/16\n119.59.128.0/17\n119.60.0.0/15\n119.62.0.0/16\n119.63.32.0/19\n119.75.208.0/20\n119.78.0.0/15\n119.80.0.0/16\n119.82.208.0/20\n119.84.0.0/14\n119.88.0.0/16\n119.89.0.0/17\n119.89.128.0/21\n119.89.136.0/23\n119.89.139.0/24\n119.89.140.0/22\n119.89.144.0/20\n119.89.160.0/20\n119.89.176.0/22\n119.89.180.0/23\n119.89.183.0/24\n119.89.184.0/21\n119.89.192.0/23\n119.89.194.0/24\n119.89.196.0/22\n119.89.200.0/21\n119.89.208.0/21\n119.89.217.0/24\n119.89.218.0/23\n119.89.220.0/22\n119.89.224.0/19\n119.90.0.0/15\n119.96.0.0/13\n119.108.0.0/15\n119.112.0.0/12\n119.128.0.0/12\n119.144.0.0/14\n119.148.160.0/19\n119.151.192.0/18\n119.160.200.0/21\n119.161.120.0/21\n119.161.128.0/21\n119.161.160.0/19\n119.161.192.0/18\n119.162.0.0/15\n119.164.0.0/14\n119.176.0.0/12\n119.232.0.0/15\n119.235.128.0/19\n119.235.160.0/20\n119.235.184.0/22\n119.248.0.0/14\n119.252.96.0/21\n119.252.240.0/21\n119.252.249.0/24\n119.252.252.0/23\n119.253.0.0/16\n119.254.0.0/15\n120.0.0.0/12\n120.24.0.0/14\n120.30.0.0/15\n120.32.0.0/12\n120.48.0.0/15\n120.52.0.0/14\n120.64.0.0/13\n120.72.32.0/19\n120.72.128.0/17\n120.76.0.0/14\n120.80.0.0/13\n120.88.8.0/21\n120.90.0.0/15\n120.92.0.0/17\n120.92.128.0/18\n120.92.192.0/22\n120.92.198.0/23\n120.92.200.0/21\n120.92.208.0/20\n120.92.224.0/19\n120.94.0.0/15\n120.128.0.0/13\n120.136.16.0/21\n120.136.128.0/18\n120.137.0.0/17\n120.143.128.0/19\n120.192.0.0/10\n121.0.8.0/21\n121.0.16.0/20\n121.4.0.0/15\n121.8.0.0/13\n121.16.0.0/12\n121.32.0.0/13\n121.40.0.0/14\n121.46.0.0/18\n121.46.76.0/22\n121.46.128.0/17\n121.47.0.0/16\n121.48.0.0/15\n121.50.8.0/21\n121.51.0.0/16\n121.52.160.0/19\n121.52.208.0/20\n121.52.224.0/19\n121.54.176.0/21\n121.55.0.0/18\n121.56.0.0/15\n121.58.0.0/17\n121.58.136.0/21\n121.58.144.0/20\n121.58.160.0/21\n121.59.0.0/16\n121.60.0.0/14\n121.68.0.0/14\n121.76.0.0/15\n121.79.128.0/18\n121.89.0.0/16\n121.100.128.0/17\n121.101.0.0/18\n121.101.208.0/20\n121.192.0.0/13\n121.200.192.0/21\n121.201.0.0/16\n121.204.0.0/14\n121.224.0.0/12\n121.248.0.0/14\n121.255.0.0/16\n122.0.64.0/18\n122.0.128.0/17\n122.4.0.0/14\n122.10.132.0/23\n122.10.136.0/23\n122.10.196.0/23\n122.10.216.0/22\n122.10.228.0/22\n122.10.232.0/21\n122.10.240.0/21\n122.10.248.0/22\n122.11.0.0/17\n122.12.0.0/15\n122.14.0.0/17\n122.14.192.0/18\n122.48.0.0/16\n122.49.0.0/18\n122.51.0.0/16\n122.64.0.0/11\n122.96.0.0/15\n122.98.144.0/20\n122.98.160.0/21\n122.98.172.0/22\n122.98.176.0/20\n122.98.192.0/21\n122.98.232.0/21\n122.98.240.0/20\n122.102.0.0/20\n122.102.64.0/19\n122.112.0.0/18\n122.112.64.0/19\n122.112.96.0/22\n122.112.107.0/24\n122.112.118.0/24\n122.112.122.0/24\n122.112.125.0/24\n122.112.128.0/17\n122.113.0.0/16\n122.114.0.0/16\n122.115.0.0/18\n122.115.80.0/20\n122.115.96.0/19\n122.115.128.0/17\n122.119.0.0/16\n122.128.100.0/22\n122.128.120.0/21\n122.136.0.0/13\n122.144.128.0/17\n122.152.192.0/18\n122.156.0.0/14\n122.188.0.0/14\n122.192.0.0/14\n122.198.0.0/16\n122.200.40.0/21\n122.200.64.0/18\n122.201.48.0/20\n122.204.0.0/14\n122.224.0.0/12\n122.240.0.0/13\n122.248.24.0/21\n122.248.48.0/20\n122.255.64.0/21\n123.0.128.0/21\n123.0.136.0/23\n123.0.139.0/24\n123.0.140.0/22\n123.0.144.0/20\n123.0.160.0/19\n123.4.0.0/14\n123.8.0.0/13\n123.49.130.0/23\n123.49.132.0/22\n123.49.136.0/22\n123.49.152.0/21\n123.49.160.0/19\n123.49.192.0/18\n123.50.160.0/19\n123.52.0.0/14\n123.56.0.0/15\n123.58.0.0/18\n123.58.64.0/20\n123.58.80.0/21\n123.58.88.0/22\n123.58.96.0/19\n123.58.128.0/17\n123.59.0.0/16\n123.61.0.0/16\n123.62.0.0/16\n123.64.0.0/11\n123.96.0.0/15\n123.98.0.0/17\n123.99.128.0/17\n123.100.0.0/19\n123.100.232.0/24\n123.101.0.0/16\n123.103.0.0/20\n123.103.16.0/21\n123.103.24.0/22\n123.103.28.0/23\n123.103.30.0/24\n123.103.32.0/19\n123.103.64.0/18\n123.108.134.0/24\n123.108.138.0/23\n123.108.140.0/24\n123.108.142.0/24\n123.108.208.0/20\n123.112.0.0/12\n123.128.0.0/13\n123.137.0.0/16\n123.138.0.0/15\n123.144.0.0/12\n123.160.0.0/12\n123.176.60.0/22\n123.176.80.0/20\n123.177.0.0/16\n123.178.0.0/15\n123.180.0.0/14\n123.184.0.0/13\n123.196.0.0/15\n123.199.128.0/17\n123.206.0.0/15\n123.232.0.0/14\n123.242.0.0/17\n123.242.192.0/21\n123.244.0.0/14\n123.249.0.0/16\n123.253.109.0/24\n123.253.110.0/24\n123.253.240.0/22\n123.254.96.0/21\n124.6.64.0/18\n124.14.0.0/15\n124.16.0.0/15\n124.20.0.0/14\n124.28.192.0/18\n124.29.0.0/17\n124.31.0.0/16\n124.40.112.0/20\n124.40.128.0/18\n124.40.192.0/19\n124.40.240.0/22\n124.42.0.0/16\n124.47.0.0/18\n124.64.0.0/15\n124.66.0.0/17\n124.67.0.0/16\n124.68.0.0/17\n124.68.128.0/18\n124.68.192.0/19\n124.68.224.0/20\n124.68.240.0/23\n124.68.242.0/24\n124.68.244.0/23\n124.68.254.0/23\n124.69.0.0/16\n124.70.0.0/15\n124.72.0.0/13\n124.88.0.0/13\n124.108.8.0/21\n124.108.40.0/21\n124.109.96.0/21\n124.112.0.0/14\n124.116.0.0/15\n124.118.0.0/16\n124.119.0.0/17\n124.119.128.0/18\n124.119.192.0/19\n124.119.224.0/20\n124.119.240.0/22\n124.119.244.0/23\n124.119.246.0/25\n124.119.246.128/26\n124.119.246.192/27\n124.119.246.224/28\n124.119.246.240/29\n124.119.246.248/30\n124.119.246.254/31\n124.119.247.0/24\n124.119.248.0/21\n124.126.0.0/15\n124.128.0.0/13\n124.147.128.0/17\n124.150.137.0/24\n124.151.0.0/16\n124.152.0.0/16\n124.160.0.0/13\n124.172.0.0/14\n124.192.0.0/15\n124.196.0.0/16\n124.200.0.0/13\n124.220.0.0/14\n124.224.0.0/12\n124.240.0.0/17\n124.240.128.0/18\n124.242.0.0/16\n124.243.192.0/18\n124.248.0.0/17\n124.249.0.0/16\n124.250.0.0/15\n124.254.0.0/18\n125.31.192.0/18\n125.32.0.0/12\n125.58.128.0/17\n125.61.128.0/17\n125.62.0.0/18\n125.64.0.0/11\n125.96.0.0/15\n125.98.0.0/16\n125.104.0.0/13\n125.112.0.0/12\n125.169.0.0/16\n125.171.0.0/16\n125.208.0.0/19\n125.208.37.0/24\n125.208.40.0/24\n125.208.45.0/24\n125.208.46.0/23\n125.208.48.0/20\n125.210.0.0/15\n125.213.0.0/17\n125.214.96.0/19\n125.215.0.0/18\n125.216.0.0/13\n125.254.128.0/17\n128.108.0.0/16\n129.28.0.0/16\n129.204.0.0/16\n129.211.0.0/16\n129.223.254.0/24\n129.227.99.0/24\n130.36.146.0/23\n130.214.218.0/23\n131.228.96.0/24\n131.253.12.0/29\n131.253.12.80/28\n131.253.12.240/29\n132.232.0.0/16\n132.237.134.0/24\n132.237.150.0/24\n134.175.0.0/16\n135.159.208.0/20\n135.244.80.0/20\n137.59.59.0/24\n137.59.88.0/22\n138.32.244.0/22\n139.5.56.0/21\n139.5.80.0/22\n139.5.92.0/22\n139.5.128.0/22\n139.5.160.0/22\n139.5.192.0/22\n139.5.204.0/22\n139.5.244.0/22\n139.9.0.0/16\n139.129.0.0/16\n139.138.238.0/28\n139.148.0.0/16\n139.155.0.0/16\n139.159.0.0/19\n139.159.32.0/21\n139.159.40.0/22\n139.159.52.0/22\n139.159.56.0/21\n139.159.64.0/19\n139.159.96.0/20\n139.159.112.0/22\n139.159.116.0/23\n139.159.120.0/21\n139.159.128.0/17\n139.170.0.0/16\n139.176.0.0/16\n139.183.0.0/16\n139.186.0.0/16\n139.189.0.0/16\n139.196.0.0/15\n139.198.0.0/21\n139.198.8.0/23\n139.198.11.0/24\n139.198.12.0/22\n139.198.16.0/20\n139.198.32.0/19\n139.198.66.0/23\n139.198.68.0/22\n139.198.72.0/21\n139.198.80.0/20\n139.198.96.0/20\n139.198.113.0/24\n139.198.114.0/23\n139.198.116.0/22\n139.198.122.0/23\n139.198.124.0/22\n139.198.128.0/17\n139.199.0.0/16\n139.200.0.0/13\n139.208.0.0/13\n139.217.0.0/16\n139.219.0.0/16\n139.220.0.0/17\n139.220.128.0/18\n139.220.192.0/22\n139.220.196.0/23\n139.220.200.0/21\n139.220.208.0/23\n139.220.212.0/22\n139.220.216.0/21\n139.220.224.0/19\n139.221.0.0/16\n139.224.0.0/16\n139.226.0.0/15\n140.75.0.0/16\n140.101.208.0/24\n140.143.0.0/16\n140.179.0.0/16\n140.205.0.0/18\n140.205.64.0/19\n140.205.96.0/20\n140.205.112.0/21\n140.205.120.0/23\n140.205.123.0/24\n140.205.124.0/22\n140.205.128.0/17\n140.206.0.0/15\n140.210.0.0/16\n140.224.0.0/16\n140.237.0.0/16\n140.240.0.0/16\n140.242.223.0/24\n140.242.224.0/24\n140.243.0.0/16\n140.246.0.0/16\n140.249.0.0/16\n140.250.0.0/16\n140.255.0.0/16\n144.0.0.0/16\n144.7.0.0/16\n144.12.0.0/16\n144.36.146.0/23\n144.48.64.0/22\n144.48.88.0/22\n144.48.156.0/22\n144.48.180.0/22\n144.48.184.0/22\n144.48.204.0/22\n144.48.208.0/21\n144.52.0.0/16\n144.123.0.0/16\n144.211.80.0/24\n144.211.138.0/24\n144.255.0.0/16\n146.56.192.0/18\n146.196.56.0/22\n146.196.68.0/22\n146.196.92.0/22\n146.196.112.0/21\n146.196.124.0/22\n146.217.137.0/24\n146.222.79.0/24\n146.222.81.0/24\n146.222.94.0/24\n147.243.13.32/27\n147.243.13.64/27\n147.243.14.32/27\n148.70.0.0/16\n150.0.0.0/16\n150.115.0.0/16\n150.121.0.0/16\n150.122.0.0/16\n150.129.136.0/22\n150.129.192.0/22\n150.129.252.0/22\n150.138.0.0/15\n150.158.0.0/16\n150.222.88.0/23\n150.223.0.0/16\n150.242.0.0/21\n150.242.8.0/22\n150.242.28.0/22\n150.242.44.0/22\n150.242.48.0/21\n150.242.56.0/22\n150.242.76.0/22\n150.242.80.0/22\n150.242.92.0/22\n150.242.96.0/22\n150.242.112.0/21\n150.242.120.0/22\n150.242.152.0/22\n150.242.158.0/24\n150.242.160.0/21\n150.242.168.0/22\n150.242.184.0/21\n150.242.192.0/22\n150.242.224.0/22\n150.242.232.0/21\n150.242.240.0/21\n150.242.248.0/22\n150.255.0.0/16\n152.32.178.0/23\n152.104.128.0/17\n152.136.0.0/16\n153.0.0.0/16\n153.3.0.0/16\n153.34.0.0/15\n153.36.0.0/15\n153.99.0.0/16\n153.101.0.0/16\n153.118.0.0/15\n154.8.128.0/17\n155.126.176.0/23\n156.107.160.0/24\n156.107.170.0/24\n156.107.179.0/24\n156.107.181.0/24\n156.154.62.0/23\n157.0.0.0/16\n157.18.0.0/16\n157.61.0.0/16\n157.119.8.0/21\n157.119.16.0/22\n157.119.28.0/22\n157.119.132.0/22\n157.119.136.0/21\n157.119.144.0/20\n157.119.160.0/21\n157.119.172.0/22\n157.119.192.0/21\n157.119.240.0/22\n157.119.252.0/22\n157.122.0.0/16\n157.133.186.0/23\n157.133.192.0/21\n157.133.212.0/24\n157.133.236.0/24\n157.148.0.0/16\n157.156.0.0/16\n157.255.0.0/16\n159.75.0.0/16\n159.221.232.0/22\n159.226.0.0/16\n160.19.208.0/21\n160.19.216.0/22\n160.20.48.0/22\n160.62.10.0/24\n160.83.109.0/24\n160.83.110.0/23\n160.202.60.0/23\n160.202.62.0/24\n160.202.148.0/22\n160.202.152.0/22\n160.202.212.0/22\n160.202.216.0/21\n160.202.224.0/19\n160.238.64.0/22\n161.163.0.0/21\n161.163.28.0/23\n161.163.176.0/24\n161.163.178.0/23\n161.163.180.0/22\n161.189.0.0/16\n161.207.0.0/16\n162.14.0.0/16\n162.105.0.0/16\n163.0.0.0/16\n163.47.4.0/22\n163.53.0.0/20\n163.53.36.0/22\n163.53.40.0/22\n163.53.48.0/20\n163.53.64.0/22\n163.53.88.0/21\n163.53.96.0/19\n163.53.128.0/21\n163.53.136.0/22\n163.53.160.0/20\n163.53.188.0/22\n163.53.220.0/22\n163.53.236.0/22\n163.53.240.0/22\n163.116.202.0/23\n163.125.0.0/16\n163.142.0.0/16\n163.177.0.0/16\n163.179.0.0/16\n163.204.0.0/16\n163.244.246.0/24\n164.52.80.0/24\n165.156.30.0/24\n166.111.0.0/16\n167.139.0.0/16\n167.189.0.0/16\n167.220.244.0/22\n168.159.144.0/21\n168.159.152.0/22\n168.159.156.0/23\n168.159.158.0/24\n168.160.0.0/16\n168.230.0.0/24\n170.179.0.0/16\n170.225.224.0/23\n170.252.152.0/21\n171.8.0.0/13\n171.22.147.0/24\n171.34.0.0/15\n171.36.0.0/14\n171.40.0.0/13\n171.80.0.0/12\n171.104.0.0/13\n171.112.0.0/12\n171.208.0.0/12\n172.60.2.0/24\n172.81.192.0/18\n173.39.200.0/23\n175.0.0.0/12\n175.16.0.0/13\n175.24.0.0/14\n175.30.0.0/15\n175.42.0.0/15\n175.44.0.0/16\n175.46.0.0/15\n175.48.0.0/12\n175.64.0.0/11\n175.102.0.0/16\n175.106.128.0/17\n175.111.144.0/20\n175.111.160.0/20\n175.111.184.0/22\n175.146.0.0/15\n175.148.0.0/14\n175.152.0.0/14\n175.158.96.0/22\n175.160.0.0/12\n175.176.156.0/22\n175.176.188.0/22\n175.178.0.0/16\n175.184.128.0/18\n175.185.0.0/16\n175.186.0.0/15\n175.188.0.0/14\n180.76.16.0/20\n180.76.32.0/19\n180.76.64.0/18\n180.76.128.0/18\n180.76.192.0/19\n180.76.224.0/20\n180.76.240.0/24\n180.76.242.0/23\n180.76.244.0/22\n180.76.248.0/22\n180.76.252.0/23\n180.76.255.0/24\n180.77.0.0/16\n180.78.0.0/15\n180.84.0.0/15\n180.86.0.0/16\n180.88.0.0/14\n180.94.56.0/21\n180.94.96.0/20\n180.94.120.0/21\n180.95.128.0/17\n180.96.0.0/11\n180.129.128.0/17\n180.130.0.0/16\n180.136.0.0/13\n180.148.16.0/21\n180.148.152.0/21\n180.148.216.0/21\n180.148.224.0/19\n180.149.128.0/19\n180.150.160.0/21\n180.150.176.0/20\n180.152.0.0/13\n180.160.0.0/12\n180.178.112.0/21\n180.178.192.0/18\n180.184.0.0/14\n180.188.0.0/17\n180.189.148.0/22\n180.200.252.0/22\n180.201.0.0/16\n180.202.0.0/15\n180.208.0.0/15\n180.210.212.0/22\n180.210.233.0/24\n180.210.236.0/22\n180.212.0.0/15\n180.222.224.0/19\n180.223.0.0/19\n180.223.32.0/20\n180.223.48.0/21\n180.223.57.0/24\n180.223.58.0/23\n180.223.60.0/22\n180.223.80.0/20\n180.223.96.0/19\n180.223.128.0/17\n180.233.0.0/18\n180.233.64.0/19\n180.233.144.0/22\n180.235.64.0/19\n180.235.112.0/22\n182.16.144.0/21\n182.16.192.0/19\n182.18.0.0/17\n182.23.184.0/21\n182.23.200.0/21\n182.32.0.0/12\n182.48.96.0/19\n182.49.0.0/16\n182.50.0.0/22\n182.50.8.0/21\n182.50.112.0/20\n182.51.0.0/16\n182.54.0.0/17\n182.61.0.0/18\n182.61.128.0/19\n182.61.192.0/18\n182.80.0.0/13\n182.88.0.0/14\n182.92.0.0/16\n182.96.0.0/11\n182.128.0.0/12\n182.144.0.0/13\n182.157.0.0/16\n182.160.64.0/19\n182.174.0.0/15\n182.200.0.0/13\n182.236.128.0/17\n182.237.24.0/21\n182.238.0.0/16\n182.239.0.0/19\n182.240.0.0/13\n182.254.0.0/17\n182.254.128.0/18\n182.254.192.0/19\n182.254.224.0/20\n182.254.240.0/21\n182.254.248.0/23\n182.254.251.0/24\n182.254.252.0/22\n183.0.0.0/10\n183.64.0.0/13\n183.78.160.0/21\n183.78.180.0/22\n183.81.180.0/22\n183.84.0.0/15\n183.91.128.0/22\n183.91.136.0/21\n183.91.144.0/20\n183.92.0.0/14\n183.128.0.0/11\n183.160.0.0/13\n183.168.0.0/15\n183.170.0.0/16\n183.172.0.0/14\n183.184.0.0/13\n183.192.0.0/10\n185.109.236.0/24\n185.216.118.0/24\n188.131.128.0/17\n192.11.23.0/24\n192.11.26.0/24\n192.11.39.0/24\n192.11.236.0/24\n192.23.191.0/24\n192.55.10.0/23\n192.55.40.0/24\n192.55.46.0/24\n192.55.68.0/22\n192.102.204.0/22\n192.124.154.0/24\n192.137.31.0/24\n192.139.136.0/24\n192.140.128.0/21\n192.140.136.0/22\n192.140.156.0/22\n192.140.160.0/19\n192.140.192.0/20\n192.140.208.0/21\n192.144.128.0/17\n192.163.11.0/24\n192.232.97.0/24\n193.9.22.0/24\n193.17.120.0/22\n193.20.64.0/22\n193.112.0.0/16\n193.200.196.0/24\n193.200.222.160/28\n194.138.136.0/24\n194.138.202.0/23\n194.138.245.0/24\n198.175.100.0/22\n198.208.17.0/24\n198.208.19.0/24\n199.7.72.0/24\n199.65.192.0/21\n199.244.144.0/24\n202.0.100.0/23\n202.0.122.0/23\n202.1.105.0/24\n202.1.106.0/24\n202.3.128.0/23\n202.4.128.0/19\n202.4.252.0/22\n202.5.208.0/21\n202.5.216.0/22\n202.6.6.0/23\n202.6.66.0/23\n202.6.72.0/23\n202.6.87.0/24\n202.6.88.0/23\n202.6.92.0/23\n202.6.103.0/24\n202.6.108.0/24\n202.6.110.0/23\n202.6.114.0/24\n202.6.176.0/20\n202.8.0.0/24\n202.8.2.0/23\n202.8.4.0/23\n202.8.12.0/24\n202.8.24.0/24\n202.8.77.0/24\n202.8.128.0/19\n202.8.192.0/20\n202.9.32.0/24\n202.9.34.0/23\n202.9.48.0/23\n202.9.51.0/24\n202.9.52.0/23\n202.9.54.0/24\n202.9.57.0/24\n202.9.58.0/23\n202.10.64.0/21\n202.10.74.0/23\n202.10.76.0/22\n202.10.112.0/20\n202.12.1.0/24\n202.12.2.0/24\n202.12.17.0/24\n202.12.18.0/23\n202.12.72.0/24\n202.12.84.0/23\n202.12.96.0/24\n202.12.98.0/23\n202.12.106.0/24\n202.12.111.0/24\n202.12.116.0/24\n202.14.64.0/23\n202.14.69.0/24\n202.14.73.0/24\n202.14.74.0/23\n202.14.76.0/24\n202.14.78.0/23\n202.14.88.0/24\n202.14.97.0/24\n202.14.104.0/23\n202.14.108.0/23\n202.14.111.0/24\n202.14.114.0/23\n202.14.118.0/23\n202.14.124.0/23\n202.14.127.0/24\n202.14.129.0/24\n202.14.135.0/24\n202.14.136.0/24\n202.14.149.0/24\n202.14.151.0/24\n202.14.157.0/24\n202.14.158.0/23\n202.14.169.0/24\n202.14.170.0/23\n202.14.172.0/22\n202.14.176.0/24\n202.14.184.0/23\n202.14.208.0/23\n202.14.213.0/24\n202.14.219.0/24\n202.14.220.0/24\n202.14.222.0/23\n202.14.225.0/24\n202.14.226.0/23\n202.14.231.0/24\n202.14.235.0/24\n202.14.236.0/22\n202.14.246.0/24\n202.14.251.0/24\n202.20.66.0/24\n202.20.79.0/24\n202.20.87.0/24\n202.20.88.0/23\n202.20.90.0/24\n202.20.94.0/23\n202.20.114.0/24\n202.20.117.0/24\n202.20.120.0/24\n202.20.125.0/24\n202.20.126.0/23\n202.21.48.0/20\n202.21.131.0/24\n202.21.132.0/24\n202.21.141.0/24\n202.21.142.0/24\n202.21.147.0/24\n202.21.148.0/24\n202.21.150.0/23\n202.21.152.0/23\n202.21.154.0/24\n202.21.156.0/24\n202.21.208.0/24\n202.22.248.0/21\n202.27.12.0/24\n202.27.14.0/24\n202.27.136.0/23\n202.36.226.0/24\n202.38.0.0/22\n202.38.8.0/21\n202.38.48.0/20\n202.38.64.0/18\n202.38.128.0/21\n202.38.136.0/23\n202.38.138.0/24\n202.38.140.0/22\n202.38.146.0/23\n202.38.149.0/24\n202.38.150.0/23\n202.38.152.0/22\n202.38.156.0/24\n202.38.158.0/23\n202.38.160.0/23\n202.38.164.0/22\n202.38.168.0/22\n202.38.176.0/23\n202.38.184.0/21\n202.38.192.0/18\n202.40.4.0/23\n202.40.7.0/24\n202.40.15.0/24\n202.40.135.0/24\n202.40.136.0/24\n202.40.140.0/24\n202.40.143.0/24\n202.40.144.0/23\n202.40.150.0/24\n202.40.155.0/24\n202.40.156.0/24\n202.40.158.0/23\n202.40.162.0/24\n202.41.8.0/23\n202.41.11.0/24\n202.41.12.0/23\n202.41.128.0/24\n202.41.130.0/23\n202.41.142.0/24\n202.41.152.0/21\n202.41.192.0/24\n202.41.196.0/22\n202.41.200.0/22\n202.41.240.0/20\n202.43.76.0/22\n202.43.144.0/20\n202.44.16.0/20\n202.44.48.0/22\n202.44.67.0/24\n202.44.74.0/24\n202.44.97.0/24\n202.44.129.0/24\n202.44.132.0/23\n202.44.146.0/23\n202.45.0.0/23\n202.45.2.0/24\n202.45.15.0/24\n202.45.16.0/20\n202.46.16.0/23\n202.46.18.0/24\n202.46.20.0/23\n202.46.128.0/24\n202.46.224.0/20\n202.47.82.0/23\n202.47.96.0/20\n202.47.126.0/24\n202.47.128.0/24\n202.47.130.0/23\n202.52.34.0/24\n202.52.143.0/24\n202.53.140.0/24\n202.53.143.0/24\n202.53.202.0/24\n202.57.212.0/22\n202.57.216.0/22\n202.57.240.0/20\n202.58.0.0/24\n202.58.112.0/22\n202.59.0.0/23\n202.59.212.0/22\n202.59.236.0/24\n202.59.240.0/24\n202.60.48.0/21\n202.60.96.0/21\n202.60.112.0/20\n202.60.132.0/22\n202.60.136.0/21\n202.60.144.0/20\n202.61.68.0/22\n202.61.76.0/22\n202.61.88.0/22\n202.61.123.0/24\n202.61.127.0/24\n202.62.112.0/22\n202.62.248.0/22\n202.62.252.0/24\n202.62.255.0/24\n202.63.80.0/20\n202.63.160.0/19\n202.63.248.0/22\n202.63.253.0/24\n202.65.0.0/21\n202.65.8.0/23\n202.67.0.0/22\n202.69.4.0/23\n202.69.16.0/20\n202.70.0.0/19\n202.70.96.0/20\n202.70.192.0/20\n202.71.32.0/20\n202.72.40.0/21\n202.72.80.0/20\n202.72.112.0/20\n202.73.128.0/22\n202.73.240.0/20\n202.74.8.0/21\n202.74.36.0/24\n202.74.42.0/24\n202.74.52.0/24\n202.74.80.0/20\n202.74.254.0/23\n202.75.208.0/20\n202.75.252.0/22\n202.76.247.0/24\n202.76.252.0/22\n202.77.80.0/21\n202.77.92.0/22\n202.78.8.0/21\n202.79.224.0/21\n202.79.248.0/22\n202.80.192.0/20\n202.81.0.0/22\n202.81.176.0/20\n202.83.252.0/22\n202.84.0.0/20\n202.84.16.0/23\n202.84.22.0/24\n202.84.24.0/21\n202.85.208.0/20\n202.86.249.0/24\n202.87.80.0/20\n202.88.32.0/22\n202.89.8.0/21\n202.89.96.0/22\n202.89.108.0/22\n202.89.119.0/24\n202.89.232.0/21\n202.90.0.0/22\n202.90.16.0/20\n202.90.37.0/24\n202.90.96.0/19\n202.90.193.0/24\n202.90.196.0/24\n202.90.205.0/24\n202.90.224.0/20\n202.91.0.0/22\n202.91.96.0/20\n202.91.128.0/22\n202.91.176.0/20\n202.91.224.0/19\n202.92.0.0/22\n202.92.8.0/21\n202.92.48.0/20\n202.92.252.0/22\n202.93.0.0/22\n202.93.252.0/22\n202.94.0.0/19\n202.94.74.0/24\n202.94.81.0/24\n202.94.92.0/22\n202.95.240.0/21\n202.95.252.0/22\n202.96.0.0/12\n202.112.0.0/13\n202.120.0.0/15\n202.122.0.0/21\n202.122.32.0/21\n202.122.64.0/19\n202.122.112.0/20\n202.122.128.0/24\n202.122.132.0/24\n202.123.96.0/20\n202.123.116.0/22\n202.123.120.0/22\n202.124.16.0/21\n202.124.24.0/22\n202.125.107.0/24\n202.125.109.0/24\n202.125.112.0/20\n202.125.176.0/20\n202.127.0.0/21\n202.127.12.0/22\n202.127.16.0/20\n202.127.40.0/21\n202.127.48.0/20\n202.127.112.0/20\n202.127.128.0/19\n202.127.160.0/21\n202.127.192.0/20\n202.127.208.0/23\n202.127.212.0/22\n202.127.216.0/21\n202.127.224.0/19\n202.129.208.0/24\n202.130.0.0/19\n202.130.39.0/24\n202.130.224.0/19\n202.131.16.0/21\n202.131.59.0/24\n202.131.208.0/20\n202.133.32.0/20\n202.134.58.0/24\n202.134.128.0/20\n202.134.208.0/20\n202.136.48.0/20\n202.136.208.0/20\n202.136.224.0/20\n202.136.248.0/22\n202.136.254.0/23\n202.137.231.0/24\n202.140.140.0/22\n202.140.144.0/20\n202.141.160.0/19\n202.142.16.0/20\n202.143.4.0/22\n202.143.16.0/20\n202.143.32.0/20\n202.143.56.0/21\n202.143.100.0/22\n202.143.104.0/22\n202.146.160.0/20\n202.146.186.0/24\n202.146.188.0/22\n202.146.196.0/22\n202.146.200.0/21\n202.147.144.0/20\n202.148.32.0/20\n202.148.64.0/18\n202.149.32.0/19\n202.149.160.0/19\n202.149.224.0/19\n202.150.16.0/20\n202.150.32.0/20\n202.150.56.0/22\n202.150.192.0/20\n202.150.224.0/19\n202.151.0.0/22\n202.151.128.0/19\n202.152.176.0/20\n202.153.0.0/22\n202.153.7.0/24\n202.153.48.0/20\n202.157.192.0/19\n202.158.160.0/19\n202.158.242.0/24\n202.160.140.0/22\n202.160.156.0/22\n202.160.176.0/20\n202.162.67.0/24\n202.162.75.0/24\n202.164.0.0/20\n202.164.96.0/19\n202.165.176.0/20\n202.165.208.0/20\n202.165.239.0/24\n202.165.240.0/23\n202.165.243.0/24\n202.165.245.0/24\n202.165.251.0/24\n202.165.252.0/22\n202.166.224.0/19\n202.168.80.0/22\n202.168.128.0/20\n202.168.160.0/19\n202.170.128.0/19\n202.170.216.0/21\n202.170.224.0/19\n202.171.216.0/21\n202.171.232.0/24\n202.171.235.0/24\n202.172.0.0/22\n202.172.7.0/24\n202.173.0.0/22\n202.173.6.0/24\n202.173.8.0/21\n202.173.112.0/22\n202.173.224.0/19\n202.174.64.0/20\n202.174.124.0/22\n202.176.224.0/19\n202.179.160.0/20\n202.179.240.0/20\n202.180.128.0/19\n202.180.208.0/21\n202.181.8.0/22\n202.181.28.0/22\n202.181.112.0/20\n202.182.32.0/20\n202.182.192.0/19\n202.189.0.0/18\n202.189.80.0/20\n202.189.184.0/21\n202.191.0.0/24\n202.191.68.0/22\n202.191.72.0/21\n202.191.80.0/20\n202.192.0.0/12\n203.0.4.0/22\n203.0.10.0/23\n203.0.18.0/24\n203.0.24.0/24\n203.0.42.0/23\n203.0.45.0/24\n203.0.46.0/23\n203.0.81.0/24\n203.0.82.0/23\n203.0.90.0/23\n203.0.96.0/23\n203.0.104.0/21\n203.0.114.0/23\n203.0.122.0/24\n203.0.128.0/24\n203.0.130.0/23\n203.0.132.0/22\n203.0.137.0/24\n203.0.142.0/24\n203.0.144.0/24\n203.0.146.0/24\n203.0.148.0/24\n203.0.150.0/23\n203.0.152.0/24\n203.0.177.0/24\n203.0.224.0/24\n203.1.4.0/22\n203.1.18.0/24\n203.1.26.0/23\n203.1.65.0/24\n203.1.66.0/23\n203.1.70.0/23\n203.1.76.0/23\n203.1.90.0/24\n203.1.97.0/24\n203.1.98.0/23\n203.1.100.0/22\n203.1.108.0/24\n203.1.253.0/24\n203.1.254.0/24\n203.2.64.0/21\n203.2.73.0/24\n203.2.112.0/21\n203.2.126.0/23\n203.2.140.0/24\n203.2.150.0/24\n203.2.152.0/22\n203.2.156.0/23\n203.2.160.0/21\n203.2.180.0/23\n203.2.196.0/23\n203.2.209.0/24\n203.2.214.0/23\n203.2.226.0/23\n203.2.229.0/24\n203.2.236.0/23\n203.3.68.0/24\n203.3.72.0/23\n203.3.75.0/24\n203.3.80.0/21\n203.3.96.0/22\n203.3.105.0/24\n203.3.112.0/21\n203.3.120.0/24\n203.3.123.0/24\n203.3.135.0/24\n203.3.139.0/24\n203.3.143.0/24\n203.4.132.0/23\n203.4.134.0/24\n203.4.151.0/24\n203.4.152.0/22\n203.4.174.0/23\n203.4.180.0/24\n203.4.186.0/24\n203.4.205.0/24\n203.4.208.0/22\n203.4.227.0/24\n203.4.230.0/23\n203.5.4.0/23\n203.5.7.0/24\n203.5.8.0/23\n203.5.11.0/24\n203.5.21.0/24\n203.5.22.0/24\n203.5.44.0/24\n203.5.46.0/23\n203.5.52.0/22\n203.5.56.0/23\n203.5.60.0/23\n203.5.114.0/23\n203.5.118.0/24\n203.5.120.0/24\n203.5.172.0/24\n203.5.180.0/23\n203.5.182.0/24\n203.5.185.0/24\n203.5.186.0/24\n203.5.188.0/23\n203.5.190.0/24\n203.5.195.0/24\n203.5.214.0/23\n203.5.218.0/23\n203.6.131.0/24\n203.6.136.0/24\n203.6.138.0/23\n203.6.142.0/24\n203.6.150.0/23\n203.6.157.0/24\n203.6.159.0/24\n203.6.224.0/20\n203.6.248.0/23\n203.7.129.0/24\n203.7.138.0/23\n203.7.147.0/24\n203.7.150.0/23\n203.7.158.0/24\n203.7.192.0/23\n203.7.200.0/24\n203.8.0.0/24\n203.8.8.0/24\n203.8.23.0/24\n203.8.70.0/24\n203.8.82.0/24\n203.8.86.0/23\n203.8.91.0/24\n203.8.110.0/23\n203.8.115.0/24\n203.8.166.0/23\n203.8.169.0/24\n203.8.173.0/24\n203.8.184.0/24\n203.8.186.0/23\n203.8.190.0/23\n203.8.192.0/24\n203.8.197.0/24\n203.8.198.0/23\n203.8.203.0/24\n203.8.209.0/24\n203.8.210.0/23\n203.8.212.0/22\n203.8.217.0/24\n203.8.220.0/24\n203.9.32.0/24\n203.9.36.0/23\n203.9.57.0/24\n203.9.63.0/24\n203.9.65.0/24\n203.9.70.0/23\n203.9.72.0/24\n203.9.75.0/24\n203.9.76.0/23\n203.9.96.0/22\n203.9.100.0/23\n203.9.108.0/24\n203.9.158.0/24\n203.10.34.0/24\n203.10.56.0/24\n203.10.74.0/23\n203.10.84.0/22\n203.10.88.0/24\n203.10.95.0/24\n203.10.125.0/24\n203.11.70.0/24\n203.11.76.0/22\n203.11.82.0/24\n203.11.84.0/22\n203.11.100.0/22\n203.11.109.0/24\n203.11.117.0/24\n203.11.122.0/24\n203.11.126.0/24\n203.11.136.0/22\n203.11.141.0/24\n203.11.142.0/23\n203.11.180.0/22\n203.11.208.0/22\n203.12.16.0/24\n203.12.19.0/24\n203.12.24.0/24\n203.12.57.0/24\n203.12.65.0/24\n203.12.66.0/24\n203.12.70.0/23\n203.12.87.0/24\n203.12.90.0/24\n203.12.92.0/22\n203.12.100.0/23\n203.12.103.0/24\n203.12.114.0/24\n203.12.118.0/24\n203.12.130.0/24\n203.12.137.0/24\n203.12.196.0/22\n203.12.211.0/24\n203.12.219.0/24\n203.12.226.0/24\n203.12.240.0/22\n203.13.18.0/24\n203.13.24.0/24\n203.13.44.0/23\n203.13.88.0/23\n203.13.92.0/22\n203.13.173.0/24\n203.13.224.0/23\n203.13.227.0/24\n203.13.233.0/24\n203.14.24.0/22\n203.14.33.0/24\n203.14.56.0/24\n203.14.61.0/24\n203.14.62.0/24\n203.14.104.0/24\n203.14.114.0/23\n203.14.118.0/24\n203.14.162.0/24\n203.14.184.0/21\n203.14.192.0/24\n203.14.194.0/23\n203.14.214.0/24\n203.14.231.0/24\n203.14.246.0/24\n203.15.0.0/20\n203.15.20.0/23\n203.15.22.0/24\n203.15.87.0/24\n203.15.88.0/23\n203.15.105.0/24\n203.15.112.0/21\n203.15.130.0/23\n203.15.149.0/24\n203.15.151.0/24\n203.15.156.0/22\n203.15.174.0/24\n203.15.227.0/24\n203.15.232.0/22\n203.15.238.0/23\n203.15.240.0/23\n203.15.246.0/24\n203.16.10.0/24\n203.16.12.0/23\n203.16.16.0/21\n203.16.27.0/24\n203.16.38.0/24\n203.16.49.0/24\n203.16.50.0/23\n203.16.58.0/24\n203.16.63.0/24\n203.16.133.0/24\n203.16.161.0/24\n203.16.162.0/24\n203.16.186.0/23\n203.16.228.0/24\n203.16.238.0/24\n203.16.240.0/24\n203.16.245.0/24\n203.17.2.0/24\n203.17.18.0/24\n203.17.28.0/24\n203.17.39.0/24\n203.17.56.0/24\n203.17.74.0/23\n203.17.88.0/23\n203.17.136.0/24\n203.17.164.0/24\n203.17.187.0/24\n203.17.190.0/23\n203.17.231.0/24\n203.17.233.0/24\n203.17.248.0/23\n203.17.255.0/24\n203.18.2.0/23\n203.18.4.0/24\n203.18.7.0/24\n203.18.31.0/24\n203.18.37.0/24\n203.18.48.0/23\n203.18.52.0/24\n203.18.72.0/22\n203.18.80.0/23\n203.18.87.0/24\n203.18.100.0/23\n203.18.105.0/24\n203.18.107.0/24\n203.18.110.0/24\n203.18.129.0/24\n203.18.131.0/24\n203.18.132.0/23\n203.18.144.0/24\n203.18.153.0/24\n203.18.199.0/24\n203.18.208.0/24\n203.18.211.0/24\n203.18.215.0/24\n203.19.1.0/24\n203.19.18.0/24\n203.19.24.0/24\n203.19.30.0/24\n203.19.41.0/24\n203.19.44.0/23\n203.19.46.0/24\n203.19.58.0/24\n203.19.60.0/23\n203.19.64.0/24\n203.19.68.0/24\n203.19.72.0/24\n203.19.101.0/24\n203.19.111.0/24\n203.19.131.0/24\n203.19.133.0/24\n203.19.144.0/24\n203.19.147.0/24\n203.19.149.0/24\n203.19.156.0/24\n203.19.176.0/24\n203.19.178.0/23\n203.19.208.0/24\n203.19.228.0/22\n203.19.233.0/24\n203.19.242.0/24\n203.19.248.0/23\n203.19.255.0/24\n203.20.17.0/24\n203.20.40.0/23\n203.20.44.0/24\n203.20.48.0/24\n203.20.61.0/24\n203.20.65.0/24\n203.20.84.0/23\n203.20.89.0/24\n203.20.106.0/23\n203.20.115.0/24\n203.20.117.0/24\n203.20.118.0/23\n203.20.122.0/24\n203.20.126.0/23\n203.20.135.0/24\n203.20.140.0/22\n203.20.150.0/24\n203.20.230.0/24\n203.20.232.0/24\n203.20.236.0/24\n203.21.0.0/23\n203.21.2.0/24\n203.21.8.0/24\n203.21.10.0/24\n203.21.18.0/24\n203.21.33.0/24\n203.21.34.0/24\n203.21.41.0/24\n203.21.44.0/24\n203.21.68.0/24\n203.21.82.0/24\n203.21.96.0/22\n203.21.124.0/24\n203.21.136.0/23\n203.21.145.0/24\n203.21.206.0/24\n203.22.24.0/24\n203.22.28.0/23\n203.22.31.0/24\n203.22.68.0/24\n203.22.76.0/24\n203.22.84.0/24\n203.22.87.0/24\n203.22.92.0/22\n203.22.99.0/24\n203.22.106.0/24\n203.22.122.0/23\n203.22.131.0/24\n203.22.163.0/24\n203.22.166.0/24\n203.22.170.0/24\n203.22.176.0/21\n203.22.194.0/24\n203.22.242.0/23\n203.22.245.0/24\n203.22.246.0/24\n203.22.252.0/23\n203.23.0.0/24\n203.23.47.0/24\n203.23.61.0/24\n203.23.62.0/23\n203.23.73.0/24\n203.23.85.0/24\n203.23.92.0/22\n203.23.98.0/24\n203.23.107.0/24\n203.23.112.0/24\n203.23.130.0/24\n203.23.140.0/23\n203.23.172.0/24\n203.23.182.0/24\n203.23.186.0/23\n203.23.192.0/24\n203.23.197.0/24\n203.23.198.0/24\n203.23.204.0/22\n203.23.224.0/24\n203.23.226.0/23\n203.23.228.0/22\n203.23.249.0/24\n203.23.251.0/24\n203.24.13.0/24\n203.24.18.0/24\n203.24.27.0/24\n203.24.43.0/24\n203.24.56.0/24\n203.24.58.0/24\n203.24.67.0/24\n203.24.74.0/24\n203.24.79.0/24\n203.24.80.0/23\n203.24.84.0/23\n203.24.86.0/24\n203.24.90.0/24\n203.24.111.0/24\n203.24.112.0/24\n203.24.116.0/24\n203.24.122.0/23\n203.24.145.0/24\n203.24.152.0/23\n203.24.157.0/24\n203.24.161.0/24\n203.24.167.0/24\n203.24.186.0/23\n203.24.199.0/24\n203.24.202.0/24\n203.24.212.0/23\n203.24.217.0/24\n203.24.219.0/24\n203.24.244.0/24\n203.25.19.0/24\n203.25.20.0/23\n203.25.46.0/24\n203.25.64.0/23\n203.25.91.0/24\n203.25.99.0/24\n203.25.100.0/24\n203.25.106.0/24\n203.25.131.0/24\n203.25.135.0/24\n203.25.138.0/24\n203.25.147.0/24\n203.25.153.0/24\n203.25.154.0/23\n203.25.164.0/24\n203.25.166.0/24\n203.25.174.0/23\n203.25.180.0/24\n203.25.182.0/24\n203.25.191.0/24\n203.25.199.0/24\n203.25.200.0/24\n203.25.202.0/23\n203.25.208.0/20\n203.25.229.0/24\n203.25.235.0/24\n203.25.236.0/24\n203.25.242.0/24\n203.26.12.0/24\n203.26.34.0/24\n203.26.49.0/24\n203.26.50.0/24\n203.26.55.0/24\n203.26.56.0/23\n203.26.60.0/24\n203.26.65.0/24\n203.26.68.0/24\n203.26.76.0/24\n203.26.80.0/24\n203.26.84.0/24\n203.26.97.0/24\n203.26.102.0/23\n203.26.115.0/24\n203.26.116.0/24\n203.26.129.0/24\n203.26.143.0/24\n203.26.144.0/24\n203.26.148.0/23\n203.26.154.0/24\n203.26.158.0/23\n203.26.161.0/24\n203.26.170.0/24\n203.26.173.0/24\n203.26.176.0/24\n203.26.185.0/24\n203.26.202.0/23\n203.26.210.0/24\n203.26.214.0/24\n203.26.222.0/24\n203.26.224.0/24\n203.26.228.0/24\n203.26.232.0/24\n203.27.0.0/24\n203.27.10.0/24\n203.27.15.0/24\n203.27.16.0/24\n203.27.20.0/24\n203.27.22.0/23\n203.27.40.0/24\n203.27.45.0/24\n203.27.53.0/24\n203.27.65.0/24\n203.27.66.0/24\n203.27.81.0/24\n203.27.88.0/24\n203.27.102.0/24\n203.27.109.0/24\n203.27.117.0/24\n203.27.121.0/24\n203.27.122.0/23\n203.27.125.0/24\n203.27.200.0/24\n203.27.202.0/24\n203.27.233.0/24\n203.27.241.0/24\n203.27.250.0/24\n203.28.10.0/24\n203.28.12.0/24\n203.28.33.0/24\n203.28.34.0/23\n203.28.43.0/24\n203.28.44.0/24\n203.28.54.0/24\n203.28.56.0/24\n203.28.73.0/24\n203.28.74.0/24\n203.28.76.0/24\n203.28.86.0/24\n203.28.88.0/24\n203.28.112.0/24\n203.28.131.0/24\n203.28.136.0/24\n203.28.140.0/24\n203.28.145.0/24\n203.28.165.0/24\n203.28.169.0/24\n203.28.170.0/24\n203.28.178.0/23\n203.28.185.0/24\n203.28.187.0/24\n203.28.196.0/24\n203.28.226.0/23\n203.28.239.0/24\n203.29.2.0/24\n203.29.8.0/23\n203.29.13.0/24\n203.29.14.0/24\n203.29.28.0/24\n203.29.46.0/24\n203.29.57.0/24\n203.29.61.0/24\n203.29.63.0/24\n203.29.69.0/24\n203.29.73.0/24\n203.29.81.0/24\n203.29.90.0/24\n203.29.95.0/24\n203.29.100.0/24\n203.29.103.0/24\n203.29.112.0/24\n203.29.120.0/22\n203.29.182.0/23\n203.29.187.0/24\n203.29.189.0/24\n203.29.190.0/24\n203.29.205.0/24\n203.29.210.0/24\n203.29.217.0/24\n203.29.227.0/24\n203.29.231.0/24\n203.29.233.0/24\n203.29.234.0/24\n203.29.248.0/24\n203.29.254.0/23\n203.30.16.0/23\n203.30.25.0/24\n203.30.29.0/24\n203.30.66.0/24\n203.30.81.0/24\n203.30.87.0/24\n203.30.111.0/24\n203.30.121.0/24\n203.30.123.0/24\n203.30.152.0/24\n203.30.156.0/24\n203.30.162.0/24\n203.30.173.0/24\n203.30.175.0/24\n203.30.187.0/24\n203.30.194.0/24\n203.30.217.0/24\n203.30.220.0/24\n203.30.222.0/24\n203.30.232.0/23\n203.30.235.0/24\n203.30.240.0/23\n203.30.246.0/24\n203.30.250.0/23\n203.31.45.0/24\n203.31.46.0/24\n203.31.49.0/24\n203.31.51.0/24\n203.31.54.0/23\n203.31.69.0/24\n203.31.72.0/24\n203.31.80.0/24\n203.31.85.0/24\n203.31.97.0/24\n203.31.105.0/24\n203.31.106.0/24\n203.31.108.0/23\n203.31.124.0/24\n203.31.162.0/24\n203.31.174.0/24\n203.31.177.0/24\n203.31.181.0/24\n203.31.187.0/24\n203.31.189.0/24\n203.31.204.0/24\n203.31.220.0/24\n203.31.222.0/23\n203.31.225.0/24\n203.31.229.0/24\n203.31.248.0/23\n203.31.253.0/24\n203.32.20.0/24\n203.32.48.0/23\n203.32.56.0/24\n203.32.60.0/24\n203.32.62.0/24\n203.32.68.0/23\n203.32.76.0/24\n203.32.81.0/24\n203.32.84.0/23\n203.32.95.0/24\n203.32.102.0/24\n203.32.105.0/24\n203.32.130.0/24\n203.32.133.0/24\n203.32.140.0/24\n203.32.152.0/24\n203.32.186.0/23\n203.32.192.0/24\n203.32.196.0/24\n203.32.203.0/24\n203.32.204.0/23\n203.32.212.0/24\n203.33.4.0/24\n203.33.7.0/24\n203.33.12.0/23\n203.33.21.0/24\n203.33.26.0/24\n203.33.32.0/24\n203.33.63.0/24\n203.33.64.0/24\n203.33.67.0/24\n203.33.68.0/24\n203.33.73.0/24\n203.33.79.0/24\n203.33.100.0/24\n203.33.122.0/24\n203.33.129.0/24\n203.33.131.0/24\n203.33.145.0/24\n203.33.156.0/24\n203.33.158.0/23\n203.33.174.0/24\n203.33.185.0/24\n203.33.200.0/24\n203.33.202.0/23\n203.33.204.0/24\n203.33.206.0/23\n203.33.214.0/23\n203.33.224.0/23\n203.33.226.0/24\n203.33.233.0/24\n203.33.243.0/24\n203.33.250.0/24\n203.34.4.0/24\n203.34.21.0/24\n203.34.27.0/24\n203.34.39.0/24\n203.34.48.0/23\n203.34.54.0/24\n203.34.56.0/23\n203.34.67.0/24\n203.34.69.0/24\n203.34.76.0/24\n203.34.92.0/24\n203.34.106.0/24\n203.34.113.0/24\n203.34.147.0/24\n203.34.150.0/24\n203.34.152.0/23\n203.34.161.0/24\n203.34.162.0/24\n203.34.187.0/24\n203.34.192.0/21\n203.34.204.0/22\n203.34.232.0/24\n203.34.240.0/24\n203.34.242.0/24\n203.34.245.0/24\n203.34.251.0/24\n203.55.2.0/23\n203.55.4.0/24\n203.55.10.0/24\n203.55.13.0/24\n203.55.22.0/24\n203.55.30.0/24\n203.55.93.0/24\n203.55.101.0/24\n203.55.109.0/24\n203.55.110.0/24\n203.55.116.0/23\n203.55.119.0/24\n203.55.128.0/23\n203.55.146.0/23\n203.55.192.0/24\n203.55.196.0/24\n203.55.218.0/23\n203.55.221.0/24\n203.55.224.0/24\n203.56.1.0/24\n203.56.4.0/24\n203.56.12.0/24\n203.56.24.0/24\n203.56.38.0/24\n203.56.40.0/24\n203.56.46.0/24\n203.56.50.0/23\n203.56.52.0/22\n203.56.68.0/23\n203.56.82.0/23\n203.56.84.0/23\n203.56.95.0/24\n203.56.110.0/24\n203.56.121.0/24\n203.56.161.0/24\n203.56.169.0/24\n203.56.172.0/23\n203.56.175.0/24\n203.56.183.0/24\n203.56.185.0/24\n203.56.187.0/24\n203.56.192.0/24\n203.56.198.0/24\n203.56.201.0/24\n203.56.208.0/23\n203.56.210.0/24\n203.56.214.0/24\n203.56.216.0/24\n203.56.227.0/24\n203.56.228.0/24\n203.56.232.0/24\n203.56.240.0/24\n203.56.252.0/24\n203.56.254.0/24\n203.57.5.0/24\n203.57.6.0/24\n203.57.12.0/23\n203.57.28.0/24\n203.57.39.0/24\n203.57.46.0/24\n203.57.58.0/24\n203.57.61.0/24\n203.57.66.0/24\n203.57.69.0/24\n203.57.70.0/23\n203.57.73.0/24\n203.57.90.0/24\n203.57.101.0/24\n203.57.109.0/24\n203.57.123.0/24\n203.57.157.0/24\n203.57.200.0/24\n203.57.202.0/24\n203.57.206.0/24\n203.57.222.0/24\n203.57.224.0/20\n203.57.246.0/23\n203.57.249.0/24\n203.57.253.0/24\n203.57.254.0/23\n203.62.2.0/24\n203.62.131.0/24\n203.62.139.0/24\n203.62.161.0/24\n203.62.197.0/24\n203.62.228.0/22\n203.62.234.0/24\n203.62.246.0/24\n203.65.240.0/22\n203.76.160.0/22\n203.76.168.0/22\n203.76.208.0/21\n203.76.216.0/22\n203.76.240.0/22\n203.77.180.0/22\n203.78.48.0/20\n203.78.156.0/22\n203.79.0.0/20\n203.80.4.0/23\n203.80.32.0/20\n203.80.57.0/24\n203.80.129.0/24\n203.80.132.0/22\n203.80.140.0/22\n203.80.144.0/20\n203.81.0.0/21\n203.81.16.0/20\n203.81.244.0/22\n203.82.0.0/23\n203.82.16.0/21\n203.82.112.0/20\n203.82.224.0/20\n203.83.0.0/22\n203.83.12.0/22\n203.83.56.0/21\n203.83.224.0/20\n203.86.0.0/18\n203.86.64.0/19\n203.86.250.0/24\n203.86.254.0/23\n203.88.32.0/19\n203.88.100.0/22\n203.88.192.0/19\n203.89.0.0/22\n203.89.100.0/22\n203.89.136.0/22\n203.89.144.0/24\n203.90.0.0/22\n203.90.8.0/21\n203.90.128.0/18\n203.90.192.0/19\n203.91.32.0/19\n203.91.96.0/20\n203.91.120.0/21\n203.92.0.0/22\n203.92.6.0/24\n203.92.160.0/19\n203.93.0.0/16\n203.94.0.0/19\n203.95.0.0/21\n203.95.96.0/19\n203.95.128.0/18\n203.95.200.0/21\n203.95.208.0/22\n203.95.224.0/19\n203.99.8.0/21\n203.99.16.0/22\n203.99.30.0/23\n203.99.80.0/20\n203.100.32.0/20\n203.100.58.0/24\n203.100.60.0/24\n203.100.63.0/24\n203.100.80.0/20\n203.100.96.0/19\n203.100.192.0/20\n203.104.32.0/20\n203.105.96.0/19\n203.105.128.0/19\n203.107.0.0/19\n203.107.32.0/20\n203.107.52.0/22\n203.107.56.0/21\n203.107.69.0/24\n203.107.70.0/23\n203.107.72.0/21\n203.107.80.0/20\n203.107.96.0/19\n203.110.160.0/19\n203.110.208.0/20\n203.110.232.0/23\n203.110.234.0/24\n203.114.80.0/20\n203.114.244.0/22\n203.118.192.0/19\n203.118.241.0/24\n203.118.248.0/22\n203.119.24.0/23\n203.119.32.0/24\n203.119.34.0/23\n203.119.80.0/22\n203.119.85.0/24\n203.119.113.0/24\n203.119.114.0/23\n203.119.116.0/22\n203.119.120.0/21\n203.119.128.0/17\n203.123.58.0/24\n203.128.32.0/19\n203.128.96.0/19\n203.128.128.0/24\n203.128.224.0/21\n203.130.32.0/20\n203.132.32.0/19\n203.134.240.0/22\n203.134.246.0/23\n203.135.96.0/19\n203.135.160.0/20\n203.142.12.0/23\n203.142.219.0/24\n203.142.224.0/19\n203.145.0.0/19\n203.148.0.0/18\n203.148.64.0/20\n203.148.80.0/22\n203.148.86.0/23\n203.149.92.0/22\n203.152.64.0/19\n203.152.128.0/19\n203.153.0.0/22\n203.156.192.0/18\n203.158.16.0/21\n203.160.129.0/24\n203.160.192.0/19\n203.161.0.0/22\n203.161.180.0/24\n203.161.183.0/24\n203.161.192.0/19\n203.166.160.0/19\n203.167.28.0/22\n203.168.0.0/19\n203.170.58.0/23\n203.171.0.0/22\n203.171.208.0/24\n203.171.224.0/20\n203.174.4.0/24\n203.174.6.0/24\n203.174.96.0/20\n203.175.128.0/19\n203.175.192.0/18\n203.176.0.0/18\n203.176.64.0/19\n203.176.168.0/21\n203.184.80.0/20\n203.187.160.0/19\n203.189.0.0/23\n203.189.6.0/23\n203.189.112.0/22\n203.189.192.0/19\n203.189.240.0/22\n203.190.96.0/20\n203.190.249.0/24\n203.191.0.0/23\n203.191.2.0/24\n203.191.5.0/24\n203.191.7.0/24\n203.191.29.0/24\n203.191.31.0/24\n203.191.64.0/18\n203.191.133.0/24\n203.191.144.0/20\n203.192.0.0/19\n203.193.224.0/19\n203.195.64.0/19\n203.195.128.0/17\n203.196.0.0/20\n203.196.28.0/22\n203.201.181.0/24\n203.201.182.0/24\n203.202.236.0/22\n203.205.64.0/19\n203.207.64.0/18\n203.207.128.0/17\n203.208.0.0/20\n203.208.16.0/22\n203.208.32.0/19\n203.209.224.0/19\n203.212.0.0/20\n203.212.80.0/20\n203.217.164.0/22\n203.223.0.0/20\n203.223.16.0/24\n203.223.22.0/24\n204.55.160.0/24\n204.74.96.0/24\n204.114.176.0/23\n206.219.44.0/23\n206.219.50.0/23\n206.219.52.0/23\n207.89.20.0/24\n210.2.0.0/23\n210.2.2.0/24\n210.2.5.0/24\n210.2.6.0/23\n210.2.8.0/21\n210.2.24.0/21\n210.5.0.0/19\n210.5.56.0/24\n210.5.60.0/24\n210.5.128.0/19\n210.7.56.0/21\n210.12.0.0/15\n210.14.64.0/19\n210.14.112.0/20\n210.14.128.0/17\n210.15.0.0/17\n210.15.128.0/18\n210.16.128.0/21\n210.16.136.0/22\n210.16.156.0/22\n210.16.160.0/19\n210.21.0.0/16\n210.22.0.0/16\n210.23.32.0/19\n210.25.0.0/16\n210.26.0.0/15\n210.28.0.0/14\n210.32.0.0/12\n210.51.0.0/16\n210.52.0.0/18\n210.52.64.0/23\n210.52.66.0/24\n210.52.68.0/22\n210.52.72.0/21\n210.52.80.0/20\n210.52.96.0/21\n210.52.104.0/22\n210.52.108.0/24\n210.52.110.0/23\n210.52.112.0/20\n210.52.128.0/17\n210.53.0.0/16\n210.56.192.0/19\n210.72.0.0/14\n210.76.0.0/15\n210.78.0.0/16\n210.79.64.0/18\n210.79.224.0/19\n210.82.0.0/15\n210.87.128.0/18\n210.185.192.0/18\n210.192.96.0/19\n211.64.0.0/13\n211.80.0.0/12\n211.96.0.0/14\n211.100.0.0/17\n211.100.128.0/19\n211.100.160.0/20\n211.100.184.0/21\n211.100.192.0/18\n211.101.0.0/16\n211.102.0.0/15\n211.136.0.0/13\n211.144.0.0/13\n211.152.0.0/17\n211.152.134.0/23\n211.152.138.0/23\n211.152.140.0/22\n211.152.150.0/23\n211.152.157.0/24\n211.152.158.0/23\n211.152.160.0/19\n211.152.192.0/18\n211.153.0.0/16\n211.154.0.0/19\n211.154.32.0/20\n211.154.48.0/21\n211.154.64.0/18\n211.154.128.0/17\n211.155.0.0/18\n211.155.67.0/24\n211.155.68.0/24\n211.155.72.0/21\n211.155.80.0/20\n211.155.97.0/24\n211.155.98.0/23\n211.155.100.0/22\n211.155.104.0/21\n211.155.113.0/24\n211.155.117.0/24\n211.155.118.0/23\n211.155.120.0/21\n211.155.128.0/17\n211.156.0.0/18\n211.156.64.0/19\n211.156.96.0/21\n211.156.104.0/22\n211.156.108.0/23\n211.156.112.0/20\n211.156.128.0/17\n211.157.0.0/16\n211.158.0.0/15\n211.160.0.0/13\n212.64.0.0/17\n212.129.128.0/17\n218.0.0.0/12\n218.16.0.0/13\n218.24.0.0/14\n218.28.0.0/15\n218.30.0.0/19\n218.30.64.0/18\n218.30.128.0/18\n218.30.192.0/19\n218.30.224.0/20\n218.30.240.0/21\n218.30.248.0/22\n218.30.252.0/25\n218.30.252.128/26\n218.30.252.194/31\n218.30.252.196/30\n218.30.252.200/29\n218.30.252.208/28\n218.30.252.224/27\n218.30.253.0/24\n218.30.254.0/23\n218.31.0.0/16\n218.56.0.0/13\n218.64.0.0/11\n218.96.0.0/15\n218.98.0.0/18\n218.98.96.0/21\n218.98.104.0/22\n218.98.108.0/23\n218.98.110.0/24\n218.98.112.0/20\n218.98.128.0/19\n218.98.192.0/18\n218.99.0.0/16\n218.100.96.0/19\n218.100.128.0/17\n218.104.0.0/14\n218.108.0.0/15\n218.185.192.0/19\n218.192.0.0/12\n218.240.0.0/14\n218.244.0.0/15\n218.246.0.0/17\n218.246.129.0/24\n218.246.131.0/24\n218.246.132.0/23\n218.246.134.0/24\n218.246.139.0/24\n218.246.144.0/20\n218.246.160.0/19\n218.246.192.0/18\n218.247.0.0/18\n218.247.96.0/19\n218.247.128.0/17\n218.249.0.0/16\n219.72.0.0/16\n219.82.0.0/16\n219.83.128.0/17\n219.90.68.0/22\n219.90.72.0/21\n219.128.0.0/11\n219.216.0.0/13\n219.224.0.0/13\n219.232.0.0/15\n219.234.0.0/21\n219.234.9.0/24\n219.234.10.0/23\n219.234.12.0/22\n219.234.32.0/19\n219.234.64.0/18\n219.234.128.0/17\n219.235.0.0/16\n219.236.0.0/14\n219.242.0.0/15\n219.244.0.0/14\n220.101.192.0/18\n220.112.0.0/14\n220.152.128.0/17\n220.154.0.0/16\n220.155.0.0/21\n220.155.9.0/24\n220.155.10.0/23\n220.155.12.0/22\n220.155.16.0/21\n220.155.24.0/22\n220.155.28.0/23\n220.155.31.0/24\n220.155.32.0/19\n220.155.64.0/18\n220.155.128.0/17\n220.158.241.0/24\n220.158.243.0/24\n220.160.0.0/11\n220.192.0.0/12\n220.231.0.0/18\n220.231.128.0/17\n220.232.64.0/18\n220.234.0.0/16\n220.242.0.0/24\n220.242.12.0/23\n220.242.14.0/24\n220.242.17.0/24\n220.242.18.0/23\n220.242.20.0/24\n220.242.32.0/20\n220.242.48.0/23\n220.242.53.0/24\n220.242.55.0/24\n220.242.56.0/22\n220.242.60.0/23\n220.242.62.0/24\n220.242.64.0/19\n220.242.96.0/20\n220.242.112.0/21\n220.242.120.0/22\n220.242.124.0/23\n220.242.126.0/24\n220.242.173.0/24\n220.242.197.0/24\n220.242.205.0/24\n220.242.207.0/24\n220.242.215.0/24\n220.242.216.0/21\n220.242.224.0/19\n220.243.0.0/17\n220.243.128.0/18\n220.243.204.0/24\n220.243.214.0/24\n220.243.217.0/24\n220.243.218.0/24\n220.243.238.0/24\n220.247.136.0/21\n220.248.0.0/14\n220.252.0.0/16\n221.0.0.0/13\n221.8.0.0/14\n221.12.0.0/17\n221.12.128.0/18\n221.13.0.0/16\n221.14.0.0/15\n221.122.0.0/15\n221.128.128.0/17\n221.129.0.0/16\n221.130.0.0/15\n221.133.224.0/19\n221.136.0.0/15\n221.172.0.0/14\n221.176.0.0/19\n221.176.32.0/20\n221.176.48.0/21\n221.176.56.0/24\n221.176.58.0/23\n221.176.60.0/22\n221.176.64.0/18\n221.176.128.0/17\n221.177.0.0/16\n221.178.0.0/15\n221.180.0.0/14\n221.192.0.0/14\n221.196.0.0/15\n221.198.0.0/16\n221.199.0.0/17\n221.199.128.0/18\n221.199.192.0/20\n221.199.224.0/19\n221.200.0.0/13\n221.208.0.0/12\n221.224.0.0/12\n222.16.0.0/12\n222.32.0.0/11\n222.64.0.0/11\n222.125.0.0/16\n222.126.128.0/19\n222.126.160.0/21\n222.126.168.0/22\n222.126.172.0/23\n222.126.174.40/29\n222.126.174.76/30\n222.126.174.88/29\n222.126.174.144/28\n222.126.178.0/23\n222.126.180.0/22\n222.126.184.0/21\n222.126.192.0/21\n222.126.200.104/29\n222.126.206.0/23\n222.126.208.0/22\n222.126.212.0/26\n222.126.212.64/27\n222.126.212.96/28\n222.126.212.112/29\n222.126.212.128/25\n222.126.213.0/24\n222.126.214.0/23\n222.126.216.0/21\n222.126.224.0/19\n222.128.0.0/12\n222.160.0.0/14\n222.168.0.0/13\n222.176.0.0/12\n222.192.0.0/11\n222.240.0.0/13\n222.248.0.0/15\n223.0.0.0/12\n223.20.0.0/15\n223.27.184.0/22\n223.29.208.0/22\n223.29.252.0/22\n223.64.0.0/11\n223.96.0.0/12\n223.112.0.0/14\n223.116.0.0/15\n223.120.0.0/13\n223.128.0.0/15\n223.144.0.0/12\n223.160.0.0/14\n223.166.0.0/15\n223.192.0.0/15\n223.198.0.0/15\n223.201.4.0/22\n223.201.8.0/21\n223.201.16.0/20\n223.201.32.0/19\n223.201.64.0/18\n223.201.128.0/17\n223.202.0.0/15\n223.208.0.0/13\n223.220.0.0/15\n223.223.176.0/20\n223.223.192.0/20\n223.240.0.0/13\n223.248.0.0/14\n223.252.128.0/19\n223.252.192.0/18\n223.254.0.0/16\n223.255.0.0/17\n223.255.236.0/22\n223.255.252.0/23\n\n#**********************************************************************\n[proxy_list]\n# 代理列表\n\n# MyList && Other\n(^|\\.)bit\\.no\\.com$\n(^|\\.)btlibrary\\.me$\n(^|\\.)cccat\\.io$\n(^|\\.)cloudcone\\.com$\n(^|\\.)gameloft\\.com$\n(^|\\.)inoreader\\.com$\n(^|\\.)ip138\\.com$\n(^|\\.)ping\\.pe$\n(^|\\.)reddit\\.com$\n(^|\\.)teddysun\\.com$\n(^|\\.)textnow\\.com$\n(^|\\.)tumbex\\.com$\n(^|\\.)twdvd\\.com$\n(^|\\.)unsplash\\.com$\n(^|\\.)xn--i2ru8q2qg\\.com$\n(^|\\.)yunpanjingling\\.com$\n(^|\\.)ec2-54-210-142-85\\.computer-1\\.amazonaws\\.com$\n(^|\\.)ec2-54-174-24-124\\.computer-1\\.amazonaws\\.com$\n(^|\\.)ec2-54-174-178-70\\.computer-1\\.amazonaws\\.com$\n(^|\\.)ec2-54-175-2-194\\.computer-1\\.amazonaws\\.com$\n(^|\\.)ec2-54-210-54-246\\.computer-1\\.amazonaws\\.com$\n\n# 国外域名\n^.*\\.hk$\n^.*\\.jp$\n^.*\\.kr$\n^.*\\.sg$\n^.*\\.tw$\n^.*\\.uk$\n^.*\\.us$\n\n# 国外域名关键字\n(^|\\.)\\w*1e100\\w*\\.\\w*$\n(^|\\.)\\w*abema\\w*\\.\\w*$\n(^|\\.)\\w*appledaily\\w*\\.\\w*$\n(^|\\.)\\w*avtb\\w*\\.\\w*$\n(^|\\.)\\w*beetalk\\w*\\.\\w*$\n(^|\\.)\\w*blogspot\\w*\\.\\w*$\n(^|\\.)\\w*dropbox\\w*\\.\\w*$\n(^|\\.)\\w*facebook\\w*\\.\\w*$\n(^|\\.)\\w*fbcdn\\w*\\.\\w*$\n(^|\\.)\\w*github\\w*\\.\\w*$\n(^|\\.)\\w*gmail\\w*\\.\\w*$\n(^|\\.)\\w*google\\w*\\.\\w*$\n(^|\\.)\\w*instagram\\w*\\.\\w*$\n(^|\\.)\\w*porn\\w*\\.\\w*$\n(^|\\.)\\w*sci-hub\\w*\\.\\w*$\n(^|\\.)\\w*spotify\\w*\\.\\w*$\n(^|\\.)\\w*telegram\\w*\\.\\w*$\n(^|\\.)\\w*twitter\\w*\\.\\w*$\n(^|\\.)\\w*whatsapp\\w*\\.\\w*$\n(^|\\.)\\w*youtube\\w*\\.\\w*$\n\n# Top blocked sites\n(^|\\.)4sqi\\.net$\n(^|\\.)a248\\.e\\.akamai\\.net$\n(^|\\.)adobedtm\\.com$\n(^|\\.)ampproject\\.org$\n(^|\\.)android\\.com$\n(^|\\.)aolcdn\\.com$\n(^|\\.)apkmirror\\.com$\n(^|\\.)apkpure\\.com$\n(^|\\.)app-measurement\\.com$\n(^|\\.)appspot\\.com$\n(^|\\.)archive\\.org$\n(^|\\.)armorgames\\.com$\n(^|\\.)aspnetcdn\\.com$\n(^|\\.)awsstatic\\.com$\n(^|\\.)azureedge\\.net$\n(^|\\.)azurewebsites\\.net$\n(^|\\.)bandwagonhost\\.com$\n(^|\\.)bing\\.com$\n(^|\\.)bkrtx\\.com$\n(^|\\.)blogcdn\\.com$\n(^|\\.)blogger\\.com$\n(^|\\.)blogsmithmedia\\.com$\n(^|\\.)blogspot\\.com$\n(^|\\.)blogspot\\.hk$\n(^|\\.)blogspot\\.jp$\n(^|\\.)bloomberg\\.cn$\n(^|\\.)bloomberg\\.com$\n(^|\\.)box\\.com$\n(^|\\.)cachefly\\.net$\n(^|\\.)cdnst\\.net$\n(^|\\.)cloudfront\\.net$\n(^|\\.)comodoca\\.com$\n(^|\\.)daum\\.net$\n(^|\\.)demdex\\.net$\n(^|\\.)deskconnect\\.com$\n(^|\\.)disqus\\.com$\n(^|\\.)disquscdn\\.com$\n(^|\\.)dropbox\\.com$\n(^|\\.)dropboxapi\\.com$\n(^|\\.)dropboxstatic\\.com$\n(^|\\.)dropboxusercontent\\.com$\n(^|\\.)duckduckgo\\.com$\n(^|\\.)edgecastcdn\\.net$\n(^|\\.)edgekey\\.net$\n(^|\\.)edgesuite\\.net$\n(^|\\.)eurekavpt\\.com$\n(^|\\.)fastmail\\.com$\n(^|\\.)firebaseio\\.com$\n(^|\\.)flickr\\.com$\n(^|\\.)flipboard\\.com$\n(^|\\.)gfx\\.ms$\n(^|\\.)gongm\\.in$\n(^|\\.)hulu\\.com$\n(^|\\.)id\\.heroku\\.com$\n(^|\\.)io\\.io$\n(^|\\.)issuu\\.com$\n(^|\\.)ixquick\\.com$\n(^|\\.)jtvnw\\.net$\n(^|\\.)kat\\.cr$\n(^|\\.)kik\\.com$\n(^|\\.)kobo\\.com$\n(^|\\.)kobobooks\\.com$\n(^|\\.)licdn\\.com$\n(^|\\.)live\\.net$\n(^|\\.)livefilestore\\.com$\n(^|\\.)llnwd\\.net$\n(^|\\.)macrumors\\.com$\n(^|\\.)medium\\.com$\n(^|\\.)mega\\.nz$\n(^|\\.)megaupload\\.com$\n(^|\\.)messenger\\.com$\n(^|\\.)netdna-cdn\\.com$\n(^|\\.)nintendo\\.net$\n(^|\\.)nsstatic\\.net$\n(^|\\.)nytstyle\\.com$\n(^|\\.)openvpn\\.net$\n(^|\\.)periscope\\.tv$\n(^|\\.)pinimg\\.com$\n(^|\\.)pinterest\\.com$\n(^|\\.)potato\\.im$\n(^|\\.)prfct\\.co$\n(^|\\.)pscp\\.tv$\n(^|\\.)quora\\.com$\n(^|\\.)resilio\\.com$\n(^|\\.)sfx\\.ms$\n(^|\\.)shadowsocks\\.org$\n(^|\\.)slack-edge\\.com$\n(^|\\.)smartdnsproxy\\.com$\n(^|\\.)sndcdn\\.com$\n(^|\\.)soundcloud\\.com$\n(^|\\.)startpage\\.com$\n(^|\\.)staticflickr\\.com$\n(^|\\.)symauth\\.com$\n(^|\\.)symcb\\.com$\n(^|\\.)symcd\\.com$\n(^|\\.)textnow\\.com$\n(^|\\.)thefacebook\\.com$\n(^|\\.)thepiratebay\\.org$\n(^|\\.)torproject\\.org$\n(^|\\.)trustasiassl\\.com$\n(^|\\.)tumblr\\.co$\n(^|\\.)tumblr\\.com$\n(^|\\.)tvb\\.com$\n(^|\\.)txmblr\\.com$\n(^|\\.)v2ex\\.com$\n(^|\\.)vimeo\\.com$\n(^|\\.)vine\\.co$\n(^|\\.)vox-cdn\\.com$\n(^|\\.)wikileaks\\.org$\n(^|\\.)wikipedia\\.org$\n\n# Amazon\n(^|\\.)amazon\\.co\\.jp$\n(^|\\.)amazon\\.com$\n(^|\\.)amazonaws\\.com$\n13.32.0.0/15\n13.35.0.0/17\n18.184.0.0/15\n18.194.0.0/15\n18.208.0.0/13\n18.232.0.0/14\n52.58.0.0/15\n52.74.0.0/16\n52.77.0.0/16\n52.84.0.0/15\n52.200.0.0/13\n54.93.0.0/16\n54.156.0.0/14\n54.226.0.0/15\n54.230.156.0/22\n\n# BBC\n(^|\\.)\\w*uk-live\\w*\\.\\w*$\n(^|\\.)bbc\\.co$\n(^|\\.)bbc\\.com$\n\n# Discord\n(^|\\.)discord\\.gg$\n(^|\\.)discord\\.media$\n(^|\\.)discordapp\\.com$\n(^|\\.)discordapp\\.net$\n\n# Facebook\n(^|\\.)facebook\\.com$\n(^|\\.)fb\\.com$\n(^|\\.)fb\\.me$\n(^|\\.)fbcdn\\.com$\n(^|\\.)fbcdn\\.net$\n31.13.24.0/21\n31.13.64.0/18\n45.64.40.0/22\n66.220.144.0/20\n69.63.176.0/20\n69.171.224.0/19\n74.119.76.0/22\n103.4.96.0/22\n129.134.0.0/17\n157.240.0.0/17\n173.252.64.0/18\n179.60.192.0/22\n185.60.216.0/22\n204.15.20.0/22\n\n# Github\n(^|\\.)github\\.com$\n(^|\\.)github\\.io$\n(^|\\.)githubapp\\.com$\n(^|\\.)githubassets\\.com$\n(^|\\.)githubusercontent\\.com$\n(^|\\.)s3\\.amazonaws\\.com$\n\n# Google\n(^|\\.)1e100\\.net$\n(^|\\.)2mdn\\.net$\n(^|\\.)app-measurement\\.net$\n(^|\\.)g\\.co$\n(^|\\.)ggpht\\.com$\n(^|\\.)goo\\.gl$\n(^|\\.)googleapis\\.cn$\n(^|\\.)googleapis\\.com$\n(^|\\.)gstatic\\.cn$\n(^|\\.)gstatic\\.com$\n(^|\\.)gvt0\\.com$\n(^|\\.)gvt1\\.com$\n(^|\\.)gvt2\\.com$\n(^|\\.)gvt3\\.com$\n(^|\\.)xn--ngstr-lra8j\\.com$\n(^|\\.)youtu\\.be$\n(^|\\.)youtube-nocookie\\.com$\n(^|\\.)youtube\\.com$\n(^|\\.)yt\\.be$\n(^|\\.)ytimg\\.com$\n8.8.8.8\n8.8.4.4\n74.125.0.0/16\n173.194.0.0/16\n\n# Instagram\n(^|\\.)cdninstagram\\.com$\n(^|\\.)instagram\\.com$\n(^|\\.)instagr\\.am$\n(^|\\.)akamaihd\\.net$\n\n# Kakao Talk\n(^|\\.)kakao\\.com$\n(^|\\.)kakao\\.co\\.kr$\n(^|\\.)kakaocdn\\.net$\n1.201.0.0/24\n27.0.236.0/22\n103.27.148.0/22\n103.246.56.0/22\n110.76.140.0/22\n113.61.104.0/22\n\n# Line\n(^|\\.)lin\\.ee$\n(^|\\.)line-apps\\.com$\n(^|\\.)line-cdn\\.net$\n(^|\\.)line-scdn\\.net$\n(^|\\.)line\\.me$\n(^|\\.)line\\.naver\\.jp$\n(^|\\.)nhncorp\\.jp$\n103.2.28.0/24\n103.2.30.0/23\n119.235.224.0/24\n119.235.232.0/24\n119.235.235.0/24\n119.235.236.0/23\n147.92.128.0/17\n203.104.128.0/19\n\n# Microsoft\n(^|\\.)1drv\\.com$\n(^|\\.)aadrm\\.com$\n(^|\\.)acompli\\.com$\n(^|\\.)acompli\\.net$\n(^|\\.)aka\\.ms$\n(^|\\.)akadns\\.net$\n(^|\\.)aspnetcdn\\.com$\n(^|\\.)assets-yammer\\.com$\n(^|\\.)azure\\.com$\n(^|\\.)azure\\.net$\n(^|\\.)azureedge\\.net$\n(^|\\.)azurerms\\.com$\n(^|\\.)bing\\.com$\n(^|\\.)cloudapp\\.net$\n(^|\\.)cloudappsecurity\\.com$\n(^|\\.)edgesuite\\.net$\n(^|\\.)getmicrosoftkey\\.com$\n(^|\\.)gfx\\.ms$\n(^|\\.)hotmail\\.com$\n(^|\\.)live\\.com$\n(^|\\.)live\\.net$\n(^|\\.)lync\\.com$\n(^|\\.)microsoft\\.com$\n(^|\\.)microsoftazuread-sso\\.com$\n(^|\\.)microsoftonline-p\\.com$\n(^|\\.)microsoftonline-p\\.net$\n(^|\\.)microsoftonline\\.com$\n(^|\\.)microsoftstream\\.com$\n(^|\\.)msappproxy\\.net$\n(^|\\.)msauth\\.net$\n(^|\\.)msauthimages\\.net$\n(^|\\.)msecnd\\.net$\n(^|\\.)msedge\\.net$\n(^|\\.)msft\\.net$\n(^|\\.)msftauth\\.net$\n(^|\\.)msftauthimages\\.net$\n(^|\\.)msftidentity\\.com$\n(^|\\.)msidentity\\.com$\n(^|\\.)msn\\.com$\n(^|\\.)msocdn\\.com$\n(^|\\.)msocsp\\.com$\n(^|\\.)mstea\\.ms$\n(^|\\.)o365weve\\.com$\n(^|\\.)oaspapps\\.com$\n(^|\\.)office\\.com$\n(^|\\.)office\\.net$\n(^|\\.)office365\\.com$\n(^|\\.)officecdn-microsoft-com\\.akamaized\\.net$\n(^|\\.)officeppe\\.net$\n(^|\\.)omniroot\\.com$\n(^|\\.)onedrive\\.com$\n(^|\\.)onenote\\.com$\n(^|\\.)onenote\\.net$\n(^|\\.)onestore\\.ms$\n(^|\\.)onmicrosoft\\.com$\n(^|\\.)outlook\\.com$\n(^|\\.)outlookmobile\\.com$\n(^|\\.)phonefactor\\.net$\n(^|\\.)public-trust\\.com$\n(^|\\.)s-microsoft\\.com$\n(^|\\.)sfbassets\\.com$\n(^|\\.)sfx\\.ms$\n(^|\\.)sharepoint\\.com$\n(^|\\.)sharepointonline\\.com$\n(^|\\.)skype\\.com$\n(^|\\.)skypeassets\\.com$\n(^|\\.)skypeforbusiness\\.com$\n(^|\\.)staffhub\\.ms$\n(^|\\.)svc\\.ms$\n(^|\\.)sway-cdn\\.com$\n(^|\\.)sway-extensions\\.com$\n(^|\\.)sway\\.com$\n(^|\\.)trafficmanager\\.net$\n(^|\\.)uservoice\\.com$\n(^|\\.)virtualearth\\.net$\n(^|\\.)visualstudio\\.com$\n(^|\\.)windows-ppe\\.net$\n(^|\\.)windows\\.com$\n(^|\\.)windows\\.net$\n(^|\\.)windowsazure\\.com$\n(^|\\.)windowsupdate\\.com$\n(^|\\.)wunderlist\\.com$\n(^|\\.)yammer\\.com$\n(^|\\.)yammerusercontent\\.com$\n\n# MytvSUPER\n(^|\\.)\\w*nowtv100\\w*\\.\\w*$\n(^|\\.)\\w*rthklive\\w*\\.\\w*$\n(^|\\.)mytvsuper\\.com$\n\n# Netflix\n(^|\\.)netflix\\.com$\n(^|\\.)netflix\\.net$\n(^|\\.)nflxext\\.com$\n(^|\\.)nflximg\\.com$\n(^|\\.)nflximg\\.net$\n(^|\\.)nflxvideo\\.net$\n8.41.4.0/24\n23.246.0.0/18\n37.77.184.0/21\n45.57.0.0/17\n64.120.128.0/17\n66.197.128.0/17\n69.53.224.0/19\n108.175.32.0/20\n185.2.220.0/22\n185.9.188.0/22\n192.173.64.0/18\n198.38.96.0/19\n198.45.48.0/20\n207.45.72.0/22\n208.75.76.0/22\n\n# OneDrive\n(^|\\.)\\w*1drv\\w*\\.\\w*$\n(^|\\.)\\w*onedrive\\w*\\.\\w*$\n(^|\\.)\\w*skydrive\\w*\\.\\w*$\n(^|\\.)livefilestore\\.com$\n(^|\\.)oneclient\\.sfx\\.ms$\n(^|\\.)onedrive\\.com$\n(^|\\.)onedrive\\.live\\.com$\n(^|\\.)photos\\.live\\.com$\n(^|\\.)skydrive\\.wns\\.windows\\.com$\n(^|\\.)spoprod-a\\.akamaihd\\.net$\n(^|\\.)storage\\.live.com$\n(^|\\.)storage\\.msn.com$\n\n# Pixiv\n(^|\\.)pixiv\\.net$\n(^|\\.)pximg\\.net$\n\n# Porn\n(^|\\.)\\w*porn\\w*\\.\\w*$\n(^|\\.)8teenxxx\\.com$\n(^|\\.)ahcdn\\.com$\n(^|\\.)bcvcdn\\.com$\n(^|\\.)bongacams\\.com$\n(^|\\.)chaturbate\\.com$\n(^|\\.)dditscdn\\.com$\n(^|\\.)livejasmin\\.com$\n(^|\\.)rdtcdn\\.com$\n(^|\\.)redtube\\.com$\n(^|\\.)sb-cd\\.com$\n(^|\\.)spankbang\\.com$\n(^|\\.)t66y\\.com$\n(^|\\.)xhamster\\.com$\n(^|\\.)xnxx-cdn\\.com$\n(^|\\.)xnxx\\.com$\n(^|\\.)xvideos-cdn\\.com$\n(^|\\.)xvideos\\.com$\n(^|\\.)ypncdn\\.com$\n\n# ResiloSync\n(^|\\.)config\\.getsync\\.com$\n(^|\\.)config\\.resilio\\.com$\n54.235.182.157/32\n107.182.230.198/32\n173.244.209.150/32\n173.244.217.42/32\n209.95.56.60/32\n\n# Steam\n(^|\\.)fanatical\\.com$\n(^|\\.)humblebundle\\.com$\n(^|\\.)steamcommunity\\.com$\n(^|\\.)steampowered\\.com$\n(^|\\.)steamstatic\\.com$\n\n# Telegram\n(^|\\.)t\\.me$\n(^|\\.)tdesktop\\.com$\n(^|\\.)telegra\\.ph$\n(^|\\.)telegram\\.me$\n(^|\\.)telegram\\.org$\n91.108.0.0/16\n109.239.140.0/24\n149.154.160.0/20\n2001:67c:4e8::/48\n2001:b28:f23d::/48\n2001:b28:f23f::/48\n\n# Twitch\n(^|\\.)twitch\\.tv$\n(^|\\.)ttvnw\\.net$\n(^|\\.)jtvnw\\.net$\n(^|\\.)akamaized\\.net$\n\n# Twitter\n(^|\\.)t\\.co$\n(^|\\.)twimg\\.co$\n(^|\\.)twimg\\.com$\n(^|\\.)twimg\\.org$\n\n# Whatsapp\n18.194.0.0/15\n34.224.0.0/12\n54.242.0.0/15\n50.22.198.204/30\n208.43.122.128/27\n108.168.174.0/16\n173.192.231.32/27\n158.85.5.192/27\n174.37.243.0/16\n158.85.46.128/27\n173.192.222.160/27\n184.173.128.0/17\n158.85.224.160/27\n75.126.150.0/16\n69.171.235.0/16\n\n#飞流直播\n(^|\\.)neulion\\.com$\n(^|\\.)icntv\\.xyz$\n(^|\\.)flzbcdn\\.xyz$\n\n#华文电视\n(^|\\.)ocnttv\\.com$\n"
  },
  {
    "path": "Trojan/File/gfwlist.acl",
    "content": "#**********************************************************************\n# 04.18\n# 2020年4月18日 20:28:30\n# 转载需要注明版权和来源\n# 全部规则来自GFWList 没有白名单\n#\n# 更新记录 https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/more/New.md\n# 下载地址 https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/gfwlist-banAD.acl\n#\n#**********************************************************************\n\n[bypass_all]\n### 默认直连 自己可以自定义\n### [outbound_block_list] 禁止访问列表\n### [bypass_list] 直连列表 禁止访问列表\n### [proxy_list] 代理列表\n\n#**********************************************************************\n[outbound_block_list]\n# 禁止访问列表\n\n# 广告关键词\n(^|\\.)\\w*admarvel\\w*\\.\\w*$\n(^|\\.)\\w*admaster\\w*\\.\\w*$\n(^|\\.)\\w*adsage\\w*\\.\\w*$\n(^|\\.)\\w*adsensor\\w*\\.\\w*$\n(^|\\.)\\w*adservice\\w*\\.\\w*$\n(^|\\.)\\w*adsh\\w*\\.\\w*$\n(^|\\.)\\w*adsmogo\\w*\\.\\w*$\n(^|\\.)\\w*adsrvmedia\\w*\\.\\w*$\n(^|\\.)\\w*adsserving\\w*\\.\\w*$\n(^|\\.)\\w*adsystem\\w*\\.\\w*$\n(^|\\.)\\w*adwords\\w*\\.\\w*$\n(^|\\.)\\w*analysis\\w*\\.\\w*$\n(^|\\.)\\w*analytics\\w*\\.\\w*$\n(^|\\.)\\w*applovin\\w*\\.\\w*$\n(^|\\.)\\w*appsflyer\\w*\\.\\w*$\n(^|\\.)\\w*domob\\w*\\.\\w*$\n(^|\\.)\\w*duomeng\\w*\\.\\w*$\n(^|\\.)\\w*dwtrack\\w*\\.\\w*$\n(^|\\.)\\w*guanggao\\w*\\.\\w*$\n(^|\\.)\\w*lianmeng\\w*\\.\\w*$\n(^|\\.)\\w*monitor\\w*\\.\\w*$\n(^|\\.)\\w*omgmta\\w*\\.\\w*$\n(^|\\.)\\w*omniture\\w*\\.\\w*$\n(^|\\.)\\w*openx\\w*\\.\\w*$\n(^|\\.)\\w*partnerad\\w*\\.\\w*$\n(^|\\.)\\w*pingfore\\w*\\.\\w*$\n(^|\\.)\\w*socdm\\w*\\.\\w*$\n(^|\\.)\\w*supersonicads\\w*\\.\\w*$\n(^|\\.)\\w*tracking\\w*\\.\\w*$\n(^|\\.)\\w*uedas\\w*\\.\\w*$\n(^|\\.)\\w*usage\\w*\\.\\w*$\n(^|\\.)\\w*wlmonitor\\w*\\.\\w*$\n(^|\\.)\\w*zjtoolbar\\w*\\.\\w*$\n(^|\\.)ad\\d{0,3}\\..*$\n(^|\\.)ads\\d{0,3}\\..*$\n(^|\\.)tracking\\..*$\n\n# 163\n(^|\\.)(adgeo|bobo|fa|g|g1|gb|nex)(\\.corp|)\\.163\\.com$\n(^|\\.)(analytics|img1|img2|mimg|push)\\.126\\.net$\n(^|\\.)(a|c|clkservice|conv|dsp|dsp-impr2|gorgon|rlogs|union|ydpushserver)\\.youdao\\.com$\n(^|\\.)(nc004x|nc045x|qt002x|tb060x|tb104x)\\.corp\\.youdao\\.com$\n(^|\\.)(haitaoad|iadmatvideo)\\.nosdn\\.127\\.net$\n(^|\\.)ir\\.mail\\.126\\.com$\n(^|\\.)ir\\.mail\\.yeah\\.net$\n(^|\\.)oimagea2\\.ydstatic\\.com$\n(^|\\.)pagechoice\\.net$\n(^|\\.)prom\\.gome\\.com\\.cn$\n(^|\\.)qchannel0\\d\\.cn$\n(^|\\.)static\\.flv\\.uuzuonline\\.com$\n(^|\\.)wanproxy\\.127\\.net$\n\n# 17173\n(^|\\.)cvda\\.17173\\.com$\n(^|\\.)imgapp\\.yeyou\\.com$\n(^|\\.)log1\\.17173\\.com$\n(^|\\.)s\\.17173cdn\\.com$\n(^|\\.)ue\\.yeyoucdn\\.com$\n(^|\\.)vda\\.17173\\.com$\n\n# 178\n(^|\\.)analytics\\.wanmei\\.com$\n(^|\\.)gg\\.stargame\\.com$\n\n# 2345\n(^|\\.)(dl|download|houtai|jifen|minipage|wan|jifendownload|zhushou)\\.2345\\.cn$\n\n# 360\n(^|\\.)3600\\.com$\n(^|\\.)gamebox\\.360\\.cn$\n(^|\\.)jiagu\\.360\\.cn$\n(^|\\.)kuaikan\\.netmon\\.360safe\\.com$\n(^|\\.)leak\\.360\\.cn$\n(^|\\.)lianmeng\\.360\\.cn$\n(^|\\.)pub\\.se\\.360\\.cn$\n(^|\\.)s\\.so\\.360\\.cn$\n(^|\\.)shouji\\.360\\.cn$\n(^|\\.)soft\\.data\\.weather\\.360\\.cn$\n(^|\\.)stat\\.360safe\\.com$\n(^|\\.)stat\\.m\\.360\\.cn$\n(^|\\.)update\\.360safe\\.com$\n(^|\\.)wan\\.360\\.cn$\n\n# 58\n(^|\\.)(58|imp|stat)\\.xgo\\.com\\.cn$\n(^|\\.)(brandshow|jing|track|tracklog)\\.58\\.com$\n\n# Alibaba\n(^|\\.)(adashx4yt|adash-c|ai|re|rj|simaba)\\.m\\.taobao\\.com$\n(^|\\.)(afp|atanx|atanx2|gma|gtms\\d\\d)\\.alicdn\\.com$\n(^|\\.)(fav|m|redirect|srd|tns)\\.simba\\.taobao\\.com$\n(^|\\.)(sdkinit|simaba|tyh)\\.taobao\\.com$\n(^|\\.)acjs\\.aliyun\\.com$\n(^|\\.)(adash-c|adashbc|adashxgc)\\.ut\\.taobao\\.com$\n(^|\\.)alipaylog\\.com$\n(^|\\.)amdc\\.alipay\\.com$\n(^|\\.)click\\.mz\\.simba\\.taobao\\.com$\n(^|\\.)g\\.click\\.taobao\\.com$\n(^|\\.)g\\.tbcdn\\.cn$\n(^|\\.)hydra\\.alibaba\\.com$\n(^|\\.)pindao\\.huoban\\.taobao\\.com$\n(^|\\.)show\\.re\\.taobao\\.com$\n(^|\\.)strip\\.taobaocdn\\.com$\n(^|\\.)userimg\\.qunar\\.com$\n(^|\\.)yiliao\\.hupan\\.com$\n\n# Adobe\n(^|\\.)3dns-2\\.adobe\\.com$\n(^|\\.)3dns-3\\.adobe\\.com$\n(^|\\.)activate\\.adobe\\.com$\n(^|\\.)activate\\.wip3\\.adobe\\.com$\n(^|\\.)activate-sea\\.adobe\\.com$\n(^|\\.)activate-sjc0\\.adobe\\.com$\n(^|\\.)adobe-dns\\.adobe\\.com$\n(^|\\.)adobe-dns-2\\.adobe\\.com$\n(^|\\.)adobe-dns-3\\.adobe\\.com$\n(^|\\.)ereg\\.adobe\\.com$\n(^|\\.)ereg\\.wip3\\.adobe\\.com$\n(^|\\.)geo2\\.adobe\\.com$\n(^|\\.)hl2rcv\\.adobe\\.com$\n(^|\\.)hlrcv\\.stage\\.adobe\\.com$\n(^|\\.)lm\\.licenses\\.adobe\\.com$\n(^|\\.)lmlicenses\\.wip4\\.adobe\\.com$\n(^|\\.)na1r\\.services\\.adobe\\.com$\n(^|\\.)na2m-pr\\.licenses\\.adobe\\.com$\n(^|\\.)practivate\\.adobe\\.com$\n(^|\\.)wip3\\.adobe\\.com$\n(^|\\.)wwis-dubc1-vip60\\.adobe\\.com$\n\n# Apple\n(^|\\.)adserver\\.unityads\\.unity3d\\.com$\n\n# AutoHome\n(^|\\.)(33|adproxy|al|alert|applogapi|c|cmx|dspmnt|pcd|pvx|rd|rdx|stats)\\.autohome\\.com\\.cn$\n(^|\\.)adm\\d\\.autoimg\\.cn$\n(^|\\.)push\\.app\\.autohome\\.com\\.cn$\n\n# Baidu\n(^|\\.)(a|adm|adscdn|afd|als|anquan|appc|as|c|cb|cbjs|cbjslog|cjhq|cpro|cpro2|cpu|cpu-admin|crs|drmcmm|e|eclick|eiv|entry)\\.baidu\\.(com|cn)$\n(^|\\.)(hc|hm|hmma|hpd|imageplus|ma|mobads-logs|mobads|mtj|nsclick)\\.baidu\\.(com|cn)$\n(^|\\.)(pups|rj|rp|spcode|tk|tongji|tuisong|ucstat|ufosdk|union|utility|utk|videopush|wangmeng|wm|znsv)\\.baidu\\.(com|cn)$\n(^|\\.)ad\\.duapps\\.com$\n(^|\\.)ad\\.player\\.baidu\\.com$\n(^|\\.)adx\\.xiaodutv\\.com$\n(^|\\.)ae\\.bdstatic\\.com$\n(^|\\.)antivirus\\.baidu\\.com$\n(^|\\.)api\\.cpu\\.baidu\\.com$\n(^|\\.)api\\.mobula\\.sdk\\.duapps\\.com$\n(^|\\.)ashifen\\.com$\n(^|\\.)baichuan\\.baidu\\.com$\n(^|\\.)baidu9635\\.com$\n(^|\\.)baidustatic\\.com$\n(^|\\.)baidutv\\.baidu\\.com$\n(^|\\.)baikebcs\\.bdimg\\.com$\n(^|\\.)banlv\\.baidu\\.com$\n(^|\\.)bar\\.baidu\\.com$\n(^|\\.)bdimg\\.share\\.baidu\\.com$\n(^|\\.)bdplus\\.baidu\\.com$\n(^|\\.)btlaunch\\.baidu\\.com$\n(^|\\.)cleaner\\.baidu\\.com$\n(^|\\.)click\\.bes\\.baidu\\.com$\n(^|\\.)click\\.hm\\.baidu\\.com$\n(^|\\.)click\\.qianqian\\.com$\n(^|\\.)cm\\.baidu\\.com$\n(^|\\.)cm\\.pos\\.baidu\\.com$\n(^|\\.)cpro\\.baidustatic\\.com$\n(^|\\.)cpro\\.tieba\\.baidu\\.com$\n(^|\\.)cpro\\.zhidao\\.baidu\\.com$\n(^|\\.)datax\\.baidu\\.com$\n(^|\\.)dl-vip\\.bav\\.baidu\\.com$\n(^|\\.)dl-vip\\.pcfaster\\.baidu\\.co\\.th$\n(^|\\.)dl1sw\\.baidu\\.com$\n(^|\\.)dl2\\.bav\\.baidu\\.com$\n(^|\\.)dl\\.client\\.baidu\\.com$\n(^|\\.)dl\\.ops\\.baidu\\.com$\n(^|\\.)dlsw\\.baidu\\.com$\n(^|\\.)dlsw\\.br\\.baidu\\.com$\n(^|\\.)download\\.bav\\.baidu\\.com$\n(^|\\.)download\\.sd\\.baidu\\.com$\n(^|\\.)drmcmm\\.baidu\\.com$\n(^|\\.)dup\\.baidustatic\\.com$\n(^|\\.)dxp\\.baidu\\.com$\n(^|\\.)dzl\\.baidu\\.com$\n(^|\\.)ecma\\.bdimg\\.com$\n(^|\\.)ecmb\\.bdimg\\.com$\n(^|\\.)ecmc\\.bdimg\\.com$\n(^|\\.)em\\.baidu\\.com$\n(^|\\.)ers\\.baidu\\.com$\n(^|\\.)f10\\.baidu\\.com$\n(^|\\.)fc-\\.cdn\\.bcebos\\.com$\n(^|\\.)fc-feed\\.cdn\\.bcebos\\.com$\n(^|\\.)fclick\\.baidu\\.com$\n(^|\\.)feed\\.baidu\\.com$\n(^|\\.)fexclick\\.baidu\\.com$\n(^|\\.)g\\.baidu\\.com$\n(^|\\.)gimg\\.baidu\\.com$\n(^|\\.)guanjia\\.baidu\\.com$\n(^|\\.)idm-su\\.baidu\\.com$\n(^|\\.)iebar\\.baidu\\.com$\n(^|\\.)ikcode\\.baidu\\.com$\n(^|\\.)img01\\.taotaosou\\.cn$\n(^|\\.)img\\.taotaosou\\.cn$\n(^|\\.)itsdata\\.map\\.baidu\\.com$\n(^|\\.)j\\.br\\.baidu\\.com$\n(^|\\.)kstj\\.baidu\\.com$\n(^|\\.)log\\.music\\.baidu\\.com$\n(^|\\.)log\\.nuomi\\.com$\n(^|\\.)m1\\.baidu\\.com$\n(^|\\.)mg09\\.zhaopin\\.com$\n(^|\\.)mipcache\\.bdstatic\\.com$\n(^|\\.)mpro\\.baidu\\.com$\n(^|\\.)msite\\.baidu\\.com$\n(^|\\.)neirong\\.baidu\\.com$\n(^|\\.)nsclickvideo\\.baidu\\.com$\n(^|\\.)openrcv\\.baidu\\.com$\n(^|\\.)pc\\.videoclick\\.baidu\\.com$\n(^|\\.)pos\\.baidu\\.com$\n(^|\\.)pups\\.bdimg\\.com$\n(^|\\.)push\\.music\\.baidu\\.com$\n(^|\\.)push\\.zhanzhang\\.baidu\\.com$\n(^|\\.)qchannel0\\d\\.cn$\n(^|\\.)qianclick\\.baidu\\.com$\n(^|\\.)release\\.baidu\\.com$\n(^|\\.)res\\.limei\\.com$\n(^|\\.)res\\.mi\\.baidu\\.com$\n(^|\\.)rigel\\.baidustatic\\.com$\n(^|\\.)river\\.zhidao\\.baidu\\.com$\n(^|\\.)rplog\\.baidu\\.com$\n(^|\\.)s\\.baidu\\.com$\n(^|\\.)s\\.cpro\\.baidu\\.com$\n(^|\\.)sa\\.tuisong\\.baidu\\.com$\n(^|\\.)sclick\\.baidu\\.com$\n(^|\\.)sestat\\.baidu\\.com$\n(^|\\.)shadu\\.baidu\\.com$\n(^|\\.)share\\.baidu\\.com$\n(^|\\.)shifen\\.com$\n(^|\\.)snippet\\.pos\\.baidu\\.com$\n(^|\\.)sobar\\.baidu\\.com$\n(^|\\.)sobartop\\.baidu\\.com$\n(^|\\.)stat\\.v\\.baidu\\.com$\n(^|\\.)su\\.bdimg\\.com$\n(^|\\.)su\\.bdstatic\\.com$\n(^|\\.)t10\\.baidu\\.com$\n(^|\\.)t11\\.baidu\\.com$\n(^|\\.)t12\\.baidu\\.com$\n(^|\\.)tkweb\\.baidu\\.com$\n(^|\\.)tob-cms\\.bj\\.bcebos\\.com$\n(^|\\.)toolbar\\.baidu\\.com$\n(^|\\.)tracker\\.baidu\\.com$\n(^|\\.)tuijian\\.baidu\\.com$\n(^|\\.)uat1\\.bfsspadserver\\.8le8le\\.com$\n(^|\\.)ubmcmm\\.baidustatic\\.com$\n(^|\\.)ulic\\.baidu\\.com$\n(^|\\.)ulog\\.imap\\.baidu\\.com$\n(^|\\.)unionimage\\.baidu\\.com$\n(^|\\.)vv84\\.bj\\.bcebos\\.com$\n(^|\\.)w\\.gdown\\.baidu\\.com$\n(^|\\.)w\\.x\\.baidu\\.com$\n(^|\\.)weishi\\.baidu\\.com$\n(^|\\.)wenku-cms\\.bj\\.bcebos\\.com$\n(^|\\.)wisepush\\.video\\.baidu\\.com$\n(^|\\.)wn\\.pos\\.baidu\\.com$\n(^|\\.)zz\\.bdstatic\\.com$\n(^|\\.)zzy1\\.quyaoya\\.com$\n\n# Book-app 起点 掌阅 书旗 宜搜\n(^|\\.)(adm|assets|tjlog)(\\.ps|)\\.easou\\.com$\n(^|\\.)(ad|push|sys)\\.zhangyue\\.com$\n(^|\\.)(cj|game|tongji)\\.qidian\\.com$\n(^|\\.)aishowbger\\.com$\n(^|\\.)api\\.itaoxiaoshuo\\.com$\n(^|\\.)bbcoe\\.cn$\n(^|\\.)dkeyn\\.com$\n(^|\\.)drdwy\\.com$\n(^|\\.)e701\\.net$\n(^|\\.)e\\.aa985\\.cn$\n(^|\\.)e\\.v02u9\\.cn$\n(^|\\.)ehxyz\\.com$\n(^|\\.)ethod\\.gzgmjcx\\.com$\n(^|\\.)focuscat\\.com$\n(^|\\.)hdswgc\\.com$\n(^|\\.)jyd\\.fjzdmy\\.com$\n(^|\\.)m\\.ourlj\\.com$\n(^|\\.)m\\.txtxr\\.com$\n(^|\\.)m\\.vsxet\\.com$\n(^|\\.)miam4\\.cn$\n(^|\\.)o\\.if\\.qidian\\.com$\n(^|\\.)p\\.vq6nsu\\.cn$\n(^|\\.)picture\\.duokan\\.com$\n(^|\\.)pyerc\\.com$\n(^|\\.)s1\\.cmfu\\.com$\n(^|\\.)sc\\.shayugg\\.com$\n(^|\\.)sdk\\.cferw\\.com$\n(^|\\.)sezvc\\.com$\n(^|\\.)ut2\\.shuqistat\\.com$\n(^|\\.)xgcsr\\.com$\n(^|\\.)xjq\\.jxmqkj\\.com$\n(^|\\.)xpe\\.cxaerp\\.com$\n(^|\\.)xtzxmy\\.com$\n(^|\\.)xyrkl\\.com$\n(^|\\.)zhuanfakong\\.com$\n\n# ByteDance 头条抖音\n(^|\\.)(ad|sm|dsp|nativeapp|partner|track)\\.toutiao\\.com$\n(^|\\.)ic\\.snssdk\\.com$\n(^|\\.)log\\.snssdk\\.com$\n(^|\\.)xlog\\.snssdk\\.com$\n\n# Dangdang\n(^|\\.)(a|click|schprompt|t)\\.dangdang\\.com$\n\n# Duomi\n(^|\\.)ad\\.duomi\\.com$\n(^|\\.)boxshows\\.com$\n\n# Facebook\n(^|\\.)staticxx\\.facebook\\.com$\n\n# Fang\n(^|\\.)click1n\\.soufun\\.com$\n(^|\\.)clickm\\.fang\\.com$\n(^|\\.)clickn\\.fang\\.com$\n(^|\\.)countpvn\\.light\\.fang\\.com$\n(^|\\.)countubn\\.light\\.soufun\\.com$\n(^|\\.)mshow\\.fang\\.com$\n(^|\\.)tongji\\.home\\.soufun\\.com$\n\n# Google\n(^|\\.)admob\\.com$\n(^|\\.)ads\\.gmodules\\.com$\n(^|\\.)ads\\.google\\.com$\n(^|\\.)adservice\\.google\\.com$\n(^|\\.)afd\\.l\\.google\\.com$\n(^|\\.)badad\\.googleplex\\.com$\n(^|\\.)csi\\.gstatic\\.com$\n(^|\\.)doubleclick(\\.com|\\.net)$\n(^|\\.)google-analytics\\.com$\n(^|\\.)googleadservices\\.com$\n(^|\\.)googleadsserving\\.cn$\n(^|\\.)googlecommerce\\.com$\n(^|\\.)googlesyndication\\.com$\n(^|\\.)mobileads\\.google\\.com$\n(^|\\.)pagead-tpc\\.l\\.google\\.com$\n(^|\\.)pagead\\.google\\.com$\n(^|\\.)pagead\\.l\\.google\\.com$\n(^|\\.)service\\.urchin\\.com$\n\n# JD\n(^|\\.)(c-nfa|img-x|jrclick|jzt|policy)\\.jd\\.com$\n(^|\\.)ads\\.union\\.jd\\.com$\n(^|\\.)cps\\.360buy\\.com$\n(^|\\.)stat\\.m\\.jd\\.com$\n\n# Kugou\n(^|\\.)(bssdl|bssdlbig|d|downmobile|fanxing|gad|game|gamebox|gg|install|install2|kgmobilestat|minidcsc|mo|mobilelog|mvads|p|rtmonitor|sdn|tj)\\.kugou\\.com$\n(^|\\.)(msg|push|update)\\.mobile\\.kugou\\.com$\n(^|\\.)ads\\.service\\.kugou\\.com$\n(^|\\.)gcapi\\.sy\\.kugou\\.com$\n(^|\\.)kuaikaiapp\\.com$\n(^|\\.)log\\.stat\\.kugou\\.com$\n(^|\\.)log\\.web\\.kugou\\.com$\n\n# Kuwo\n(^|\\.)(deliver|g|log|kwmsg|mobilead|msclick2|msphoneclick|updatepage|wa|webstat)\\.kuwo\\.cn$\n(^|\\.)apk\\.shouji\\.koowo\\.com$\n(^|\\.)g\\.koowo\\.com$\n\n# Meizu flyme 魅族\n(^|\\.)(aider-res|api-flow|api-game|api-push|cal|ebook|game-res|infocenter|openapi-news|reader|tongji-res1|tongji|uxip)\\.meizu\\.com$\n(^|\\.)(bro|t-e|t-flow)\\.flyme\\.cn$\n(^|\\.)(ebook|game|push|reader|upush)\\.res\\.meizu\\.com$\n(^|\\.)aries\\.mzres\\.com$\n(^|\\.)umid\\.orion\\.meizu\\.com$\n\n# Meitu\n(^|\\.)(corp|gg|message|tuiguang)\\.meitu\\.com$\n(^|\\.)(dc|mdc|rabbit)\\.meitustat\\.com$\n(^|\\.)a\\.koudai\\.com$\n(^|\\.)adui\\.tg\\.meitu\\.com$\n(^|\\.)meitubeauty\\.meitudata\\.com$\n(^|\\.)rabbit\\.tg\\.meitu\\.com$\n(^|\\.)xiuxiu\\.android\\.dl\\.meitu\\.com$\n(^|\\.)xiuxiu\\.mobile\\.meitudata\\.com$\n\n# Miui 小米\n(^|\\.)(ad|ad1|shenghuo|xmpush)\\.xiaomi\\.com$\n(^|\\.)(a|wtradv)\\.market\\.xiaomi\\.com$\n(^|\\.)(bss|de|dvb|jellyfish|stat)\\.pandora\\.xiaomi\\.com$\n(^|\\.)(d|migc|migcreport|mis)\\.g\\.mi\\.com$\n(^|\\.)(notice|ppurifier)\\.game\\.xiaomi\\.com$\n(^|\\.)(r|security)\\.browser\\.miui\\.com$\n(^|\\.)tracking\\.miui\\.com$\n(^|\\.)union\\.mi\\.com$\n\n# Moji\n(^|\\.)ad\\.api\\.moji\\.com$\n(^|\\.)app\\.moji001\\.com$\n(^|\\.)cdn\\.moji002\\.com$\n(^|\\.)cdn2\\.moji002\\.com$\n(^|\\.)fds\\.api\\.moji\\.com$\n(^|\\.)log\\.moji\\.com$\n(^|\\.)stat\\.moji\\.com$\n(^|\\.)ugc\\.moji001\\.com$\n\n# Qingting\\.fm\n(^|\\.)(ad|admgr|logger)\\.qingting\\.fm$\n(^|\\.)dload\\.qd\\.qingting\\.fm$\n(^|\\.)s\\.qd\\.qingting\\.fm$\n(^|\\.)s\\.qd\\.qingtingfm\\.com$\n\n# QQ\n(^|\\.)\\w*omgmta\\w*\\.\\w*$\n(^|\\.)(act|adsfile|bugly|buluo|gdt|monitor|pingma|pingtcss|report|tajs|tcss|uu)\\.qq\\.com$\n(^|\\.)ad\\.qun\\.qq\\.com$\n\n# RenRen\n(^|\\.)jebe\\.renren\\.com$\n(^|\\.)ebp\\.renren\\.com$\n(^|\\.)jebe\\.xnimg\\.cn$\n\n# Sina\n(^|\\.)(adimg|pay|sax|sdkapp|sdkclick|trends|u1\\.img|wbapp|wbclick|wbpctips)\\.mobile\\.sina\\.cn$\n(^|\\.)(ad|ad\\d|adbox|adm|d\\d|dcads|dmp|leju|sax|sax\\d|slog)\\.sina\\.com(\\.cn|)$\n(^|\\.)(alitui|biz|game|wax)\\.weibo\\.com(\\.cn|)$\n(^|\\.)cre\\.dp\\.sina\\.cn$\n(^|\\.)gw5\\.push\\.mcp\\.weibo\\.cn$\n(^|\\.)log\\.mix\\.sina\\.com\\.cn$\n(^|\\.)mobileads\\.dx\\.cn$\n(^|\\.)newspush\\.sinajs\\.cn$\n(^|\\.)sdkapp\\.uve\\.weibo\\.com$\n(^|\\.)tui\\.weibo\\.com$\n(^|\\.)wbapp\\.uve\\.weibo\\.com$\n(^|\\.)zymo\\.mps\\.weibo\\.com$\n\n# Sougou\n(^|\\.)(123|adsence|brand|cpc|epro|fair|files2|goto|golden1|inte|iwan|lu|pb|pd|pv|theta|wan|wangmeng)\\.sogou\\.com$\n(^|\\.)(123|galaxy|lu)\\.sogoucdn\\.com$\n(^|\\.)amfi\\.gou\\.sogou\\.com$\n\n# Teleplus\n(^|\\.)applovin\\.com$\n(^|\\.)guangzhuiyuan\\.com$\n\n# Twitter\n(^|\\.)(ads|syndication|syndication-o|analytics|scribe|p)\\.twitter\\.com$\n(^|\\.)ads-twitter\\.com$\n(^|\\.)tellapart\\.com$\n(^|\\.)urls\\.api\\.twitter\\.com$\n\n# UC ali\n(^|\\.)(adslot|applog|track)\\.uc\\.cn$\n(^|\\.)(cms|puds|uc|ucsec1|ucsec)\\.ucweb\\.com$\n(^|\\.)(log|patriot)\\.cs\\.pp\\.cn$\n(^|\\.)api\\.mp\\.uc\\.cn$\n(^|\\.)client\\.video\\.ucweb\\.com$\n(^|\\.)dispatcher\\.upmc\\.uc\\.cn$\n(^|\\.)huichuan\\.sm\\.cn$\n(^|\\.)iflow\\.uczzd(\\.\\w{2,3}){1,2}$\n(^|\\.)m\\.uczzd\\.cn$\n(^|\\.)server\\.m\\.pp\\.cn$\n(^|\\.)u\\.uc123\\.com$\n(^|\\.)u\\.ucfly\\.com$\n\n# Weifeng\n(^|\\.)(aoodoo|push|yes1)\\.feng\\.com$\n(^|\\.)fengbuy\\.com$\n(^|\\.)push\\.feng\\.com$\n(^|\\.)we\\.tm$\n\n# WPS Office\n(^|\\.)(bannera|rating6|cloudservice.*)\\.kingsoft-office-service\\.com$\n(^|\\.)(docerad|gou|info|minfo|notify|pcfg|push|wpsweb-dc)\\.wps\\.cn$\n(^|\\.)ad\\.docer\\.wps\\.cn$\n(^|\\.)adm\\.zookingsoft\\.com$\n(^|\\.)bole\\.shangshufang\\.ksosoft\\.com$\n(^|\\.)counter\\.kingsoft\\.com$\n(^|\\.)dl\\.op\\.wpscdn\\.cn$\n(^|\\.)hoplink\\.ksosoft\\.com$\n(^|\\.)ic\\.ksosoft\\.com$\n(^|\\.)img.*\\.mini\\.cache\\.wps\\.cn$\n(^|\\.)img\\.gou\\.wpscdn\\.cn$\n(^|\\.)ios-informationplatform\\.wps\\.cn$\n(^|\\.)mo\\.res\\.wpscdn\\.cn$\n(^|\\.)news\\.docer\\.com$\n(^|\\.)news\\.op\\.wpscdn\\.cn$\n(^|\\.)pc\\.uf\\.ksosoft\\.com$\n(^|\\.)pixiu\\.shangshufang\\.ksosoft\\.com$\n(^|\\.)up\\.wps\\.kingsoft\\.com$\n\n# Wi-Fi key\n(^|\\.)(c|cdsget|news-imgpb|wifiapi\\d\\d|wkanc)\\.51y5\\.net$\n\n# Ximalaya 喜马拉雅\n(^|\\.)(adse|linkeye|location|xdcs-collector)\\.ximalaya\\.com$\n\n# Xunlei 迅雷app&看看\n(^|\\.)biz5\\.kankan\\.com$\n(^|\\.)float\\.kankan\\.com$\n(^|\\.)logic\\.cpm\\.cm\\.kankan\\.com$\n(^|\\.)hub5btmain\\.sandai\\.net$\n(^|\\.)hub5emu\\.sandai\\.net$\n(^|\\.)upgrade\\.xl9\\.xunlei\\.com$\n\n# Yahoo\n(^|\\.)(ads|adserver|adss|analytics|beap-bc|comet|geo|gemini|p3p|ybp)\\.yahoo\\.com$\n(^|\\.)(analytics|locdrop|onepush)\\.query\\.yahoo\\.com$\n(^|\\.)(ard|ane|yads)\\.yahoo\\.co\\.jp$\n(^|\\.)(js-apac-ss|partnerads)\\.ysm\\.yahoo\\.com$\n(^|\\.)ad\\.wretch\\.cc$\n(^|\\.)clicks\\.beap\\.bc\\.yahoo\\.com$\n(^|\\.)doubleplay-conf-yql\\.media\\.yahoo\\.com$\n(^|\\.)flurry\\.com$\n(^|\\.)m\\.yap\\.yahoo\\.com$\n(^|\\.)uservoice\\.com$\n(^|\\.)ws\\.progrss\\.yahoo\\.com$\n\n# Zhihu\n(^|\\.)(sugar|zhihu-web-analytics)\\.zhihu\\.com$\n\n# Ads in Video apps********************下面都是\n\n# 6间房\n(^|\\.)(shrek|simba|union)\\.6\\.cn$\n\n# Baofeng 暴风影音\n(^|\\.)logger\\.baofeng\\.com$\n(^|\\.)xs\\.houyi\\.baofeng\\.net$\n\n# Douyu\n(^|\\.)dotcounter\\.douyutv\\.com$\n\n# Fenghuang 凤凰TV\n(^|\\.)(game|stadig)\\.ifeng\\.com$\n(^|\\.)api\\.newad\\.ifeng\\.com$\n(^|\\.)exp\\.3g\\.ifeng\\.com$\n(^|\\.)iis3g\\.deliver\\.ifeng\\.com$\n(^|\\.)mfp\\.deliver\\.ifeng\\.com$\n\n# Funshion 风行\n(^|\\.)(pub|adm|jobsfe|po|pv|stat)\\.funshion\\.com$\n\n# iqiyi PPS 爱奇艺\n(^|\\.)ad\\.m\\.iqiyi\\.com$\n(^|\\.)afp\\.iqiyi\\.com$\n(^|\\.)c\\.uaa\\.iqiyi\\.com$\n(^|\\.)cloudpush\\.iqiyi\\.com$\n(^|\\.)cm\\.passport\\.iqiyi\\.com$\n(^|\\.)cupid\\.iqiyi\\.com$\n(^|\\.)emoticon\\.sns\\.iqiyi\\.com$\n(^|\\.)gamecenter\\.iqiyi\\.com$\n(^|\\.)ifacelog\\.iqiyi\\.com$\n(^|\\.)mbdlog\\.iqiyi\\.com$\n(^|\\.)meta\\.video\\.qiyi\\.com$\n(^|\\.)msg1\\.video\\.qiyi\\.com$\n(^|\\.)msg2\\.video\\.qiyi\\.com$\n(^|\\.)msg\\.71\\.am$\n(^|\\.)paopao\\.iqiyi\\.com$\n(^|\\.)paopao\\d\\.qiyipic\\.com$\n(^|\\.)policy\\.video\\.iqiyi\\.com$\n(^|\\.)yuedu\\.iqiyi\\.com$\n101.227.200.0/24\n101.227.200.11/32\n101.227.200.28/32\n101.227.97.240/32\n124.192.153.42/32\n\n# Ku6 酷6\n(^|\\.)gug\\.ku6cdn\\.com$\n(^|\\.)st\\.vq\\.ku6\\.cn$\n(^|\\.)pq\\.stat\\.ku6\\.com$\n(^|\\.)static\\.ku6\\.com$\n\n# LeTV 乐视\n(^|\\.)(ark|dc|fz|g3|minisite|pro|stat)\\.letv\\.com$\n(^|\\.)(1|2)\\.letvlive\\.com$\n(^|\\.)(i0|i3)\\.letvimg\\.com$\n(^|\\.)game\\.letvstore\\.com$\n(^|\\.)n\\.mark\\.letv\\.com$\n(^|\\.)pro\\.hoye\\.letv\\.com$\n(^|\\.)static\\.app\\.m\\.letv\\.com$\n\n# MGTV 芒果TV\n(^|\\.)(click|da|log|p2|res)\\.hunantv\\.com$\n(^|\\.)da\\.mgtv\\.com$\n(^|\\.)log\\.v2\\.hunantv\\.com$\n\n# Sohu 搜狐\n(^|\\.)(888|lm|push)\\.tv\\.sohu\\.com$\n(^|\\.)(aty|bd|click|click2|ctr|pv|pb|wl|um)\\.hd\\.sohu\\.com$\n(^|\\.)(ads|adnet|aty|epro|go|golden1|hui|inte|uranus|wan|yule|pv)\\.sohu\\.com$\n(^|\\.)(epro|golden1|inte|uranus|pv)\\.sogou\\.com$\n(^|\\.)(inte|lu|theta)\\.sogoucdn\\.com$\n\n# PPTV、PPLive\n(^|\\.)(de|jp)\\.as\\.pptv\\.com$\n(^|\\.)(app|as)\\.aplus\\.pptv\\.com$\n(^|\\.)afp\\.pplive\\.com$\n(^|\\.)asimgs\\.pplive\\.cn$\n(^|\\.)pp2\\.pptv\\.com$\n(^|\\.)stat\\.pptv\\.com$\n\n# QQ Live\n(^|\\.)aiseet\\.aa\\.atianqi\\.com$\n(^|\\.)aiseet\\.atianqi\\.com$\n(^|\\.)btrace\\.video\\.qq\\.com$\n(^|\\.)c\\.l\\.qq\\.com$\n(^|\\.)dp3\\.qq\\.com$\n(^|\\.)livep\\.l\\.qq\\.com$\n(^|\\.)lives\\.l\\.qq\\.com$\n(^|\\.)livew\\.l\\.qq\\.com$\n(^|\\.)mcgi\\.v\\.qq\\.com$\n(^|\\.)mdevstat\\.qqlive\\.qq\\.com$\n(^|\\.)omgmta1\\.qq\\.com$\n(^|\\.)p\\.l\\.qq\\.com$\n(^|\\.)rcgi\\.video\\.qq\\.com$\n(^|\\.)t\\.l\\.qq\\.com$\n(^|\\.)u\\.l\\.qq\\.com$\n\n# Youku & Tudou\n(^|\\.)(actives|dmapp|hz|iyes|l|lstat|lvip|msg|mobilemsg|myes|passport-log|stat|tdrec|wan|ykatr|ykrec|ykrectab)\\.youku\\.com$\n(^|\\.)(adcontrol|adplay|goods|iwstat|nstat|stat|stats)\\.tudou\\.com$\n(^|\\.)(ad|gamex)\\.mobile\\.youku\\.com$\n(^|\\.)(dev-push|push|sdk)\\.m\\.youku\\.com$\n(^|\\.)(p|r|v)\\.l\\.youku\\.com$\n(^|\\.)a-dxk\\.play\\.api\\.3g\\.youku\\.com$\n(^|\\.)ad\\.api\\.3g(\\.tudou|\\.youku)\\.com$\n(^|\\.)ad\\.api\\.mobile\\.youku\\.com$\n(^|\\.)b\\.smartvideo\\.youku\\.com$\n(^|\\.)c\\.yes\\.youku\\.com$\n(^|\\.)dl\\.g\\.youku\\.com$\n(^|\\.)e\\.stat\\.ykimg\\.com$\n(^|\\.)hudong\\.pl\\.youku\\.com$\n(^|\\.)l\\.ykimg\\.com$\n(^|\\.)p-log\\.ykimg\\.com$\n(^|\\.)p\\.l\\.ykimg\\.com$\n(^|\\.)s\\.p\\.youku\\.com$\n(^|\\.)store\\.tv\\.api\\.3g\\.youku\\.com$\n(^|\\.)store\\.xl\\.api\\.3g\\.youku\\.com$\n(^|\\.)test\\.ott\\.youku\\.com$\n(^|\\.)val\\.api\\.youku\\.com$\n117.177.248.17/32\n117.177.248.41/32\n223.87.176.139/32\n223.87.176.176/32\n223.87.177.180/32\n223.87.177.182/32\n223.87.177.184/32\n223.87.177.43/32\n223.87.177.47/32\n223.87.177.80/32\n223.87.182.101/32\n223.87.182.102/32\n223.87.182.11/32\n223.87.182.52/32\n\n# Youtube\n(^|\\.)azabu-u\\.ac\\.jp$\n(^|\\.)couchcoaster\\.jp$\n(^|\\.)delivery\\.dmkt-sp\\.jp$\n(^|\\.)ehg-youtube\\.hitbox\\.com$\n(^|\\.)m-78\\.jp$\n(^|\\.)nichibenren\\.or\\.jp$\n(^|\\.)nicorette\\.co\\.kr$\n(^|\\.)ssl-youtube\\.2cnt\\.net$\n(^|\\.)youtube\\.112\\.2o7\\.net$\n(^|\\.)youtube\\.2cnt\\.net$\n\n# Others ads in Video apps\n(^|\\.)(acsystem|ads|afp)\\.wasu\\.tv$\n(^|\\.)ads\\.cdn\\.tvb\\.com$\n(^|\\.)c\\.algovid\\.com$\n(^|\\.)cc\\.xtgreat\\.com$\n(^|\\.)d\\.dsp\\.imageter\\.com$\n(^|\\.)gg\\.jtertp\\.com$\n(^|\\.)gridsum-vd\\.cntv\\.cn$\n(^|\\.)kwflvcdn\\.000dn\\.com$\n(^|\\.)logstat\\.t\\.sfht\\.com$\n(^|\\.)match\\.rtbidder\\.net$\n(^|\\.)n-st\\.vip\\.com$\n(^|\\.)pop\\.uusee\\.com$\n(^|\\.)static\\.bshare\\.cn$\n(^|\\.)static\\.duoshuo\\.com$\n(^|\\.)t\\.cr-nielsen\\.com$\n(^|\\.)terren\\.cntv\\.cn$\n\n# Ads in Video apps end ********************上面都是\n\n\n# 常用网站广告****************\n(^|\\.)(168|adshownew|stat)\\.it168\\.com$\n(^|\\.)(1|2)\\.win7china\\.com$\n(^|\\.)(801|803|806|808|bdj|dol|click)\\.(tianya|tianyaui)\\.cn$\n(^|\\.)(92x|its-dori)\\.tumblr\\.com$\n(^|\\.)(adm|eq|fund|ozone|stat|vaserviece)\\.10jqka\\.com\\.cn$\n(^|\\.)(ad|adadmin|ads)\\.house365\\.com$\n(^|\\.)(ad|ads|counter)\\.csdn\\.net$\n(^|\\.)(ad|analytics|click|ganjituiguang|sta|tralog)\\.ganji\\.com$\n(^|\\.)(app-monitor|client-api|grand|mobile-pubt|newton-api)\\.ele\\.me$\n(^|\\.)(bd1|bd2)\\.52che\\.com$\n(^|\\.)(click|media|pv)\\.(cheshi|cheshi-img)\\.com$\n(^|\\.)(d0|dw|pv)\\.xcar\\.com\\.cn$\n(^|\\.)a1\\.itc\\.cn$\n(^|\\.)ad\\.12306\\.cn$\n(^|\\.)ad\\.3\\.cn$\n(^|\\.)ad\\.95306\\.cn$\n(^|\\.)ad\\.caiyunapp\\.com$\n(^|\\.)ad\\.cctv\\.com$\n(^|\\.)ad\\.cmvideo\\.cn$\n(^|\\.)ad\\.thepaper\\.cn$\n(^|\\.)ad\\.unimhk\\.com$\n(^|\\.)adhome\\.1fangchan\\.com$\n(^|\\.)adm\\.easou\\.com$\n(^|\\.)ads\\.feedly\\.com$\n(^|\\.)ads\\.genieessp\\.com$\n(^|\\.)ads\\.linkedin\\.com$\n(^|\\.)adv\\.ccb\\.com$\n(^|\\.)advert\\.api\\.thejoyrun\\.com$\n(^|\\.)api-deal\\.kechenggezi\\.com$\n(^|\\.)api-z\\.weidian\\.com$\n(^|\\.)bam\\.nr-data\\.net$\n(^|\\.)mobileads\\.msn\\.com$\n(^|\\.)bat\\.bing\\.com$\n(^|\\.)beacon\\.tingyun\\.com$\n(^|\\.)cdn\\.jiuzhilan\\.com$\n(^|\\.)collector\\.githubapp\\.com$\n(^|\\.)de\\.soquair\\.com$\n(^|\\.)e\\.nexac\\.com$\n(^|\\.)erebor\\.douban\\.com$\n(^|\\.)exp\\.17wo\\.cn$\n(^|\\.)game\\.51yund\\.com$\n(^|\\.)hosting\\.miarroba\\.info$\n(^|\\.)iadsdk\\.apple\\.com$\n(^|\\.)image\\.gentags\\.com$\n(^|\\.)log\\.outbrain\\.com$\n(^|\\.)m\\.12306media\\.com$\n(^|\\.)n\\.cosbot\\.cn$\n(^|\\.)pdl\\.gionee\\.com$\n(^|\\.)pica-juicy\\.picacomic\\.com$\n(^|\\.)pixel\\.wp\\.com$\n(^|\\.)pub\\.mop\\.com$\n(^|\\.)push\\.wandoujia\\.com$\n(^|\\.)qdp\\.qidian\\.com$\n(^|\\.)res\\.gwifi\\.com\\.cn$\n(^|\\.)ssp\\.kssws\\.ks-cdn\\.com$\n(^|\\.)stats\\.chinaz\\.com$\n(^|\\.)stats\\.developingperspective\\.com$\n(^|\\.)tjlog\\.easou\\.com$\n(^|\\.)tjlog\\.ps\\.easou\\.com$\n(^|\\.)track\\.hujiang\\.com$\n(^|\\.)tracker\\.yhd\\.com$\n(^|\\.)up\\.qingdaonews\\.com$\n\n# 广告联盟-国内****************\n(^|\\.)09mk\\.cn$\n(^|\\.)100peng\\.com$\n(^|\\.)114la\\.com$\n(^|\\.)123juzi\\.net$\n(^|\\.)138lm\\.com$\n(^|\\.)17un\\.com$\n(^|\\.)2cnt\\.net$\n(^|\\.)3gmimo\\.com$\n(^|\\.)3xx\\.vip$\n(^|\\.)51\\.la$\n(^|\\.)51taifu\\.com$\n(^|\\.)51yes\\.com$\n(^|\\.)600ad\\.com$\n(^|\\.)6dad\\.com$\n(^|\\.)70e\\.com$\n(^|\\.)86\\.cc$\n(^|\\.)8le8le\\.com$\n(^|\\.)8ox\\.cn$\n(^|\\.)95558000\\.com$\n(^|\\.)99click\\.com$\n(^|\\.)99youmeng\\.com$\n(^|\\.)a3p4\\.net$\n(^|\\.)acs86\\.com$\n(^|\\.)acxiom-online\\.com$\n(^|\\.)ad-brix\\.com$\n(^|\\.)ad-delivery\\.net$\n(^|\\.)ad-locus\\.com$\n(^|\\.)ad-plus\\.cn$\n(^|\\.)ad7\\.com$\n(^|\\.)adadapted\\.com$\n(^|\\.)adadvisor\\.net$\n(^|\\.)adap\\.tv$\n(^|\\.)adbana\\.com$\n(^|\\.)adchina\\.com$\n(^|\\.)adcome\\.cn$\n(^|\\.)ader\\.mobi$\n(^|\\.)adform\\.net$\n(^|\\.)adfuture\\.cn$\n(^|\\.)adhouyi\\.com$\n(^|\\.)adinfuse\\.com$\n(^|\\.)adirects\\.com$\n(^|\\.)adjust\\.com$\n(^|\\.)adjust\\.io$\n(^|\\.)adkmob\\.com$\n(^|\\.)adlive\\.cn$\n(^|\\.)adlocus\\.com$\n(^|\\.)admaji\\.com$\n(^|\\.)admin6\\.com$\n(^|\\.)admon\\.cn$\n(^|\\.)adnyg\\.com$\n(^|\\.)adpolestar\\.net$\n(^|\\.)adpro\\.cn$\n(^|\\.)adpush\\.cn$\n(^|\\.)adquan\\.com$\n(^|\\.)adreal\\.cn$\n(^|\\.)ads8\\.com$\n(^|\\.)adsame\\.com$\n(^|\\.)adsmogo\\.com$\n(^|\\.)adsmogo\\.org$\n(^|\\.)adsunflower\\.com$\n(^|\\.)adsunion\\.com$\n(^|\\.)adtrk\\.me$\n(^|\\.)adups\\.com$\n(^|\\.)aduu\\.cn$\n(^|\\.)advertising\\.com$\n(^|\\.)adview\\.cn$\n(^|\\.)advmob\\.cn$\n(^|\\.)adwetec\\.com$\n(^|\\.)adwhirl\\.com$\n(^|\\.)adwo\\.com$\n(^|\\.)adxmi\\.com$\n(^|\\.)adyun\\.com$\n(^|\\.)adzerk\\.net$\n(^|\\.)agrant\\.cn$\n(^|\\.)agrantsem\\.com$\n(^|\\.)aihaoduo\\.cn$\n(^|\\.)ajapk\\.com$\n(^|\\.)allyes\\.cn$\n(^|\\.)allyes\\.com$\n(^|\\.)amazon-adsystem\\.com$\n(^|\\.)amplitude\\.com$\n(^|\\.)analysys\\.cn$\n(^|\\.)angsrvr\\.com$\n(^|\\.)anquan\\.org$\n(^|\\.)anysdk\\.com$\n(^|\\.)appadhoc\\.com$\n(^|\\.)appads\\.com$\n(^|\\.)appboy\\.com$\n(^|\\.)appdriver\\.cn$\n(^|\\.)appjiagu\\.com$\n(^|\\.)applifier\\.com$\n(^|\\.)appsflyer\\.com$\n(^|\\.)atdmt\\.com$\n(^|\\.)baifendian\\.com$\n(^|\\.)banmamedia\\.com$\n(^|\\.)baoyatu\\.cc$\n(^|\\.)baycode\\.cn$\n(^|\\.)bayimob\\.com$\n(^|\\.)behe\\.com$\n(^|\\.)bfshan\\.cn$\n(^|\\.)biddingos\\.com$\n(^|\\.)biddingx\\.com$\n(^|\\.)bjvvqu\\.cn$\n(^|\\.)bjxiaohua\\.com$\n(^|\\.)bloggerads\\.net$\n(^|\\.)branch\\.io$\n(^|\\.)bsdev\\.cn$\n(^|\\.)bshare\\.cn$\n(^|\\.)btyou\\.com$\n(^|\\.)bugtags\\.com$\n(^|\\.)buysellads\\.com$\n(^|\\.)c0563\\.com$\n(^|\\.)cacafly\\.com$\n(^|\\.)casee\\.cn$\n(^|\\.)cdnmaster\\.com$\n(^|\\.)chance-ad\\.com$\n(^|\\.)chanet\\.com\\.cn$\n(^|\\.)chartbeat\\.com$\n(^|\\.)chartboost\\.com$\n(^|\\.)chengadx\\.com$\n(^|\\.)chmae\\.com$\n(^|\\.)clickadu\\.com$\n(^|\\.)clicki\\.cn$\n(^|\\.)clicktracks\\.com$\n(^|\\.)clickzs\\.com$\n(^|\\.)cloudmobi\\.net$\n(^|\\.)cmcore\\.com$\n(^|\\.)cnxad\\.com$\n(^|\\.)cnzz\\.com$\n(^|\\.)cnzzlink\\.com$\n(^|\\.)cocounion\\.com$\n(^|\\.)coocaatv\\.com$\n(^|\\.)cooguo\\.com$\n(^|\\.)coolguang\\.com$\n(^|\\.)coremetrics\\.com$\n(^|\\.)cpmchina\\.co$\n(^|\\.)cpx24\\.com$\n(^|\\.)crasheye\\.cn$\n(^|\\.)crosschannel\\.com$\n(^|\\.)ctrmi\\.com$\n(^|\\.)customer-security\\.online$\n(^|\\.)daoyoudao\\.com$\n(^|\\.)datouniao\\.com$\n(^|\\.)ddapp\\.cn$\n(^|\\.)dianjoy\\.com$\n(^|\\.)dianru\\.com$\n(^|\\.)disqusads\\.com$\n(^|\\.)domob\\.cn$\n(^|\\.)domob\\.com\\.cn$\n(^|\\.)domob\\.org$\n(^|\\.)dotmore\\.com\\.tw$\n(^|\\.)doubleverify\\.com$\n(^|\\.)doudouguo\\.com$\n(^|\\.)doumob\\.com$\n(^|\\.)duanat\\.com$\n(^|\\.)duiba\\.com\\.cn$\n(^|\\.)duomeng\\.cn$\n(^|\\.)dxpmedia\\.com$\n(^|\\.)edigitalsurvey\\.com$\n(^|\\.)eduancm\\.com$\n(^|\\.)emarbox\\.com$\n(^|\\.)epsilon\\.com$\n(^|\\.)exosrv\\.com$\n(^|\\.)fancyapi\\.com$\n(^|\\.)feitian001\\.com$\n(^|\\.)feixin2\\.com$\n(^|\\.)flashtalking\\.com$\n(^|\\.)fraudmetrix\\.cn$\n(^|\\.)gentags\\.net$\n(^|\\.)gepush\\.com$\n(^|\\.)getui\\.com$\n(^|\\.)glispa\\.com$\n(^|\\.)go-mpulse$\n(^|\\.)go-mpulse\\.net$\n(^|\\.)godloveme\\.cn$\n(^|\\.)gridsum\\.com$\n(^|\\.)gridsumdissector\\.cn$\n(^|\\.)gridsumdissector\\.com$\n(^|\\.)growingio\\.com$\n(^|\\.)guohead\\.com$\n(^|\\.)guomob\\.com$\n(^|\\.)haoghost\\.com$\n(^|\\.)hivecn\\.cn$\n(^|\\.)hypers\\.com$\n(^|\\.)icast\\.cn$\n(^|\\.)igexin\\.com$\n(^|\\.)il8r\\.com$\n(^|\\.)imageter\\.com$\n(^|\\.)immob\\.cn$\n(^|\\.)inad\\.com$\n(^|\\.)inmobi\\.cn$\n(^|\\.)inmobi\\.net$\n(^|\\.)inmobicdn\\.cn$\n(^|\\.)inmobicdn\\.net$\n(^|\\.)innity\\.com$\n(^|\\.)instabug\\.com$\n(^|\\.)intely\\.cn$\n(^|\\.)iperceptions\\.com$\n(^|\\.)ipinyou\\.com$\n(^|\\.)irs01\\.com$\n(^|\\.)irs01\\.net$\n(^|\\.)irs09\\.com$\n(^|\\.)istreamsche\\.com$\n(^|\\.)jesgoo\\.com$\n(^|\\.)jiaeasy\\.net$\n(^|\\.)jiguang\\.cn$\n(^|\\.)jimdo\\.com$\n(^|\\.)jisucn\\.com$\n(^|\\.)jmgehn\\.cn$\n(^|\\.)jpush\\.cn$\n(^|\\.)jusha\\.com$\n(^|\\.)juzi\\.cn$\n(^|\\.)juzilm\\.com$\n(^|\\.)kejet\\.com$\n(^|\\.)kejet\\.net$\n(^|\\.)keydot\\.net$\n(^|\\.)keyrun\\.cn$\n(^|\\.)kmd365\\.com$\n(^|\\.)krux\\.net$\n(^|\\.)lnk0\\.com$\n(^|\\.)lnk8\\.cn$\n(^|\\.)localytics\\.com$\n(^|\\.)lomark\\.cn$\n(^|\\.)lotuseed\\.com$\n(^|\\.)lrswl\\.com$\n(^|\\.)lufax\\.com$\n(^|\\.)madhouse\\.cn$\n(^|\\.)madmini\\.com$\n(^|\\.)madserving\\.com$\n(^|\\.)magicwindow\\.cn$\n(^|\\.)mathtag\\.com$\n(^|\\.)maysunmedia\\.com$\n(^|\\.)mbai\\.cn$\n(^|\\.)mediaplex\\.com$\n(^|\\.)mediav\\.com$\n(^|\\.)megajoy\\.com$\n(^|\\.)meiqia\\.com$\n(^|\\.)mgogo\\.com$\n(^|\\.)miaozhen\\.com$\n(^|\\.)microad-cn\\.com$\n(^|\\.)miidi\\.net$\n(^|\\.)mijifen\\.com$\n(^|\\.)mixpanel\\.com$\n(^|\\.)mjmobi\\.com$\n(^|\\.)mng-ads\\.com$\n(^|\\.)moad\\.cn$\n(^|\\.)moatads\\.com$\n(^|\\.)mobaders\\.com$\n(^|\\.)mobclix\\.com$\n(^|\\.)mobgi\\.com$\n(^|\\.)mobisage\\.cn$\n(^|\\.)mobvista\\.com$\n(^|\\.)mopub\\.com$\n(^|\\.)moquanad\\.com$\n(^|\\.)mpush\\.cn$\n(^|\\.)mxpnl\\.com$\n(^|\\.)myhug\\.cn$\n(^|\\.)mzy2014\\.com$\n(^|\\.)networkbench\\.com$\n(^|\\.)newrelic\\.com$\n(^|\\.)ninebox\\.cn$\n(^|\\.)ntalker\\.com$\n(^|\\.)nylalobghyhirgh\\.com$\n(^|\\.)o2omobi\\.com$\n(^|\\.)oadz\\.com$\n(^|\\.)oneapm\\.com$\n(^|\\.)onetad\\.com$\n(^|\\.)optaim\\.com$\n(^|\\.)optimix\\.asia$\n(^|\\.)optimix\\.cn$\n(^|\\.)optimizely\\.com$\n(^|\\.)optimizelyapis\\.com$\n(^|\\.)overture\\.com$\n(^|\\.)p0y\\.cn$\n(^|\\.)pagechoice\\.net$\n(^|\\.)pingdom\\.net$\n(^|\\.)plugrush\\.com$\n(^|\\.)popin\\.cc$\n(^|\\.)pro\\.cn$\n(^|\\.)publicidad\\.net$\n(^|\\.)publicidad\\.tv$\n(^|\\.)pubmatic\\.com$\n(^|\\.)pubnub\\.com$\n(^|\\.)qcl777\\.com$\n(^|\\.)qiyou\\.com$\n(^|\\.)qtmojo\\.com$\n(^|\\.)quantcount\\.com$\n(^|\\.)qucaigg\\.com$\n(^|\\.)qumi\\.com$\n(^|\\.)qxxys\\.com$\n(^|\\.)reachmax\\.cn$\n(^|\\.)responsys\\.net$\n(^|\\.)revsci\\.net$\n(^|\\.)rlcdn\\.com$\n(^|\\.)rtbasia\\.com$\n(^|\\.)sanya1\\.com$\n(^|\\.)scupio\\.com$\n(^|\\.)serving-sys\\.com$\n(^|\\.)shuiguo\\.com$\n(^|\\.)shuzilm\\.cn$\n(^|\\.)similarweb\\.com$\n(^|\\.)sitemeter\\.com$\n(^|\\.)sitescout\\.com$\n(^|\\.)sitetag\\.us$\n(^|\\.)smartmad\\.com$\n(^|\\.)social-touch\\.com$\n(^|\\.)somecoding\\.com$\n(^|\\.)sponsorpay\\.com$\n(^|\\.)stargame\\.com$\n(^|\\.)stg8\\.com$\n(^|\\.)switchadhub\\.com$\n(^|\\.)sycbbs\\.com$\n(^|\\.)synacast\\.com$\n(^|\\.)sysdig\\.com$\n(^|\\.)tagtic\\.cn$\n(^|\\.)talkingdata\\.com$\n(^|\\.)talkingdata\\.net$\n(^|\\.)tansuotv\\.com$\n(^|\\.)tanv\\.com$\n(^|\\.)tanx\\.com$\n(^|\\.)tapjoy\\.cn$\n(^|\\.)th7\\.cn$\n(^|\\.)thoughtleadr\\.com$\n(^|\\.)tianmidian\\.com$\n(^|\\.)tiqcdn\\.com$\n(^|\\.)touclick\\.com$\n(^|\\.)trafficjam\\.cn$\n(^|\\.)trafficmp\\.com$\n(^|\\.)tuia\\.cn$\n(^|\\.)ueadlian\\.com$\n(^|\\.)uerzyr\\.cn$\n(^|\\.)ugdtimg\\.com$\n(^|\\.)ugvip\\.com$\n(^|\\.)ujian\\.cc$\n(^|\\.)ukeiae\\.com$\n(^|\\.)umeng\\.co$\n(^|\\.)umeng\\.com$\n(^|\\.)umtrack\\.com$\n(^|\\.)unimhk\\.com$\n(^|\\.)union-wifi\\.com$\n(^|\\.)union001\\.com$\n(^|\\.)unionsy\\.com$\n(^|\\.)unlitui\\.com$\n(^|\\.)uri6\\.com$\n(^|\\.)ushaqi\\.com$\n(^|\\.)usingde\\.com$\n(^|\\.)uuzu\\.com$\n(^|\\.)uyunad\\.com$\n(^|\\.)vamaker\\.com$\n(^|\\.)voiceads\\.cn$\n(^|\\.)voiceads\\.com$\n(^|\\.)vpon\\.com$\n(^|\\.)vungle\\.cn$\n(^|\\.)vungle\\.com$\n(^|\\.)waps\\.cn$\n(^|\\.)wapx\\.cn$\n(^|\\.)webterren\\.com$\n(^|\\.)whpxy\\.com$\n(^|\\.)winads\\.cn$\n(^|\\.)winasdaq\\.com$\n(^|\\.)wiyun\\.com$\n(^|\\.)wooboo\\.com\\.cn$\n(^|\\.)wqmobile\\.com$\n(^|\\.)wrating\\.com$\n(^|\\.)wumii\\.cn$\n(^|\\.)xcy8\\.com$\n(^|\\.)xdrig\\.com$\n(^|\\.)xiaozhen\\.com$\n(^|\\.)xibao100\\.com$\n(^|\\.)xtgreat\\.com$\n(^|\\.)xy\\.com$\n(^|\\.)yandui\\.com$\n(^|\\.)yigao\\.com$\n(^|\\.)yijifen\\.com$\n(^|\\.)yinooo\\.com$\n(^|\\.)yiqifa\\.com$\n(^|\\.)yiwk\\.com$\n(^|\\.)ylunion\\.com$\n(^|\\.)ymapp\\.com$\n(^|\\.)ymcdn\\.cn$\n(^|\\.)yongyuelm\\.com$\n(^|\\.)yooli\\.com$\n(^|\\.)youmi\\.net$\n(^|\\.)youxiaoad\\.com$\n(^|\\.)yoyi\\.com\\.cn$\n(^|\\.)yoyi\\.tv$\n(^|\\.)yrxmr\\.com$\n(^|\\.)ysjwj\\.com$\n(^|\\.)yunjiasu\\.com$\n(^|\\.)yunpifu\\.cn$\n(^|\\.)zampdsp\\.com$\n(^|\\.)zamplus\\.com$\n(^|\\.)zcdsp\\.com$\n(^|\\.)zhidian3g\\.cn$\n(^|\\.)zhiziyun\\.com$\n(^|\\.)zhjfad\\.com$\n(^|\\.)zqzxz\\.com$\n(^|\\.)zzsx8\\.com$\n\n# 广告联盟-国外****************\n(^|\\.)acuityplatform\\.com$\n(^|\\.)ad-stir\\.com$\n(^|\\.)ad-survey\\.com$\n(^|\\.)ad4game\\.com$\n(^|\\.)adcloud\\.jp$\n(^|\\.)adcolony\\.com$\n(^|\\.)addthis\\.com$\n(^|\\.)adfurikun\\.jp$\n(^|\\.)adhigh\\.net$\n(^|\\.)adhood\\.com$\n(^|\\.)adinall\\.com$\n(^|\\.)adition\\.com$\n(^|\\.)adk2x\\.com$\n(^|\\.)admarket\\.mobi$\n(^|\\.)admarvel\\.com$\n(^|\\.)admedia\\.com$\n(^|\\.)adnxs\\.com$\n(^|\\.)adotmob\\.com$\n(^|\\.)adperium\\.com$\n(^|\\.)adriver\\.ru$\n(^|\\.)adroll\\.com$\n(^|\\.)adsco\\.re$\n(^|\\.)adservice\\.com$\n(^|\\.)adsrvr\\.org$\n(^|\\.)adsymptotic\\.com$\n(^|\\.)adtaily\\.com$\n(^|\\.)adtech\\.de$\n(^|\\.)adtechjp\\.com$\n(^|\\.)adtechus\\.com$\n(^|\\.)airpush\\.com$\n(^|\\.)am15\\.net$\n(^|\\.)amobee\\.com$\n(^|\\.)appier\\.net$\n(^|\\.)applift\\.com$\n(^|\\.)apsalar\\.com$\n(^|\\.)atas\\.io$\n(^|\\.)awempire\\.com$\n(^|\\.)axonix\\.com$\n(^|\\.)beintoo\\.com$\n(^|\\.)bepolite\\.eu$\n(^|\\.)bidtheatre\\.com$\n(^|\\.)bidvertiser\\.com$\n(^|\\.)blismedia\\.com$\n(^|\\.)brucelead\\.com$\n(^|\\.)bttrack\\.com$\n(^|\\.)casalemedia\\.com$\n(^|\\.)channeladvisor\\.com$\n(^|\\.)connexity\\.net$\n(^|\\.)criteo\\.com$\n(^|\\.)criteo\\.net$\n(^|\\.)csbew\\.com$\n(^|\\.)demdex\\.net$\n(^|\\.)directrev\\.com$\n(^|\\.)dumedia\\.ru$\n(^|\\.)effectivemeasure\\.com$\n(^|\\.)effectivemeasure\\.net$\n(^|\\.)eqads\\.com$\n(^|\\.)everesttech\\.net$\n(^|\\.)exoclick\\.com$\n(^|\\.)extend\\.tv$\n(^|\\.)eyereturn\\.com$\n(^|\\.)fastapi\\.net$\n(^|\\.)fastclick\\.com$\n(^|\\.)fastclick\\.net$\n(^|\\.)flurry\\.com$\n(^|\\.)gosquared\\.com$\n(^|\\.)gtags\\.net$\n(^|\\.)heyzap\\.com$\n(^|\\.)histats\\.com$\n(^|\\.)hitslink\\.com$\n(^|\\.)hot-mob\\.com$\n(^|\\.)hyperpromote\\.com$\n(^|\\.)i-mobile\\.co\\.jp$\n(^|\\.)imrworldwide\\.com$\n(^|\\.)inmobi\\.com$\n(^|\\.)intentiq\\.com$\n(^|\\.)inter1ads\\.com$\n(^|\\.)ipredictive\\.com$\n(^|\\.)ironsrc\\.com$\n(^|\\.)iskyworker\\.com$\n(^|\\.)jizzads\\.com$\n(^|\\.)juicyads\\.com$\n(^|\\.)kochava\\.com$\n(^|\\.)leadbolt\\.com$\n(^|\\.)leadbolt\\.net$\n(^|\\.)leadboltads\\.net$\n(^|\\.)leadboltapps\\.net$\n(^|\\.)leadboltmobile\\.net$\n(^|\\.)lenzmx\\.com$\n(^|\\.)liveadvert\\.com$\n(^|\\.)marketgid\\.com$\n(^|\\.)marketo\\.com$\n(^|\\.)mdotm\\.com$\n(^|\\.)medialytics\\.com$\n(^|\\.)medialytics\\.io$\n(^|\\.)meetrics\\.com$\n(^|\\.)meetrics\\.net$\n(^|\\.)mgid\\.com$\n(^|\\.)millennialmedia\\.com$\n(^|\\.)mobadme\\.jp$\n(^|\\.)mobfox\\.com$\n(^|\\.)mobileadtrading\\.com$\n(^|\\.)mobilityware\\.com$\n(^|\\.)mookie1\\.com$\n(^|\\.)msads\\.net$\n(^|\\.)mydas\\.mobi$\n(^|\\.)nend\\.net$\n(^|\\.)netshelter\\.net$\n(^|\\.)nexage\\.com$\n(^|\\.)owneriq\\.net$\n(^|\\.)pixels\\.asia$\n(^|\\.)plista\\.com$\n(^|\\.)popads\\.net$\n(^|\\.)powerlinks\\.com$\n(^|\\.)propellerads\\.com$\n(^|\\.)quantserve\\.com$\n(^|\\.)rayjump\\.com$\n(^|\\.)revdepo\\.com$\n(^|\\.)rubiconproject\\.com$\n(^|\\.)sape\\.ru$\n(^|\\.)scorecardresearch\\.com$\n(^|\\.)segment\\.com$\n(^|\\.)serving-sys\\.com$\n(^|\\.)sharethis\\.com$\n(^|\\.)smaato\\.com$\n(^|\\.)smaato\\.net$\n(^|\\.)smartadserver\\.com$\n(^|\\.)smartnews-ads\\.com$\n(^|\\.)startapp\\.com$\n(^|\\.)startappexchange\\.com$\n(^|\\.)statcounter\\.com$\n(^|\\.)steelhousemedia\\.com$\n(^|\\.)stickyadstv\\.com$\n(^|\\.)supersonic\\.com$\n(^|\\.)tapjoy\\.com$\n(^|\\.)tapjoyads\\.com$\n(^|\\.)trafficjunky\\.com$\n(^|\\.)tribalfusion\\.com$\n(^|\\.)turn\\.com$\n(^|\\.)vidoomy\\.com$\n(^|\\.)viglink\\.com$\n(^|\\.)voicefive\\.com$\n(^|\\.)wedolook\\.com$\n(^|\\.)yadro\\.ru$\n(^|\\.)yengo\\.com$\n(^|\\.)zedo\\.com$\n(^|\\.)zemanta\\.com$\n\n# 垃圾网站\n(^|\\.)11h5\\.com$\n(^|\\.)1kxun\\.mobi$\n(^|\\.)519397\\.com$\n(^|\\.)626uc\\.com$\n(^|\\.)915\\.com$\n(^|\\.)appget\\.cn$\n(^|\\.)appuu\\.cn$\n(^|\\.)coinhive\\.com$\n(^|\\.)huodonghezi\\.cn$\n(^|\\.)wanfeng1\\.com$\n(^|\\.)wep016\\.top\n(^|\\.)win-stock\\.com\\.cn$\n(^|\\.)zantainet\\.com$\n\n### 运营商广告\n(^|\\.)\\w\\w(\\w|)dnserror\\d(\\d|)\\.wo\\.com\\.cn\n(^|\\.)114so\\.cn$\n(^|\\.)go\\.10086\\.cn$\n(^|\\.)navi\\.gd\\.chinamobile\\.com$\n(^|\\.)hivedata\\.cc$\n\n# 运营商广告IP段\n1.3.0.10/32\n10.72.25.0/24\n23.42.186.24/32\n23.66.147.48/32\n23.235.156.167/32\n27.255.67.120/32\n42.51.146.207/32\n45.34.240.72/32\n46.165.197.153/32\n46.165.197.231/32\n47.89.59.182/32\n47.90.50.177/32\n47.93.103.196/32\n47.94.89.32/32\n47.96.162.122/32\n58.215.179.159/32\n60.19.29.16/28\n60.19.29.21/28\n60.190.139.164/32\n60.191.124.196/32\n60.210.17.0/24\n60.210.17.12/24\n61.129.70.132/32\n61.132.216.232/32\n61.132.221.146/32\n61.132.255.128/25\n61.132.255.212/32\n61.132.255.222/25\n61.147.184.18/32\n61.152.223.15/32\n61.160.200.223/32\n61.160.200.242/32\n61.160.200.252/32\n61.174.50.128/25\n61.174.50.167/25\n61.191.12.74/32\n61.191.206.4/32\n67.229.224.28/32\n69.28.57.245/32\n74.117.182.77/32\n78.140.131.214/32\n101.201.29.182/32\n101.251.211.235/32\n103.249.254.113/32\n104.195.62.12/32\n104.197.140.120/32\n104.198.198.188/32\n106.75.65.90/32\n106.75.65.92/32\n106.187.95.251/32\n107.21.113.76/32\n108.171.248.234/32\n111.30.135.167/32\n111.63.135.0/24\n111.73.45.147/32\n111.175.220.160/29\n111.175.220.164/32\n111.206.13.0/24\n111.206.22.0/24\n112.74.95.46/32\n112.124.115.215/32\n113.57.230.88/32\n113.207.57.24/32\n114.55.123.44/32\n114.95.102.77/32\n114.247.28.96/32\n115.29.141.121/32\n115.29.247.48/32\n115.182.16.79/32\n116.55.227.242/32\n116.206.22.7/32\n117.25.133.209/32\n117.144.242.32/32\n118.144.88.126/32\n118.144.88.208/28\n118.144.88.215/28\n118.144.88.215/32\n119.4.249.166/32\n119.188.13.0/24\n120.26.151.246/32\n120.27.34.156/32\n120.55.199.139/32\n120.76.189.132/32\n120.80.57.123/32\n120.132.57.41/32\n120.132.63.203/32\n120.197.89.239/32\n120.198.116.0/24\n121.15.207.243/32\n121.43.75.169/32\n121.199.73.185/32\n121.201.11.95/32\n121.201.108.2/32\n121.251.255.0/24\n122.225.103.120/32\n122.226.223.163/32\n122.227.254.195/32\n122.228.236.165/32\n123.56.152.96/32\n123.57.94.184/32\n123.57.162.39/32\n123.59.78.229/32\n123.59.152.170/32\n123.125.111.0/24\n123.139.154.0/24\n123.139.154.201/24\n124.14.21.147/32\n124.14.21.151/32\n124.160.194.11/32\n124.232.160.178/32\n125.46.61.28/32\n125.89.69.5/32\n139.159.32.82/32\n139.196.239.52/32\n139.224.26.92/32\n139.224.74.148/32\n146.148.85.61/32\n162.212.181.32/32\n173.208.177.227/32\n175.6.223.15/32\n180.76.155.58/32\n180.76.162.60/32\n180.76.171.28/32\n180.76.172.149/32\n180.76.181.213/32\n180.166.52.24/32\n182.92.81.104/32\n183.6.188.224/29\n183.6.188.226/29\n183.59.53.184/29\n183.59.53.187/29\n183.59.53.237/32\n183.131.79.30/32\n183.131.79.130/32\n198.40.52.11/32\n202.104.1.27/32\n202.105.165.202/32\n205.209.138.102/32\n211.98.71.192/29\n211.98.71.195/29\n211.103.159.32/32\n211.137.132.89/32\n211.139.178.49/32\n211.149.225.23/32\n211.167.105.131/32\n218.25.246.118/32\n218.93.127.37/32\n219.234.83.60/32\n220.115.251.25/32\n220.196.52.141/32\n221.179.46.128/25\n221.179.46.190/25\n221.179.140.0/24\n221.179.183.0/24\n221.179.191.0/24\n221.204.213.222/32\n221.228.17.152/32\n221.228.214.101/32\n221.231.6.79/32\n222.73.156.235/32\n222.186.61.91/32\n222.186.61.95/32\n222.186.61.96/32\n222.186.61.97/32\n222.187.226.96/32\n223.6.255.99/32\n\n#**********************************************************************\n[bypass_list]\n# 本地/局域网地址\n^(.*\\.)?local$\n^(.*\\.)?localhost$\n^(.*\\.)?ip6-localhost$\n^(.*\\.)?ip6-loopback$\n\n# Google China\n(^|\\.)265\\.com$\n(^|\\.)2mdn\\.net$\n(^|\\.)alt[0-8]-mtalk\\.google\\.com$\n(^|\\.)app-measurement\\.com$\n(^|\\.)beacons\\.gcp\\.gvt2\\.com$\n(^|\\.)beacons\\.gvt2\\.com$\n(^|\\.)beacons3\\.gvt2\\.com$\n(^|\\.)c\\.android\\.clients\\.google\\.com$\n(^|\\.)cache\\.pack\\.google\\.com$\n(^|\\.)checkin\\.gstatic\\.com$\n(^|\\.)clickserve\\.dartsearch\\.net$\n(^|\\.)clientservices\\.googleapis\\.com$\n(^|\\.)connectivitycheck\\.gstatic\\.com$\n(^|\\.)crl\\.pki\\.goog$\n(^|\\.)dl\\.google\\.com$\n(^|\\.)dl\\.l\\.google\\.com$\n(^|\\.)fonts\\.googleapis\\.com$\n(^|\\.)fonts\\.gstatic\\.com$\n(^|\\.)googletagmanager\\.com$\n(^|\\.)googletagservices\\.com$\n(^|\\.)gtm\\.oasisfeng\\.com$\n(^|\\.)imasdk\\.googleapis\\.com$\n(^|\\.)kh\\.google\\.com$\n(^|\\.)khm\\.google\\.com$\n(^|\\.)khm\\.googleapis\\.com$\n(^|\\.)khm0\\.google\\.com$\n(^|\\.)khm0\\.googleapis\\.com$\n(^|\\.)khm1\\.google\\.com$\n(^|\\.)khm1\\.googleapis\\.com$\n(^|\\.)khm2\\.google\\.com$\n(^|\\.)khm2\\.googleapis\\.com$\n(^|\\.)khm3\\.google\\.com$\n(^|\\.)khm3\\.googleapis\\.com$\n(^|\\.)khmdb\\.google\\.com$\n(^|\\.)khmdb\\.googleapis\\.com$\n(^|\\.)mtalk\\.google\\.com$\n(^|\\.)ocsp\\.pki\\.goog$\n(^|\\.)recaptcha\\.net$\n(^|\\.)redirector\\.gvt1\\.com$\n(^|\\.)safebrowsing-cache\\.google\\.com$\n(^|\\.)safebrowsing\\.googleapis\\.com$\n(^|\\.)settings\\.crashlytics\\.com$\n(^|\\.)ssl-google-analytics\\.l\\.google\\.com$\n(^|\\.)ssl\\.gstatic\\.com$\n(^|\\.)toolbarqueries\\.google\\.com$\n(^|\\.)tools\\.google\\.com$\n(^|\\.)tools\\.l\\.google\\.com$\n(^|\\.)update\\.googleapis\\.com$\n(^|\\.)www-googletagmanager\\.l\\.google\\.com$\n(^|\\.)www\\.gstatic\\.com$\n\n# Router managed 路由器管理域名\n(^|\\.)hiwifi\\.com$\n(^|\\.)leike\\.cc$\n(^|\\.)miwifi\\.com$\n(^|\\.)my\\.router$\n(^|\\.)p\\.to$\n(^|\\.)peiluyou\\.com$\n(^|\\.)phicomm\\.me$\n(^|\\.)routerlogin\\.com$\n(^|\\.)tendawifi\\.com$\n(^|\\.)zte\\.home$\n(^|\\.)router\\.asus\\.com$\n\n::ffff:0:0:0:0/1\n::ffff:128:0:0:0/1\n10.0.0.0/8\n100.64.0.0/10\n127.0.0.0/8\n172.16.0.0/12\n192.168.0.0/16\n\n#**********************************************************************\n[proxy_list]\n\n# MyList\n(^|\\.)bit\\.no\\.com$\n(^|\\.)btlibrary\\.me$\n(^|\\.)cccat\\.io$\n(^|\\.)cloudcone\\.com$\n(^|\\.)gameloft\\.com$\n(^|\\.)inoreader\\.com$\n(^|\\.)ip138\\.com$\n(^|\\.)ping\\.pe$\n(^|\\.)reddit\\.com$\n(^|\\.)teddysun\\.com$\n(^|\\.)textnow\\.com$\n(^|\\.)tumbex\\.com$\n(^|\\.)twdvd\\.com$\n(^|\\.)unsplash\\.com$\n(^|\\.)xn--i2ru8q2qg\\.com$\n(^|\\.)yunpanjingling\\.com$\n(^|\\.)ec2-54-210-142-85\\.computer-1\\.amazonaws\\.com$\n(^|\\.)ec2-54-174-24-124\\.computer-1\\.amazonaws\\.com$\n(^|\\.)ec2-54-174-178-70\\.computer-1\\.amazonaws\\.com$\n(^|\\.)ec2-54-175-2-194\\.computer-1\\.amazonaws\\.com$\n(^|\\.)ec2-54-210-54-246\\.computer-1\\.amazonaws\\.com$\n\n# 国外域名\n^.*\\.hk$\n^.*\\.jp$\n^.*\\.kr$\n^.*\\.sg$\n^.*\\.tw$\n^.*\\.uk$\n^.*\\.us$\n\n# 国外域名关键字\n(^|\\.)\\w*1e100\\w*\\.\\w*$\n(^|\\.)\\w*abema\\w*\\.\\w*$\n(^|\\.)\\w*appledaily\\w*\\.\\w*$\n(^|\\.)\\w*avtb\\w*\\.\\w*$\n(^|\\.)\\w*beetalk\\w*\\.\\w*$\n(^|\\.)\\w*blogspot\\w*\\.\\w*$\n(^|\\.)\\w*dropbox\\w*\\.\\w*$\n(^|\\.)\\w*facebook\\w*\\.\\w*$\n(^|\\.)\\w*fbcdn\\w*\\.\\w*$\n(^|\\.)\\w*github\\w*\\.\\w*$\n(^|\\.)\\w*gmail\\w*\\.\\w*$\n(^|\\.)\\w*google\\w*\\.\\w*$\n(^|\\.)\\w*instagram\\w*\\.\\w*$\n(^|\\.)\\w*porn\\w*\\.\\w*$\n(^|\\.)\\w*sci-hub\\w*\\.\\w*$\n(^|\\.)\\w*spotify\\w*\\.\\w*$\n(^|\\.)\\w*telegram\\w*\\.\\w*$\n(^|\\.)\\w*twitter\\w*\\.\\w*$\n(^|\\.)\\w*whatsapp\\w*\\.\\w*$\n(^|\\.)\\w*youtube\\w*\\.\\w*$\n\n# Google DNS\n8.8.8.8\n8.8.4.4\n\n#GFWList IP start\n14.102.250.18\n14.102.250.19\n38.103.165.50\n50.7.31.230\n67.220.91.15\n67.220.91.18\n67.220.91.23\n69.65.19.160\n72.52.81.22\n85.17.73.31\n174.142.105.153\n199.59.148.20\n#GFWList IP end\n1.238.223.154\n14.8.71.128\n14.198.143.94\n36.225.167.32\n36.234.188.130\n39.119.179.177\n42.98.107.223\n42.98.107.223\n45.32.39.1\n45.76.49.238\n46.166.148.135\n59.126.95.195\n61.230.0.128\n83.149.70.38\n94.100.18.172\n94.100.22.212\n95.211.214.34\n112.119.29.49\n112.119.90.171\n112.168.224.141\n114.199.145.219\n114.199.145.219\n116.48.111.236\n116.48.111.236\n118.34.169.15\n119.77.178.211\n124.168.108.15\n140.112.53.243\n168.70.106.171\n203.222.24.93\n218.161.37.206\n220.132.16.173\n\n#GFWList\n(^|\\.)030buy\\.com$\n(^|\\.)0rz\\.tw$\n(^|\\.)1000giri\\.net$\n(^|\\.)100ke\\.org$\n(^|\\.)10conditionsoflove\\.com$\n(^|\\.)10musume\\.com$\n(^|\\.)10\\.tt$\n(^|\\.)123rf\\.com$\n(^|\\.)12bet\\.com$\n(^|\\.)12vpn\\.com$\n(^|\\.)12vpn\\.net$\n(^|\\.)138\\.com$\n(^|\\.)141hongkong\\.com$\n(^|\\.)141jj\\.com$\n(^|\\.)141tube\\.com$\n(^|\\.)1688\\.com\\.au$\n(^|\\.)173ng\\.com$\n(^|\\.)177pic\\.info$\n(^|\\.)17t17p\\.com$\n(^|\\.)18board\\.com$\n(^|\\.)18board\\.info$\n(^|\\.)18onlygirls\\.com$\n(^|\\.)18p2p\\.com$\n(^|\\.)18virginsex\\.com$\n(^|\\.)1949er\\.org$\n(^|\\.)1984bbs\\.com$\n(^|\\.)1984bbs\\.org$\n(^|\\.)1989report\\.hkja\\.org\\.hk$\n(^|\\.)1991way\\.com$\n(^|\\.)1998cdp\\.org$\n(^|\\.)1-apple\\.com\\.tw$\n(^|\\.)1bao\\.org$\n(^|\\.)1dumb\\.com$\n(^|\\.)1e100\\.net$\n(^|\\.)1eew\\.com$\n(^|\\.)1mobile\\.com$\n(^|\\.)1mobile\\.tw$\n(^|\\.)1pondo\\.tv$\n(^|\\.)2000fun\\.com$\n(^|\\.)2008xianzhang\\.info$\n(^|\\.)2017\\.hk$\n(^|\\.)21andy\\.com$\n(^|\\.)21join\\.com$\n(^|\\.)21pron\\.com$\n(^|\\.)21sextury\\.com$\n(^|\\.)228\\.net\\.tw$\n(^|\\.)233abc\\.com$\n(^|\\.)24hrs\\.ca$\n(^|\\.)24smile\\.org$\n(^|\\.)25u\\.com$\n(^|\\.)2-hand\\.info$\n(^|\\.)2lipstube\\.com$\n(^|\\.)2shared\\.com$\n(^|\\.)2waky\\.com$\n(^|\\.)30boxes\\.com$\n(^|\\.)315lz\\.com$\n(^|\\.)32red\\.com$\n(^|\\.)36rain\\.com$\n(^|\\.)3a5a\\.com$\n(^|\\.)3-a\\.net$\n(^|\\.)3arabtv\\.com$\n(^|\\.)3boys2girls\\.com$\n(^|\\.)3d-game\\.com$\n(^|\\.)3proxy\\.ru$\n(^|\\.)3ren\\.ca$\n(^|\\.)3tui\\.net$\n(^|\\.)43110\\.cf$\n(^|\\.)466453\\.com$\n(^|\\.)4bluestones\\.biz$\n(^|\\.)4chan\\.com$\n(^|\\.)4dq\\.com$\n(^|\\.)4everproxy\\.com$\n(^|\\.)4irc\\.com$\n(^|\\.)4mydomain\\.com$\n(^|\\.)4pu\\.com$\n(^|\\.)4rbtv\\.com$\n(^|\\.)4shared\\.com$\n(^|\\.)4sqi\\.net$\n(^|\\.)51\\.ca$\n(^|\\.)51jav\\.org$\n(^|\\.)51luoben\\.com$\n(^|\\.)5278\\.cc$\n(^|\\.)5299\\.tv$\n(^|\\.)56cun04\\.jigsy\\.com$\n(^|\\.)5aimiku\\.com$\n(^|\\.)5i01\\.com$\n(^|\\.)5isotoi5\\.org$\n(^|\\.)5maodang\\.com$\n(^|\\.)63i\\.com$\n(^|\\.)64museum\\.org$\n(^|\\.)64tianwang\\.com$\n(^|\\.)64wiki\\.com$\n(^|\\.)666kb\\.com$\n(^|\\.)66\\.ca$\n(^|\\.)6park\\.com$\n(^|\\.)6parker\\.com$\n(^|\\.)6parknews\\.com$\n(^|\\.)7capture\\.com$\n(^|\\.)7cow\\.com$\n(^|\\.)85cc\\.net$\n(^|\\.)85cc\\.us$\n(^|\\.)85st\\.com$\n(^|\\.)881903\\.com$\n(^|\\.)888\\.com$\n(^|\\.)888poker\\.com$\n(^|\\.)89\\.64\\.charter\\.constitutionalism\\.solutions$\n(^|\\.)89-64\\.org$\n(^|\\.)8-d\\.com$\n(^|\\.)8news\\.com\\.tw$\n(^|\\.)8z1\\.net$\n(^|\\.)9001700\\.com$\n(^|\\.)908taiwan\\.org$\n(^|\\.)91porn\\.com$\n(^|\\.)91vps\\.club$\n(^|\\.)92ccav\\.com$\n(^|\\.)991\\.com$\n(^|\\.)99btgc01\\.com$\n(^|\\.)99cn\\.info$\n(^|\\.)9bis\\.com$\n(^|\\.)9bis\\.net$\n(^|\\.)9gag\\.com$\n(^|\\.)a248\\.e\\.akamai\\.net$\n(^|\\.)a5\\.com\\.ru$\n(^|\\.)aamacau\\.com$\n(^|\\.)abc\\.com$\n(^|\\.)abchinese\\.com$\n(^|\\.)abclite\\.net$\n(^|\\.)abc\\.net\\.au$\n(^|\\.)abc\\.pp\\.ru$\n(^|\\.)abc\\.xyz$\n(^|\\.)abebooks\\.com$\n(^|\\.)abematv\\.akamaized\\.net$\n(^|\\.)abitno\\.linpie\\.com$\n(^|\\.)ablwang\\.com$\n(^|\\.)aboluowang\\.com$\n(^|\\.)aboutgfw\\.com$\n(^|\\.)about\\.google$\n(^|\\.)abs\\.edu$\n(^|\\.)accim\\.org$\n(^|\\.)aceros-de-hispania\\.com$\n(^|\\.)acevpn\\.com$\n(^|\\.)acg18\\.me$\n(^|\\.)acgkj\\.com$\n(^|\\.)ac\\.jiruan\\.net$\n(^|\\.)acmedia365\\.com$\n(^|\\.)acmetoy\\.com$\n(^|\\.)acnw\\.com\\.au$\n(^|\\.)actfortibet\\.org$\n(^|\\.)actimes\\.com\\.au$\n(^|\\.)activpn\\.com$\n(^|\\.)aculo\\.us$\n(^|\\.)adcex\\.com$\n(^|\\.)addictedtocoffee\\.de$\n(^|\\.)adelaidebbs\\.com$\n(^|\\.)admin\\.recaptcha\\.net$\n(^|\\.)admob\\.com$\n(^|\\.)adpl\\.org\\.hk$\n(^|\\.)adsense\\.com$\n(^|\\.)ads-twitter\\.com$\n(^|\\.)adult\\.friendfinder\\.com$\n(^|\\.)adultfriendfinder\\.com$\n(^|\\.)adultkeep\\.net$\n(^|\\.)adult-sex-games\\.com$\n(^|\\.)advanscene\\.com$\n(^|\\.)advertfan\\.com$\n(^|\\.)ae\\.hao123\\.com$\n(^|\\.)aenhancers\\.com$\n(^|\\.)ae\\.org$\n(^|\\.)aex\\.com$\n(^|\\.)afantibbs\\.com$\n(^|\\.)af\\.mil$\n(^|\\.)agnesb\\.fr$\n(^|\\.)agoogleaday\\.com$\n(^|\\.)agro\\.hk$\n(^|\\.)ai\\.binwang\\.me$\n(^|\\.)ai\\.google$\n(^|\\.)ai-kan\\.net$\n(^|\\.)aiph\\.net$\n(^|\\.)airasia\\.com$\n(^|\\.)airconsole\\.com$\n(^|\\.)airvpn\\.org$\n(^|\\.)aisex\\.com$\n(^|\\.)aiss\\.anws\\.gov\\.tw$\n(^|\\.)ait\\.org\\.tw$\n(^|\\.)aiweiweiblog\\.com$\n(^|\\.)aiweiwei\\.com$\n(^|\\.)ai-wen\\.net$\n(^|\\.)akademiye\\.org$\n(^|\\.)akamaihd\\.net$\n(^|\\.)akiba-online\\.com$\n(^|\\.)akiba-web\\.com$\n(^|\\.)akow\\.org$\n(^|\\.)alabout\\.com$\n(^|\\.)alanhou\\.com$\n(^|\\.)alarab\\.qa$\n(^|\\.)alasbarricadas\\.org$\n(^|\\.)alexlur\\.org$\n(^|\\.)alforattv\\.net$\n(^|\\.)alhayat\\.com$\n(^|\\.)alicejapan\\.co\\.jp$\n(^|\\.)aliengu\\.com$\n(^|\\.)al-islam\\.com$\n(^|\\.)alkasir\\.com$\n(^|\\.)allcoin\\.com$\n(^|\\.)allconnected\\.co$\n(^|\\.)alldrawnsex\\.com$\n(^|\\.)allervpn\\.com$\n(^|\\.)allfinegirls\\.com$\n(^|\\.)allgirlmassage\\.com$\n(^|\\.)allgirlsallowed\\.org$\n(^|\\.)allgravure\\.com$\n(^|\\.)alliance\\.org\\.hk$\n(^|\\.)allinfa\\.com$\n(^|\\.)alljackpotscasino\\.com$\n(^|\\.)allmovie\\.com$\n(^|\\.)allowed\\.org$\n(^|\\.)almasdarnews\\.com$\n(^|\\.)almostmy\\.com$\n(^|\\.)alphaporno\\.com$\n(^|\\.)al-qimmah\\.net$\n(^|\\.)alternate-tools\\.com$\n(^|\\.)alternativeto\\.net$\n(^|\\.)altrec\\.com$\n(^|\\.)alvinalexander\\.com$\n(^|\\.)alwaysdata\\.com$\n(^|\\.)alwaysdata\\.net$\n(^|\\.)alwaysvpn\\.com$\n(^|\\.)am730\\.com\\.hk$\n(^|\\.)amazon\\.co\\.jp$\n(^|\\.)amazon\\.com$\n(^|\\.)ameblo\\.jp$\n(^|\\.)americangreencard\\.com$\n(^|\\.)americanunfinished\\.com$\n(^|\\.)amiblockedornot\\.com$\n(^|\\.)amigobbs\\.net$\n(^|\\.)amitabhafoundation\\.us$\n(^|\\.)amnesty\\.org$\n(^|\\.)amnesty\\.org\\.hk$\n(^|\\.)amnesty\\.tw$\n(^|\\.)amnestyusa\\.org$\n(^|\\.)amnyemachen\\.org$\n(^|\\.)amoiist\\.com$\n(^|\\.)ampproject\\.org$\n(^|\\.)amtb-taipei\\.org$\n(^|\\.)anchorfree\\.com$\n(^|\\.)ancsconf\\.org$\n(^|\\.)andfaraway\\.net$\n(^|\\.)android\\.com$\n(^|\\.)androidify\\.com$\n(^|\\.)androidplus\\.co$\n(^|\\.)androidtv\\.com$\n(^|\\.)android-x86\\.org$\n(^|\\.)andygod\\.com$\n(^|\\.)angela-merkel\\.de$\n(^|\\.)angelfire\\.com$\n(^|\\.)angola\\.org$\n(^|\\.)angularjs\\.org$\n(^|\\.)animecrazy\\.net$\n(^|\\.)animeshippuuden\\.com$\n(^|\\.)aniscartujo\\.com$\n(^|\\.)annatam\\.com$\n(^|\\.)anobii\\.com$\n(^|\\.)anontext\\.com$\n(^|\\.)anonymise\\.us$\n(^|\\.)anonymitynetwork\\.com$\n(^|\\.)anonymizer\\.com$\n(^|\\.)anonymouse\\.org$\n(^|\\.)a-normal-day\\.com$\n(^|\\.)anpopo\\.com$\n(^|\\.)answering-islam\\.org$\n(^|\\.)anthonycalzadilla\\.com$\n(^|\\.)anti1984\\.com$\n(^|\\.)antichristendom\\.com$\n(^|\\.)antiwave\\.net$\n(^|\\.)anyporn\\.com$\n(^|\\.)anysex\\.com$\n(^|\\.)aobo\\.com\\.au$\n(^|\\.)aofriend\\.com$\n(^|\\.)aofriend\\.com\\.au$\n(^|\\.)aojiao\\.org$\n(^|\\.)aolchannels\\.aol\\.com$\n(^|\\.)aomiwang\\.com$\n(^|\\.)apartmentratings\\.com$\n(^|\\.)apartments\\.com$\n(^|\\.)apetube\\.com$\n(^|\\.)api\\.ai$\n(^|\\.)apiary\\.io$\n(^|\\.)apidocs\\.linksalpha\\.com$\n(^|\\.)api\\.dropboxapi\\.com$\n(^|\\.)apigee\\.com$\n(^|\\.)api\\.linksalpha\\.com$\n(^|\\.)api\\.proxlet\\.com$\n(^|\\.)api\\.pureapk\\.com$\n(^|\\.)api\\.recaptcha\\.net$\n(^|\\.)api-secure\\.recaptcha\\.net$\n(^|\\.)api-verify\\.recaptcha\\.net$\n(^|\\.)apk-dl\\.com$\n(^|\\.)apkdler\\.com$\n(^|\\.)apkmirror\\.com$\n(^|\\.)apkmonk\\.com$\n(^|\\.)apkplz\\.com$\n(^|\\.)apkpure\\.com$\n(^|\\.)aplusvpn\\.com$\n(^|\\.)app\\.box\\.com$\n(^|\\.)appdownloader\\.net$\n(^|\\.)app\\.heywire\\.com$\n(^|\\.)appledaily\\.com$\n(^|\\.)appledaily\\.com\\.hk$\n(^|\\.)appledaily\\.com\\.tw$\n(^|\\.)appshopper\\.com$\n(^|\\.)app\\.smartmailcloud\\.com$\n(^|\\.)appsocks\\.net$\n(^|\\.)appspot\\.com$\n(^|\\.)appsto\\.re$\n(^|\\.)app\\.tutanota\\.com$\n(^|\\.)aptoide\\.com$\n(^|\\.)archive\\.fo$\n(^|\\.)archive\\.is$\n(^|\\.)archive\\.li$\n(^|\\.)archive\\.org$\n(^|\\.)archives\\.gov$\n(^|\\.)archives\\.gov\\.tw$\n(^|\\.)archive\\.today$\n(^|\\.)arctosia\\.com$\n(^|\\.)areca-backup\\.org$\n(^|\\.)arena\\.taipei$\n(^|\\.)arethusa\\.su$\n(^|\\.)ar\\.hao123\\.com$\n(^|\\.)arlingtoncemetery\\.mil$\n(^|\\.)army\\.mil$\n(^|\\.)art4tibet1998\\.org$\n(^|\\.)arte\\.tv$\n(^|\\.)artofpeacefoundation\\.org$\n(^|\\.)artstation\\.com$\n(^|\\.)artsy\\.net$\n(^|\\.)asacp\\.org$\n(^|\\.)asdfg\\.jp$\n(^|\\.)asg\\.to$\n(^|\\.)asia-gaming\\.com$\n(^|\\.)asiaharvest\\.org$\n(^|\\.)asianews\\.it$\n(^|\\.)asiansexdiary\\.com$\n(^|\\.)asianspiss\\.com$\n(^|\\.)asianwomensfilm\\.de$\n(^|\\.)asiatgp\\.com$\n(^|\\.)asiatoday\\.us$\n(^|\\.)askstudent\\.com$\n(^|\\.)askynz\\.net$\n(^|\\.)assembla\\.com$\n(^|\\.)assets\\.bwbx\\.io$\n(^|\\.)assimp\\.org$\n(^|\\.)astrill\\.com$\n(^|\\.)atchinese\\.com$\n(^|\\.)atc\\.org\\.au$\n(^|\\.)atdmt\\.com$\n(^|\\.)atgfw\\.org$\n(^|\\.)athenaeizou\\.com$\n(^|\\.)atlanta168\\.com$\n(^|\\.)atlaspost\\.com$\n(^|\\.)atnext\\.com$\n(^|\\.)authorizeddns\\.net$\n(^|\\.)authorizeddns\\.org$\n(^|\\.)authorizeddns\\.us$\n(^|\\.)autodraw\\.com$\n(^|\\.)avaaz\\.org$\n(^|\\.)avbody\\.tv$\n(^|\\.)avcity\\.tv$\n(^|\\.)av\\.com$\n(^|\\.)avcool\\.com$\n(^|\\.)avdb\\.in$\n(^|\\.)avdb\\.tv$\n(^|\\.)av-e-body\\.com$\n(^|\\.)avfantasy\\.com$\n(^|\\.)avg\\.com$\n(^|\\.)avgle\\.com$\n(^|\\.)avidemux\\.org$\n(^|\\.)avmoo\\.com$\n(^|\\.)avmoo\\.net$\n(^|\\.)avmoo\\.pw$\n(^|\\.)avmo\\.pw$\n(^|\\.)av\\.movie$\n(^|\\.)av\\.nightlife141\\.com$\n(^|\\.)avoision\\.com$\n(^|\\.)avyahoo\\.com$\n(^|\\.)axureformac\\.com$\n(^|\\.)azerbaycan\\.tv$\n(^|\\.)azerimix\\.com$\n(^|\\.)azubu\\.tv$\n(^|\\.)azurewebsites\\.net$\n(^|\\.)b0ne\\.com$\n(^|\\.)babynet\\.com\\.hk$\n(^|\\.)backchina\\.com$\n(^|\\.)backpackers\\.com\\.tw$\n(^|\\.)backtotiananmen\\.com$\n(^|\\.)badiucao\\.com$\n(^|\\.)badjojo\\.com$\n(^|\\.)badoo\\.com$\n(^|\\.)bahamut\\.com\\.tw$\n(^|\\.)baidu\\.jp$\n(^|\\.)baijie\\.org$\n(^|\\.)bailandaily\\.com$\n(^|\\.)baixing\\.me$\n(^|\\.)bakgeekhome\\.tk$\n(^|\\.)banana-vpn\\.com$\n(^|\\.)band\\.us$\n(^|\\.)bandwagonhost\\.com$\n(^|\\.)bangbrosnetwork\\.com$\n(^|\\.)bangchen\\.net$\n(^|\\.)bangdream\\.space$\n(^|\\.)bangyoulater\\.com$\n(^|\\.)bankmobilevibe\\.com$\n(^|\\.)bannedbook\\.org$\n(^|\\.)bannednews\\.org$\n(^|\\.)banorte\\.com$\n(^|\\.)baramangaonline\\.com$\n(^|\\.)barenakedislam\\.com$\n(^|\\.)barnabu\\.co\\.uk$\n(^|\\.)barton\\.de$\n(^|\\.)bartvpn\\.com$\n(^|\\.)bash-hackers\\.org$\n(^|\\.)bastillepost\\.com$\n(^|\\.)bayvoice\\.net$\n(^|\\.)bbcchinese\\.com$\n(^|\\.)bbc\\.com$\n(^|\\.)bbc\\.co\\.uk$\n(^|\\.)bb-chat\\.tv$\n(^|\\.)bbchat\\.tv$\n(^|\\.)bbci\\.co\\.uk$\n(^|\\.)bbc\\.in$\n(^|\\.)bbg\\.gov$\n(^|\\.)bbkz\\.com$\n(^|\\.)bbnradio\\.org$\n(^|\\.)bbs\\.brockbbs\\.com$\n(^|\\.)bbs\\.cantonese\\.asia$\n(^|\\.)bbsdigest\\.com$\n(^|\\.)bbs\\.ecstart\\.com$\n(^|\\.)bbsfeed\\.com$\n(^|\\.)bbs\\.hanminzu\\.org$\n(^|\\.)bbs\\.hasi\\.wang$\n(^|\\.)bbs\\.huasing\\.org$\n(^|\\.)bbs\\.junglobal\\.net$\n(^|\\.)bbs\\.kimy\\.com\\.tw$\n(^|\\.)bbsland\\.com$\n(^|\\.)bbs\\.mikocon\\.com$\n(^|\\.)bbsmo\\.com$\n(^|\\.)bbs\\.morbell\\.com$\n(^|\\.)bbs\\.mychat\\.to$\n(^|\\.)bbs\\.netbig\\.com$\n(^|\\.)bbsone\\.com$\n(^|\\.)bbs\\.ozchinese\\.com$\n(^|\\.)bbs\\.qmzdd\\.com$\n(^|\\.)bbs\\.sina\\.com$\n(^|\\.)bbs\\.skykiwi\\.com$\n(^|\\.)bbs\\.sou-tong\\.org$\n(^|\\.)bbs\\.tuitui\\.info$\n(^|\\.)bbs-tw\\.com$\n(^|\\.)bbtoystore\\.com$\n(^|\\.)bb\\.ttv\\.com\\.tw$\n(^|\\.)bcast\\.co\\.nz$\n(^|\\.)bcc\\.com\\.tw$\n(^|\\.)bcchinese\\.net$\n(^|\\.)bcex\\.ca$\n(^|\\.)bcmorning\\.com$\n(^|\\.)bdsmvideos\\.net$\n(^|\\.)beaconevents\\.com$\n(^|\\.)bebo\\.com$\n(^|\\.)beeg\\.com$\n(^|\\.)beevpn\\.com$\n(^|\\.)behance\\.net$\n(^|\\.)behindkink\\.com$\n(^|\\.)beijing1989\\.com$\n(^|\\.)beijingspring\\.com$\n(^|\\.)beijingzx\\.org$\n(^|\\.)belamionline\\.com$\n(^|\\.)bell\\.wiki$\n(^|\\.)bemywife\\.cc$\n(^|\\.)beric\\.me$\n(^|\\.)berlintwitterwall\\.com$\n(^|\\.)berm\\.co\\.nz$\n(^|\\.)bestforchina\\.org$\n(^|\\.)bestgore\\.com$\n(^|\\.)bestpornstardb\\.com$\n(^|\\.)bestvpnanalysis\\.com$\n(^|\\.)bestvpn\\.com$\n(^|\\.)bestvpnserver\\.com$\n(^|\\.)bestvpnservice\\.com$\n(^|\\.)bestvpnusa\\.com$\n(^|\\.)bet365\\.com$\n(^|\\.)betfair\\.com$\n(^|\\.)betternet\\.co$\n(^|\\.)bettervpn\\.com$\n(^|\\.)bettween\\.com$\n(^|\\.)betvictor\\.com$\n(^|\\.)bewww\\.net$\n(^|\\.)beyondfirewall\\.com$\n(^|\\.)bfnn\\.org$\n(^|\\.)bfsh\\.hk$\n(^|\\.)bgvpn\\.com$\n(^|\\.)bianlei\\.com$\n(^|\\.)biantailajiao\\.com$\n(^|\\.)biantailajiao\\.in$\n(^|\\.)biblesforamerica\\.org$\n(^|\\.)bibox\\.com$\n(^|\\.)bic2011\\.org$\n(^|\\.)bigfools\\.com$\n(^|\\.)bigjapanesesex\\.com$\n(^|\\.)bigmoney\\.biz$\n(^|\\.)bignews\\.org$\n(^|\\.)big\\.one$\n(^|\\.)bigsound\\.org$\n(^|\\.)biliworld\\.com$\n(^|\\.)billypan\\.com$\n(^|\\.)binance\\.com$\n(^|\\.)binux\\.me$\n(^|\\.)bipic\\.net$\n(^|\\.)bird\\.so$\n(^|\\.)bitc\\.bme\\.emory\\.edu$\n(^|\\.)bitcointalk\\.org$\n(^|\\.)bitcoinworld\\.com$\n(^|\\.)bit\\.do$\n(^|\\.)bitfinex\\.com$\n(^|\\.)bithumb\\.com$\n(^|\\.)bitinka\\.com\\.ar$\n(^|\\.)bit\\.ly$\n(^|\\.)bitmex\\.com$\n(^|\\.)bitshare\\.com$\n(^|\\.)bitsnoop\\.com$\n(^|\\.)bitvise\\.com$\n(^|\\.)bit-z\\.com$\n(^|\\.)bizhat\\.com$\n(^|\\.)bjnewlife\\.org$\n(^|\\.)bjs\\.org$\n(^|\\.)bjzc\\.org$\n(^|\\.)blacklogic\\.com$\n(^|\\.)blackvpn\\.com$\n(^|\\.)bl-doujinsouko\\.com$\n(^|\\.)blewpass\\.com$\n(^|\\.)blinkx\\.com$\n(^|\\.)blinw\\.com$\n(^|\\.)blip\\.tv$\n(^|\\.)blockcn\\.com$\n(^|\\.)blockless\\.com$\n(^|\\.)blogblog\\.com$\n(^|\\.)blog\\.calibre-ebook\\.com$\n(^|\\.)blogcatalog\\.com$\n(^|\\.)blogcity\\.me$\n(^|\\.)blog\\.cnyes\\.com$\n(^|\\.)blog\\.daum\\.net$\n(^|\\.)blog\\.de$\n(^|\\.)blogdns\\.org$\n(^|\\.)blog\\.exblog\\.co\\.jp$\n(^|\\.)blog\\.excite\\.co\\.jp$\n(^|\\.)blog\\.expofutures\\.com$\n(^|\\.)blog\\.fizzik\\.com$\n(^|\\.)blog\\.foolsmountain\\.com$\n(^|\\.)blog\\.fuckgfw233\\.org$\n(^|\\.)blogger\\.com$\n(^|\\.)blog\\.google$\n(^|\\.)blog\\.goo\\.ne\\.jp$\n(^|\\.)blogimg\\.jp$\n(^|\\.)blog\\.inoreader\\.com$\n(^|\\.)blog\\.istef\\.info$\n(^|\\.)blog\\.jackjia\\.com$\n(^|\\.)blog\\.jp$\n(^|\\.)blog\\.kangye\\.org$\n(^|\\.)blog\\.lester850\\.info$\n(^|\\.)bloglines\\.com$\n(^|\\.)bloglovin\\.com$\n(^|\\.)blog\\.martinoei\\.com$\n(^|\\.)blog\\.pathtosharepoint\\.com$\n(^|\\.)blog\\.pentalogic\\.net$\n(^|\\.)blog\\.qooza\\.hk$\n(^|\\.)blog\\.ranxiang\\.com$\n(^|\\.)blogs\\.icerocket\\.com$\n(^|\\.)blog\\.sina\\.com\\.tw$\n(^|\\.)blogs\\.libraryinformationtechnology\\.com$\n(^|\\.)blog\\.sogoo\\.org$\n(^|\\.)blog\\.soylent\\.com$\n(^|\\.)blogspot\\.ae$\n(^|\\.)blogspot\\.al$\n(^|\\.)blogspot\\.am$\n(^|\\.)blogspot\\.ba$\n(^|\\.)blogspot\\.be$\n(^|\\.)blogspot\\.bg$\n(^|\\.)blogspot\\.ca$\n(^|\\.)blogspot\\.cat$\n(^|\\.)blogspot\\.ch$\n(^|\\.)blogspot\\.cl$\n(^|\\.)blogspot\\.com$\n(^|\\.)blogspot\\.com\\.ar$\n(^|\\.)blogspot\\.com\\.au$\n(^|\\.)blogspot\\.com\\.br$\n(^|\\.)blogspot\\.com\\.by$\n(^|\\.)blogspot\\.com\\.co$\n(^|\\.)blogspot\\.com\\.cy$\n(^|\\.)blogspot\\.com\\.ee$\n(^|\\.)blogspot\\.com\\.eg$\n(^|\\.)blogspot\\.com\\.es$\n(^|\\.)blogspot\\.com\\.mt$\n(^|\\.)blogspot\\.com\\.ng$\n(^|\\.)blogspot\\.com\\.tr$\n(^|\\.)blogspot\\.com\\.uy$\n(^|\\.)blogspot\\.co\\.uk$\n(^|\\.)blogspot\\.cz$\n(^|\\.)blogspot\\.de$\n(^|\\.)blogspot\\.dk$\n(^|\\.)blogspot\\.fi$\n(^|\\.)blogspot\\.fr$\n(^|\\.)blogspot\\.gr$\n(^|\\.)blogspot\\.hk$\n(^|\\.)blogspot\\.hr$\n(^|\\.)blogspot\\.hu$\n(^|\\.)blogspot\\.ie$\n(^|\\.)blogspot\\.in$\n(^|\\.)blogspot\\.is$\n(^|\\.)blogspot\\.it$\n(^|\\.)blogspot\\.jp$\n(^|\\.)blogspot\\.kr$\n(^|\\.)blogspot\\.li$\n(^|\\.)blogspot\\.lt$\n(^|\\.)blogspot\\.lu$\n(^|\\.)blogspot\\.md$\n(^|\\.)blogspot\\.mk$\n(^|\\.)blogspot\\.mx$\n(^|\\.)blogspot\\.my$\n(^|\\.)blogspot\\.nl$\n(^|\\.)blogspot\\.no$\n(^|\\.)blogspot\\.pe$\n(^|\\.)blogspot\\.pt$\n(^|\\.)blogspot\\.qa$\n(^|\\.)blogspot\\.ro$\n(^|\\.)blogspot\\.ru$\n(^|\\.)blogspot\\.se$\n(^|\\.)blogspot\\.sg$\n(^|\\.)blogspot\\.si$\n(^|\\.)blogspot\\.sk$\n(^|\\.)blogspot\\.sn$\n(^|\\.)blogspot\\.tw$\n(^|\\.)blogspot\\.ug$\n(^|\\.)blogs\\.tampabay\\.com$\n(^|\\.)blogs\\.yahoo\\.co\\.jp$\n(^|\\.)blog\\.syx86\\.cn$\n(^|\\.)blog\\.syx86\\.com$\n(^|\\.)blog\\.taragana\\.com$\n(^|\\.)blogtd\\.net$\n(^|\\.)blogtd\\.org$\n(^|\\.)blog\\.tiney\\.com$\n(^|\\.)blog\\.workflow\\.is$\n(^|\\.)blog\\.xuite\\.net$\n(^|\\.)blog\\.youthwant\\.com\\.tw$\n(^|\\.)blog\\.youxu\\.info$\n(^|\\.)bloodshed\\.net$\n(^|\\.)bloomberg\\.cn$\n(^|\\.)bloomberg\\.com$\n(^|\\.)bloomberg\\.de$\n(^|\\.)bloombergview\\.com$\n(^|\\.)bloomfortune\\.com$\n(^|\\.)blueangellive\\.com$\n(^|\\.)bmfinn\\.com$\n(^|\\.)bnews\\.co$\n(^|\\.)bnn\\.co$\n(^|\\.)bnrmetal\\.com$\n(^|\\.)boardreader\\.com$\n(^|\\.)bod\\.asia$\n(^|\\.)bodog88\\.com$\n(^|\\.)bolehvpn\\.net$\n(^|\\.)bolin\\.netfirms\\.com$\n(^|\\.)bonbonme\\.com$\n(^|\\.)bonbonsex\\.com$\n(^|\\.)bonfoundation\\.org$\n(^|\\.)bongacams\\.com$\n(^|\\.)boobstagram\\.com$\n(^|\\.)book\\.com\\.tw$\n(^|\\.)bookepub\\.com$\n(^|\\.)books\\.com\\.tw$\n(^|\\.)booktopia\\.com\\.au$\n(^|\\.)book\\.zi5\\.me$\n(^|\\.)boomssr\\.com$\n(^|\\.)botanwang\\.com$\n(^|\\.)bot\\.nu$\n(^|\\.)bowenpress\\.com$\n(^|\\.)boxpn\\.com$\n(^|\\.)boxunblog\\.com$\n(^|\\.)boxunclub\\.com$\n(^|\\.)boxun\\.com$\n(^|\\.)boxun\\.tv$\n(^|\\.)boyangu\\.com$\n(^|\\.)boyfriendtv\\.com$\n(^|\\.)boysfood\\.com$\n(^|\\.)boysmaster\\.com$\n(^|\\.)brainyquote\\.com$\n(^|\\.)brandonhutchinson\\.com$\n(^|\\.)braumeister\\.org$\n(^|\\.)bravotube\\.net$\n(^|\\.)brazzers\\.com$\n(^|\\.)break\\.com$\n(^|\\.)breakgfw\\.com$\n(^|\\.)breaking911\\.com$\n(^|\\.)breakingtweets\\.com$\n(^|\\.)breakwall\\.net$\n(^|\\.)br\\.hao123\\.com$\n(^|\\.)briefdream\\.com$\n(^|\\.)briian\\.com$\n(^|\\.)brizzly\\.com$\n(^|\\.)brkmd\\.com$\n(^|\\.)broadbook\\.com$\n(^|\\.)broadpressinc\\.com$\n(^|\\.)br\\.st$\n(^|\\.)brucewang\\.net$\n(^|\\.)brutaltgp\\.com$\n(^|\\.)bt2mag\\.com$\n(^|\\.)bt95\\.com$\n(^|\\.)btaia\\.com$\n(^|\\.)btbtav\\.com$\n(^|\\.)btc98\\.com$\n(^|\\.)btcbank\\.bank$\n(^|\\.)btctrade\\.im$\n(^|\\.)btdigg\\.org$\n(^|\\.)btku\\.me$\n(^|\\.)btku\\.org$\n(^|\\.)btspread\\.com$\n(^|\\.)btsynckeys\\.com$\n(^|\\.)budaedu\\.org$\n(^|\\.)buddhanet\\.com\\.tw$\n(^|\\.)buddhistchannel\\.tv$\n(^|\\.)buffered\\.com$\n(^|\\.)bullogger\\.com$\n(^|\\.)bullog\\.org$\n(^|\\.)bunbunhk\\.com$\n(^|\\.)busayari\\.com$\n(^|\\.)businessinsider\\.com$\n(^|\\.)businesstoday\\.com\\.tw$\n(^|\\.)businessweek\\.com$\n(^|\\.)busu\\.org$\n(^|\\.)busytrade\\.com$\n(^|\\.)buugaa\\.com$\n(^|\\.)buy\\.yahoo\\.com\\.tw$\n(^|\\.)buzzhand\\.com$\n(^|\\.)buzzhand\\.net$\n(^|\\.)buzzorange\\.com$\n(^|\\.)bvpn\\.com$\n(^|\\.)bwgyhw\\.com$\n(^|\\.)bwh1\\.net$\n(^|\\.)bwsj\\.hk$\n(^|\\.)bx\\.in\\.th$\n(^|\\.)bx\\.tl$\n(^|\\.)bynet\\.co\\.il$\n(^|\\.)c100tibet\\.org$\n(^|\\.)c1522\\.mooo\\.com$\n(^|\\.)c2cx\\.com$\n(^|\\.)cablegatesearch\\.net$\n(^|\\.)cachinese\\.com$\n(^|\\.)cacnw\\.com$\n(^|\\.)cactusvpn\\.com$\n(^|\\.)cafepress\\.com$\n(^|\\.)cahr\\.org\\.tw$\n(^|\\.)calameo\\.com$\n(^|\\.)calebelston\\.com$\n(^|\\.)calgarychinese\\.ca$\n(^|\\.)calgarychinese\\.com$\n(^|\\.)calgarychinese\\.net$\n(^|\\.)cam4\\.com$\n(^|\\.)cam4\\.jp$\n(^|\\.)cam4\\.sg$\n(^|\\.)camfrog\\.com$\n(^|\\.)cams\\.com$\n(^|\\.)cams\\.org\\.sg$\n(^|\\.)canadameet\\.com$\n(^|\\.)canalporno\\.com$\n(^|\\.)canyu\\.org$\n(^|\\.)caobian\\.info$\n(^|\\.)caochangqing\\.com$\n(^|\\.)cao\\.im$\n(^|\\.)cap\\.org\\.hk$\n(^|\\.)carabinasypistolas\\.com$\n(^|\\.)cardinalkungfoundation\\.org$\n(^|\\.)carfax\\.com$\n(^|\\.)caribbeancom\\.com$\n(^|\\.)cari\\.com\\.my$\n(^|\\.)carmotorshow\\.com$\n(^|\\.)cartoonmovement\\.com$\n(^|\\.)casadeltibetbcn\\.org$\n(^|\\.)casatibet\\.org\\.mx$\n(^|\\.)casinobellini\\.com$\n(^|\\.)casinoking\\.com$\n(^|\\.)casinoriva\\.com$\n(^|\\.)casino\\.williamhill\\.com$\n(^|\\.)castbox\\.fm$\n(^|\\.)catch22\\.net$\n(^|\\.)catchgod\\.com$\n(^|\\.)catfightpayperview\\.xxx$\n(^|\\.)catholic\\.org\\.hk$\n(^|\\.)catholic\\.org\\.tw$\n(^|\\.)cathvoice\\.org\\.tw$\n(^|\\.)cattt\\.com$\n(^|\\.)cbc\\.ca$\n(^|\\.)cbsnews\\.com$\n(^|\\.)cbs\\.ntu\\.edu\\.tw$\n(^|\\.)cbtc\\.org\\.hk$\n(^|\\.)cccat\\.cc$\n(^|\\.)cccat\\.co$\n(^|\\.)ccdtr\\.org$\n(^|\\.)cchere\\.com$\n(^|\\.)ccim\\.org$\n(^|\\.)cclife\\.ca$\n(^|\\.)cclifefl\\.org$\n(^|\\.)cclife\\.org$\n(^|\\.)ccthere\\.com$\n(^|\\.)ccthere\\.net$\n(^|\\.)cctmweb\\.net$\n(^|\\.)cctongbao\\.com$\n(^|\\.)ccue\\.ca$\n(^|\\.)ccue\\.com$\n(^|\\.)ccvoice\\.ca$\n(^|\\.)ccw\\.org\\.tw$\n(^|\\.)cdbook\\.org$\n(^|\\.)cdcparty\\.com$\n(^|\\.)cdef\\.org$\n(^|\\.)cdig\\.info$\n(^|\\.)cdjp\\.org$\n(^|\\.)cdn1\\.lp\\.saboom\\.com$\n(^|\\.)cdn-apple\\.com$\n(^|\\.)cdn\\.assets\\.lfpcontent\\.com$\n(^|\\.)cdnews\\.com\\.tw$\n(^|\\.)cdn\\.helixstudios\\.net$\n(^|\\.)cdn-images\\.mailchimp\\.com$\n(^|\\.)cdninstagram\\.com$\n(^|\\.)cdn\\.printfriendly\\.com$\n(^|\\.)cdn\\.seatguru\\.com$\n(^|\\.)cdn\\.softlayer\\.net$\n(^|\\.)cdp1989\\.org$\n(^|\\.)cdp1998\\.org$\n(^|\\.)cdp2006\\.org$\n(^|\\.)cdpa\\.url\\.tw$\n(^|\\.)cdpeu\\.org$\n(^|\\.)cdpusa\\.org$\n(^|\\.)cdpweb\\.org$\n(^|\\.)cdpwu\\.org$\n(^|\\.)cdw\\.com$\n(^|\\.)cecc\\.gov$\n(^|\\.)cellulo\\.info$\n(^|\\.)cenews\\.eu$\n(^|\\.)centauro\\.com\\.br$\n(^|\\.)centerforhumanreprod\\.com$\n(^|\\.)centralnation\\.com$\n(^|\\.)centurys\\.net$\n(^|\\.)certificate\\.revocationcheck\\.com$\n(^|\\.)certificate-transparency\\.org$\n(^|\\.)c-est-simple\\.com$\n(^|\\.)cfhks\\.org\\.hk$\n(^|\\.)cfos\\.de$\n(^|\\.)cftfc\\.com$\n(^|\\.)cgdepot\\.org$\n(^|\\.)cgst\\.edu$\n(^|\\.)changeip\\.name$\n(^|\\.)changeip\\.net$\n(^|\\.)changeip\\.org$\n(^|\\.)change\\.org$\n(^|\\.)changp\\.com$\n(^|\\.)changsa\\.net$\n(^|\\.)channel8news\\.sg$\n(^|\\.)chaoex\\.com$\n(^|\\.)chapm25\\.com$\n(^|\\.)chatnook\\.com$\n(^|\\.)chaturbate\\.com$\n(^|\\.)chengmingmag\\.com$\n(^|\\.)chenguangcheng\\.com$\n(^|\\.)chenpokong\\.com$\n(^|\\.)chenpokong\\.net$\n(^|\\.)chenshan20042005\\.wordpress\\.com$\n(^|\\.)cherrysave\\.com$\n(^|\\.)chhongbi\\.org$\n(^|\\.)chicagoncmtv\\.com$\n(^|\\.)china101\\.com$\n(^|\\.)china18\\.org$\n(^|\\.)china21\\.com$\n(^|\\.)china21\\.org$\n(^|\\.)china5000\\.us$\n(^|\\.)chinaaffairs\\.org$\n(^|\\.)chinaaid\\.me$\n(^|\\.)chinaaid\\.net$\n(^|\\.)chinaaid\\.org$\n(^|\\.)chinaaid\\.us$\n(^|\\.)chinachange\\.org$\n(^|\\.)chinachannel\\.hk$\n(^|\\.)chinacitynews\\.be$\n(^|\\.)chinacomments\\.org$\n(^|\\.)chinadialogue\\.net$\n(^|\\.)chinadigitaltimes\\.net$\n(^|\\.)chinaelections\\.org$\n(^|\\.)chinaeweekly\\.com$\n(^|\\.)chinafreepress\\.org$\n(^|\\.)chinagate\\.com$\n(^|\\.)chinageeks\\.org$\n(^|\\.)chinagfw\\.org$\n(^|\\.)chinagonet\\.com$\n(^|\\.)chinagreenparty\\.org$\n(^|\\.)china\\.hket\\.com$\n(^|\\.)chinahorizon\\.org$\n(^|\\.)chinahush\\.com$\n(^|\\.)chinainperspective\\.com$\n(^|\\.)chinainterimgov\\.org$\n(^|\\.)chinalaborwatch\\.org$\n(^|\\.)chinalawandpolicy\\.com$\n(^|\\.)chinalawtranslate\\.com$\n(^|\\.)china-mmm\\.jp\\.net$\n(^|\\.)china-mmm\\.net$\n(^|\\.)china-mmm\\.sa\\.com$\n(^|\\.)chinamule\\.com$\n(^|\\.)chinamz\\.org$\n(^|\\.)chinanewscenter\\.com$\n(^|\\.)chinapost\\.com\\.tw$\n(^|\\.)chinapress\\.com\\.my$\n(^|\\.)china-review\\.com\\.ua$\n(^|\\.)chinarightsia\\.org$\n(^|\\.)chinasmile\\.net$\n(^|\\.)chinasocialdemocraticparty\\.com$\n(^|\\.)chinasoul\\.org$\n(^|\\.)chinasucks\\.net$\n(^|\\.)chinatimes\\.com$\n(^|\\.)chinatopsex\\.com$\n(^|\\.)chinatown\\.com\\.au$\n(^|\\.)chinatweeps\\.com$\n(^|\\.)china\\.ucanews\\.com$\n(^|\\.)chinaview\\.wordpress\\.com$\n(^|\\.)chinaway\\.org$\n(^|\\.)china-week\\.com$\n(^|\\.)chinaworker\\.info$\n(^|\\.)chinaxchina\\.com$\n(^|\\.)chinayouth\\.org\\.hk$\n(^|\\.)chinayuanmin\\.org$\n(^|\\.)chinesedaily\\.com$\n(^|\\.)chinesedailynews\\.com$\n(^|\\.)chinesedemocracy\\.com$\n(^|\\.)chinese\\.donga\\.com$\n(^|\\.)chinese\\.engadget\\.com$\n(^|\\.)chinesegay\\.org$\n(^|\\.)chinese-hermit\\.net$\n(^|\\.)chinese\\.irib\\.ir$\n(^|\\.)chinese-leaders\\.org$\n(^|\\.)chinese-memorial\\.org$\n(^|\\.)chinesen\\.de$\n(^|\\.)chinesenews\\.net\\.au$\n(^|\\.)chinesepen\\.org$\n(^|\\.)chinese\\.soifind\\.com$\n(^|\\.)chinesetalks\\.net$\n(^|\\.)chineseupress\\.com$\n(^|\\.)chingcheong\\.com$\n(^|\\.)chinman\\.net$\n(^|\\.)chithu\\.org$\n(^|\\.)chn\\.chosun\\.com$\n(^|\\.)chobit\\.cc$\n(^|\\.)chrdnet\\.com$\n(^|\\.)christianfreedom\\.org$\n(^|\\.)christianstudy\\.com$\n(^|\\.)christiantimes\\.org\\.hk$\n(^|\\.)christusrex\\.org$\n(^|\\.)chrlawyers\\.hk$\n(^|\\.)chromecast\\.com$\n(^|\\.)chrome\\.com$\n(^|\\.)chromeexperiments\\.com$\n(^|\\.)chromercise\\.com$\n(^|\\.)chromestatus\\.com$\n(^|\\.)chromium\\.org$\n(^|\\.)ch\\.shvoong\\.com$\n(^|\\.)chuang-yen\\.org$\n(^|\\.)chubold\\.com$\n(^|\\.)chubun\\.com$\n(^|\\.)chuizi\\.net$\n(^|\\.)churchinhongkong\\.org$\n(^|\\.)chushigangdrug\\.ch$\n(^|\\.)cienen\\.com$\n(^|\\.)cineastentreff\\.de$\n(^|\\.)cipfg\\.org$\n(^|\\.)circlethebayfortibet\\.org$\n(^|\\.)cirosantilli\\.com$\n(^|\\.)citizencn\\.com$\n(^|\\.)citizenlab\\.org$\n(^|\\.)citizenscommission\\.hk$\n(^|\\.)citizensradio\\.org$\n(^|\\.)city365\\.ca$\n(^|\\.)city9x\\.com$\n(^|\\.)citypopulation\\.de$\n(^|\\.)citytalk\\.tw$\n(^|\\.)civicparty\\.hk$\n(^|\\.)civildisobediencemovement\\.org$\n(^|\\.)civilhrfront\\.org$\n(^|\\.)civiliangunner\\.com$\n(^|\\.)civilmedia\\.tw$\n(^|\\.)ck101\\.com$\n(^|\\.)clarionproject\\.org$\n(^|\\.)classicalguitarblog\\.net$\n(^|\\.)clb\\.org\\.hk$\n(^|\\.)cl\\.d0z\\.net$\n(^|\\.)cldr\\.unicode\\.org$\n(^|\\.)cleansite\\.biz$\n(^|\\.)cleansite\\.info$\n(^|\\.)cleansite\\.us$\n(^|\\.)clearharmony\\.net$\n(^|\\.)clearsurance\\.com$\n(^|\\.)clearwisdom\\.net$\n(^|\\.)clementine-player\\.org$\n(^|\\.)cling\\.omy\\.sg$\n(^|\\.)clinica-tibet\\.ru$\n(^|\\.)clipfish\\.de$\n(^|\\.)cloakpoint\\.com$\n(^|\\.)cloud\\.feedly\\.com$\n(^|\\.)cloud\\.mail\\.ru$\n(^|\\.)club1069\\.com$\n(^|\\.)clyp\\.it$\n(^|\\.)cmcn\\.org$\n(^|\\.)cmi\\.org\\.tw$\n(^|\\.)cmp\\.hku\\.hk$\n(^|\\.)cms\\.gov$\n(^|\\.)cmule\\.com$\n(^|\\.)cmule\\.org$\n(^|\\.)cmx\\.im$\n(^|\\.)cn2\\.streetvoice\\.com$\n(^|\\.)cn6\\.eu$\n(^|\\.)cnabc\\.com$\n(^|\\.)cna\\.com\\.tw$\n(^|\\.)cnbbnews\\.wordpress\\.com$\n(^|\\.)cn\\.calameo\\.com$\n(^|\\.)cn\\.dayabook\\.com$\n(^|\\.)cnd\\.org$\n(^|\\.)cnex\\.org\\.cn$\n(^|\\.)cn\\.fmnnow\\.com$\n(^|\\.)cn\\.freeones\\.com$\n(^|\\.)cn\\.giganews\\.com$\n(^|\\.)cn\\.ibtimes\\.com$\n(^|\\.)cnineu\\.com$\n(^|\\.)cnn\\.com$\n(^|\\.)cnnews\\.chosun\\.com$\n(^|\\.)cn\\.nytstyle\\.com$\n(^|\\.)cnpolitics\\.org$\n(^|\\.)cn-proxy\\.com$\n(^|\\.)cnproxy\\.com$\n(^|\\.)cn\\.sandscotaicentral\\.com$\n(^|\\.)cn\\.shafaqna\\.com$\n(^|\\.)cn\\.streetvoice\\.com$\n(^|\\.)cn\\.thegay\\.com$\n(^|\\.)cn\\.uncyclopedia\\.wikia\\.com$\n(^|\\.)cn\\.uptodown\\.com$\n(^|\\.)cn\\.voa\\.mobi$\n(^|\\.)coat\\.co\\.jp$\n(^|\\.)cobinhood\\.com$\n(^|\\.)cochina\\.co$\n(^|\\.)cochina\\.org$\n(^|\\.)code1984\\.com$\n(^|\\.)codeshare\\.io$\n(^|\\.)codeskulptor\\.org$\n(^|\\.)coin2co\\.in$\n(^|\\.)coinbene\\.com$\n(^|\\.)coinegg\\.com$\n(^|\\.)coinex\\.com$\n(^|\\.)coingi\\.com$\n(^|\\.)coinrail\\.co\\.kr$\n(^|\\.)cointiger\\.com$\n(^|\\.)cointobe\\.com$\n(^|\\.)coinut\\.com$\n(^|\\.)collateralmurder\\.com$\n(^|\\.)collateralmurder\\.org$\n(^|\\.)comefromchina\\.com$\n(^|\\.)com\\.google$\n(^|\\.)comic-mega\\.me$\n(^|\\.)commandarms\\.com$\n(^|\\.)commentshk\\.com$\n(^|\\.)communistcrimes\\.org$\n(^|\\.)communitychoicecu\\.com$\n(^|\\.)community\\.windy\\.com$\n(^|\\.)compileheart\\.com$\n(^|\\.)compress\\.to$\n(^|\\.)co\\.ng\\.mil$\n(^|\\.)connect\\.facebook\\.net$\n(^|\\.)conoha\\.jp$\n(^|\\.)contactmagazine\\.net$\n(^|\\.)contests\\.twilio\\.com$\n(^|\\.)convio\\.net$\n(^|\\.)coobay\\.com$\n(^|\\.)coolaler\\.com$\n(^|\\.)coolder\\.com$\n(^|\\.)coolloud\\.org\\.tw$\n(^|\\.)coolncute\\.com$\n(^|\\.)coolstuffinc\\.com$\n(^|\\.)corumcollege\\.com$\n(^|\\.)cosmic\\.monar\\.ch$\n(^|\\.)cos-moe\\.com$\n(^|\\.)cosplayjav\\.pl$\n(^|\\.)costco\\.com$\n(^|\\.)cotweet\\.com$\n(^|\\.)counter\\.social$\n(^|\\.)coursehero\\.com$\n(^|\\.)cpj\\.org$\n(^|\\.)cq99\\.us$\n(^|\\.)crackle\\.com$\n(^|\\.)crazys\\.cc$\n(^|\\.)crazyshit\\.com$\n(^|\\.)crbug\\.com$\n(^|\\.)crchina\\.org$\n(^|\\.)crd-net\\.org$\n(^|\\.)creaders\\.net$\n(^|\\.)creadersnet\\.com$\n(^|\\.)creativelab5\\.com$\n(^|\\.)crisisresponse\\.google$\n(^|\\.)cristyli\\.com$\n(^|\\.)crocotube\\.com$\n(^|\\.)crossfire\\.co\\.kr$\n(^|\\.)crossthewall\\.net$\n(^|\\.)crossvpn\\.net$\n(^|\\.)crrev\\.com$\n(^|\\.)crucial\\.com$\n(^|\\.)csdparty\\.com$\n(^|\\.)c-spanvideo\\.org$\n(^|\\.)css\\.pixnet\\.in$\n(^|\\.)csuchen\\.de$\n(^|\\.)csw\\.org\\.uk$\n(^|\\.)ctao\\.org$\n(^|\\.)ctfriend\\.net$\n(^|\\.)cthlo\\.github\\.io$\n(^|\\.)ctitv\\.com\\.tw$\n(^|\\.)ct\\.org\\.tw$\n(^|\\.)cts\\.com\\.tw$\n(^|\\.)cuhkacs\\.org$\n(^|\\.)cuihua\\.org$\n(^|\\.)cuiweiping\\.net$\n(^|\\.)culture\\.tw$\n(^|\\.)cumlouder\\.com$\n(^|\\.)curvefish\\.com$\n(^|\\.)cusu\\.hk$\n(^|\\.)cutscenes\\.net$\n(^|\\.)cw\\.com\\.tw$\n(^|\\.)cyberghost\\.natado\\.com$\n(^|\\.)cyberghostvpn\\.com$\n(^|\\.)cynscribe\\.com$\n(^|\\.)cytode\\.us$\n(^|\\.)d100\\.net$\n(^|\\.)d1b183sg0nvnuh\\.cloudfront\\.net$\n(^|\\.)d1c37gjwa26taa\\.cloudfront\\.net$\n(^|\\.)d2bay\\.com$\n(^|\\.)d2pass\\.com$\n(^|\\.)d3c33hcgiwev3\\.cloudfront\\.net$\n(^|\\.)d3rhr7kgmtrq1v\\.cloudfront\\.net$\n(^|\\.)dabr\\.co\\.uk$\n(^|\\.)dabr\\.eu$\n(^|\\.)dabr\\.me$\n(^|\\.)dabr\\.mobi$\n(^|\\.)dadazim\\.com$\n(^|\\.)dadi360\\.com$\n(^|\\.)dafabet\\.com$\n(^|\\.)dafagood\\.com$\n(^|\\.)dafahao\\.com$\n(^|\\.)dafoh\\.org$\n(^|\\.)daftporn\\.com$\n(^|\\.)dagelijksestandaard\\.nl$\n(^|\\.)daidostup\\.ru$\n(^|\\.)dailidaili\\.com$\n(^|\\.)dailymotion\\.com$\n(^|\\.)dailynews\\.sina\\.com$\n(^|\\.)dailyview\\.tw$\n(^|\\.)daiphapinfo\\.net$\n(^|\\.)dajiyuan\\.com$\n(^|\\.)dajiyuan\\.de$\n(^|\\.)dajiyuan\\.eu$\n(^|\\.)dajusha\\.baywords\\.com$\n(^|\\.)dalailama80\\.org$\n(^|\\.)dalailama-archives\\.org$\n(^|\\.)dalailamacenter\\.org$\n(^|\\.)dalailama\\.com$\n(^|\\.)dalailamafellows\\.org$\n(^|\\.)dalailamafilm\\.com$\n(^|\\.)dalailamafoundation\\.org$\n(^|\\.)dalailamahindi\\.com$\n(^|\\.)dalailamainaustralia\\.org$\n(^|\\.)dalailamajapanese\\.com$\n(^|\\.)dalailama\\.mn$\n(^|\\.)dalailamaprotesters\\.info$\n(^|\\.)dalailamaquotes\\.org$\n(^|\\.)dalailama\\.ru$\n(^|\\.)dalailamatrust\\.org$\n(^|\\.)dalailama\\.usc\\.edu$\n(^|\\.)dalailamavisit\\.org\\.nz$\n(^|\\.)dalailamaworld\\.com$\n(^|\\.)dalianmeng\\.org$\n(^|\\.)daliulian\\.org$\n(^|\\.)danbooru\\.donmai\\.us$\n(^|\\.)danke4china\\.net$\n(^|\\.)danwei\\.org$\n(^|\\.)daodu14\\.jigsy\\.com$\n(^|\\.)daolan\\.net$\n(^|\\.)daozhongxing\\.org$\n(^|\\.)darktech\\.org$\n(^|\\.)darktoy\\.net$\n(^|\\.)darpa\\.mil$\n(^|\\.)dastrassi\\.org$\n(^|\\.)data\\.flurry\\.com$\n(^|\\.)data\\.gov\\.tw$\n(^|\\.)data-vocabulary\\.org$\n(^|\\.)daum\\.net$\n(^|\\.)david-kilgour\\.com$\n(^|\\.)dawangidc\\.com$\n(^|\\.)daxa\\.cn$\n(^|\\.)daylife\\.com$\n(^|\\.)dbc\\.hk$\n(^|\\.)db\\.tt$\n(^|\\.)dcard\\.tw$\n(^|\\.)dcmilitary\\.com$\n(^|\\.)ddc\\.com\\.tw$\n(^|\\.)ddhw\\.info$\n(^|\\.)ddns\\.info$\n(^|\\.)ddns\\.me\\.uk$\n(^|\\.)ddns\\.mobi$\n(^|\\.)ddns\\.ms$\n(^|\\.)ddns\\.name$\n(^|\\.)ddns\\.net$\n(^|\\.)ddns\\.us$\n(^|\\.)deaftone\\.com$\n(^|\\.)debug\\.com$\n(^|\\.)deck\\.ly$\n(^|\\.)decodet\\.co$\n(^|\\.)deepmind\\.com$\n(^|\\.)deezer\\.com$\n(^|\\.)definebabe\\.com$\n(^|\\.)deja\\.com$\n(^|\\.)delcamp\\.net$\n(^|\\.)delicious\\.com$\n(^|\\.)democrats\\.org$\n(^|\\.)demo\\.opera-mini\\.net$\n(^|\\.)demosisto\\.hk$\n(^|\\.)depositphotos\\.com$\n(^|\\.)derekhsu\\.homeip\\.net$\n(^|\\.)de-sci\\.org$\n(^|\\.)desc\\.se$\n(^|\\.)design\\.google$\n(^|\\.)desipro\\.de$\n(^|\\.)dessci\\.com$\n(^|\\.)destiny\\.xfiles\\.to$\n(^|\\.)destroy-china\\.jp$\n(^|\\.)deutsche-welle\\.de$\n(^|\\.)developers\\.box\\.net$\n(^|\\.)devio\\.us$\n(^|\\.)devpn\\.com$\n(^|\\.)dfas\\.mil$\n(^|\\.)dfn\\.org$\n(^|\\.)d-fukyu\\.com$\n(^|\\.)dharamsalanet\\.com$\n(^|\\.)dharmakara\\.net$\n(^|\\.)dhcp\\.biz$\n(^|\\.)diaoyuislands\\.org$\n(^|\\.)dictionary\\.goo\\.ne\\.jp$\n(^|\\.)difangwenge\\.org$\n(^|\\.)digiland\\.tw$\n(^|\\.)digisfera\\.com$\n(^|\\.)digitalnomadsproject\\.org$\n(^|\\.)diigo\\.com$\n(^|\\.)dilber\\.se$\n(^|\\.)dingchin\\.com\\.tw$\n(^|\\.)dipity\\.com$\n(^|\\.)directcreative\\.com$\n(^|\\.)discoins\\.com$\n(^|\\.)disconnect\\.me$\n(^|\\.)discordapp\\.com$\n(^|\\.)discordapp\\.net$\n(^|\\.)discuss4u\\.com$\n(^|\\.)discuss\\.com\\.hk$\n(^|\\.)dish\\.com$\n(^|\\.)disp\\.cc$\n(^|\\.)disqus\\.com$\n(^|\\.)dit-inc\\.us$\n(^|\\.)dizhidizhi\\.com$\n(^|\\.)dizhuzhishang\\.com$\n(^|\\.)djangosnippets\\.org$\n(^|\\.)djorz\\.com$\n(^|\\.)dl\\.box\\.net$\n(^|\\.)dl-laby\\.jp$\n(^|\\.)dlsite\\.com$\n(^|\\.)dlyoutube\\.com$\n(^|\\.)dm530\\.net$\n(^|\\.)dmcdn\\.net$\n(^|\\.)dmhy\\.org$\n(^|\\.)dmm\\.co\\.jp$\n(^|\\.)dns04\\.com$\n(^|\\.)dns05\\.com$\n(^|\\.)dns1\\.us$\n(^|\\.)dns2go\\.com$\n(^|\\.)dns2\\.us$\n(^|\\.)dnscrypt\\.org$\n(^|\\.)dns-dns\\.com$\n(^|\\.)dnset\\.com$\n(^|\\.)dns\\.google$\n(^|\\.)dnsrd\\.com$\n(^|\\.)dnssec\\.net$\n(^|\\.)dns-stuff\\.com$\n(^|\\.)dnvod\\.tv$\n(^|\\.)doctorvoice\\.org$\n(^|\\.)documentingreality\\.com$\n(^|\\.)dogfartnetwork\\.com$\n(^|\\.)dojin\\.com$\n(^|\\.)dok-forum\\.net$\n(^|\\.)dolc\\.de$\n(^|\\.)dolf\\.org\\.hk$\n(^|\\.)dollf\\.com$\n(^|\\.)domain\\.club\\.tw$\n(^|\\.)domainhelp\\.search\\.com$\n(^|\\.)domains\\.google$\n(^|\\.)domaintoday\\.com\\.au$\n(^|\\.)dongtaiwang\\.com$\n(^|\\.)dongtaiwang\\.net$\n(^|\\.)dongyangjing\\.com$\n(^|\\.)dontfilter\\.us$\n(^|\\.)dontmovetochina\\.com$\n(^|\\.)dorjeshugden\\.com$\n(^|\\.)dotplane\\.com$\n(^|\\.)dotsub\\.com$\n(^|\\.)dotvpn\\.com$\n(^|\\.)doubibackup\\.com$\n(^|\\.)doub\\.io$\n(^|\\.)doubmirror\\.cf$\n(^|\\.)dougscripts\\.com$\n(^|\\.)douhokanko\\.net$\n(^|\\.)doujincafe\\.com$\n(^|\\.)dowei\\.org$\n(^|\\.)download\\.aircrack-ng\\.org$\n(^|\\.)download\\.cnet\\.com$\n(^|\\.)download\\.ithome\\.com\\.tw$\n(^|\\.)dphk\\.org$\n(^|\\.)dpp\\.org\\.tw$\n(^|\\.)dpr\\.info$\n(^|\\.)dragonex\\.io$\n(^|\\.)dragonsprings\\.org$\n(^|\\.)dreamamateurs\\.com$\n(^|\\.)drepung\\.org$\n(^|\\.)drgan\\.net$\n(^|\\.)drmingxia\\.org$\n(^|\\.)dropbooks\\.tv$\n(^|\\.)dropbox\\.com$\n(^|\\.)dropboxusercontent\\.com$\n(^|\\.)drsunacademy\\.com$\n(^|\\.)drtuber\\.com$\n(^|\\.)dscn\\.info$\n(^|\\.)dsmtp\\.com$\n(^|\\.)dstk\\.dk$\n(^|\\.)dtdns\\.net$\n(^|\\.)dtiblog\\.com$\n(^|\\.)dtic\\.mil$\n(^|\\.)dtwang\\.org$\n(^|\\.)duanzhihu\\.com$\n(^|\\.)duck\\.com$\n(^|\\.)duckdns\\.org$\n(^|\\.)duckduckgo\\.com$\n(^|\\.)duckduckgo-owned-server\\.yahoo\\.net$\n(^|\\.)duckload\\.com$\n(^|\\.)duckmylife\\.com$\n(^|\\.)duga\\.jp$\n(^|\\.)duihuahrjournal\\.org$\n(^|\\.)duihua\\.org$\n(^|\\.)dumb1\\.com$\n(^|\\.)dunyabulteni\\.net$\n(^|\\.)duoweitimes\\.com$\n(^|\\.)duping\\.net$\n(^|\\.)duplicati\\.com$\n(^|\\.)dupola\\.com$\n(^|\\.)dupola\\.net$\n(^|\\.)dushi\\.ca$\n(^|\\.)dvdpac\\.com$\n(^|\\.)dvorak\\.org$\n(^|\\.)dw\\.com$\n(^|\\.)dw\\.de$\n(^|\\.)dwnews\\.com$\n(^|\\.)dwnews\\.net$\n(^|\\.)dw-world\\.com$\n(^|\\.)dw-world\\.de$\n(^|\\.)dynamicdns\\.biz$\n(^|\\.)dynamicdns\\.co\\.uk$\n(^|\\.)dynamicdns\\.me\\.uk$\n(^|\\.)dynamic-dns\\.net$\n(^|\\.)dynamicdns\\.org\\.uk$\n(^|\\.)dynawebinc\\.com$\n(^|\\.)dyndns-ip\\.com$\n(^|\\.)dyndns\\.org$\n(^|\\.)dyndns-pics\\.com$\n(^|\\.)dyndns\\.pro$\n(^|\\.)dynssl\\.com$\n(^|\\.)dynu\\.com$\n(^|\\.)dynu\\.net$\n(^|\\.)dynupdate\\.no-ip\\.com$\n(^|\\.)dysfz\\.cc$\n(^|\\.)dzze\\.com$\n(^|\\.)e123\\.hk$\n(^|\\.)earlytibet\\.com$\n(^|\\.)earthcam\\.com$\n(^|\\.)earthvpn\\.com$\n(^|\\.)eastern-ark\\.com$\n(^|\\.)easternlightning\\.org$\n(^|\\.)eastturkestan\\.com$\n(^|\\.)eastturkistancc\\.org$\n(^|\\.)eastturkistangovernmentinexile\\.us$\n(^|\\.)eastturkistan-gov\\.org$\n(^|\\.)easyca\\.ca$\n(^|\\.)easypic\\.com$\n(^|\\.)ebony-beauty\\.com$\n(^|\\.)ebookbrowse\\.com$\n(^|\\.)ebookee\\.com$\n(^|\\.)ebook\\.hyread\\.com\\.tw$\n(^|\\.)ebtcbank\\.com$\n(^|\\.)ecfa\\.org\\.tw$\n(^|\\.)echofon\\.com$\n(^|\\.)ecimg\\.tw$\n(^|\\.)e-classical\\.com\\.tw$\n(^|\\.)ecministry\\.net$\n(^|\\.)economist\\.com$\n(^|\\.)ecsm\\.vs\\.com$\n(^|\\.)edgecastcdn\\.net$\n(^|\\.)edicypages\\.com$\n(^|\\.)edmontonchina\\.cn$\n(^|\\.)edmontonservice\\.com$\n(^|\\.)edns\\.biz$\n(^|\\.)edoors\\.com$\n(^|\\.)edubridge\\.com$\n(^|\\.)edupro\\.org$\n(^|\\.)eeas\\.europa\\.eu$\n(^|\\.)eesti\\.ee$\n(^|\\.)eevpn\\.com$\n(^|\\.)efcc\\.org\\.hk$\n(^|\\.)effers\\.com$\n(^|\\.)efksoft\\.com$\n(^|\\.)efukt\\.com$\n(^|\\.)e-gold\\.com$\n(^|\\.)e-hentaidb\\.com$\n(^|\\.)e-hentai\\.org$\n(^|\\.)eic-av\\.com$\n(^|\\.)e-info\\.org\\.tw$\n(^|\\.)eireinikotaerukai\\.com$\n(^|\\.)eisbb\\.com$\n(^|\\.)eksisozluk\\.com$\n(^|\\.)electionsmeter\\.com$\n(^|\\.)elgoog\\.im$\n(^|\\.)ellawine\\.org$\n(^|\\.)elpais\\.com$\n(^|\\.)eltondisney\\.com$\n(^|\\.)emaga\\.com$\n(^|\\.)emanna\\.com$\n(^|\\.)embr\\.in$\n(^|\\.)emilylau\\.org\\.hk$\n(^|\\.)empfil\\.com$\n(^|\\.)emule-ed2k\\.com$\n(^|\\.)emulefans\\.com$\n(^|\\.)emuparadise\\.me$\n(^|\\.)enanyang\\.my$\n(^|\\.)encyclopedia\\.com$\n(^|\\.)enewstree\\.com$\n(^|\\.)enfal\\.de$\n(^|\\.)en\\.favotter\\.net$\n(^|\\.)engagedaily\\.org$\n(^|\\.)englishforeveryone\\.org$\n(^|\\.)englishfromengland\\.co\\.uk$\n(^|\\.)englishpen\\.org$\n(^|\\.)en\\.hao123\\.com$\n(^|\\.)enlighten\\.org\\.tw$\n(^|\\.)entermap\\.com$\n(^|\\.)entnt\\.com$\n(^|\\.)environment\\.google$\n(^|\\.)epac\\.to$\n(^|\\.)epa\\.gov\\.tw$\n(^|\\.)episcopalchurch\\.org$\n(^|\\.)epochhk\\.com$\n(^|\\.)epochtimes-bg\\.com$\n(^|\\.)epochtimes\\.co\\.il$\n(^|\\.)epochtimes\\.co\\.kr$\n(^|\\.)epochtimes\\.com$\n(^|\\.)epochtimes\\.cz$\n(^|\\.)epochtimes\\.de$\n(^|\\.)epochtimes\\.fr$\n(^|\\.)epochtimes\\.ie$\n(^|\\.)epochtimes\\.it$\n(^|\\.)epochtimes\\.jp$\n(^|\\.)epochtimes-romania\\.com$\n(^|\\.)epochtimes\\.ru$\n(^|\\.)epochtimes\\.se$\n(^|\\.)epochtimestr\\.com$\n(^|\\.)epochweek\\.com$\n(^|\\.)epochweekly\\.com$\n(^|\\.)eporner\\.com$\n(^|\\.)equinenow\\.com$\n(^|\\.)erabaru\\.net$\n(^|\\.)eracom\\.com\\.tw$\n(^|\\.)eraysoft\\.com\\.tr$\n(^|\\.)erepublik\\.com$\n(^|\\.)erights\\.net$\n(^|\\.)eriversoft\\.com$\n(^|\\.)erktv\\.com$\n(^|\\.)ernestmandel\\.org$\n(^|\\.)erodaizensyu\\.com$\n(^|\\.)erodoujinlog\\.com$\n(^|\\.)erodoujinworld\\.com$\n(^|\\.)eromangadouzin\\.com$\n(^|\\.)eromanga-kingdom\\.com$\n(^|\\.)eromon\\.net$\n(^|\\.)eroprofile\\.com$\n(^|\\.)eroticsaloon\\.net$\n(^|\\.)eslite\\.com$\n(^|\\.)esmtp\\.biz$\n(^|\\.)esurance\\.com$\n(^|\\.)etaa\\.org\\.au$\n(^|\\.)etadult\\.com$\n(^|\\.)etaiwannews\\.com$\n(^|\\.)etherdelta\\.com$\n(^|\\.)etizer\\.org$\n(^|\\.)etokki\\.com$\n(^|\\.)etools\\.ncol\\.com$\n(^|\\.)etowns\\.net$\n(^|\\.)etowns\\.org$\n(^|\\.)e-traderland\\.net$\n(^|\\.)ettoday\\.net$\n(^|\\.)etvonline\\.hk$\n(^|\\.)eucasino\\.com$\n(^|\\.)eulam\\.com$\n(^|\\.)eu\\.org$\n(^|\\.)eurekavpt\\.com$\n(^|\\.)euronews\\.com$\n(^|\\.)evchk\\.wikia\\.com$\n(^|\\.)evschool\\.net$\n(^|\\.)exblog\\.jp$\n(^|\\.)exchristian\\.hk$\n(^|\\.)exmo\\.com$\n(^|\\.)exmormon\\.org$\n(^|\\.)expatshield\\.com$\n(^|\\.)expecthim\\.com$\n(^|\\.)expekt\\.com$\n(^|\\.)experts-univers\\.com$\n(^|\\.)exploader\\.net$\n(^|\\.)expressvpn\\.com$\n(^|\\.)exrates\\.me$\n(^|\\.)extmatrix\\.com$\n(^|\\.)extremetube\\.com$\n(^|\\.)exx\\.com$\n(^|\\.)eyevio\\.jp$\n(^|\\.)eyny\\.com$\n(^|\\.)e-zone\\.com\\.hk$\n(^|\\.)ezpc\\.tk$\n(^|\\.)ezpeer\\.com$\n(^|\\.)ezua\\.com$\n(^|\\.)facebook\\.br$\n(^|\\.)facebook\\.com$\n(^|\\.)facebook\\.design$\n(^|\\.)facebook\\.hu$\n(^|\\.)facebook\\.in$\n(^|\\.)facebookmail\\.com$\n(^|\\.)facebook\\.nl$\n(^|\\.)facebookquotes4u\\.com$\n(^|\\.)facebook\\.se$\n(^|\\.)faceless\\.me$\n(^|\\.)facesofnyfw\\.com$\n(^|\\.)facesoftibetanselfimmolators\\.info$\n(^|\\.)fa\\.gov\\.tw$\n(^|\\.)fail\\.hk$\n(^|\\.)faith100\\.org$\n(^|\\.)faithfuleye\\.com$\n(^|\\.)faiththedog\\.info$\n(^|\\.)fakku\\.net$\n(^|\\.)falsefire\\.com$\n(^|\\.)falunart\\.org$\n(^|\\.)falunasia\\.info$\n(^|\\.)falunau\\.org$\n(^|\\.)falunaz\\.net$\n(^|\\.)falun\\.caltech\\.edu$\n(^|\\.)falun-co\\.org$\n(^|\\.)falundafa-dc\\.org$\n(^|\\.)falundafa-florida\\.org$\n(^|\\.)falundafaindia\\.org$\n(^|\\.)falundafamuseum\\.org$\n(^|\\.)falundafa-nc\\.org$\n(^|\\.)falundafa\\.org$\n(^|\\.)falundafa-pa\\.net$\n(^|\\.)falundafa-sacramento\\.org$\n(^|\\.)falungong\\.club$\n(^|\\.)falungong\\.de$\n(^|\\.)falungong\\.org\\.uk$\n(^|\\.)falunhr\\.org$\n(^|\\.)faluninfo\\.de$\n(^|\\.)faluninfo\\.net$\n(^|\\.)falun-ny\\.net$\n(^|\\.)falunpilipinas\\.net$\n(^|\\.)falunworld\\.net$\n(^|\\.)familyfed\\.org$\n(^|\\.)famunion\\.com$\n(^|\\.)fangbinxing\\.com$\n(^|\\.)fangeming\\.com$\n(^|\\.)fangeqiang\\.com$\n(^|\\.)fanglizhi\\.info$\n(^|\\.)fangmincn\\.org$\n(^|\\.)fangong\\.forums-free\\.com$\n(^|\\.)fangongheike\\.com$\n(^|\\.)fangong\\.org$\n(^|\\.)fanhaodang\\.com$\n(^|\\.)fan-qiang\\.com$\n(^|\\.)fanqiangdang\\.com$\n(^|\\.)fanqianghou\\.com$\n(^|\\.)fanqiang\\.tk$\n(^|\\.)fanqiangyakexi\\.net$\n(^|\\.)fanqiangzhe\\.com$\n(^|\\.)fanswong\\.com$\n(^|\\.)fanyue\\.info$\n(^|\\.)fapdu\\.com$\n(^|\\.)faproxy\\.com$\n(^|\\.)faqserv\\.com$\n(^|\\.)fartit\\.com$\n(^|\\.)farwestchina\\.com$\n(^|\\.)fastpic\\.ru$\n(^|\\.)fastssh\\.com$\n(^|\\.)faststone\\.org$\n(^|\\.)fast\\.wistia\\.com$\n(^|\\.)fatbtc\\.com$\n(^|\\.)favstar\\.fm$\n(^|\\.)fawanghuihui\\.org$\n(^|\\.)faydao\\.com$\n(^|\\.)fbaddins\\.com$\n(^|\\.)fbcdn\\.net$\n(^|\\.)fb\\.com$\n(^|\\.)fb\\.me$\n(^|\\.)fbsbx\\.com$\n(^|\\.)fbworkmail\\.com$\n(^|\\.)fc2blog\\.net$\n(^|\\.)fc2china\\.com$\n(^|\\.)fc2cn\\.com$\n(^|\\.)fc2\\.com$\n(^|\\.)fda\\.gov\\.tw$\n(^|\\.)fdc64\\.de$\n(^|\\.)fdc64\\.org$\n(^|\\.)fdc89\\.jp$\n(^|\\.)feedburner\\.com$\n(^|\\.)feeds\\.fileforum\\.com$\n(^|\\.)feedx\\.net$\n(^|\\.)feelssh\\.com$\n(^|\\.)feer\\.com$\n(^|\\.)feifeiss\\.com$\n(^|\\.)feitianacademy\\.org$\n(^|\\.)feitian-california\\.org$\n(^|\\.)feministteacher\\.com$\n(^|\\.)fengzhenghu\\.com$\n(^|\\.)fengzhenghu\\.net$\n(^|\\.)fevernet\\.com$\n(^|\\.)fffff\\.at$\n(^|\\.)ff\\.im$\n(^|\\.)fflick\\.com$\n(^|\\.)ffvpn\\.com$\n(^|\\.)fgmtv\\.net$\n(^|\\.)fgmtv\\.org$\n(^|\\.)fhreports\\.net$\n(^|\\.)fiddle\\.jshell\\.net$\n(^|\\.)figprayer\\.com$\n(^|\\.)fileflyer\\.com$\n(^|\\.)files2me\\.com$\n(^|\\.)fileserve\\.com$\n(^|\\.)filesor\\.com$\n(^|\\.)fillthesquare\\.org$\n(^|\\.)filmingfortibet\\.org$\n(^|\\.)filmy\\.olabloga\\.pl$\n(^|\\.)filthdump\\.com$\n(^|\\.)financetwitter\\.com$\n(^|\\.)finchvpn\\.com$\n(^|\\.)findmespot\\.com$\n(^|\\.)findyoutube\\.com$\n(^|\\.)findyoutube\\.net$\n(^|\\.)fingerdaily\\.com$\n(^|\\.)finler\\.net$\n(^|\\.)firearmsworld\\.net$\n(^|\\.)firebaseio\\.com$\n(^|\\.)fireofliberty\\.org$\n(^|\\.)firetweet\\.io$\n(^|\\.)firstfivefollowers\\.com$\n(^|\\.)flagsonline\\.it$\n(^|\\.)flecheinthepeche\\.fr$\n(^|\\.)fleshbot\\.com$\n(^|\\.)fleursdeslettres\\.com$\n(^|\\.)flgg\\.us$\n(^|\\.)flgjustice\\.org$\n(^|\\.)flickr\\.com$\n(^|\\.)flickrhivemind\\.net$\n(^|\\.)flickriver\\.com$\n(^|\\.)fling\\.com$\n(^|\\.)flipboard\\.com$\n(^|\\.)flipkart\\.com$\n(^|\\.)flitto\\.com$\n(^|\\.)flnet\\.org$\n(^|\\.)flog\\.tw$\n(^|\\.)flyvpn\\.com$\n(^|\\.)flyzy2005\\.com$\n(^|\\.)fnac\\.be$\n(^|\\.)fnac\\.com$\n(^|\\.)fochk\\.org$\n(^|\\.)focustaiwan\\.tw$\n(^|\\.)focusvpn\\.com$\n(^|\\.)fofg-europe\\.net$\n(^|\\.)fofg\\.org$\n(^|\\.)fofldfradio\\.org$\n(^|\\.)fooooo\\.com$\n(^|\\.)footwiball\\.com$\n(^|\\.)foreignpolicy\\.com$\n(^|\\.)forum4hk\\.com$\n(^|\\.)forum\\.baby-kingdom\\.com$\n(^|\\.)forum\\.cyberctm\\.com$\n(^|\\.)forum\\.idsam\\.com$\n(^|\\.)forum\\.my903\\.com$\n(^|\\.)forum\\.mymaji\\.com$\n(^|\\.)forum\\.omy\\.sg$\n(^|\\.)forum\\.palmislife\\.com$\n(^|\\.)forum\\.setty\\.com\\.tw$\n(^|\\.)forum\\.sina\\.com\\.hk$\n(^|\\.)forum\\.slime\\.com\\.tw$\n(^|\\.)forum\\.tvb\\.com$\n(^|\\.)forum\\.xinbao\\.de$\n(^|\\.)fotile\\.me$\n(^|\\.)fourface\\.nodesnoop\\.com$\n(^|\\.)fourthinternational\\.org$\n(^|\\.)foxdie\\.us$\n(^|\\.)foxgay\\.com$\n(^|\\.)foxsub\\.com$\n(^|\\.)foxtang\\.com$\n(^|\\.)fpmtmexico\\.org$\n(^|\\.)fpmt\\.org$\n(^|\\.)fpmt-osel\\.org$\n(^|\\.)fpmt\\.tw$\n(^|\\.)fqok\\.org$\n(^|\\.)fqrouter\\.com$\n(^|\\.)fq\\.wikia\\.com$\n(^|\\.)franklc\\.com$\n(^|\\.)freakshare\\.com$\n(^|\\.)free4u\\.com\\.ar$\n(^|\\.)freealim\\.com$\n(^|\\.)freebrowser\\.org$\n(^|\\.)freechal\\.com$\n(^|\\.)freechinaforum\\.org$\n(^|\\.)freechina\\.net$\n(^|\\.)freechina\\.news$\n(^|\\.)freechinaweibo\\.com$\n(^|\\.)freeddns\\.com$\n(^|\\.)freeddns\\.org$\n(^|\\.)freedomchina\\.info$\n(^|\\.)freedomcollection\\.org$\n(^|\\.)freedomhouse\\.org$\n(^|\\.)freedominfonetweb\\.wordpress\\.com$\n(^|\\.)freedomsherald\\.org$\n(^|\\.)freeforums\\.org$\n(^|\\.)freefq\\.com$\n(^|\\.)free\\.fr$\n(^|\\.)freefuckvids\\.com$\n(^|\\.)freegao\\.com$\n(^|\\.)free-gate\\.org$\n(^|\\.)free-hada-now\\.org$\n(^|\\.)freehongkong\\.org$\n(^|\\.)freeilhamtohti\\.org$\n(^|\\.)freekwonpyong\\.org$\n(^|\\.)freelotto\\.com$\n(^|\\.)freeman2\\.com$\n(^|\\.)freemoren\\.com$\n(^|\\.)freemorenews\\.com$\n(^|\\.)freemuse\\.org$\n(^|\\.)freenet-china\\.org$\n(^|\\.)freenetproject\\.org$\n(^|\\.)freenewscn\\.com$\n(^|\\.)freeopenvpn\\.com$\n(^|\\.)freeoz\\.org$\n(^|\\.)free-proxy\\.cz$\n(^|\\.)free-ssh\\.com$\n(^|\\.)freessh\\.us$\n(^|\\.)free-ss\\.site$\n(^|\\.)freetcp\\.com$\n(^|\\.)freetibetanheroes\\.org$\n(^|\\.)freetibet\\.net$\n(^|\\.)freetibet\\.org$\n(^|\\.)freeviewmovies\\.com$\n(^|\\.)freevpn\\.me$\n(^|\\.)freevpn\\.nl$\n(^|\\.)freewallpaper4\\.me$\n(^|\\.)freewebs\\.com$\n(^|\\.)freewechat\\.com$\n(^|\\.)freeweibo\\.com$\n(^|\\.)freewww\\.biz$\n(^|\\.)freewww\\.info$\n(^|\\.)freexinwen\\.com$\n(^|\\.)freeyellow\\.com$\n(^|\\.)freeyoutubeproxy\\.net$\n(^|\\.)friendfeed\\.com$\n(^|\\.)friendfeed-media\\.com$\n(^|\\.)friends-of-tibet\\.org$\n(^|\\.)friendsoftibet\\.org$\n(^|\\.)fring\\.com$\n(^|\\.)fringenetwork\\.com$\n(^|\\.)fromchinatousa\\.net$\n(^|\\.)frommel\\.net$\n(^|\\.)from-pr\\.com$\n(^|\\.)from-sd\\.com$\n(^|\\.)frontlinedefenders\\.org$\n(^|\\.)frootvpn\\.com$\n(^|\\.)fscked\\.org$\n(^|\\.)fsurf\\.com$\n(^|\\.)ftchinese\\.com$\n(^|\\.)ftp1\\.biz$\n(^|\\.)ftpserver\\.biz$\n(^|\\.)ftv\\.com\\.tw$\n(^|\\.)fucd\\.com$\n(^|\\.)fuckcnnic\\.net$\n(^|\\.)fuckgfw\\.org$\n(^|\\.)fulione\\.com$\n(^|\\.)fullerconsideration\\.com$\n(^|\\.)fulue\\.com$\n(^|\\.)funf\\.tw$\n(^|\\.)funkyimg\\.com$\n(^|\\.)funp\\.com$\n(^|\\.)fuq\\.com$\n(^|\\.)furbo\\.org$\n(^|\\.)furhhdl\\.org$\n(^|\\.)furinkan\\.com$\n(^|\\.)furl\\.net$\n(^|\\.)futurechinaforum\\.org$\n(^|\\.)futuremessage\\.org$\n(^|\\.)fux\\.com$\n(^|\\.)fuyindiantai\\.org$\n(^|\\.)fuyin\\.net$\n(^|\\.)fuyu\\.org\\.tw$\n(^|\\.)fw\\.cm$\n(^|\\.)fxcm-chinese\\.com$\n(^|\\.)fxnetworks\\.com$\n(^|\\.)fzh999\\.com$\n(^|\\.)fzh999\\.net$\n(^|\\.)fzlm\\.com$\n(^|\\.)g0v\\.social$\n(^|\\.)g6hentai\\.com$\n(^|\\.)gabocorp\\.com$\n(^|\\.)gaeproxy\\.com$\n(^|\\.)gaforum\\.org$\n(^|\\.)galaxymacau\\.com$\n(^|\\.)galenwu\\.com$\n(^|\\.)galstars\\.net$\n(^|\\.)game735\\.com$\n(^|\\.)gamebase\\.com\\.tw$\n(^|\\.)gamejolt\\.com$\n(^|\\.)gamer2-cds\\.cdn\\.hinet\\.net$\n(^|\\.)gamer-cds\\.cdn\\.hinet\\.net$\n(^|\\.)gamer\\.com\\.tw$\n(^|\\.)gamez\\.com\\.tw$\n(^|\\.)gamousa\\.com$\n(^|\\.)ganges\\.com$\n(^|\\.)gaoming\\.net$\n(^|\\.)gaopi\\.net$\n(^|\\.)gaozhisheng\\.net$\n(^|\\.)gaozhisheng\\.org$\n(^|\\.)gardennetworks\\.com$\n(^|\\.)gardennetworks\\.org$\n(^|\\.)g-area\\.org$\n(^|\\.)gartlive\\.com$\n(^|\\.)gatecoin\\.com$\n(^|\\.)gate\\.io$\n(^|\\.)gate-project\\.com$\n(^|\\.)gather\\.com$\n(^|\\.)gatherproxy\\.com$\n(^|\\.)gati\\.org\\.tw$\n(^|\\.)gaybubble\\.com$\n(^|\\.)gaycn\\.net$\n(^|\\.)gayhub\\.com$\n(^|\\.)gaymap\\.cc$\n(^|\\.)gaymenring\\.com$\n(^|\\.)gaytube\\.com$\n(^|\\.)gaywatch\\.com$\n(^|\\.)gazotube\\.com$\n(^|\\.)gcc\\.org\\.hk$\n(^|\\.)gclooney\\.com$\n(^|\\.)gcmasia\\.com$\n(^|\\.)g\\.co$\n(^|\\.)gcpnews\\.com$\n(^|\\.)gcr\\.io$\n(^|\\.)gdbt\\.net$\n(^|\\.)gdzf\\.org$\n(^|\\.)geek-art\\.net$\n(^|\\.)geekerhome\\.com$\n(^|\\.)geekheart\\.info$\n(^|\\.)gekikame\\.com$\n(^|\\.)gelbooru\\.com$\n(^|\\.)geocities\\.co\\.jp$\n(^|\\.)geocities\\.com$\n(^|\\.)geocities\\.jp$\n(^|\\.)gerefoundation\\.org$\n(^|\\.)get\\.app$\n(^|\\.)getastrill\\.com$\n(^|\\.)getchu\\.com$\n(^|\\.)getcloak\\.com$\n(^|\\.)get\\.dev$\n(^|\\.)getfoxyproxy\\.org$\n(^|\\.)getfreedur\\.com$\n(^|\\.)getgom\\.com$\n(^|\\.)get\\.how$\n(^|\\.)geti2p\\.net$\n(^|\\.)getiton\\.com$\n(^|\\.)getjetso\\.com$\n(^|\\.)getlantern\\.org$\n(^|\\.)getmdl\\.io$\n(^|\\.)getoutline\\.org$\n(^|\\.)get\\.page$\n(^|\\.)getsocialscope\\.com$\n(^|\\.)getsync\\.com$\n(^|\\.)gettrials\\.com$\n(^|\\.)gettyimages\\.com$\n(^|\\.)getuploader\\.com$\n(^|\\.)gfbv\\.de$\n(^|\\.)gfgold\\.com\\.hk$\n(^|\\.)gfsale\\.com$\n(^|\\.)gfw\\.org\\.ua$\n(^|\\.)gfw\\.press$\n(^|\\.)ggpht\\.com$\n(^|\\.)ggssl\\.com$\n(^|\\.)ghostpath\\.com$\n(^|\\.)ghut\\.org$\n(^|\\.)giantessnight\\.com$\n(^|\\.)gifree\\.com$\n(^|\\.)giga-web\\.jp$\n(^|\\.)gigporno\\.ru$\n(^|\\.)girlbanker\\.com$\n(^|\\.)gist\\.github\\.com$\n(^|\\.)github\\.com$\n(^|\\.)git\\.io$\n(^|\\.)gizlen\\.net$\n(^|\\.)gjczz\\.com$\n(^|\\.)glass8\\.eu$\n(^|\\.)global\\.bing\\.com$\n(^|\\.)globaljihad\\.net$\n(^|\\.)globalmediaoutreach\\.com$\n(^|\\.)globalmuseumoncommunism\\.org$\n(^|\\.)globalrescue\\.net$\n(^|\\.)globaltm\\.org$\n(^|\\.)globalvoicesonline\\.org$\n(^|\\.)globalvoices\\.org$\n(^|\\.)globalvpn\\.net$\n(^|\\.)glock\\.com$\n(^|\\.)gloryhole\\.com$\n(^|\\.)glorystar\\.me$\n(^|\\.)gluckman\\.com$\n(^|\\.)glype\\.com$\n(^|\\.)gmail\\.com$\n(^|\\.)gmbd\\.cn$\n(^|\\.)gmhz\\.org$\n(^|\\.)gmll\\.org$\n(^|\\.)gmodules\\.com$\n(^|\\.)gmozomg\\.izihost\\.org$\n(^|\\.)gnci\\.org\\.hk$\n(^|\\.)go141\\.com$\n(^|\\.)goagent\\.biz$\n(^|\\.)goagent\\.codeplex\\.com$\n(^|\\.)goagentplus\\.com$\n(^|\\.)gobet\\.cc$\n(^|\\.)godfootsteps\\.org$\n(^|\\.)godns\\.work$\n(^|\\.)godoc\\.org$\n(^|\\.)godsdirectcontact\\.co\\.uk$\n(^|\\.)godsdirectcontact\\.org$\n(^|\\.)godsdirectcontact\\.org\\.tw$\n(^|\\.)godsimmediatecontact\\.com$\n(^|\\.)gogotunnel\\.com$\n(^|\\.)gohappy\\.com\\.tw$\n(^|\\.)gojet\\.krtco\\.com\\.tw$\n(^|\\.)gokbayrak\\.com$\n(^|\\.)golang\\.org$\n(^|\\.)goldbet\\.com$\n(^|\\.)goldbetsports\\.com$\n(^|\\.)goldeneyevault\\.com$\n(^|\\.)goldenfrog\\.com$\n(^|\\.)goldjizz\\.com$\n(^|\\.)goldstep\\.net$\n(^|\\.)goldwave\\.com$\n(^|\\.)go\\.nesnode\\.com$\n(^|\\.)gongmeng\\.info$\n(^|\\.)gongm\\.in$\n(^|\\.)gongminliliang\\.com$\n(^|\\.)gongwt\\.com$\n(^|\\.)gooday\\.xyz$\n(^|\\.)gooddns\\.info$\n(^|\\.)goodreaders\\.com$\n(^|\\.)goodreads\\.com$\n(^|\\.)goodtv\\.com\\.tw$\n(^|\\.)goodtv\\.tv$\n(^|\\.)goofind\\.com$\n(^|\\.)goo\\.gl$\n# Google TLDs$\n(^|\\.)google\\.ad$\n(^|\\.)google\\.ae$\n(^|\\.)google\\.al$\n(^|\\.)google\\.am$\n(^|\\.)google\\.as$\n(^|\\.)google\\.at$\n(^|\\.)google\\.az$\n(^|\\.)google\\.ba$\n(^|\\.)google\\.be$\n(^|\\.)google\\.bf$\n(^|\\.)google\\.bg$\n(^|\\.)google\\.bi$\n(^|\\.)google\\.bj$\n(^|\\.)google\\.bs$\n(^|\\.)google\\.bt$\n(^|\\.)google\\.by$\n(^|\\.)google\\.ca$\n(^|\\.)google\\.cat$\n(^|\\.)google\\.cd$\n(^|\\.)google\\.cf$\n(^|\\.)google\\.cg$\n(^|\\.)google\\.ch$\n(^|\\.)google\\.ci$\n(^|\\.)google\\.cl$\n(^|\\.)google\\.cm$\n(^|\\.)google\\.cn$\n(^|\\.)google\\.co\\.ao$\n(^|\\.)google\\.co\\.bw$\n(^|\\.)google\\.co\\.ck$\n(^|\\.)google\\.co\\.cr$\n(^|\\.)google\\.co\\.id$\n(^|\\.)google\\.co\\.il$\n(^|\\.)google\\.co\\.in$\n(^|\\.)google\\.co\\.jp$\n(^|\\.)google\\.co\\.ke$\n(^|\\.)google\\.co\\.kr$\n(^|\\.)google\\.co\\.ls$\n(^|\\.)google\\.co\\.ma$\n(^|\\.)google\\.co\\.mz$\n(^|\\.)google\\.co\\.nz$\n(^|\\.)google\\.co\\.th$\n(^|\\.)google\\.co\\.tz$\n(^|\\.)google\\.co\\.ug$\n(^|\\.)google\\.co\\.uk$\n(^|\\.)google\\.co\\.uz$\n(^|\\.)google\\.co\\.ve$\n(^|\\.)google\\.co\\.vi$\n(^|\\.)google\\.co\\.za$\n(^|\\.)google\\.co\\.zm$\n(^|\\.)google\\.co\\.zw$\n(^|\\.)google\\.com$\n(^|\\.)google\\.com\\.af$\n(^|\\.)google\\.com\\.ag$\n(^|\\.)google\\.com\\.ai$\n(^|\\.)google\\.com\\.ar$\n(^|\\.)google\\.com\\.au$\n(^|\\.)google\\.com\\.bd$\n(^|\\.)google\\.com\\.bh$\n(^|\\.)google\\.com\\.bn$\n(^|\\.)google\\.com\\.bo$\n(^|\\.)google\\.com\\.br$\n(^|\\.)google\\.com\\.bz$\n(^|\\.)google\\.com\\.co$\n(^|\\.)google\\.com\\.cu$\n(^|\\.)google\\.com\\.cy$\n(^|\\.)google\\.com\\.do$\n(^|\\.)google\\.com\\.ec$\n(^|\\.)google\\.com\\.eg$\n(^|\\.)google\\.com\\.et$\n(^|\\.)google\\.com\\.fj$\n(^|\\.)google\\.com\\.gh$\n(^|\\.)google\\.com\\.gi$\n(^|\\.)google\\.com\\.gt$\n(^|\\.)google\\.com\\.hk$\n(^|\\.)google\\.com\\.jm$\n(^|\\.)google\\.com\\.kh$\n(^|\\.)google\\.com\\.kw$\n(^|\\.)google\\.com\\.lb$\n(^|\\.)google\\.com\\.ly$\n(^|\\.)google\\.com\\.mm$\n(^|\\.)google\\.com\\.mt$\n(^|\\.)google\\.com\\.mx$\n(^|\\.)google\\.com\\.my$\n(^|\\.)google\\.com\\.na$\n(^|\\.)google\\.com\\.nf$\n(^|\\.)google\\.com\\.ng$\n(^|\\.)google\\.com\\.ni$\n(^|\\.)google\\.com\\.np$\n(^|\\.)google\\.com\\.om$\n(^|\\.)google\\.com\\.pa$\n(^|\\.)google\\.com\\.pe$\n(^|\\.)google\\.com\\.pg$\n(^|\\.)google\\.com\\.ph$\n(^|\\.)google\\.com\\.pk$\n(^|\\.)google\\.com\\.pr$\n(^|\\.)google\\.com\\.py$\n(^|\\.)google\\.com\\.qa$\n(^|\\.)google\\.com\\.sa$\n(^|\\.)google\\.com\\.sb$\n(^|\\.)google\\.com\\.sg$\n(^|\\.)google\\.com\\.sl$\n(^|\\.)google\\.com\\.sv$\n(^|\\.)google\\.com\\.tj$\n(^|\\.)google\\.com\\.tr$\n(^|\\.)google\\.com\\.tw$\n(^|\\.)google\\.com\\.ua$\n(^|\\.)google\\.com\\.uy$\n(^|\\.)google\\.com\\.vc$\n(^|\\.)google\\.com\\.vn$\n(^|\\.)google\\.cv$\n(^|\\.)google\\.cz$\n(^|\\.)google\\.de$\n(^|\\.)google\\.dj$\n(^|\\.)google\\.dk$\n(^|\\.)google\\.dm$\n(^|\\.)google\\.dz$\n(^|\\.)google\\.ee$\n(^|\\.)google\\.es$\n(^|\\.)google\\.fi$\n(^|\\.)google\\.fm$\n(^|\\.)google\\.fr$\n(^|\\.)google\\.ga$\n(^|\\.)google\\.ge$\n(^|\\.)google\\.gg$\n(^|\\.)google\\.gl$\n(^|\\.)google\\.gm$\n(^|\\.)google\\.gp$\n(^|\\.)google\\.gr$\n(^|\\.)google\\.gy$\n(^|\\.)google\\.hn$\n(^|\\.)google\\.hr$\n(^|\\.)google\\.ht$\n(^|\\.)google\\.hu$\n(^|\\.)google\\.ie$\n(^|\\.)google\\.im$\n(^|\\.)google\\.iq$\n(^|\\.)google\\.is$\n(^|\\.)google\\.it$\n(^|\\.)google\\.je$\n(^|\\.)google\\.jo$\n(^|\\.)google\\.kg$\n(^|\\.)google\\.ki$\n(^|\\.)google\\.kz$\n(^|\\.)google\\.la$\n(^|\\.)google\\.li$\n(^|\\.)google\\.lk$\n(^|\\.)google\\.lt$\n(^|\\.)google\\.lu$\n(^|\\.)google\\.lv$\n(^|\\.)google\\.md$\n(^|\\.)google\\.me$\n(^|\\.)google\\.mg$\n(^|\\.)google\\.mk$\n(^|\\.)google\\.ml$\n(^|\\.)google\\.mn$\n(^|\\.)google\\.ms$\n(^|\\.)google\\.mu$\n(^|\\.)google\\.mv$\n(^|\\.)google\\.mw$\n(^|\\.)google\\.ne$\n(^|\\.)google\\.nl$\n(^|\\.)google\\.no$\n(^|\\.)google\\.nr$\n(^|\\.)google\\.nu$\n(^|\\.)google\\.pl$\n(^|\\.)google\\.pn$\n(^|\\.)google\\.ps$\n(^|\\.)google\\.pt$\n(^|\\.)google\\.ro$\n(^|\\.)google\\.rs$\n(^|\\.)google\\.ru$\n(^|\\.)google\\.rw$\n(^|\\.)google\\.sc$\n(^|\\.)google\\.se$\n(^|\\.)google\\.sh$\n(^|\\.)google\\.si$\n(^|\\.)google\\.sk$\n(^|\\.)google\\.sm$\n(^|\\.)google\\.sn$\n(^|\\.)google\\.so$\n(^|\\.)google\\.sr$\n(^|\\.)google\\.st$\n(^|\\.)google\\.td$\n(^|\\.)google\\.tg$\n(^|\\.)google\\.tk$\n(^|\\.)google\\.tl$\n(^|\\.)google\\.tm$\n(^|\\.)google\\.tn$\n(^|\\.)google\\.to$\n(^|\\.)google\\.tt$\n(^|\\.)google\\.vg$\n(^|\\.)google\\.vu$\n(^|\\.)google\\.ws$\n# Google TLDs end$\n(^|\\.)googleapis\\.cn$\n(^|\\.)googleapis\\.com$\n(^|\\.)googleapps\\.com$\n(^|\\.)googlearth\\.com$\n(^|\\.)googleartproject\\.com$\n(^|\\.)googleblog\\.com$\n(^|\\.)googlebot\\.com$\n(^|\\.)google\\.calstate\\.edu$\n(^|\\.)googlechinawebmaster\\.com$\n(^|\\.)googlecode\\.com$\n(^|\\.)googlecommerce\\.com$\n(^|\\.)googledomains\\.com$\n(^|\\.)googledrive\\.com$\n(^|\\.)googleearth\\.com$\n(^|\\.)googlegroups\\.com$\n(^|\\.)googlehosted\\.com$\n(^|\\.)googleideas\\.com$\n(^|\\.)googleinsidesearch\\.com$\n(^|\\.)googlelabs\\.com$\n(^|\\.)googlemail\\.com$\n(^|\\.)googlemashups\\.com$\n(^|\\.)googlepagecreator\\.com$\n(^|\\.)googleplay\\.com$\n(^|\\.)googleplus\\.com$\n(^|\\.)googlescholar\\.com$\n(^|\\.)googlesile\\.com$\n(^|\\.)googlesource\\.com$\n(^|\\.)googleusercontent\\.com$\n(^|\\.)googlevideo\\.com$\n(^|\\.)googleweblight\\.com$\n(^|\\.)googlezip\\.net$\n(^|\\.)gopetition\\.com$\n(^|\\.)go-pki\\.com$\n(^|\\.)goproxing\\.net$\n(^|\\.)goregrish\\.com$\n(^|\\.)gospelherald\\.com$\n(^|\\.)gotdns\\.ch$\n(^|\\.)got-game\\.org$\n(^|\\.)gotgeeks\\.com$\n(^|\\.)gotrusted\\.com$\n(^|\\.)gotw\\.ca$\n(^|\\.)gov\\.taipei$\n(^|\\.)gov\\.tw$\n(^|\\.)g-queen\\.com$\n(^|\\.)gr8domain\\.biz$\n(^|\\.)gr8name\\.biz$\n(^|\\.)grammaly\\.com$\n(^|\\.)grandtrial\\.org$\n(^|\\.)grangorz\\.org$\n(^|\\.)graphis\\.ne\\.jp$\n(^|\\.)graphql\\.org$\n(^|\\.)greasespot\\.net$\n(^|\\.)greatfire\\.org$\n(^|\\.)greatfire\\.us7\\.list-manage\\.com$\n(^|\\.)greatfirewall\\.biz$\n(^|\\.)great-firewall\\.com$\n(^|\\.)greatfirewallofchina\\.net$\n(^|\\.)greatfirewallofchina\\.org$\n(^|\\.)great-roc\\.org$\n(^|\\.)greatroc\\.org$\n(^|\\.)greatroc\\.tw$\n(^|\\.)greatzhonghua\\.org$\n(^|\\.)greenfieldbookstore\\.com\\.hk$\n(^|\\.)greenparty\\.org\\.tw$\n(^|\\.)greenpeace\\.com\\.tw$\n(^|\\.)greenpeace\\.org$\n(^|\\.)greenreadings\\.com$\n(^|\\.)greenvpn\\.net$\n(^|\\.)greenvpn\\.org$\n(^|\\.)grotty-monday\\.com$\n(^|\\.)groups\\.google\\.cn$\n(^|\\.)grow\\.google$\n(^|\\.)gs-discuss\\.com$\n(^|\\.)gsp\\.target\\.com$\n(^|\\.)gstatic\\.com$\n(^|\\.)gtricks\\.com$\n(^|\\.)gts-vpn\\.com$\n(^|\\.)guaguass\\.com$\n(^|\\.)guaguass\\.org$\n(^|\\.)guancha\\.org$\n(^|\\.)guaneryu\\.com$\n(^|\\.)guangming\\.com\\.my$\n(^|\\.)guangnianvpn\\.com$\n(^|\\.)guardster\\.com$\n(^|\\.)gu-chu-sum\\.org$\n(^|\\.)guishan\\.org$\n(^|\\.)gumroad\\.com$\n(^|\\.)gunsamerica\\.com$\n(^|\\.)gunsandammo\\.com$\n(^|\\.)gun-world\\.net$\n(^|\\.)guo\\.media$\n(^|\\.)guruonline\\.hk$\n(^|\\.)gutteruncensored\\.com$\n(^|\\.)gvlib\\.com$\n(^|\\.)gvm\\.com\\.tw$\n(^|\\.)gvt0\\.com$\n(^|\\.)gvt1\\.com$\n(^|\\.)gvt3\\.com$\n(^|\\.)gwtproject\\.org$\n(^|\\.)gyalwarinpoche\\.com$\n(^|\\.)gyatsostudio\\.com$\n(^|\\.)gzm\\.tv$\n(^|\\.)gzone-anime\\.info$\n(^|\\.)h1n1china\\.org$\n(^|\\.)h528\\.com$\n(^|\\.)h5dm\\.com$\n(^|\\.)h5galgame\\.me$\n(^|\\.)hacg\\.club$\n(^|\\.)hacg\\.in$\n(^|\\.)hacg\\.li$\n(^|\\.)hacg\\.me$\n(^|\\.)hacg\\.red$\n(^|\\.)hacken\\.cc$\n(^|\\.)hacker\\.org$\n(^|\\.)hackthatphone\\.net$\n(^|\\.)hahaxixi\\.github\\.io$\n(^|\\.)hahlo\\.com$\n(^|\\.)hakkatv\\.org\\.tw$\n(^|\\.)handcraftedsoftware\\.org$\n(^|\\.)hanime\\.tv$\n(^|\\.)hanunyi\\.com$\n(^|\\.)haoel\\.github\\.io$\n(^|\\.)hao\\.news$\n(^|\\.)happy-vpn\\.com$\n(^|\\.)haproxy\\.org$\n(^|\\.)hardsextube\\.com$\n(^|\\.)harunyahya\\.com$\n(^|\\.)hautelookcdn\\.com$\n(^|\\.)hautelook\\.com$\n(^|\\.)have8\\.com$\n(^|\\.)hbg\\.com$\n(^|\\.)hbo\\.com$\n(^|\\.)h-china\\.org$\n(^|\\.)hclips\\.com$\n(^|\\.)hdlt\\.me$\n(^|\\.)hd\\.stheadline\\.com$\n(^|\\.)hdtvb\\.net$\n(^|\\.)hdzog\\.com$\n(^|\\.)heartyit\\.com$\n(^|\\.)heavy-r\\.com$\n(^|\\.)hecaitou\\.net$\n(^|\\.)hechaji\\.com$\n(^|\\.)hec\\.su$\n(^|\\.)heeact\\.edu\\.tw$\n(^|\\.)hegre-art\\.com$\n(^|\\.)heix\\.pp\\.ru$\n(^|\\.)helloandroid\\.com$\n(^|\\.)helloqueer\\.com$\n(^|\\.)helloss\\.pw$\n(^|\\.)hellotxt\\.com$\n(^|\\.)hellouk\\.org$\n(^|\\.)helpeachpeople\\.com$\n(^|\\.)helplinfen\\.com$\n(^|\\.)help\\.linksalpha\\.com$\n(^|\\.)helpster\\.de$\n(^|\\.)helpzhuling\\.org$\n(^|\\.)hentai\\.to$\n(^|\\.)hentaitube\\.tv$\n(^|\\.)hentaivideoworld\\.com$\n(^|\\.)heqinglian\\.net$\n(^|\\.)heungkongdiscuss\\.com$\n(^|\\.)hexieshe\\.com$\n(^|\\.)hexieshe\\.xyz$\n(^|\\.)hexxeh\\.net$\n(^|\\.)heyzo\\.com$\n(^|\\.)hgseav\\.com$\n(^|\\.)hhdcb3office\\.org$\n(^|\\.)hhthesakyatrizin\\.org$\n(^|\\.)hidden-advent\\.org$\n(^|\\.)hidecloud\\.com$\n(^|\\.)hidein\\.net$\n(^|\\.)hideipvpn\\.com$\n(^|\\.)hideman\\.net$\n(^|\\.)hide\\.me$\n(^|\\.)hideme\\.nl$\n(^|\\.)hidemyass\\.com$\n(^|\\.)hidemycomp\\.com$\n(^|\\.)hidemy\\.name$\n(^|\\.)higfw\\.com$\n(^|\\.)highpeakspureearth\\.com$\n(^|\\.)highrockmedia\\.com$\n(^|\\.)hihiforum\\.com$\n(^|\\.)hihistory\\.net$\n(^|\\.)hiitch\\.com$\n(^|\\.)hikinggfw\\.org$\n(^|\\.)hilive\\.tv$\n(^|\\.)himalayan-foundation\\.org$\n(^|\\.)himalayanglacier\\.com$\n(^|\\.)himemix\\.com$\n(^|\\.)himemix\\.net$\n(^|\\.)hi-on\\.org\\.tw$\n(^|\\.)hitbtc\\.com$\n(^|\\.)hitomi\\.la$\n(^|\\.)hizb-ut-tahrir\\.info$\n(^|\\.)hizb-ut-tahrir\\.org$\n(^|\\.)hizbuttahrir\\.org$\n(^|\\.)hjclub\\.info$\n(^|\\.)hk01\\.com$\n(^|\\.)hk32168\\.com$\n(^|\\.)hka8964\\.wordpress\\.com$\n(^|\\.)hkacg\\.com$\n(^|\\.)hkacg\\.net$\n(^|\\.)hkanews\\.wordpress\\.com$\n(^|\\.)hkatvnews\\.com$\n(^|\\.)hkbc\\.net$\n(^|\\.)hkbf\\.org$\n(^|\\.)hkbookcity\\.com$\n(^|\\.)hkchurch\\.org$\n(^|\\.)hkci\\.org\\.hk$\n(^|\\.)hkcmi\\.edu$\n(^|\\.)hkcnews\\.com$\n(^|\\.)hkcoc\\.com$\n(^|\\.)hkcoc\\.weather\\.com\\.hk$\n(^|\\.)hkdailynews\\.com\\.hk$\n(^|\\.)hkday\\.net$\n(^|\\.)hkdf\\.org$\n(^|\\.)hkej\\.com$\n(^|\\.)hkepc\\.com$\n(^|\\.)hkfaa\\.com$\n(^|\\.)hkfreezone\\.com$\n(^|\\.)hk\\.frienddy\\.com$\n(^|\\.)hkfront\\.org$\n(^|\\.)hkgalden\\.com$\n(^|\\.)hk\\.geocities\\.com$\n(^|\\.)hkgolden\\.com$\n(^|\\.)hk\\.gradconnection\\.com$\n(^|\\.)hkgreenradio\\.org$\n(^|\\.)hk\\.hao123img\\.com$\n(^|\\.)hkheadline\\.com$\n(^|\\.)hkhkhk\\.com$\n(^|\\.)hkhrc\\.org\\.hk$\n(^|\\.)hkhrm\\.org\\.hk$\n(^|\\.)hkip\\.org\\.uk$\n(^|\\.)hkjc\\.com$\n(^|\\.)hk\\.jiepang\\.com$\n(^|\\.)hkjp\\.org$\n(^|\\.)hk\\.knowledge\\.yahoo\\.com$\n(^|\\.)hklft\\.com$\n(^|\\.)hklts\\.org\\.hk$\n(^|\\.)hk\\.myblog\\.yahoo\\.com$\n(^|\\.)hk\\.news\\.yahoo\\.com$\n(^|\\.)hkptu\\.org$\n(^|\\.)hk-pub\\.com$\n(^|\\.)hk\\.rd\\.yahoo\\.com$\n(^|\\.)hkreporter\\.com$\n(^|\\.)hkreporter\\.loved\\.hk$\n(^|\\.)hk\\.search\\.yahoo\\.com$\n(^|\\.)hkupop\\.hku\\.hk$\n(^|\\.)hkusu\\.net$\n(^|\\.)hk\\.video\\.news\\.yahoo\\.com$\n(^|\\.)hkvwet\\.com$\n(^|\\.)hkwcc\\.org\\.hk$\n(^|\\.)hk\\.yahoo\\.com$\n(^|\\.)hkzone\\.org$\n(^|\\.)h-moe\\.com$\n(^|\\.)hmonghot\\.com$\n(^|\\.)hmv\\.co\\.jp$\n(^|\\.)hmvdigital\\.ca$\n(^|\\.)hmvdigital\\.com$\n(^|\\.)hnjhj\\.com$\n(^|\\.)hnntube\\.com$\n(^|\\.)hola\\.com$\n(^|\\.)hola\\.org$\n(^|\\.)holymountaincn\\.com$\n(^|\\.)holyspiritspeaks\\.org$\n(^|\\.)homedepot\\.com$\n(^|\\.)homeperversion\\.com$\n(^|\\.)homeservershow\\.com$\n(^|\\.)home\\.sina\\.com$\n(^|\\.)home\\.so-net\\.net\\.tw$\n(^|\\.)hongkongfp\\.com$\n(^|\\.)hongmeimei\\.com$\n(^|\\.)hongzhi\\.li$\n(^|\\.)hootsuite\\.com$\n(^|\\.)hoovers\\.com$\n(^|\\.)hopedialogue\\.org$\n(^|\\.)hopto\\.org$\n(^|\\.)hornygamer\\.com$\n(^|\\.)hornytrip\\.com$\n(^|\\.)hotav\\.tv$\n(^|\\.)hotels\\.cn$\n(^|\\.)hotfrog\\.com\\.tw$\n(^|\\.)hotgoo\\.com$\n(^|\\.)hotpornshow\\.com$\n(^|\\.)hotpot\\.hk$\n(^|\\.)hotshame\\.com$\n(^|\\.)hotspotshield\\.com$\n(^|\\.)hotvpn\\.com$\n(^|\\.)hougaige\\.com$\n(^|\\.)howtoforge\\.com$\n(^|\\.)hoxx\\.com$\n(^|\\.)hpa\\.gov\\.tw$\n(^|\\.)hqcdp\\.org$\n(^|\\.)hqjapanesesex\\.com$\n(^|\\.)hqmovies\\.com$\n(^|\\.)hqsbnet\\.wordpress\\.com$\n(^|\\.)hqsbonline\\.wordpress\\.com$\n(^|\\.)hrcchina\\.org$\n(^|\\.)hrcir\\.com$\n(^|\\.)hrea\\.org$\n(^|\\.)hrichina\\.org$\n(^|\\.)hrtsea\\.com$\n(^|\\.)hrweb\\.org$\n(^|\\.)hrw\\.org$\n(^|\\.)hsjp\\.net$\n(^|\\.)hsselite\\.com$\n(^|\\.)hstern\\.net$\n(^|\\.)hst\\.net\\.tw$\n(^|\\.)hstt\\.net$\n(^|\\.)htkou\\.net$\n(^|\\.)htl\\.li$\n(^|\\.)ht\\.ly$\n(^|\\.)html5rocks\\.com$\n(^|\\.)https443\\.net$\n(^|\\.)https443\\.org$\n(^|\\.)huaglad\\.com$\n(^|\\.)huanghuagang\\.org$\n(^|\\.)huangyiyu\\.com$\n(^|\\.)huaren4us\\.com$\n(^|\\.)huaren\\.us$\n(^|\\.)huashangnews\\.com$\n(^|\\.)huaxiabao\\.org$\n(^|\\.)huaxia-news\\.com$\n(^|\\.)huaxin\\.ph$\n(^|\\.)hua-yue\\.net$\n(^|\\.)huayuworld\\.org$\n(^|\\.)hudatoriq\\.web\\.id$\n(^|\\.)hudson\\.org$\n(^|\\.)huffingtonpost\\.com$\n(^|\\.)hugoroy\\.eu$\n(^|\\.)huhaitai\\.com$\n(^|\\.)huhamhire\\.com$\n(^|\\.)huiyi\\.in$\n(^|\\.)hulkshare\\.com$\n(^|\\.)hulu\\.com$\n(^|\\.)huluim\\.com$\n(^|\\.)humanrightsbriefing\\.org$\n(^|\\.)hungerstrikeforaids\\.org$\n(^|\\.)hung-ya\\.com$\n(^|\\.)huobi\\.com$\n(^|\\.)huobi\\.pro$\n(^|\\.)huobipro\\.com$\n(^|\\.)huping\\.net$\n(^|\\.)hurgokbayrak\\.com$\n(^|\\.)hurriyet\\.com\\.tr$\n(^|\\.)hustlercash\\.com$\n(^|\\.)hut2\\.ru$\n(^|\\.)hutianyi\\.net$\n(^|\\.)hutong9\\.net$\n(^|\\.)huyandex\\.com$\n(^|\\.)hwadzan\\.tw$\n(^|\\.)hwayue\\.org\\.tw$\n(^|\\.)hwinfo\\.com$\n(^|\\.)hxwk\\.org$\n(^|\\.)hxwq\\.org$\n(^|\\.)hybrid-analysis\\.com$\n(^|\\.)hyperrate\\.com$\n(^|\\.)i1\\.hk$\n(^|\\.)i2p2\\.de$\n(^|\\.)i2runner\\.com$\n(^|\\.)i818hk\\.com$\n(^|\\.)iam\\.soy$\n(^|\\.)iamtopone\\.com$\n(^|\\.)iask\\.bz$\n(^|\\.)iask\\.ca$\n(^|\\.)iav19\\.com$\n(^|\\.)ibiblio\\.org$\n(^|\\.)iblist\\.com$\n(^|\\.)iblogserv-f\\.net$\n(^|\\.)ibros\\.org$\n(^|\\.)ibvpn\\.com$\n(^|\\.)i-cable\\.com$\n(^|\\.)icams\\.com$\n(^|\\.)ice\\.audionow\\.com$\n(^|\\.)icij\\.org$\n(^|\\.)icl-fi\\.org$\n(^|\\.)icoco\\.com$\n(^|\\.)iconpaper\\.org$\n(^|\\.)icu-project\\.org$\n(^|\\.)iddddg\\.com$\n(^|\\.)idemocracy\\.asia$\n(^|\\.)identi\\.ca$\n(^|\\.)id\\.hao123\\.com$\n(^|\\.)id\\.heroku\\.com$\n(^|\\.)idiomconnection\\.com$\n(^|\\.)idouga\\.com$\n(^|\\.)idreamx\\.com$\n(^|\\.)idv\\.tw$\n(^|\\.)ieasy5\\.com$\n(^|\\.)ied2k\\.net$\n(^|\\.)ienergy1\\.com$\n(^|\\.)ifan\\.cz\\.cc$\n(^|\\.)ifanqiang\\.com$\n(^|\\.)ifcss\\.org$\n(^|\\.)ifjc\\.org$\n(^|\\.)ifreewares\\.com$\n(^|\\.)if\\.ttt$\n(^|\\.)ift\\.tt$\n(^|\\.)igcd\\.net$\n(^|\\.)igfw\\.net$\n(^|\\.)igfw\\.tech$\n(^|\\.)igmg\\.de$\n(^|\\.)ignitedetroit\\.net$\n(^|\\.)igoogle\\.com$\n(^|\\.)igotmail\\.com\\.tw$\n(^|\\.)igvita\\.com$\n(^|\\.)ihakka\\.net$\n(^|\\.)ihao\\.org$\n(^|\\.)iicns\\.com$\n(^|\\.)iipdigital\\.usembassy\\.gov$\n(^|\\.)ikstar\\.com$\n(^|\\.)ikwb\\.com$\n(^|\\.)i\\.lithium\\.com$\n(^|\\.)illusionfactory\\.com$\n(^|\\.)ilove80\\.be$\n(^|\\.)ilovelongtoes\\.com$\n(^|\\.)im88\\.tw$\n(^|\\.)imageab\\.com$\n(^|\\.)imagefap\\.com$\n(^|\\.)imageflea\\.com$\n(^|\\.)images\\.comico\\.tw$\n(^|\\.)images-gaytube\\.com$\n(^|\\.)imageshack\\.us$\n(^|\\.)imagevenue\\.com$\n(^|\\.)imagezilla\\.net$\n(^|\\.)imb\\.org$\n(^|\\.)imdb\\.com$\n(^|\\.)imgchili\\.net$\n(^|\\.)img\\.dlsite\\.jp$\n(^|\\.)img\\.ly$\n(^|\\.)imgmega\\.com$\n(^|\\.)imgur\\.com$\n(^|\\.)imkev\\.com$\n(^|\\.)imlive\\.com$\n(^|\\.)immigration\\.gov\\.tw$\n(^|\\.)immoral\\.jp$\n(^|\\.)impact\\.org\\.au$\n(^|\\.)impp\\.mn$\n(^|\\.)im\\.tv$\n(^|\\.)in99\\.org$\n(^|\\.)incapdns\\.net$\n(^|\\.)incloak\\.com$\n(^|\\.)incredibox\\.fr$\n(^|\\.)indiandefensenews\\.in$\n(^|\\.)indiemerch\\.com$\n(^|\\.)in-disguise\\.com$\n(^|\\.)info-graf\\.fr$\n(^|\\.)initiativesforchina\\.org$\n(^|\\.)inkui\\.com$\n(^|\\.)inmediahk\\.net$\n(^|\\.)innermongolia\\.org$\n(^|\\.)inote\\.tw$\n(^|\\.)insecam\\.org$\n(^|\\.)insidevoa\\.com$\n(^|\\.)instagram\\.com$\n(^|\\.)instanthq\\.com$\n(^|\\.)institut-tibetain\\.org$\n(^|\\.)international-news\\.newsmagazine\\.asia$\n(^|\\.)internetdefenseleague\\.org$\n(^|\\.)internetfreedom\\.org$\n(^|\\.)internet\\.org$\n(^|\\.)internetpopculture\\.com$\n(^|\\.)inthenameofconfuciusmovie\\.com$\n(^|\\.)investigating\\.wordpress\\.com$\n(^|\\.)inxian\\.com$\n(^|\\.)iownyour\\.biz$\n(^|\\.)iownyour\\.org$\n(^|\\.)ipalter\\.com$\n(^|\\.)i-part\\.com\\.tw$\n(^|\\.)ipfire\\.org$\n(^|\\.)ipfs\\.io$\n(^|\\.)iphone4hongkong\\.com$\n(^|\\.)iphonehacks\\.com$\n(^|\\.)iphonetaiwan\\.org$\n(^|\\.)iphonix\\.fr$\n(^|\\.)ipicture\\.ru$\n(^|\\.)ipjetable\\.net$\n(^|\\.)ipobar\\.com$\n(^|\\.)ipoock\\.com$\n(^|\\.)iportal\\.me$\n(^|\\.)ippotv\\.com$\n(^|\\.)ipredator\\.se$\n(^|\\.)iptvbin\\.com$\n(^|\\.)iptv\\.com\\.tw$\n(^|\\.)ipvanish\\.com$\n(^|\\.)iredmail\\.org$\n(^|\\.)ironbigfools\\.compython\\.net$\n(^|\\.)ironpython\\.net$\n(^|\\.)ironsocket\\.com$\n(^|\\.)isaacmao\\.com$\n(^|\\.)is-a-hunter\\.com$\n(^|\\.)isasecret\\.com$\n(^|\\.)i-scmp\\.com$\n(^|\\.)isc\\.sans\\.edu$\n(^|\\.)is\\.gd$\n(^|\\.)isgreat\\.org$\n(^|\\.)islahhaber\\.net$\n(^|\\.)islamawareness\\.net$\n(^|\\.)islamhouse\\.com$\n(^|\\.)islamicity\\.com$\n(^|\\.)islamicpluralism\\.org$\n(^|\\.)islam\\.org\\.hk$\n(^|\\.)islamtoday\\.net$\n(^|\\.)ismaelan\\.com$\n(^|\\.)ismalltits\\.com$\n(^|\\.)ismprofessional\\.net$\n(^|\\.)isohunt\\.com$\n(^|\\.)israbox\\.com$\n(^|\\.)issuu\\.com$\n(^|\\.)istars\\.co\\.nz$\n(^|\\.)istiqlalhewer\\.com$\n(^|\\.)istockphoto\\.com$\n(^|\\.)isunaffairs\\.com$\n(^|\\.)isuntv\\.com$\n(^|\\.)itaboo\\.info$\n(^|\\.)itaiwan\\.gov\\.tw$\n(^|\\.)italiatibet\\.org$\n(^|\\.)itasoftware\\.com$\n(^|\\.)itemdb\\.com$\n(^|\\.)ithelp\\.ithome\\.com\\.tw$\n(^|\\.)itsaol\\.com$\n(^|\\.)its\\.caltech\\.edu$\n(^|\\.)itshidden\\.com$\n(^|\\.)itsky\\.it$\n(^|\\.)itweet\\.net$\n(^|\\.)iu45\\.com$\n(^|\\.)iuhrdf\\.org$\n(^|\\.)iuksky\\.com$\n(^|\\.)ivacy\\.com$\n(^|\\.)iverycd\\.com$\n(^|\\.)ivpn\\.net$\n(^|\\.)ixquick\\.com$\n(^|\\.)ixxx\\.com$\n(^|\\.)iyouport\\.com$\n(^|\\.)izaobao\\.us$\n(^|\\.)izlesem\\.org$\n(^|\\.)izles\\.net$\n(^|\\.)jamaat\\.org$\n(^|\\.)jamyangnorbu\\.com$\n(^|\\.)jandyx\\.com$\n(^|\\.)janwongphoto\\.com$\n(^|\\.)japanfirst\\.asianfreeforum\\.com$\n(^|\\.)japantimes\\.co\\.jp$\n(^|\\.)japan-whores\\.com$\n(^|\\.)jav101\\.com$\n(^|\\.)jav2be\\.com$\n(^|\\.)jav68\\.tv$\n(^|\\.)javakiba\\.org$\n(^|\\.)javbus\\.com$\n(^|\\.)jav\\.com$\n(^|\\.)javfor\\.me$\n(^|\\.)javhd\\.com$\n(^|\\.)javhip\\.com$\n(^|\\.)javhub\\.net$\n(^|\\.)javhuge\\.com$\n(^|\\.)javlibrary\\.com$\n(^|\\.)javmobile\\.net$\n(^|\\.)javmoo\\.com$\n(^|\\.)javmoo\\.xyz$\n(^|\\.)javseen\\.com$\n(^|\\.)javtag\\.com$\n(^|\\.)javzoo\\.com$\n(^|\\.)ja\\.wikipedia\\.org$\n(^|\\.)jbtalks\\.cc$\n(^|\\.)jbtalks\\.com$\n(^|\\.)jbtalks\\.my$\n(^|\\.)jcpenney\\.com$\n(^|\\.)jdwsy\\.com$\n(^|\\.)jeanyim\\.com$\n(^|\\.)jetos\\.com$\n(^|\\.)jex\\.com$\n(^|\\.)jfqu36\\.club$\n(^|\\.)jfqu37\\.xyz$\n(^|\\.)jgoodies\\.com$\n(^|\\.)jiangweiping\\.com$\n(^|\\.)jiaoyou8\\.com$\n(^|\\.)jiehua\\.cz$\n(^|\\.)jieshibaobao\\.com$\n(^|\\.)jigglegifs\\.com$\n(^|\\.)jigong1024\\.com$\n(^|\\.)jihadintel\\.meforum\\.org$\n(^|\\.)jihadology\\.net$\n(^|\\.)jiji\\.com$\n(^|\\.)jims\\.net$\n(^|\\.)jinbushe\\.org$\n(^|\\.)jingpin\\.org$\n(^|\\.)jingsim\\.org$\n(^|\\.)jinpianwang\\.com$\n(^|\\.)jinroukong\\.com$\n(^|\\.)jintian\\.net$\n(^|\\.)jinx\\.com$\n(^|\\.)jitouch\\.com$\n(^|\\.)jizzthis\\.com$\n(^|\\.)jjgirls\\.com$\n(^|\\.)jkb\\.cc$\n(^|\\.)jkforum\\.net$\n(^|\\.)jkub\\.com$\n(^|\\.)jma\\.go\\.jp$\n(^|\\.)j\\.mp$\n(^|\\.)jmscult\\.com$\n(^|\\.)joachims\\.org$\n(^|\\.)jobnewera\\.wordpress\\.com$\n(^|\\.)jobso\\.tv$\n(^|\\.)joinmastodon\\.org$\n(^|\\.)journalchretien\\.net$\n(^|\\.)journalofdemocracy\\.org$\n(^|\\.)joymiihub\\.com$\n(^|\\.)joyourself\\.com$\n(^|\\.)jp\\.hao123\\.com$\n(^|\\.)jpl\\.nasa\\.gov$\n(^|\\.)jpopforum\\.net$\n(^|\\.)jtvnw\\.net$\n(^|\\.)jubushoushen\\.com$\n(^|\\.)juhuaren\\.com$\n(^|\\.)jukujo-club\\.com$\n(^|\\.)juliepost\\.com$\n(^|\\.)juliereyc\\.com$\n(^|\\.)junauza\\.com$\n(^|\\.)june4commemoration\\.org$\n(^|\\.)junefourth-20\\.net$\n(^|\\.)jungleheart\\.com$\n(^|\\.)juoaa\\.com$\n(^|\\.)justdied\\.com$\n(^|\\.)justfreevpn\\.com$\n(^|\\.)justicefortenzin\\.org$\n(^|\\.)justpaste\\.it$\n(^|\\.)justtristan\\.com$\n(^|\\.)juyuange\\.org$\n(^|\\.)juziyue\\.com$\n(^|\\.)jwmusic\\.org$\n(^|\\.)jyxf\\.net$\n(^|\\.)kagyumonlam\\.org$\n(^|\\.)kagyunews\\.com\\.hk$\n(^|\\.)kagyuoffice\\.org$\n(^|\\.)kagyuoffice\\.org\\.tw$\n(^|\\.)kagyu\\.org$\n(^|\\.)kagyu\\.org\\.za$\n(^|\\.)kaiyuan\\.de$\n(^|\\.)kakao\\.com$\n(^|\\.)kalachakralugano\\.org$\n(^|\\.)kankan\\.today$\n(^|\\.)kannewyork\\.com$\n(^|\\.)kanshifang\\.com$\n(^|\\.)kantie\\.org$\n(^|\\.)kanzhongguo\\.com$\n(^|\\.)kanzhongguo\\.eu$\n(^|\\.)kaotic\\.com$\n(^|\\.)karayou\\.com$\n(^|\\.)karkhung\\.com$\n(^|\\.)karmapa\\.org$\n(^|\\.)karmapa-teachings\\.org$\n(^|\\.)ka-wai\\.com$\n(^|\\.)kawaiikawaii\\.jp$\n(^|\\.)kawase\\.com$\n(^|\\.)kba-tx\\.org$\n(^|\\.)kb\\.monitorware\\.com$\n(^|\\.)kcoolonline\\.com$\n(^|\\.)k-doujin\\.net$\n(^|\\.)kebrum\\.com$\n(^|\\.)kechara\\.com$\n(^|\\.)keepandshare\\.com$\n(^|\\.)keezmovies\\.com$\n(^|\\.)kendatire\\.com$\n(^|\\.)kendincos\\.net$\n(^|\\.)kenengba\\.com$\n(^|\\.)keontech\\.net$\n(^|\\.)kepard\\.com$\n(^|\\.)kex\\.com$\n(^|\\.)keycdn\\.com$\n(^|\\.)khabdha\\.org$\n(^|\\.)khatrimaza\\.org$\n(^|\\.)khmusic\\.com\\.tw$\n(^|\\.)kichiku-doujinko\\.com$\n(^|\\.)kik\\.com$\n(^|\\.)killwall\\.com$\n(^|\\.)kindleren\\.com$\n(^|\\.)kineox\\.free\\.fr$\n(^|\\.)kingdomsalvation\\.org$\n(^|\\.)kinghost\\.com$\n(^|\\.)kingstone\\.com\\.tw$\n(^|\\.)kink\\.com$\n(^|\\.)kinmen\\.org\\.tw$\n(^|\\.)kinmen\\.travel$\n(^|\\.)kinokuniya\\.com$\n(^|\\.)kir\\.jp$\n(^|\\.)kissbbao\\.cn$\n(^|\\.)kiwi\\.kz$\n(^|\\.)kkbox\\.com$\n(^|\\.)kknews\\.cc$\n(^|\\.)kk-whys\\.co\\.jp$\n(^|\\.)kmuh\\.org\\.tw$\n(^|\\.)knowledgerush\\.com$\n(^|\\.)kobobooks\\.com$\n(^|\\.)kobo\\.com$\n(^|\\.)kodingen\\.com$\n(^|\\.)kompozer\\.net$\n(^|\\.)konachan\\.com$\n(^|\\.)kone\\.com$\n(^|\\.)koolsolutions\\.com$\n(^|\\.)koornk\\.com$\n(^|\\.)koranmandarin\\.com$\n(^|\\.)korenan2\\.com$\n(^|\\.)ksdl\\.org$\n(^|\\.)ksnews\\.com\\.tw$\n(^|\\.)kspcoin\\.com$\n(^|\\.)ktzhk\\.com$\n(^|\\.)kucoin\\.com$\n(^|\\.)kui\\.name$\n(^|\\.)kun\\.im$\n(^|\\.)kurashsultan\\.com$\n(^|\\.)kurtmunger\\.com$\n(^|\\.)kusocity\\.com$\n(^|\\.)kwcg\\.ca$\n(^|\\.)kwongwah\\.com\\.my$\n(^|\\.)kxsw\\.life$\n(^|\\.)kyofun\\.com$\n(^|\\.)kyohk\\.net$\n(^|\\.)kyoyue\\.com$\n(^|\\.)kyzyhello\\.com$\n(^|\\.)kzeng\\.info$\n(^|\\.)labiennale\\.org$\n(^|\\.)ladbrokes\\.com$\n(^|\\.)la-forum\\.org$\n(^|\\.)lagranepoca\\.com$\n(^|\\.)lalulalu\\.com$\n(^|\\.)lama\\.com\\.tw$\n(^|\\.)lamayeshe\\.com$\n(^|\\.)lamnia\\.co\\.uk$\n(^|\\.)lamrim\\.com$\n(^|\\.)lanterncn\\.cn$\n(^|\\.)lantosfoundation\\.org$\n(^|\\.)laod\\.cn$\n(^|\\.)laogai\\.org$\n(^|\\.)laomiu\\.com$\n(^|\\.)laoyang\\.info$\n(^|\\.)laptoplockdown\\.com$\n(^|\\.)laqingdan\\.net$\n(^|\\.)larsgeorge\\.com$\n(^|\\.)lastcombat\\.com$\n(^|\\.)lastfm\\.es$\n(^|\\.)latelinenews\\.com$\n(^|\\.)latibet\\.org$\n(^|\\.)lbank\\.info$\n(^|\\.)ld\\.hao123img\\.com$\n(^|\\.)leafyvpn\\.net$\n(^|\\.)lecloud\\.net$\n(^|\\.)leeao\\.com\\.cn$\n(^|\\.)lefora\\.com$\n(^|\\.)left21\\.hk$\n(^|\\.)legalporno\\.com$\n(^|\\.)legaltech\\.law\\.com$\n(^|\\.)legsjapan\\.com$\n(^|\\.)leirentv\\.ca$\n(^|\\.)leisurecafe\\.ca$\n(^|\\.)leisurepro\\.com$\n(^|\\.)lematin\\.ch$\n(^|\\.)lemonde\\.fr$\n(^|\\.)lenwhite\\.com$\n(^|\\.)lerosua\\.org$\n(^|\\.)lers\\.google$\n(^|\\.)lesoir\\.be$\n(^|\\.)letou\\.com$\n(^|\\.)letscorp\\.net$\n(^|\\.)le-vpn\\.com$\n(^|\\.)lflink\\.com$\n(^|\\.)lflinkup\\.com$\n(^|\\.)lflinkup\\.net$\n(^|\\.)lflinkup\\.org$\n(^|\\.)lhakar\\.org$\n(^|\\.)lhasocialwork\\.org$\n(^|\\.)liangyou\\.net$\n(^|\\.)liangzhichuanmei\\.com$\n(^|\\.)lianyue\\.net$\n(^|\\.)liaowangxizang\\.net$\n(^|\\.)liberal\\.org\\.hk$\n(^|\\.)libertytimes\\.com\\.tw$\n(^|\\.)library\\.usc\\.cuhk\\.edu\\.hk$\n(^|\\.)lidecheng\\.com$\n(^|\\.)lifemiles\\.com$\n(^|\\.)lighten\\.org\\.tw$\n(^|\\.)lighti\\.me$\n(^|\\.)lightnovel\\.cn$\n(^|\\.)lightyearvpn\\.com$\n(^|\\.)lihkg\\.com$\n(^|\\.)like\\.com$\n(^|\\.)limiao\\.net$\n(^|\\.)line-apps\\.com$\n(^|\\.)linear-abematv\\.akamaized\\.net$\n(^|\\.)line\\.me$\n(^|\\.)line\\.naver\\.jp$\n(^|\\.)line-scdn\\.net$\n(^|\\.)linglingfa\\.com$\n(^|\\.)lingvodics\\.com$\n(^|\\.)linkideo\\.com$\n(^|\\.)link-o-rama\\.com$\n(^|\\.)linkuswell\\.com$\n(^|\\.)linux\\.org\\.hk$\n(^|\\.)linuxtoy\\.org$\n(^|\\.)lionsroar\\.com$\n(^|\\.)lipuman\\.com$\n(^|\\.)liquidvpn\\.com$\n(^|\\.)listentoyoutube\\.com$\n(^|\\.)listorious\\.com$\n(^|\\.)lists\\.w3\\.org$\n(^|\\.)liudejun\\.com$\n(^|\\.)liuhanyu\\.com$\n(^|\\.)liujianshu\\.com$\n(^|\\.)liuxiaobo\\.net$\n(^|\\.)liu-xiaobo\\.org$\n(^|\\.)liuxiaotong\\.com$\n(^|\\.)livecoin\\.net$\n(^|\\.)livedoor\\.jp$\n(^|\\.)liveleak\\.com$\n(^|\\.)livestation\\.com$\n(^|\\.)livestream\\.com$\n(^|\\.)livevideo\\.com$\n(^|\\.)livingonline\\.us$\n(^|\\.)livingstream\\.com$\n(^|\\.)liwangyang\\.com$\n(^|\\.)lizhizhuangbi\\.com$\n(^|\\.)lkcn\\.net$\n(^|\\.)llss\\.me$\n(^|\\.)load\\.to$\n(^|\\.)lobsangwangyal\\.com$\n(^|\\.)localbitcoins\\.com$\n(^|\\.)localdomain\\.ws$\n(^|\\.)localpresshk\\.com$\n(^|\\.)lockestek\\.com$\n(^|\\.)logbot\\.net$\n(^|\\.)login\\.target\\.com$\n(^|\\.)logiqx\\.com$\n(^|\\.)londonchinese\\.ca$\n(^|\\.)longhair\\.hk$\n(^|\\.)longmusic\\.com$\n(^|\\.)longtermly\\.net$\n(^|\\.)longtoes\\.com$\n(^|\\.)lookpic\\.com$\n(^|\\.)looktoronto\\.com$\n(^|\\.)lotsawahouse\\.org$\n(^|\\.)lotuslight\\.org\\.hk$\n(^|\\.)lotuslight\\.org\\.tw$\n(^|\\.)lovetvshow\\.com$\n(^|\\.)lpsg\\.com$\n(^|\\.)lrfz\\.com$\n(^|\\.)lrip\\.org$\n(^|\\.)lsd\\.org\\.hk$\n(^|\\.)lsforum\\.net$\n(^|\\.)lsmchinese\\.org$\n(^|\\.)lsmkorean\\.org$\n(^|\\.)lsm\\.org$\n(^|\\.)lsmradio\\.com$\n(^|\\.)lsmwebcast\\.com$\n(^|\\.)lsxszzg\\.com$\n(^|\\.)ltn\\.com\\.tw$\n(^|\\.)luke54\\.com$\n(^|\\.)luke54\\.org$\n(^|\\.)lupm\\.org$\n(^|\\.)lushstories\\.com$\n(^|\\.)luxebc\\.com$\n(^|\\.)lvhai\\.org$\n(^|\\.)lvv2\\.com$\n(^|\\.)lyfhk\\.net$\n(^|\\.)lzmtnews\\.org$\n(^|\\.)macgamestore\\.com$\n(^|\\.)macrovpn\\.com$\n(^|\\.)macts\\.com\\.tw$\n(^|\\.)mad-ar\\.ch$\n(^|\\.)madewithcode\\.com$\n(^|\\.)madonna-av\\.com$\n(^|\\.)madrau\\.com$\n(^|\\.)madthumbs\\.com$\n(^|\\.)magazines\\.sina\\.com\\.tw$\n(^|\\.)magic-net\\.info$\n(^|\\.)mahabodhi\\.org$\n(^|\\.)ma\\.hao123\\.com$\n(^|\\.)maiio\\.net$\n(^|\\.)mail-archive\\.com$\n(^|\\.)maildns\\.xyz$\n(^|\\.)maiplus\\.com$\n(^|\\.)maizhong\\.org$\n(^|\\.)makemymood\\.com$\n(^|\\.)makkahnewspaper\\.com$\n(^|\\.)makzhou\\.warehouse333\\.com$\n(^|\\.)malaysiakini\\.com$\n(^|\\.)mamingzhe\\.com$\n(^|\\.)manchukuo\\.net$\n(^|\\.)mangafox\\.com$\n(^|\\.)mangafox\\.me$\n(^|\\.)maniash\\.com$\n(^|\\.)manicur4ik\\.ru$\n(^|\\.)mansion\\.com$\n(^|\\.)mansionpoker\\.com$\n(^|\\.)manta\\.com$\n(^|\\.)maplew\\.com$\n(^|\\.)marc\\.info$\n(^|\\.)marguerite\\.su$\n(^|\\.)martau\\.com$\n(^|\\.)martincartoons\\.com$\n(^|\\.)martsangkagyuofficial\\.org$\n(^|\\.)maruta\\.be$\n(^|\\.)marxist\\.com$\n(^|\\.)marxist\\.net$\n(^|\\.)marxists\\.org$\n(^|\\.)mash\\.to$\n(^|\\.)maskedip\\.com$\n(^|\\.)mastodon\\.cloud$\n(^|\\.)mastodon\\.host$\n(^|\\.)mastodon\\.social$\n(^|\\.)matainja\\.com$\n(^|\\.)material\\.io$\n(^|\\.)mathable\\.io$\n(^|\\.)mathiew-badimon\\.com$\n(^|\\.)matome-plus\\.com$\n(^|\\.)matome-plus\\.net$\n(^|\\.)matsushimakaede\\.com$\n(^|\\.)matters\\.news$\n(^|\\.)mattwilcox\\.net$\n(^|\\.)maturejp\\.com$\n(^|\\.)maxing\\.jp$\n(^|\\.)mayimayi\\.com$\n(^|\\.)mcadforums\\.com$\n(^|\\.)mcaf\\.ee$\n(^|\\.)mcfog\\.com$\n(^|\\.)mcreasite\\.com$\n(^|\\.)md-t\\.org$\n(^|\\.)meansys\\.com$\n(^|\\.)mediachinese\\.com$\n(^|\\.)mediafire\\.com$\n(^|\\.)mediafreakcity\\.com$\n(^|\\.)media\\.nu\\.nl$\n(^|\\.)media\\.org\\.hk$\n(^|\\.)medium\\.com$\n(^|\\.)meetav\\.com$\n(^|\\.)meetup\\.com$\n(^|\\.)mefeedia\\.com$\n(^|\\.)mefound\\.com$\n(^|\\.)mega\\.nz$\n(^|\\.)megaproxy\\.com$\n(^|\\.)megarotic\\.com$\n(^|\\.)megavideo\\.com$\n(^|\\.)megurineluka\\.com$\n(^|\\.)meirixiaochao\\.com$\n(^|\\.)meltoday\\.com$\n(^|\\.)me\\.me$\n(^|\\.)memehk\\.com$\n(^|\\.)meme\\.yahoo\\.com$\n(^|\\.)memorybbs\\.com$\n(^|\\.)memrijttm\\.org$\n(^|\\.)memri\\.org$\n(^|\\.)mercatox\\.com$\n(^|\\.)mercyprophet\\.org$\n(^|\\.)mergersandinquisitions\\.org$\n(^|\\.)meridian-trust\\.org$\n(^|\\.)meripet\\.biz$\n(^|\\.)meripet\\.com$\n(^|\\.)merit-times\\.com\\.tw$\n(^|\\.)meshrep\\.com$\n(^|\\.)mesotw\\.com$\n(^|\\.)messenger\\.com$\n(^|\\.)metacafe\\.com$\n(^|\\.)metart\\.com$\n(^|\\.)metarthunter\\.com$\n(^|\\.)meteorshowersonline\\.com$\n(^|\\.)metrohk\\.com\\.hk$\n(^|\\.)metrolife\\.ca$\n(^|\\.)metroradio\\.com\\.hk$\n(^|\\.)meyou\\.jp$\n(^|\\.)me\\.youthwant\\.com\\.tw$\n(^|\\.)meyul\\.com$\n(^|\\.)mfxmedia\\.com$\n(^|\\.)mgoon\\.com$\n(^|\\.)mgstage\\.com$\n(^|\\.)mh4u\\.org$\n(^|\\.)m\\.hkgalden\\.com$\n(^|\\.)mhradio\\.org$\n(^|\\.)michaelanti\\.com$\n(^|\\.)michaelmarketl\\.com$\n(^|\\.)microvpn\\.com$\n(^|\\.)middle-way\\.net$\n(^|\\.)mihk\\.hk$\n(^|\\.)mihr\\.com$\n(^|\\.)mihua\\.org$\n(^|\\.)mike\\.cz\\.cc$\n(^|\\.)mikesoltys\\.com$\n(^|\\.)milph\\.net$\n(^|\\.)milsurps\\.com$\n(^|\\.)mimiai\\.net$\n(^|\\.)mimivip\\.com$\n(^|\\.)mimivv\\.com$\n(^|\\.)mindrolling\\.org$\n(^|\\.)minghui-a\\.org$\n(^|\\.)minghui-b\\.org$\n(^|\\.)minghui\\.org$\n(^|\\.)minghui\\.or\\.kr$\n(^|\\.)minghui-school\\.org$\n(^|\\.)minghuiyw\\.wordpress\\.com$\n(^|\\.)mingjinglishi\\.com$\n(^|\\.)mingjingnews\\.com$\n(^|\\.)mingjingtimes\\.com$\n(^|\\.)mingpaocanada\\.com$\n(^|\\.)mingpao\\.com$\n(^|\\.)mingpaomonthly\\.com$\n(^|\\.)mingpaonews\\.com$\n(^|\\.)mingpaony\\.com$\n(^|\\.)mingpaosf\\.com$\n(^|\\.)mingpaotor\\.com$\n(^|\\.)mingpaovan\\.com$\n(^|\\.)mingshengbao\\.com$\n(^|\\.)minhhue\\.net$\n(^|\\.)miniforum\\.org$\n(^|\\.)ministrybooks\\.org$\n(^|\\.)minzhuhua\\.net$\n(^|\\.)minzhuzhanxian\\.com$\n(^|\\.)minzhuzhongguo\\.org$\n(^|\\.)miroguide\\.com$\n(^|\\.)mirrorbooks\\.com$\n(^|\\.)mist\\.vip$\n(^|\\.)mitao\\.com\\.tw$\n(^|\\.)mitbbsau\\.com$\n(^|\\.)mitbbs\\.com$\n(^|\\.)mixero\\.com$\n(^|\\.)mixpod\\.com$\n(^|\\.)mixx\\.com$\n(^|\\.)mizzmona\\.com$\n(^|\\.)mjib\\.gov\\.tw$\n(^|\\.)mjlsh\\.usc\\.cuhk\\.edu\\.hk$\n(^|\\.)mk5000\\.com$\n(^|\\.)mlcool\\.com$\n(^|\\.)mlzs\\.work$\n(^|\\.)mmaaxx\\.com$\n(^|\\.)mm-cg\\.com$\n(^|\\.)m\\.me$\n(^|\\.)mmmca\\.com$\n(^|\\.)mnewstv\\.com$\n(^|\\.)mobatek\\.net$\n(^|\\.)mobile01\\.com$\n(^|\\.)mobileways\\.de$\n(^|\\.)mobypicture\\.com$\n(^|\\.)moby\\.to$\n(^|\\.)moeaic\\.gov\\.tw$\n(^|\\.)moeerolibrary\\.com$\n(^|\\.)mofa\\.gov\\.tw$\n(^|\\.)mofaxiehui\\.com$\n(^|\\.)mofos\\.com$\n(^|\\.)mog\\.com$\n(^|\\.)mohu\\.club$\n(^|\\.)mohu\\.ml$\n(^|\\.)mojim\\.com$\n(^|\\.)mol\\.gov\\.tw$\n(^|\\.)molihua\\.org$\n(^|\\.)mondex\\.org$\n(^|\\.)moneyhome\\.biz$\n(^|\\.)money-link\\.com\\.tw$\n(^|\\.)mo\\.nightlife141\\.com$\n(^|\\.)monitorchina\\.org$\n(^|\\.)monster\\.com$\n(^|\\.)moodyz\\.com$\n(^|\\.)moonbbs\\.com$\n(^|\\.)moonbingo\\.com$\n(^|\\.)morningsun\\.org$\n(^|\\.)moroneta\\.com$\n(^|\\.)mos\\.ru$\n(^|\\.)motherless\\.com$\n(^|\\.)motiyun\\.com$\n(^|\\.)motor4ik\\.ru$\n(^|\\.)mousebreaker\\.com$\n(^|\\.)movements\\.org$\n(^|\\.)moviefap\\.com$\n(^|\\.)mp3buscador\\.com$\n(^|\\.)mp3ye\\.eu$\n(^|\\.)mpettis\\.com$\n(^|\\.)mpfinance\\.com$\n(^|\\.)mpinews\\.com$\n(^|\\.)m\\.plixi\\.com$\n(^|\\.)mponline\\.hk$\n(^|\\.)mqxd\\.org$\n(^|\\.)mrbasic\\.com$\n(^|\\.)mrbonus\\.com$\n(^|\\.)mrface\\.com$\n(^|\\.)mrslove\\.com$\n(^|\\.)mrtweet\\.com$\n(^|\\.)msa-it\\.org$\n(^|\\.)msguancha\\.com$\n(^|\\.)msha\\.gov$\n(^|\\.)m\\.slandr\\.net$\n(^|\\.)mswe1\\.org$\n(^|\\.)m-team\\.cc$\n(^|\\.)mthruf\\.com$\n(^|\\.)mtw\\.tl$\n(^|\\.)muchosucko\\.com$\n(^|\\.)mullvad\\.net$\n(^|\\.)multiply\\.com$\n(^|\\.)multiproxy\\.org$\n(^|\\.)multiupload\\.com$\n(^|\\.)mummysgold\\.com$\n(^|\\.)murmur\\.tw$\n(^|\\.)musicade\\.net$\n(^|\\.)muslimvideo\\.com$\n(^|\\.)muzi\\.com$\n(^|\\.)muzi\\.net$\n(^|\\.)muzu\\.tv$\n(^|\\.)mvdis\\.gov\\.tw$\n(^|\\.)mvg\\.jp$\n(^|\\.)mx981\\.com$\n(^|\\.)mx\\.hao123\\.com$\n(^|\\.)my03\\.com$\n(^|\\.)myactimes\\.com$\n(^|\\.)myanniu\\.com$\n(^|\\.)myaudiocast\\.com$\n(^|\\.)myav\\.com\\.tw$\n(^|\\.)mybbs\\.us$\n(^|\\.)mybet\\.com$\n(^|\\.)myca168\\.com$\n(^|\\.)mycanadanow\\.com$\n(^|\\.)mychinamyhome\\.com$\n(^|\\.)mychinanet\\.com$\n(^|\\.)mychinanews\\.com$\n(^|\\.)mychinese\\.news$\n(^|\\.)mycnnews\\.com$\n(^|\\.)mycould\\.com$\n(^|\\.)mydad\\.info$\n(^|\\.)myddns\\.com$\n(^|\\.)myeasytv\\.com$\n(^|\\.)myeclipseide\\.com$\n(^|\\.)my-formosa\\.com$\n(^|\\.)myforum\\.com\\.hk$\n(^|\\.)myforum\\.com\\.uk$\n(^|\\.)myfreecams\\.com$\n(^|\\.)myfreepaysite\\.com$\n(^|\\.)myfreshnet\\.com$\n(^|\\.)myftp\\.info$\n(^|\\.)myftp\\.name$\n(^|\\.)myiphide\\.com$\n(^|\\.)mykomica\\.org$\n(^|\\.)mylftv\\.com$\n(^|\\.)my\\.mail\\.ru$\n(^|\\.)mymediarom\\.com$\n(^|\\.)mymoe\\.moe$\n(^|\\.)mymom\\.info$\n(^|\\.)mymusic\\.net\\.tw$\n(^|\\.)mynetav\\.net$\n(^|\\.)mynetav\\.org$\n(^|\\.)mynumber\\.org$\n(^|\\.)my\\.opera\\.com$\n(^|\\.)myparagliding\\.com$\n(^|\\.)my\\.pcloud\\.com$\n(^|\\.)mypicture\\.info$\n(^|\\.)mypop3\\.net$\n(^|\\.)mypop3\\.org$\n(^|\\.)mypopescu\\.com$\n(^|\\.)my-private-network\\.co\\.uk$\n(^|\\.)my-proxy\\.com$\n(^|\\.)myradio\\.hk$\n(^|\\.)myreadingmanga\\.info$\n(^|\\.)mysecondarydns\\.com$\n(^|\\.)myshare\\.url\\.com\\.tw$\n(^|\\.)mysinablog\\.com$\n(^|\\.)mysite\\.verizon\\.net$\n(^|\\.)myspacecdn\\.com$\n(^|\\.)myspace\\.com$\n(^|\\.)mytalkbox\\.com$\n(^|\\.)mytizi\\.com$\n(^|\\.)mywww\\.biz$\n(^|\\.)myz\\.info$\n(^|\\.)naacoalition\\.org$\n(^|\\.)naitik\\.net$\n(^|\\.)nakido\\.com$\n(^|\\.)nakuz\\.com$\n(^|\\.)nalandabodhi\\.org$\n(^|\\.)nalandawest\\.org$\n(^|\\.)namgyalmonastery\\.org$\n(^|\\.)namgyal\\.org$\n(^|\\.)namsisi\\.com$\n(^|\\.)nanyang\\.com$\n(^|\\.)nanyangpost\\.com$\n(^|\\.)nanzao\\.com$\n(^|\\.)naol\\.ca$\n(^|\\.)naol\\.cc$\n(^|\\.)nat\\.gov\\.tw$\n(^|\\.)national-lottery\\.co\\.uk$\n(^|\\.)nationsonline\\.org$\n(^|\\.)nationwide\\.com$\n(^|\\.)nat\\.moe$\n(^|\\.)naughtyamerica\\.com$\n(^|\\.)navyfamily\\.navy\\.mil$\n(^|\\.)navyreserve\\.navy\\.mil$\n(^|\\.)naweeklytimes\\.com$\n(^|\\.)nbtvpn\\.com$\n(^|\\.)nccwatch\\.org\\.tw$\n(^|\\.)nch\\.com\\.tw$\n(^|\\.)ncn\\.org$\n(^|\\.)nde\\.de$\n(^|\\.)ndr\\.de$\n(^|\\.)ned\\.org$\n(^|\\.)nekoslovakia\\.net$\n(^|\\.)nemesis2\\.qx\\.net$\n(^|\\.)neo-miracle\\.com$\n(^|\\.)nepusoku\\.com$\n(^|\\.)netbirds\\.com$\n(^|\\.)netcolony\\.com$\n(^|\\.)net-fits\\.pro$\n(^|\\.)netflix\\.com$\n(^|\\.)netme\\.cc$\n(^|\\.)netsneak\\.com$\n(^|\\.)network54\\.com$\n(^|\\.)networkedblogs\\.com$\n(^|\\.)networktunnel\\.net$\n(^|\\.)neverforget8964\\.org$\n(^|\\.)new-3lunch\\.net$\n(^|\\.)new96\\.ca$\n(^|\\.)new-akiba\\.com$\n(^|\\.)newcenturymc\\.com$\n(^|\\.)newcenturynews\\.com$\n(^|\\.)newchen\\.com$\n(^|\\.)newgrounds\\.com$\n(^|\\.)newipnow\\.com$\n(^|\\.)newlandmagazine\\.com\\.au$\n(^|\\.)newnews\\.ca$\n(^|\\.)news100\\.com\\.tw$\n(^|\\.)newsancai\\.com$\n(^|\\.)newschinacomment\\.org$\n(^|\\.)newscn\\.org$\n(^|\\.)news\\.cnyes\\.com$\n(^|\\.)newsdetox\\.ca$\n(^|\\.)newsdh\\.com$\n(^|\\.)news\\.hk\\.msn\\.com$\n(^|\\.)news\\.hkpeanut\\.com$\n(^|\\.)news\\.msn\\.com\\.tw$\n(^|\\.)news\\.nationalgeographic\\.com$\n(^|\\.)news\\.now\\.com$\n(^|\\.)news\\.omy\\.sg$\n(^|\\.)newspeak\\.cc$\n(^|\\.)news\\.seehua\\.com$\n(^|\\.)news\\.sina\\.com\\.hk$\n(^|\\.)news\\.sina\\.com\\.tw$\n(^|\\.)news\\.sinchew\\.com\\.my$\n(^|\\.)news\\.singtao\\.ca$\n(^|\\.)newstamago\\.com$\n(^|\\.)newstapa\\.org$\n(^|\\.)newstarnet\\.com$\n(^|\\.)news\\.tvb\\.com$\n(^|\\.)news\\.tvbs\\.com\\.tw$\n(^|\\.)news\\.yahoo\\.com$\n(^|\\.)newtaiwan\\.com\\.tw$\n(^|\\.)newtalk\\.tw$\n(^|\\.)newyorktimes\\.com$\n(^|\\.)nexon\\.com$\n(^|\\.)next11\\.co\\.jp$\n(^|\\.)nextmag\\.com\\.tw$\n(^|\\.)nextmedia\\.com$\n(^|\\.)nexton-net\\.jp$\n(^|\\.)nexttv\\.com\\.tw$\n(^|\\.)nf\\.id\\.au$\n(^|\\.)nfjtyd\\.com$\n(^|\\.)nflxext\\.com$\n(^|\\.)nflximg\\.com$\n(^|\\.)nflximg\\.net$\n(^|\\.)nflxso\\.net$\n(^|\\.)nflxvideo\\.net$\n(^|\\.)nga\\.mil$\n(^|\\.)ngensis\\.com$\n(^|\\.)nhentai\\.net$\n(^|\\.)nhi\\.gov\\.tw$\n(^|\\.)nhk-ondemand\\.jp$\n(^|\\.)nic\\.cz\\.cc$\n(^|\\.)nic\\.google$\n(^|\\.)nic\\.gov$\n(^|\\.)nicovideo\\.jp$\n(^|\\.)nighost\\.org$\n(^|\\.)nikkei\\.com$\n(^|\\.)ninecommentaries\\.com$\n(^|\\.)ninjacloak\\.com$\n(^|\\.)ninjaproxy\\.ninja$\n(^|\\.)nintendium\\.com$\n(^|\\.)ninth\\.biz$\n(^|\\.)niu\\.moe$\n(^|\\.)niusnews\\.com$\n(^|\\.)njactb\\.org$\n(^|\\.)njuice\\.com$\n(^|\\.)nko\\.navy\\.mil$\n(^|\\.)nlfreevpn\\.com$\n(^|\\.)nobelprize\\.org$\n(^|\\.)nobel\\.se$\n(^|\\.)nobodycanstop\\.us$\n(^|\\.)nofile\\.io$\n(^|\\.)no-ip\\.org$\n(^|\\.)nokogiri\\.org$\n(^|\\.)nokola\\.com$\n(^|\\.)noodlevpn\\.com$\n(^|\\.)norbulingka\\.org$\n(^|\\.)nordstrom\\.com$\n(^|\\.)nordstromimage\\.com$\n(^|\\.)nordstromrack\\.com$\n(^|\\.)nordvpn\\.com$\n(^|\\.)notify\\.dropboxapi\\.com$\n(^|\\.)nottinghampost\\.com$\n(^|\\.)novelasia\\.com$\n(^|\\.)now\\.com$\n(^|\\.)now\\.im$\n(^|\\.)nownews\\.com$\n(^|\\.)nowtorrents\\.com$\n(^|\\.)noypf\\.com$\n(^|\\.)npa\\.go\\.jp$\n(^|\\.)npa\\.gov\\.tw$\n(^|\\.)npnt\\.me$\n(^|\\.)npsboost\\.com$\n(^|\\.)nps\\.gov$\n(^|\\.)nradio\\.me$\n(^|\\.)nrk\\.no$\n(^|\\.)ns01\\.biz$\n(^|\\.)ns01\\.info$\n(^|\\.)ns01\\.us$\n(^|\\.)ns02\\.biz$\n(^|\\.)ns02\\.info$\n(^|\\.)ns02\\.us$\n(^|\\.)ns1\\.name$\n(^|\\.)ns2\\.name$\n(^|\\.)ns3\\.name$\n(^|\\.)nsc\\.gov\\.tw$\n(^|\\.)ntbk\\.gov\\.tw$\n(^|\\.)ntbna\\.gov\\.tw$\n(^|\\.)ntbt\\.gov\\.tw$\n(^|\\.)ntd\\.tv$\n(^|\\.)ntdtv\\.ca$\n(^|\\.)ntdtv\\.co\\.kr$\n(^|\\.)ntdtv\\.com$\n(^|\\.)ntdtv\\.cz$\n(^|\\.)ntdtvla\\.com$\n(^|\\.)ntdtv\\.org$\n(^|\\.)ntdtv\\.ru$\n(^|\\.)ntrfun\\.com$\n(^|\\.)ntsna\\.gov\\.tw$\n(^|\\.)nubiles\\.net$\n(^|\\.)nuexpo\\.com$\n(^|\\.)nukistream\\.com$\n(^|\\.)nurgo-software\\.com$\n(^|\\.)nusatrip\\.com$\n(^|\\.)nutaku\\.net$\n(^|\\.)nuuvem\\.com$\n(^|\\.)nuvid\\.com$\n(^|\\.)nuzcom\\.com$\n(^|\\.)nvdst\\.com$\n(^|\\.)nvquan\\.org$\n(^|\\.)nvtongzhisheng\\.org$\n(^|\\.)nwtca\\.org$\n(^|\\.)nyaa\\.eu$\n(^|\\.)nyaa\\.si$\n(^|\\.)nydus\\.ca$\n(^|\\.)nylon-angel\\.com$\n(^|\\.)nylonstockingsonline\\.com$\n(^|\\.)ny\\.stgloballink\\.com$\n(^|\\.)nytchina\\.com$\n(^|\\.)nytcn\\.me$\n(^|\\.)nytco\\.com$\n(^|\\.)nyt\\.com$\n(^|\\.)nytimes\\.com$\n(^|\\.)nytimes\\.map\\.fastly\\.net$\n(^|\\.)nytimg\\.com$\n(^|\\.)nyti\\.ms$\n(^|\\.)nytstyle\\.com$\n(^|\\.)ny\\.visiontimes\\.com$\n(^|\\.)nzchinese\\.com$\n(^|\\.)nzchinese\\.net\\.nz$\n(^|\\.)observechina\\.net$\n(^|\\.)obutu\\.com$\n(^|\\.)ocaspro\\.com$\n(^|\\.)occupytiananmen\\.com$\n(^|\\.)oclp\\.hk$\n(^|\\.)ocreampies\\.com$\n(^|\\.)ocry\\.com$\n(^|\\.)october-review\\.org$\n(^|\\.)oculuscdn\\.com$\n(^|\\.)oculus\\.com$\n(^|\\.)oex\\.com$\n(^|\\.)offbeatchina\\.com$\n(^|\\.)officeoftibet\\.com$\n(^|\\.)ofile\\.org$\n(^|\\.)ogaoga\\.org$\n(^|\\.)ogate\\.org$\n(^|\\.)oikos\\.com\\.tw$\n(^|\\.)oiktv\\.com$\n(^|\\.)oizoblog\\.com$\n(^|\\.)okayfreedom\\.com$\n(^|\\.)okex\\.com$\n(^|\\.)okk\\.tw$\n(^|\\.)ok\\.ru$\n(^|\\.)old-cat\\.net$\n(^|\\.)old\\.honeynet\\.org$\n(^|\\.)old\\.nabble\\.com$\n(^|\\.)olumpo\\.com$\n(^|\\.)olympicwatch\\.org$\n(^|\\.)omgili\\.com$\n(^|\\.)omni7\\.jp$\n(^|\\.)omnitalk\\.com$\n(^|\\.)omnitalk\\.org$\n(^|\\.)on2\\.com$\n(^|\\.)onapp\\.com$\n(^|\\.)on\\.cc$\n(^|\\.)onedrive\\.live\\.com$\n(^|\\.)onedumb\\.com$\n(^|\\.)onejav\\.com$\n(^|\\.)onion\\.city$\n(^|\\.)onlinecha\\.com$\n(^|\\.)online\\.recoveryversion\\.org$\n(^|\\.)onlineyoutube\\.com$\n(^|\\.)onlytweets\\.com$\n(^|\\.)onmoon\\.com$\n(^|\\.)onmoon\\.net$\n(^|\\.)onmypc\\.biz$\n(^|\\.)onmypc\\.info$\n(^|\\.)onmypc\\.net$\n(^|\\.)onmypc\\.org$\n(^|\\.)onmypc\\.us$\n(^|\\.)onthehunt\\.com$\n(^|\\.)ontrac\\.com$\n(^|\\.)oopsforum\\.com$\n(^|\\.)openallweb\\.com$\n(^|\\.)open\\.com\\.hk$\n(^|\\.)opendemocracy\\.net$\n(^|\\.)opendn\\.xyz$\n(^|\\.)openervpn\\.in$\n(^|\\.)openid\\.net$\n(^|\\.)openleaks\\.org$\n(^|\\.)openvpn\\.net$\n(^|\\.)openvpn\\.org$\n(^|\\.)openwebster\\.com$\n(^|\\.)openwrt\\.org\\.cn$\n(^|\\.)opml\\.radiotime\\.com$\n(^|\\.)opus-gaming\\.com$\n(^|\\.)organcare\\.org\\.tw$\n(^|\\.)organharvestinvestigation\\.net$\n(^|\\.)organiccrap\\.com$\n(^|\\.)orgasm\\.com$\n(^|\\.)orgfree\\.com$\n(^|\\.)orientaldaily\\.com\\.my$\n(^|\\.)orient-doll\\.com$\n(^|\\.)orn\\.jp$\n(^|\\.)orzistic\\.org$\n(^|\\.)osfoora\\.com$\n(^|\\.)otcbtc\\.com$\n(^|\\.)otnd\\.org$\n(^|\\.)otto\\.de$\n(^|\\.)otzo\\.com$\n(^|\\.)ourdearamy\\.com$\n(^|\\.)ourhobby\\.com$\n(^|\\.)oursogo\\.com$\n(^|\\.)oursteps\\.com\\.au$\n(^|\\.)oursweb\\.net$\n(^|\\.)ourtv\\.hk$\n(^|\\.)overplay\\.net$\n(^|\\.)oversea\\.istarshine\\.com$\n(^|\\.)owl\\.li$\n(^|\\.)ow\\.ly$\n(^|\\.)oyax\\.com$\n(^|\\.)oyghan\\.com$\n(^|\\.)ozchinese\\.com$\n(^|\\.)ozvoice\\.org$\n(^|\\.)ozxw\\.com$\n(^|\\.)ozyoyo\\.com$\n(^|\\.)pachosting\\.com$\n(^|\\.)pacificpoker\\.com$\n(^|\\.)packages\\.debian\\.org$\n(^|\\.)packetix\\.net$\n(^|\\.)pacopacomama\\.com$\n(^|\\.)padmanet\\.com$\n(^|\\.)page2rss\\.com$\n(^|\\.)page\\.bid\\.yahoo\\.com$\n(^|\\.)pagodabox\\.com$\n(^|\\.)palacemoon\\.com$\n(^|\\.)paldengyal\\.com$\n(^|\\.)paljorpublications\\.com$\n(^|\\.)paltalk\\.com$\n(^|\\.)panamapapers\\.sueddeutsche\\.de$\n(^|\\.)pandapow\\.co$\n(^|\\.)pandapow\\.net$\n(^|\\.)pandavpn-jp\\.com$\n(^|\\.)pandora\\.com$\n(^|\\.)pandora\\.tv$\n(^|\\.)panluan\\.net$\n(^|\\.)panoramio\\.com$\n(^|\\.)pao-pao\\.net$\n(^|\\.)paperb\\.us$\n(^|\\.)paper\\.li$\n(^|\\.)paradisehill\\.cc$\n(^|\\.)paradisepoker\\.com$\n(^|\\.)parkansky\\.com$\n(^|\\.)partycasino\\.com$\n(^|\\.)partypoker\\.com$\n(^|\\.)passion\\.com$\n(^|\\.)passiontimes\\.hk$\n(^|\\.)pastebin\\.com$\n(^|\\.)paste\\.ee$\n(^|\\.)pastie\\.org$\n(^|\\.)pbs\\.org$\n(^|\\.)pbwiki\\.com$\n(^|\\.)pbworks\\.com$\n(^|\\.)pbxes\\.com$\n(^|\\.)pbxes\\.org$\n(^|\\.)pcanywhere\\.net$\n(^|\\.)pcc\\.gov\\.tw$\n(^|\\.)pcdvd\\.com\\.tw$\n(^|\\.)pchome\\.com\\.tw$\n(^|\\.)pcij\\.org$\n(^|\\.)pcstore\\.com\\.tw$\n(^|\\.)pct\\.org\\.tw$\n(^|\\.)pdetails\\.com$\n(^|\\.)pdproxy\\.com$\n(^|\\.)pds\\.nasa\\.gov$\n(^|\\.)peace\\.ca$\n(^|\\.)peacefire\\.org$\n(^|\\.)peacehall\\.com$\n(^|\\.)pearlher\\.org$\n(^|\\.)peeasian\\.com$\n(^|\\.)pekingduck\\.org$\n(^|\\.)pemulihan\\.or\\.id$\n(^|\\.)penchinese\\.com$\n(^|\\.)penchinese\\.net$\n(^|\\.)pengyulong\\.com$\n(^|\\.)pen\\.io$\n(^|\\.)penisbot\\.com$\n(^|\\.)penthouse\\.com$\n(^|\\.)pentoy\\.hk$\n(^|\\.)peoplebookcafe\\.com$\n(^|\\.)peoplenews\\.tw$\n(^|\\.)peopo\\.org$\n(^|\\.)percy\\.in$\n(^|\\.)perfectgirls\\.net$\n(^|\\.)perfectvpn\\.net$\n(^|\\.)periscope\\.tv$\n(^|\\.)persecutionblog\\.com$\n(^|\\.)persiankitty\\.com$\n(^|\\.)pfd\\.org\\.hk$\n(^|\\.)phapluan\\.org$\n(^|\\.)phayul\\.com$\n(^|\\.)philborges\\.com$\n(^|\\.)philly\\.com$\n(^|\\.)phmsociety\\.org$\n(^|\\.)phncdn\\.com$\n(^|\\.)phobos\\.apple\\.com$\n(^|\\.)phosphation13\\.rssing\\.com$\n(^|\\.)photodharma\\.net$\n(^|\\.)photofocus\\.com$\n(^|\\.)phuquocservices\\.com$\n(^|\\.)picacomiccn\\.com$\n(^|\\.)picacomic\\.com$\n(^|\\.)picasaweb\\.com$\n(^|\\.)picidae\\.net$\n(^|\\.)picturedip\\.com$\n(^|\\.)picturesocial\\.com$\n(^|\\.)pictures\\.playboy\\.com$\n(^|\\.)pimg\\.tw$\n(^|\\.)pin6\\.com$\n(^|\\.)pin-cong\\.com$\n(^|\\.)pincong\\.rocks$\n(^|\\.)ping\\.fm$\n(^|\\.)pinimg\\.com$\n(^|\\.)pinkrod\\.com$\n(^|\\.)pinoy-n\\.com$\n(^|\\.)pinterest\\.at$\n(^|\\.)pinterest\\.ca$\n(^|\\.)pinterest\\.co\\.kr$\n(^|\\.)pinterest\\.com$\n(^|\\.)pinterest\\.co\\.uk$\n(^|\\.)pinterest\\.de$\n(^|\\.)pinterest\\.dk$\n(^|\\.)pinterest\\.fr$\n(^|\\.)pinterest\\.jp$\n(^|\\.)pinterest\\.nl$\n(^|\\.)pinterest\\.se$\n(^|\\.)pioneer-worker\\.forums-free\\.com$\n(^|\\.)pipii\\.tv$\n(^|\\.)piposay\\.com$\n(^|\\.)piraattilahti\\.org$\n(^|\\.)piring\\.com$\n(^|\\.)pixelqi\\.com$\n(^|\\.)pixiv\\.net$\n(^|\\.)pixnet\\.net$\n(^|\\.)pk\\.com$\n(^|\\.)pki\\.goog$\n(^|\\.)placemix\\.com$\n(^|\\.)playboy\\.com$\n(^|\\.)playboyplus\\.com$\n(^|\\.)player\\.fm$\n(^|\\.)playno1\\.com$\n(^|\\.)playpcesor\\.com$\n(^|\\.)plays\\.com\\.tw$\n(^|\\.)plm\\.org\\.hk$\n(^|\\.)plunder\\.com$\n(^|\\.)plurk\\.com$\n(^|\\.)plus28\\.com$\n(^|\\.)plusbb\\.com$\n(^|\\.)plus\\.codes$\n(^|\\.)pmatehunter\\.com$\n(^|\\.)pmates\\.com$\n(^|\\.)po2b\\.com$\n(^|\\.)pobieramy\\.top$\n(^|\\.)podictionary\\.com$\n(^|\\.)pokerstars\\.com$\n(^|\\.)pokerstars\\.net$\n(^|\\.)politicalchina\\.org$\n(^|\\.)politicalconsultation\\.org$\n(^|\\.)politiscales\\.net$\n(^|\\.)poloniex\\.com$\n(^|\\.)polymerhk\\.com$\n(^|\\.)polymer-project\\.org$\n(^|\\.)popo\\.tw$\n(^|\\.)popvote\\.hk$\n(^|\\.)popyard\\.com$\n(^|\\.)popyard\\.org$\n(^|\\.)porn2\\.com$\n(^|\\.)porn5\\.com$\n(^|\\.)pornbase\\.org$\n(^|\\.)porn\\.com$\n(^|\\.)pornerbros\\.com$\n(^|\\.)pornhd\\.com$\n(^|\\.)pornhost\\.com$\n(^|\\.)pornhub\\.com$\n(^|\\.)pornhubdeutsch\\.net$\n(^|\\.)pornmm\\.net$\n(^|\\.)pornoxo\\.com$\n(^|\\.)pornrapidshare\\.com$\n(^|\\.)pornsharing\\.com$\n(^|\\.)pornsocket\\.com$\n(^|\\.)pornstarclub\\.com$\n(^|\\.)porntube\\.com$\n(^|\\.)porntubenews\\.com$\n(^|\\.)porntvblog\\.com$\n(^|\\.)pornvisit\\.com$\n(^|\\.)port25\\.biz$\n(^|\\.)portablevpn\\.nl$\n(^|\\.)poskotanews\\.com$\n(^|\\.)post01\\.com$\n(^|\\.)post76\\.com$\n(^|\\.)post852\\.com$\n(^|\\.)postadult\\.com$\n(^|\\.)postimg\\.org$\n(^|\\.)potato\\.im$\n(^|\\.)potvpn\\.com$\n(^|\\.)powerapple\\.com$\n(^|\\.)power\\.com$\n(^|\\.)powercx\\.com$\n(^|\\.)powerphoto\\.org$\n(^|\\.)prayforchina\\.net$\n(^|\\.)premeforwindows7\\.com$\n(^|\\.)premproxy\\.com$\n(^|\\.)presentationzen\\.com$\n(^|\\.)presidentlee\\.tw$\n(^|\\.)prestige-av\\.com$\n(^|\\.)pride\\.google$\n(^|\\.)prism-break\\.org$\n(^|\\.)prisoneralert\\.com$\n(^|\\.)pritunl\\.com$\n(^|\\.)privacybox\\.de$\n(^|\\.)private\\.com$\n(^|\\.)privateinternetaccess\\.com$\n(^|\\.)privatepaste\\.com$\n(^|\\.)privatetunnel\\.com$\n(^|\\.)privatevpn\\.com$\n(^|\\.)procopytips\\.com$\n(^|\\.)prosiben\\.de$\n(^|\\.)protonvpn\\.com$\n(^|\\.)provideocoalition\\.com$\n(^|\\.)provpnaccounts\\.com$\n(^|\\.)proxfree\\.com$\n(^|\\.)proxifier\\.com$\n(^|\\.)proxomitron\\.info$\n(^|\\.)proxpn\\.com$\n(^|\\.)proxyanonimo\\.es$\n(^|\\.)proxydns\\.com$\n(^|\\.)proxylist\\.org\\.uk$\n(^|\\.)proxynetwork\\.org\\.uk$\n(^|\\.)proxypy\\.net$\n(^|\\.)proxyroad\\.com$\n(^|\\.)proxytunnel\\.net$\n(^|\\.)proyectoclubes\\.com$\n(^|\\.)prozz\\.net$\n(^|\\.)psblog\\.name$\n(^|\\.)pscp\\.tv$\n(^|\\.)psiphon3\\.com$\n(^|\\.)psiphon\\.ca$\n(^|\\.)psiphon\\.civisec\\.org$\n(^|\\.)psiphontoday\\.com$\n(^|\\.)pts\\.org\\.tw$\n(^|\\.)ptt\\.cc$\n(^|\\.)pttvan\\.org$\n(^|\\.)pubu\\.com\\.tw$\n(^|\\.)puffinbrowser\\.com$\n(^|\\.)puffstore\\.com$\n(^|\\.)pullfolio\\.com$\n(^|\\.)pulse\\.yahoo\\.com$\n(^|\\.)punyu\\.com$\n(^|\\.)pure18\\.com$\n(^|\\.)pureconcepts\\.net$\n(^|\\.)pureinsight\\.org$\n(^|\\.)purepdf\\.com$\n(^|\\.)purevpn\\.com$\n(^|\\.)purplelotus\\.org$\n(^|\\.)pursuestar\\.com$\n(^|\\.)pushchinawall\\.com$\n(^|\\.)pussyspace\\.com$\n(^|\\.)putihome\\.org$\n(^|\\.)putlocker\\.com$\n(^|\\.)putty\\.org$\n(^|\\.)puuko\\.com$\n(^|\\.)pwned\\.com$\n(^|\\.)python\\.com$\n(^|\\.)python\\.com\\.tw$\n(^|\\.)pythonhackers\\.com$\n(^|\\.)pytorch\\.org$\n(^|\\.)qanote\\.com$\n(^|\\.)qgirl\\.com\\.tw$\n(^|\\.)qhigh\\.com$\n(^|\\.)qiandao\\.today$\n(^|\\.)qiangyou\\.org$\n(^|\\.)qidian\\.ca$\n(^|\\.)qienkuen\\.org$\n(^|\\.)qi-gong\\.me$\n(^|\\.)qiwen\\.lu$\n(^|\\.)qixianglu\\.cn$\n(^|\\.)qkshare\\.com$\n(^|\\.)qoos\\.com$\n(^|\\.)qpoe\\.com$\n(^|\\.)qq\\.co\\.za$\n(^|\\.)qstatus\\.com$\n(^|\\.)qtrac\\.eu$\n(^|\\.)qtweeter\\.com$\n(^|\\.)quannengshen\\.org$\n(^|\\.)quantumbooter\\.net$\n(^|\\.)questvisual\\.com$\n(^|\\.)quitccp\\.net$\n(^|\\.)quitccp\\.org$\n(^|\\.)quoracdn\\.net$\n(^|\\.)quora\\.com$\n(^|\\.)quran\\.com$\n(^|\\.)quranexplorer\\.com$\n(^|\\.)qusi8\\.net$\n(^|\\.)qvodzy\\.org$\n(^|\\.)qxbbs\\.org$\n(^|\\.)qz\\.com$\n(^|\\.)r18\\.com$\n(^|\\.)radicalparty\\.org$\n(^|\\.)radiko\\.jp$\n(^|\\.)radioaustralia\\.net\\.au$\n(^|\\.)radiohilight\\.net$\n(^|\\.)radiovaticana\\.org$\n(^|\\.)radiovncr\\.com$\n(^|\\.)rael\\.org$\n(^|\\.)ra\\.gg$\n(^|\\.)raggedbanner\\.com$\n(^|\\.)raidcall\\.com\\.tw$\n(^|\\.)raidtalk\\.com\\.tw$\n(^|\\.)rainbowplan\\.org$\n(^|\\.)raindrop\\.io$\n(^|\\.)raizoji\\.or\\.jp$\n(^|\\.)ramcity\\.com\\.au$\n(^|\\.)rangwang\\.biz$\n(^|\\.)rangzen\\.com$\n(^|\\.)rangzen\\.net$\n(^|\\.)rangzen\\.org$\n(^|\\.)ranyunfei\\.com$\n(^|\\.)rapbull\\.net$\n(^|\\.)rapidgator\\.net$\n(^|\\.)rapidmoviez\\.com$\n(^|\\.)rapidvpn\\.com$\n(^|\\.)rarbgprx\\.org$\n(^|\\.)raremovie\\.cc$\n(^|\\.)raremovie\\.net$\n(^|\\.)rawgit\\.com$\n(^|\\.)rawgithub\\.com$\n(^|\\.)raw\\.githubusercontent\\.com$\n(^|\\.)razyboard\\.com$\n(^|\\.)rcam\\.target\\.com$\n(^|\\.)rcinet\\.ca$\n(^|\\.)rconversation\\.blogs\\.com$\n(^|\\.)rd\\.com$\n(^|\\.)rdio\\.com$\n(^|\\.)read01\\.com$\n(^|\\.)read100\\.com$\n(^|\\.)readingtimes\\.com\\.tw$\n(^|\\.)readmoo\\.com$\n(^|\\.)readydown\\.com$\n(^|\\.)realcourage\\.org$\n(^|\\.)realforum\\.zkiz\\.com$\n(^|\\.)realitykings\\.com$\n(^|\\.)realraptalk\\.com$\n(^|\\.)realsexpass\\.com$\n(^|\\.)rebatesrule\\.net$\n(^|\\.)recordhistory\\.org$\n(^|\\.)recovery\\.org\\.tw$\n(^|\\.)recoveryversion\\.com\\.tw$\n(^|\\.)redballoonsolidarity\\.org$\n(^|\\.)redchinacn\\.net$\n(^|\\.)redchinacn\\.org$\n(^|\\.)redd\\.it$\n(^|\\.)reddit\\.com$\n(^|\\.)redditlist\\.com$\n(^|\\.)redditmedia\\.com$\n(^|\\.)redditstatic\\.com$\n(^|\\.)redhotlabs\\.com$\n(^|\\.)red-lang\\.org$\n(^|\\.)redtube\\.com$\n(^|\\.)referer\\.us$\n(^|\\.)reflectivecode\\.com$\n(^|\\.)registry\\.google$\n(^|\\.)relaxbbs\\.com$\n(^|\\.)relay\\.com\\.tw$\n(^|\\.)releaseinternational\\.org$\n(^|\\.)religioustolerance\\.org$\n(^|\\.)renminbao\\.com$\n(^|\\.)renyurenquan\\.org$\n(^|\\.)research\\.jmsc\\.hku\\.hk$\n(^|\\.)resilio\\.com$\n(^|\\.)retweeteffect\\.com$\n(^|\\.)retweetist\\.com$\n(^|\\.)retweetrank\\.com$\n(^|\\.)reuters\\.com$\n(^|\\.)reutersmedia\\.net$\n(^|\\.)revleft\\.com$\n(^|\\.)revver\\.com$\n(^|\\.)rfachina\\.com$\n(^|\\.)rfalive1\\.akacast\\.akamaistream\\.net$\n(^|\\.)rfamobile\\.org$\n(^|\\.)rfa\\.org$\n(^|\\.)rfaweb\\.org$\n(^|\\.)rferl\\.org$\n(^|\\.)rfi\\.fr$\n(^|\\.)rfi\\.my$\n(^|\\.)rg3\\.github\\.io$\n(^|\\.)rightbtc\\.com$\n(^|\\.)rigpa\\.org$\n(^|\\.)riku\\.me$\n(^|\\.)rileyguide\\.com$\n(^|\\.)riseup\\.net$\n(^|\\.)ritouki\\.jp$\n(^|\\.)ritter\\.vg$\n(^|\\.)rixcloud\\.com$\n(^|\\.)rixcloud\\.us$\n(^|\\.)rlwlw\\.com$\n(^|\\.)rmjdw132\\.info$\n(^|\\.)rmjdw\\.com$\n(^|\\.)roadshow\\.hk$\n(^|\\.)roboforex\\.com$\n(^|\\.)robustnessiskey\\.com$\n(^|\\.)rocket-inc\\.net$\n(^|\\.)rocksdb\\.org$\n(^|\\.)rojo\\.com$\n(^|\\.)rolia\\.net$\n(^|\\.)ronjoneswriter\\.com$\n(^|\\.)roodo\\.com$\n(^|\\.)rosechina\\.net$\n(^|\\.)rotten\\.com$\n(^|\\.)rsdlmonitor\\.com$\n(^|\\.)rsf-chinese\\.org$\n(^|\\.)rsf\\.org$\n(^|\\.)rsgamen\\.org$\n(^|\\.)rssmeme\\.com$\n(^|\\.)rtalabel\\.org$\n(^|\\.)rthk\\.hk$\n(^|\\.)rthklive2-lh\\.akamaihd\\.net$\n(^|\\.)rthk\\.org\\.hk$\n(^|\\.)rti\\.org\\.tw$\n(^|\\.)rtycminnesota\\.org$\n(^|\\.)ruanyifeng\\.com$\n(^|\\.)rukor\\.org$\n(^|\\.)runbtx\\.com$\n(^|\\.)rushbee\\.com$\n(^|\\.)ruten\\.com\\.tw$\n(^|\\.)rutube\\.ru$\n(^|\\.)ruyiseek\\.com$\n(^|\\.)rxhj\\.net$\n(^|\\.)s1heng\\.com$\n(^|\\.)s1\\.nudezz\\.com$\n(^|\\.)s1s1s1\\.com$\n(^|\\.)s3\\.amazonaws\\.com$\n(^|\\.)s3-ap-northeast-1\\.amazonaws\\.com$\n(^|\\.)s3-ap-southeast-2\\.amazonaws\\.com$\n(^|\\.)s8forum\\.com$\n(^|\\.)sacks\\.com$\n(^|\\.)sacom\\.hk$\n(^|\\.)sadistic-v\\.com$\n(^|\\.)sadpanda\\.us$\n(^|\\.)safervpn\\.com$\n(^|\\.)safety\\.google$\n(^|\\.)sa\\.hao123\\.com$\n(^|\\.)saintyculture\\.com$\n(^|\\.)saiq\\.me$\n(^|\\.)sakuralive\\.com$\n(^|\\.)sakya\\.org$\n(^|\\.)salvation\\.org\\.hk$\n(^|\\.)samair\\.ru$\n(^|\\.)sambhota\\.org$\n(^|\\.)sanmin\\.com\\.tw$\n(^|\\.)sapikachu\\.net$\n(^|\\.)saveliuxiaobo\\.com$\n(^|\\.)savemedia\\.com$\n(^|\\.)savethedate\\.foo$\n(^|\\.)savethesounds\\.info$\n(^|\\.)savetibet\\.de$\n(^|\\.)savetibet\\.fr$\n(^|\\.)savetibet\\.nl$\n(^|\\.)savetibet\\.org$\n(^|\\.)savetibet\\.ru$\n(^|\\.)savetibetstore\\.org$\n(^|\\.)savevid\\.com$\n(^|\\.)say2\\.info$\n(^|\\.)sbme\\.me$\n(^|\\.)sbs\\.com\\.au$\n(^|\\.)scache1\\.vzw\\.com$\n(^|\\.)scache2\\.vzw\\.com$\n(^|\\.)scache\\.vzw\\.com$\n(^|\\.)scasino\\.com$\n(^|\\.)schema\\.org$\n(^|\\.)sciencenets\\.com$\n(^|\\.)scieron\\.com$\n(^|\\.)scmpchinese\\.com$\n(^|\\.)scmp\\.com$\n(^|\\.)scramble\\.io$\n(^|\\.)scribd\\.com$\n(^|\\.)scriptspot\\.com$\n(^|\\.)s-cute\\.com$\n(^|\\.)s-dragon\\.org$\n(^|\\.)seapuff\\.com$\n(^|\\.)search\\.aol\\.com$\n(^|\\.)searchtruth\\.com$\n(^|\\.)search\\.xxx$\n(^|\\.)search\\.yahoo\\.co\\.jp$\n(^|\\.)search\\.yahoo\\.com$\n(^|\\.)secretchina\\.com$\n(^|\\.)secretgarden\\.no$\n(^|\\.)secretsline\\.biz$\n(^|\\.)secure\\.hustler\\.com$\n(^|\\.)secure\\.logmein\\.com$\n(^|\\.)secure\\.raxcdn\\.com$\n(^|\\.)securetunnel\\.com$\n(^|\\.)securityinabox\\.org$\n(^|\\.)securitykiss\\.com$\n(^|\\.)seed4\\.me$\n(^|\\.)seesmic\\.com$\n(^|\\.)seevpn\\.com$\n(^|\\.)seezone\\.net$\n(^|\\.)sejie\\.com$\n(^|\\.)sellclassics\\.com$\n(^|\\.)sendsmtp\\.com$\n(^|\\.)sendspace\\.com$\n(^|\\.)servehttp\\.com$\n(^|\\.)serveuser\\.com$\n(^|\\.)serveusers\\.com$\n(^|\\.)sesawe\\.net$\n(^|\\.)sesawe\\.org$\n(^|\\.)sethwklein\\.net$\n(^|\\.)setn\\.com$\n(^|\\.)settv\\.com\\.tw$\n(^|\\.)sevenload\\.com$\n(^|\\.)sex-11\\.com$\n(^|\\.)sex3\\.com$\n(^|\\.)sex8\\.cc$\n(^|\\.)sexandsubmission\\.com$\n(^|\\.)sexbot\\.com$\n(^|\\.)sex\\.com$\n(^|\\.)sexhuang\\.com$\n(^|\\.)sexhu\\.com$\n(^|\\.)sexidude\\.com$\n(^|\\.)sexinsex\\.net$\n(^|\\.)sextvx\\.com$\n(^|\\.)sexxxy\\.biz$\n(^|\\.)sfileydy\\.com$\n(^|\\.)sf\\.net$\n(^|\\.)sfshibao\\.com$\n(^|\\.)sftindia\\.org$\n(^|\\.)sftuk\\.org$\n(^|\\.)shadeyouvpn\\.com$\n(^|\\.)shadow\\.ma$\n(^|\\.)shadowsky\\.xyz$\n(^|\\.)shadowsocks9\\.com$\n(^|\\.)shadowsocks\\.asia$\n(^|\\.)shadowsocks\\.be$\n(^|\\.)shadowsocks\\.com$\n(^|\\.)shadowsocks\\.com\\.hk$\n(^|\\.)shadowsocks\\.org$\n(^|\\.)shadowsocks-r\\.com$\n(^|\\.)shambalapost\\.com$\n(^|\\.)shambhalasun\\.com$\n(^|\\.)shangfang\\.org$\n(^|\\.)shapeservices\\.com$\n(^|\\.)share\\.america\\.gov$\n(^|\\.)sharebee\\.com$\n(^|\\.)sharecool\\.org$\n(^|\\.)share\\.dmhy\\.org$\n(^|\\.)share\\.ovi\\.com$\n(^|\\.)share\\.youthwant\\.com\\.tw$\n(^|\\.)sharpdaily\\.com\\.hk$\n(^|\\.)sharpdaily\\.hk$\n(^|\\.)sharpdaily\\.tw$\n(^|\\.)shattered\\.io$\n(^|\\.)shat-tibet\\.com$\n(^|\\.)sheikyermami\\.com$\n(^|\\.)shellfire\\.de$\n(^|\\.)shenshou\\.org$\n(^|\\.)shenyun\\.com$\n(^|\\.)shenyunperformingarts\\.org$\n(^|\\.)shenzhoufilm\\.com$\n(^|\\.)sherabgyaltsen\\.com$\n(^|\\.)shiatv\\.net$\n(^|\\.)shicheng\\.org$\n(^|\\.)shiksha\\.com$\n(^|\\.)shinychan\\.com$\n(^|\\.)shipcamouflage\\.com$\n(^|\\.)shireyishunjian\\.com$\n(^|\\.)shitaotv\\.org$\n(^|\\.)shixiao\\.org$\n(^|\\.)shizhao\\.org$\n(^|\\.)shkspr\\.mobi$\n(^|\\.)shodanhq\\.com$\n(^|\\.)shooshtime\\.com$\n(^|\\.)shop2000\\.com\\.tw$\n(^|\\.)shopping\\.com$\n(^|\\.)showbiz\\.omy\\.sg$\n(^|\\.)showhaotu\\.com$\n(^|\\.)showtime\\.jp$\n(^|\\.)shutterstock\\.com$\n(^|\\.)shwchurch3\\.com$\n(^|\\.)shwchurch\\.org$\n(^|\\.)siddharthasintent\\.org$\n(^|\\.)sidelinesnews\\.com$\n(^|\\.)sidelinessportseatery\\.com$\n(^|\\.)sierrafriendsoftibet\\.org$\n(^|\\.)sijihuisuo\\.club$\n(^|\\.)sijihuisuo\\.com$\n(^|\\.)sikaozhe1997\\.github\\.io$\n(^|\\.)silkbook\\.com$\n(^|\\.)simbolostwitter\\.com$\n(^|\\.)simplecd\\.org$\n(^|\\.)simpleproductivityblog\\.com$\n(^|\\.)sinchew\\.com\\.my$\n(^|\\.)singaporepools\\.com\\.sg$\n(^|\\.)singfortibet\\.com$\n(^|\\.)singpao\\.com\\.hk$\n(^|\\.)singtao\\.com$\n(^|\\.)singtaousa\\.com$\n(^|\\.)sinoants\\.com$\n(^|\\.)sinocast\\.com$\n(^|\\.)sinocism\\.com$\n(^|\\.)sino-monthly\\.com$\n(^|\\.)sinomontreal\\.ca$\n(^|\\.)sinonet\\.ca$\n(^|\\.)sinopitt\\.info$\n(^|\\.)sinoquebec\\.com$\n(^|\\.)sipml5\\.org$\n(^|\\.)sis001\\.com$\n(^|\\.)sis001\\.us$\n(^|\\.)sis\\.xxx$\n(^|\\.)site2unblock\\.com$\n(^|\\.)site90\\.net$\n(^|\\.)sitebro\\.tw$\n(^|\\.)sitekreator\\.com$\n(^|\\.)siteks\\.uk\\.to$\n(^|\\.)sitemaps\\.org$\n(^|\\.)six-degrees\\.io$\n(^|\\.)sixth\\.biz$\n(^|\\.)sjrt\\.org$\n(^|\\.)sjum\\.cn$\n(^|\\.)sketchappsources\\.com$\n(^|\\.)skimtube\\.com$\n(^|\\.)skybet\\.com$\n(^|\\.)skyking\\.com\\.tw$\n(^|\\.)skyvegas\\.com$\n(^|\\.)skyxvpn\\.com$\n(^|\\.)slacker\\.com$\n(^|\\.)slaytizle\\.com$\n(^|\\.)sleazydream\\.com$\n(^|\\.)slheng\\.com$\n(^|\\.)slickvpn\\.com$\n(^|\\.)slideshare\\.net$\n(^|\\.)slinkset\\.com$\n(^|\\.)slutload\\.com$\n(^|\\.)slutmoonbeam\\.com$\n(^|\\.)slyip\\.com$\n(^|\\.)slyip\\.net$\n(^|\\.)smartdnsproxy\\.com$\n(^|\\.)smarthide\\.com$\n(^|\\.)smchbooks\\.com$\n(^|\\.)smh\\.com\\.au$\n(^|\\.)smhric\\.org$\n(^|\\.)smith\\.edu$\n(^|\\.)sm-miracle\\.com$\n(^|\\.)smyxy\\.org$\n(^|\\.)snapchat\\.com$\n(^|\\.)snaptu\\.com$\n(^|\\.)sndcdn\\.com$\n(^|\\.)sneakme\\.net$\n(^|\\.)snowlionpub\\.com$\n(^|\\.)sobees\\.com$\n(^|\\.)socialwhale\\.com$\n(^|\\.)sockscap64\\.com$\n(^|\\.)sockslist\\.net$\n(^|\\.)socks-proxy\\.net$\n(^|\\.)soc\\.mil$\n(^|\\.)socrec\\.org$\n(^|\\.)sodatea\\.github\\.io$\n(^|\\.)sod\\.co\\.jp$\n(^|\\.)softether\\.co\\.jp$\n(^|\\.)softether-download\\.com$\n(^|\\.)softether\\.org$\n(^|\\.)softfamous\\.com$\n(^|\\.)softsmirror\\.cf$\n(^|\\.)softwarebychuck\\.com$\n(^|\\.)softwaredownload\\.gitbooks\\.io$\n(^|\\.)sogclub\\.com$\n(^|\\.)sogrady\\.me$\n(^|\\.)sohcradio\\.com$\n(^|\\.)sohfrance\\.org$\n(^|\\.)soh\\.tw$\n(^|\\.)sokamonline\\.com$\n(^|\\.)sokmil\\.com$\n(^|\\.)solarsystem\\.nasa\\.gov$\n(^|\\.)solidaritetibet\\.org$\n(^|\\.)solidfiles\\.com$\n(^|\\.)somee\\.com$\n(^|\\.)songjianjun\\.com$\n(^|\\.)sonicbbs\\.cc$\n(^|\\.)sonidodelaesperanza\\.org$\n(^|\\.)sopcast\\.com$\n(^|\\.)sopcast\\.org$\n(^|\\.)sorazone\\.net$\n(^|\\.)sorting-algorithms\\.com$\n(^|\\.)sos\\.org$\n(^|\\.)sosreader\\.com$\n(^|\\.)sostibet\\.org$\n(^|\\.)soubory\\.com$\n(^|\\.)soulcaliburhentai\\.net$\n(^|\\.)soul-plus\\.net$\n(^|\\.)soumo\\.info$\n(^|\\.)soundcloud\\.com$\n(^|\\.)soundofhope\\.kr$\n(^|\\.)soundofhope\\.org$\n(^|\\.)soup\\.io$\n(^|\\.)soupofmedia\\.com$\n(^|\\.)sourceforge\\.net$\n(^|\\.)sourcewadio\\.com$\n(^|\\.)southnews\\.com\\.tw$\n(^|\\.)sowers\\.org\\.hk$\n(^|\\.)soylentnews\\.org$\n(^|\\.)spaces\\.hightail\\.com$\n(^|\\.)spankbang\\.com$\n(^|\\.)spankingtube\\.com$\n(^|\\.)spankwire\\.com$\n(^|\\.)spb\\.com$\n(^|\\.)speakerdeck\\.com$\n(^|\\.)specxinzl\\.jigsy\\.com$\n(^|\\.)speedify\\.com$\n(^|\\.)spem\\.at$\n(^|\\.)spencertipping\\.com$\n(^|\\.)spendee\\.com$\n(^|\\.)spicevpn\\.com$\n(^|\\.)spideroak\\.com$\n(^|\\.)spike\\.com$\n(^|\\.)sports\\.williamhill\\.com$\n(^|\\.)spotflux\\.com$\n(^|\\.)spotify\\.com$\n(^|\\.)spreadshirt\\.es$\n(^|\\.)spring4u\\.info$\n(^|\\.)springboardplatform\\.com$\n(^|\\.)sprite\\.org$\n(^|\\.)sproutcore\\.com$\n(^|\\.)sproxy\\.info$\n(^|\\.)squirly\\.info$\n(^|\\.)srcf\\.ucam\\.org$\n(^|\\.)srocket\\.us$\n(^|\\.)ss7\\.vzw\\.com$\n(^|\\.)ss\\.carryzhou\\.com$\n(^|\\.)ssglobal\\.co$\n(^|\\.)ssglobal\\.me$\n(^|\\.)ssh91\\.com$\n(^|\\.)ssl443\\.org$\n(^|\\.)ss\\.levyhsu\\.com$\n(^|\\.)ss-link\\.com$\n(^|\\.)ssl\\.webpack\\.de$\n(^|\\.)sspanel\\.net$\n(^|\\.)sspro\\.ml$\n(^|\\.)ss\\.pythonic\\.life$\n(^|\\.)ssrshare\\.com$\n(^|\\.)ssr\\.tools$\n(^|\\.)sss\\.camp$\n(^|\\.)sstmlt\\.moe$\n(^|\\.)sstmlt\\.net$\n(^|\\.)stackoverflow\\.com$\n(^|\\.)stage64\\.hk$\n(^|\\.)standupfortibet\\.org$\n(^|\\.)stanford\\.edu$\n(^|\\.)starfishfx\\.com$\n(^|\\.)starp2p\\.com$\n(^|\\.)startpage\\.com$\n(^|\\.)startuplivingchina\\.com$\n(^|\\.)stat\\.gov\\.tw$\n(^|\\.)static01\\.nyt\\.com$\n(^|\\.)static\\.comico\\.tw$\n(^|\\.)static-economist\\.com$\n(^|\\.)staticflickr\\.com$\n(^|\\.)static\\.shemalez\\.com$\n(^|\\.)statueofdemocracy\\.org$\n(^|\\.)stc\\.com\\.sa$\n(^|\\.)steamcommunity\\.com$\n(^|\\.)steel-storm\\.com$\n(^|\\.)steemit\\.com$\n(^|\\.)steganos\\.com$\n(^|\\.)steganos\\.net$\n(^|\\.)stepchina\\.com$\n(^|\\.)stephaniered\\.com$\n(^|\\.)sthoo\\.com$\n(^|\\.)stickam\\.com$\n(^|\\.)stickeraction\\.com$\n(^|\\.)stileproject\\.com$\n(^|\\.)sto\\.cc$\n(^|\\.)stoporganharvesting\\.org$\n(^|\\.)stoptibetcrisis\\.net$\n(^|\\.)storagenewsletter\\.com$\n(^|\\.)store\\.steampowered\\.com$\n(^|\\.)stories\\.google$\n(^|\\.)storify\\.com$\n(^|\\.)stormmediagroup\\.com$\n(^|\\.)storm\\.mg$\n(^|\\.)stoweboyd\\.com$\n(^|\\.)stranabg\\.com$\n(^|\\.)straplessdildo\\.com$\n(^|\\.)streamingthe\\.net$\n(^|\\.)streema\\.com$\n(^|\\.)strikingly\\.com$\n(^|\\.)strongvpn\\.com$\n(^|\\.)strongwindpress\\.com$\n(^|\\.)studentsforafreetibet\\.org$\n(^|\\.)student\\.tw$\n(^|\\.)stumbleupon\\.com$\n(^|\\.)stupidvideos\\.com$\n(^|\\.)subacme\\.rerouted\\.org$\n(^|\\.)successfn\\.com$\n(^|\\.)sugarsync\\.com$\n(^|\\.)sugobbs\\.com$\n(^|\\.)sugumiru18\\.com$\n(^|\\.)suissl\\.com$\n(^|\\.)sujiatun\\.wordpress\\.com$\n(^|\\.)sukebei\\.nyaa\\.si$\n(^|\\.)sulian\\.me$\n(^|\\.)summify\\.com$\n(^|\\.)sumrando\\.com$\n(^|\\.)sun1911\\.com$\n(^|\\.)sunmedia\\.ca$\n(^|\\.)sunporno\\.com$\n(^|\\.)sunskyforum\\.com$\n(^|\\.)sunta\\.com\\.tw$\n(^|\\.)sunvpn\\.net$\n(^|\\.)sunwinism\\.joinbbs\\.net$\n(^|\\.)suoluo\\.org$\n(^|\\.)supchina\\.com$\n(^|\\.)superfreevpn\\.com$\n(^|\\.)superokayama\\.com$\n(^|\\.)superpages\\.com$\n(^|\\.)supervpn\\.net$\n(^|\\.)superzooi\\.com$\n(^|\\.)suppig\\.net$\n(^|\\.)suprememastertv\\.com$\n(^|\\.)surfeasy\\.com$\n(^|\\.)surfeasy\\.com\\.au$\n(^|\\.)suroot\\.com$\n(^|\\.)surrenderat20\\.net$\n(^|\\.)sustainability\\.google$\n(^|\\.)suyangg\\.com$\n(^|\\.)svsfx\\.com$\n(^|\\.)swagbucks\\.com$\n(^|\\.)swissinfo\\.ch$\n(^|\\.)swissvpn\\.net$\n(^|\\.)switch1\\.jp$\n(^|\\.)switchvpn\\.net$\n(^|\\.)sydneytoday\\.com$\n(^|\\.)sylfoundation\\.org$\n(^|\\.)syncback\\.com$\n(^|\\.)synergyse\\.com$\n(^|\\.)sysresccd\\.org$\n(^|\\.)sytes\\.net$\n(^|\\.)szbbs\\.net$\n(^|\\.)szetowah\\.org\\.hk$\n(^|\\.)t35\\.com$\n(^|\\.)t66y\\.com$\n(^|\\.)taa-usa\\.org$\n(^|\\.)taaze\\.tw$\n(^|\\.)tabtter\\.jp$\n(^|\\.)tacc\\.cwb\\.gov\\.tw$\n(^|\\.)tacem\\.org$\n(^|\\.)taconet\\.com\\.tw$\n(^|\\.)taedp\\.org\\.tw$\n(^|\\.)tafm\\.org$\n(^|\\.)tagwalk\\.com$\n(^|\\.)tagwa\\.org\\.au$\n(^|\\.)tahr\\.org\\.tw$\n(^|\\.)taipei\\.gov\\.tw$\n(^|\\.)taipeisociety\\.org$\n(^|\\.)taiwanbible\\.com$\n(^|\\.)taiwancon\\.com$\n(^|\\.)taiwandaily\\.net$\n(^|\\.)taiwandc\\.org$\n(^|\\.)taiwanjobs\\.gov\\.tw$\n(^|\\.)taiwanjustice\\.com$\n(^|\\.)taiwanjustice\\.net$\n(^|\\.)taiwankiss\\.com$\n(^|\\.)taiwannation\\.50webs\\.com$\n(^|\\.)taiwannation\\.com$\n(^|\\.)taiwannation\\.com\\.tw$\n(^|\\.)taiwanncf\\.org\\.tw$\n(^|\\.)taiwannews\\.com\\.tw$\n(^|\\.)taiwan-sex\\.com$\n(^|\\.)taiwantp\\.net$\n(^|\\.)taiwantt\\.org\\.tw$\n(^|\\.)taiwanus\\.net$\n(^|\\.)taiwanyes\\.com$\n(^|\\.)taiwanyes\\.ning\\.com$\n(^|\\.)talk853\\.com$\n(^|\\.)talkboxapp\\.com$\n(^|\\.)talkcc\\.com$\n(^|\\.)talkonly\\.net$\n(^|\\.)tamiaode\\.tk$\n(^|\\.)tanc\\.org$\n(^|\\.)tangben\\.com$\n(^|\\.)tangren\\.us$\n(^|\\.)taoism\\.net$\n(^|\\.)taolun\\.info$\n(^|\\.)tapanwap\\.com$\n(^|\\.)tapatalk\\.com$\n(^|\\.)tarr\\.uspto\\.gov$\n(^|\\.)tascn\\.com\\.au$\n(^|\\.)taup\\.net$\n(^|\\.)taweet\\.com$\n(^|\\.)tbcollege\\.org$\n(^|\\.)tbicn\\.org$\n(^|\\.)tbi\\.org\\.hk$\n(^|\\.)tbjyt\\.org$\n(^|\\.)tbpic\\.info$\n(^|\\.)tbrc\\.org$\n(^|\\.)tbsec\\.org$\n(^|\\.)tbskkinabalu\\.page\\.tl$\n(^|\\.)tbsmalaysia\\.org$\n(^|\\.)tbsn\\.org$\n(^|\\.)tbs-rainbow\\.org$\n(^|\\.)tbsseattle\\.org$\n(^|\\.)tbssqh\\.org$\n(^|\\.)tbswd\\.org$\n(^|\\.)tbtemple\\.org\\.uk$\n(^|\\.)tbthouston\\.org$\n(^|\\.)tccwonline\\.org$\n(^|\\.)tcewf\\.org$\n(^|\\.)tchrd\\.org$\n(^|\\.)tcnynj\\.org$\n(^|\\.)t\\.co$\n(^|\\.)tcpspeed\\.co$\n(^|\\.)tcpspeed\\.com$\n(^|\\.)tcsofbc\\.org$\n(^|\\.)tcsovi\\.org$\n(^|\\.)tdm\\.com\\.mo$\n(^|\\.)teachparentstech\\.org$\n(^|\\.)teamamericany\\.com$\n(^|\\.)tech2\\.in\\.com$\n(^|\\.)techviz\\.net$\n(^|\\.)teck\\.in$\n(^|\\.)teco-hk\\.org$\n(^|\\.)teco-mo\\.org$\n(^|\\.)teddysun\\.com$\n(^|\\.)teeniefuck\\.net$\n(^|\\.)teensinasia\\.com$\n(^|\\.)telecomspace\\.com$\n(^|\\.)telegram\\.dog$\n(^|\\.)telegramdownload\\.com$\n(^|\\.)telegram\\.me$\n(^|\\.)telegram\\.org$\n(^|\\.)telegraph\\.co\\.uk$\n(^|\\.)telesco\\.pe$\n(^|\\.)tellme\\.pw$\n(^|\\.)tenacy\\.com$\n(^|\\.)tensorflow\\.org$\n(^|\\.)tenzinpalmo\\.com$\n(^|\\.)terminus2049\\.github\\.io$\n(^|\\.)tew\\.org$\n(^|\\.)textnow\\.me$\n(^|\\.)tfhub\\.dev$\n(^|\\.)t-g\\.com$\n(^|\\.)thaicn\\.com$\n(^|\\.)thb\\.gov\\.tw$\n(^|\\.)theatrum-belli\\.com$\n(^|\\.)thebcomplex\\.com$\n(^|\\.)theblemish\\.com$\n(^|\\.)thebobs\\.com$\n(^|\\.)thebodyshop-usa\\.com$\n(^|\\.)thecenter\\.mit\\.edu$\n(^|\\.)thechinabeat\\.org$\n(^|\\.)thedalailamamovie\\.com$\n(^|\\.)thedw\\.us$\n(^|\\.)thefacebook\\.com$\n(^|\\.)thefrontier\\.hk$\n(^|\\.)thegioitinhoc\\.vn$\n(^|\\.)thegly\\.com$\n(^|\\.)thehots\\.info$\n(^|\\.)thehousenews\\.com$\n(^|\\.)thehun\\.net$\n(^|\\.)theinitium\\.com$\n(^|\\.)thenewslens\\.com$\n(^|\\.)thepiratebay\\.org$\n(^|\\.)theporndude\\.com$\n(^|\\.)theportalwiki\\.com$\n(^|\\.)thereallove\\.kr$\n(^|\\.)therock\\.net\\.nz$\n(^|\\.)thespeeder\\.com$\n(^|\\.)thestandnews\\.com$\n(^|\\.)thetibetcenter\\.org$\n(^|\\.)thetibetconnection\\.org$\n(^|\\.)thetibetmuseum\\.org$\n(^|\\.)thetibetpost\\.com$\n(^|\\.)thetinhat\\.com$\n(^|\\.)thetrotskymovie\\.com$\n(^|\\.)thevivekspot\\.com$\n(^|\\.)thewgo\\.org$\n(^|\\.)theync\\.com$\n(^|\\.)th\\.hao123\\.com$\n(^|\\.)thinkgeek\\.com$\n(^|\\.)thinkingtaiwan\\.com$\n(^|\\.)thinkwithgoogle\\.com$\n(^|\\.)thisav\\.com$\n(^|\\.)thlib\\.org$\n(^|\\.)thomasbernhard\\.org$\n(^|\\.)thongdreams\\.com$\n(^|\\.)threatchaos\\.com$\n(^|\\.)throughnightsfire\\.com$\n(^|\\.)thumbzilla\\.com$\n(^|\\.)thywords\\.com$\n(^|\\.)thywords\\.com\\.tw$\n(^|\\.)tiananmenduizhi\\.com$\n(^|\\.)tiananmenmother\\.org$\n(^|\\.)tiananmenuniv\\.com$\n(^|\\.)tiananmenuniv\\.net$\n(^|\\.)tiandixing\\.org$\n(^|\\.)tianhuayuan\\.com$\n(^|\\.)tianlawoffice\\.com$\n(^|\\.)tiantibooks\\.org$\n(^|\\.)tianti\\.io$\n(^|\\.)tianyantong\\.org\\.cn$\n(^|\\.)tianzhu\\.org$\n(^|\\.)tibet3rdpole\\.org$\n(^|\\.)tibetaction\\.net$\n(^|\\.)tibetaid\\.org$\n(^|\\.)tibetalk\\.com$\n(^|\\.)tibetanaidproject\\.org$\n(^|\\.)tibetan-alliance\\.org$\n(^|\\.)tibetanarts\\.org$\n(^|\\.)tibetanbuddhistinstitute\\.org$\n(^|\\.)tibetancommunity\\.org$\n(^|\\.)tibetancommunityuk\\.net$\n(^|\\.)tibetanculture\\.org$\n(^|\\.)tibetanfeministcollective\\.org$\n(^|\\.)tibetan\\.fr$\n(^|\\.)tibetanjournal\\.com$\n(^|\\.)tibetanlanguage\\.org$\n(^|\\.)tibetanliberation\\.org$\n(^|\\.)tibetanpaintings\\.com$\n(^|\\.)tibetanphotoproject\\.com$\n(^|\\.)tibetanpoliticalreview\\.org$\n(^|\\.)tibetanreview\\.net$\n(^|\\.)tibetansports\\.org$\n(^|\\.)tibetanwomen\\.org$\n(^|\\.)tibetanyouthcongress\\.org$\n(^|\\.)tibetanyouth\\.org$\n(^|\\.)tibet\\.a\\.se$\n(^|\\.)tibet\\.at$\n(^|\\.)tibet\\.ca$\n(^|\\.)tibetcharity\\.dk$\n(^|\\.)tibetcharity\\.in$\n(^|\\.)tibetchild\\.org$\n(^|\\.)tibetcity\\.com$\n(^|\\.)tibetcollection\\.com$\n(^|\\.)tibet\\.com$\n(^|\\.)tibetcorps\\.org$\n(^|\\.)tibet-envoy\\.eu$\n(^|\\.)tibetexpress\\.net$\n(^|\\.)tibetfocus\\.com$\n(^|\\.)tibet-foundation\\.org$\n(^|\\.)tibet\\.fr$\n(^|\\.)tibetfund\\.org$\n(^|\\.)tibetgermany\\.com$\n(^|\\.)tibetgermany\\.de$\n(^|\\.)tibethaus\\.com$\n(^|\\.)tibetheritagefund\\.org$\n(^|\\.)tibethouse\\.jp$\n(^|\\.)tibethouse\\.org$\n(^|\\.)tibet-house-trust\\.co\\.uk$\n(^|\\.)tibethouse\\.us$\n(^|\\.)tibet-info\\.net$\n(^|\\.)tibetinfonet\\.net$\n(^|\\.)tibet-initiative\\.de$\n(^|\\.)tibetjustice\\.org$\n(^|\\.)tibetkomite\\.dk$\n(^|\\.)tibetlibre\\.free\\.fr$\n(^|\\.)tibet-munich\\.de$\n(^|\\.)tibetmuseum\\.org$\n(^|\\.)tibet\\.net$\n(^|\\.)tibetnetwork\\.org$\n(^|\\.)tibet\\.nu$\n(^|\\.)tibetoffice\\.ch$\n(^|\\.)tibetoffice\\.com\\.au$\n(^|\\.)tibetoffice\\.eu$\n(^|\\.)tibetoffice\\.org$\n(^|\\.)tibetonline\\.com$\n(^|\\.)tibetonline\\.tv$\n(^|\\.)tibetoralhistory\\.org$\n(^|\\.)tibet\\.org$\n(^|\\.)tibet\\.org\\.tw$\n(^|\\.)tibetpolicy\\.eu$\n(^|\\.)tibetrelieffund\\.co\\.uk$\n(^|\\.)tibetsites\\.com$\n(^|\\.)tibet\\.sk$\n(^|\\.)tibetsociety\\.com$\n(^|\\.)tibetsun\\.com$\n(^|\\.)tibetsupportgroup\\.org$\n(^|\\.)tibetswiss\\.ch$\n(^|\\.)tibettelegraph\\.com$\n(^|\\.)tibettimes\\.net$\n(^|\\.)tibet\\.to$\n(^|\\.)tibetwrites\\.org$\n(^|\\.)ticket\\.com\\.tw$\n(^|\\.)tigervpn\\.com$\n(^|\\.)tiltbrush\\.com$\n(^|\\.)timdir\\.com$\n(^|\\.)time\\.com$\n(^|\\.)times\\.hinet\\.net$\n(^|\\.)timesofindia\\.indiatimes\\.com$\n(^|\\.)timsah\\.com$\n(^|\\.)tinc-vpn\\.org$\n(^|\\.)tineye\\.com$\n(^|\\.)tintuc101\\.com$\n(^|\\.)tiny\\.cc$\n(^|\\.)tinychat\\.com$\n(^|\\.)tinypaste\\.com$\n(^|\\.)tipo\\.gov\\.tw$\n(^|\\.)tistory\\.com$\n(^|\\.)tkcs-collins\\.com$\n(^|\\.)tl\\.gd$\n(^|\\.)tma\\.co\\.jp$\n(^|\\.)tmagazine\\.com$\n(^|\\.)tmdfish\\.com$\n(^|\\.)t\\.me$\n(^|\\.)tmi\\.me$\n(^|\\.)tmpp\\.org$\n(^|\\.)tn1\\.shemalez\\.com$\n(^|\\.)tn2\\.shemalez\\.com$\n(^|\\.)tn3\\.shemalez\\.com$\n(^|\\.)tnaflix\\.com$\n(^|\\.)tngrnow\\.com$\n(^|\\.)tngrnow\\.net$\n(^|\\.)tnp\\.org$\n(^|\\.)togetter\\.com$\n(^|\\.)toh\\.info$\n(^|\\.)tokyo-247\\.com$\n(^|\\.)tokyocn\\.com$\n(^|\\.)tokyo-hot\\.com$\n(^|\\.)tokyo-porn-tube\\.com$\n(^|\\.)tongil\\.or\\.kr$\n(^|\\.)tono-oka\\.jp$\n(^|\\.)tonyyan\\.net$\n(^|\\.)toodoc\\.com$\n(^|\\.)toonel\\.net$\n(^|\\.)top10vpn\\.com$\n(^|\\.)top81\\.ws$\n(^|\\.)topbtc\\.com$\n(^|\\.)topic\\.youthwant\\.com\\.tw$\n(^|\\.)topnews\\.in$\n(^|\\.)to-porno\\.com$\n(^|\\.)toppornsites\\.com$\n(^|\\.)topshareware\\.com$\n(^|\\.)topsy\\.com$\n(^|\\.)toptip\\.ca$\n(^|\\.)top\\.tv$\n(^|\\.)tora\\.to$\n(^|\\.)tor\\.blingblingsquad\\.net$\n(^|\\.)torcn\\.com$\n(^|\\.)tor\\.cn\\.uptodown\\.com$\n(^|\\.)torguard\\.net$\n(^|\\.)torproject\\.org$\n(^|\\.)torrentprivacy\\.com$\n(^|\\.)torrentproject\\.se$\n(^|\\.)torrenty\\.org$\n(^|\\.)torrentz\\.eu$\n(^|\\.)tor\\.updatestar\\.com$\n(^|\\.)torvpn\\.com$\n(^|\\.)t\\.orzdream\\.com$\n(^|\\.)tosh\\.comedycentral\\.com$\n(^|\\.)totalvpn\\.com$\n(^|\\.)toutiaoabc\\.com$\n(^|\\.)toutyrater\\.github\\.io$\n(^|\\.)towngain\\.com$\n(^|\\.)toypark\\.in$\n(^|\\.)toythieves\\.com$\n(^|\\.)toytractorshow\\.com$\n(^|\\.)tparents\\.org$\n(^|\\.)tpi\\.org\\.tw$\n(^|\\.)tracfone\\.com$\n(^|\\.)traffichaus\\.com$\n(^|\\.)transparency\\.org$\n(^|\\.)trans\\.wenweipo\\.com$\n(^|\\.)treemall\\.com\\.tw$\n(^|\\.)trendsmap\\.com$\n(^|\\.)trialofccp\\.org$\n(^|\\.)trickip\\.net$\n(^|\\.)trickip\\.org$\n(^|\\.)trimondi\\.de$\n(^|\\.)trouw\\.nl$\n(^|\\.)trtc\\.com\\.tw$\n(^|\\.)trt\\.net\\.tr$\n(^|\\.)truebuddha-md\\.org$\n(^|\\.)trulyergonomic\\.com$\n(^|\\.)truth101\\.co\\.tv$\n(^|\\.)truthontour\\.org$\n(^|\\.)truveo\\.com$\n(^|\\.)tryheart\\.jp$\n(^|\\.)tsctv\\.net$\n(^|\\.)tsdr\\.uspto\\.gov$\n(^|\\.)tsemtulku\\.com$\n(^|\\.)tsquare\\.tv$\n(^|\\.)tsunagarumon\\.com$\n(^|\\.)tsu\\.org\\.tw$\n(^|\\.)tt1069\\.com$\n(^|\\.)tttan\\.com$\n(^|\\.)ttvnw\\.net$\n(^|\\.)tu8964\\.com$\n(^|\\.)tubaholic\\.com$\n(^|\\.)tube8\\.com$\n(^|\\.)tube911\\.com$\n(^|\\.)tube\\.com$\n(^|\\.)tubecup\\.com$\n(^|\\.)tubegals\\.com$\n(^|\\.)tubeislam\\.com$\n(^|\\.)tubepornclassic\\.com$\n(^|\\.)tubestack\\.com$\n(^|\\.)tubewolf\\.com$\n(^|\\.)tuibeitu\\.net$\n(^|\\.)tuidang\\.net$\n(^|\\.)tuidang\\.org$\n(^|\\.)tuidang\\.se$\n(^|\\.)tui\\.orzdream\\.com$\n(^|\\.)tuitwit\\.com$\n(^|\\.)tumblr\\.com$\n(^|\\.)tumutanzi\\.com$\n(^|\\.)tumview\\.com$\n(^|\\.)tunein\\.com$\n(^|\\.)tunnelbear\\.com$\n(^|\\.)tunnelr\\.com$\n(^|\\.)tuo8\\.blue$\n(^|\\.)tuo8\\.cc$\n(^|\\.)tuo8\\.club$\n(^|\\.)tuo8\\.fit$\n(^|\\.)tuo8\\.hk$\n(^|\\.)tuo8\\.in$\n(^|\\.)tuo8\\.ninja$\n(^|\\.)tuo8\\.org$\n(^|\\.)tuo8\\.pw$\n(^|\\.)tuo8\\.red$\n(^|\\.)tuo8\\.space$\n(^|\\.)turansam\\.org$\n(^|\\.)turbobit\\.net$\n(^|\\.)turbohide\\.com$\n(^|\\.)turbotwitter\\.com$\n(^|\\.)turntable\\.fm$\n(^|\\.)tushycash\\.com$\n(^|\\.)tuvpn\\.com$\n(^|\\.)tuzaijidi\\.com$\n(^|\\.)tvants\\.com$\n(^|\\.)tvboxnow\\.com$\n(^|\\.)tv\\.com$\n(^|\\.)tvider\\.com$\n(^|\\.)tvmost\\.com\\.hk$\n(^|\\.)tvplayvideos\\.com$\n(^|\\.)tvunetworks\\.com$\n(^|\\.)tw01\\.org$\n(^|\\.)twaitter\\.com$\n(^|\\.)tw\\.answers\\.yahoo\\.com$\n(^|\\.)twapperkeeper\\.com$\n(^|\\.)twaud\\.io$\n(^|\\.)twavi\\.com$\n(^|\\.)twbbs\\.net\\.tw$\n(^|\\.)twbbs\\.org$\n(^|\\.)twbbs\\.tw$\n(^|\\.)tw\\.bid\\.yahoo\\.com$\n(^|\\.)tw-blog\\.com$\n(^|\\.)twblogger\\.com$\n(^|\\.)tweepguide\\.com$\n(^|\\.)tweeplike\\.me$\n(^|\\.)tweepmag\\.com$\n(^|\\.)tweepml\\.org$\n(^|\\.)tweetbackup\\.com$\n(^|\\.)tweetboard\\.com$\n(^|\\.)tweetboner\\.biz$\n(^|\\.)tweetcs\\.com$\n(^|\\.)tweetdeck\\.com$\n(^|\\.)tweetedtimes\\.com$\n(^|\\.)tweetmylast\\.fm$\n(^|\\.)tweetphoto\\.com$\n(^|\\.)tweetrans\\.com$\n(^|\\.)tweetree\\.com$\n(^|\\.)tweets\\.seraph\\.me$\n(^|\\.)tweettunnel\\.com$\n(^|\\.)tweetwally\\.com$\n(^|\\.)tweetymail\\.com$\n(^|\\.)tweez\\.net$\n(^|\\.)twelve\\.today$\n(^|\\.)twerkingbutt\\.com$\n(^|\\.)twftp\\.org$\n(^|\\.)tw\\.gigacircle\\.com$\n(^|\\.)twgreatdaily\\.com$\n(^|\\.)tw\\.hao123\\.com$\n(^|\\.)twibase\\.com$\n(^|\\.)twibble\\.de$\n(^|\\.)twibbon\\.com$\n(^|\\.)twibs\\.com$\n(^|\\.)twicountry\\.org$\n(^|\\.)twicsy\\.com$\n(^|\\.)twiends\\.com$\n(^|\\.)twifan\\.com$\n(^|\\.)twiffo\\.com$\n(^|\\.)twiggit\\.org$\n(^|\\.)twilightsex\\.com$\n(^|\\.)twilog\\.org$\n(^|\\.)twimbow\\.com$\n(^|\\.)twimg\\.com$\n(^|\\.)twimg\\.edgesuite\\.net$\n(^|\\.)twindexx\\.com$\n(^|\\.)twip\\.me$\n(^|\\.)twipple\\.jp$\n(^|\\.)tw\\.iqiyi\\.com$\n(^|\\.)twishort\\.com$\n(^|\\.)twistar\\.cc$\n(^|\\.)twisterio\\.com$\n(^|\\.)twister\\.net\\.co$\n(^|\\.)twisternow\\.com$\n(^|\\.)twistory\\.net$\n(^|\\.)twit2d\\.com$\n(^|\\.)twitbrowser\\.net$\n(^|\\.)twitcause\\.com$\n(^|\\.)twitchcdn\\.net$\n(^|\\.)twitch\\.tv$\n(^|\\.)twitgether\\.com$\n(^|\\.)twitgoo\\.com$\n(^|\\.)twitiq\\.com$\n(^|\\.)twitlonger\\.com$\n(^|\\.)twitmania\\.com$\n(^|\\.)twitoaster\\.com$\n(^|\\.)twitonmsn\\.com$\n(^|\\.)twitpic\\.com$\n(^|\\.)twitstat\\.com$\n(^|\\.)twittbot\\.net$\n(^|\\.)twitter4j\\.org$\n(^|\\.)twitter\\.com$\n(^|\\.)twittercounter\\.com$\n(^|\\.)twitterfeed\\.com$\n(^|\\.)twittergadget\\.com$\n(^|\\.)twitter\\.jp$\n(^|\\.)twitterkr\\.com$\n(^|\\.)twittermail\\.com$\n(^|\\.)twitterrific\\.com$\n(^|\\.)twittertim\\.es$\n(^|\\.)twitthat\\.com$\n(^|\\.)twitturk\\.com$\n(^|\\.)twitturly\\.com$\n(^|\\.)twitvid\\.com$\n(^|\\.)twitzap\\.com$\n(^|\\.)twiyia\\.com$\n(^|\\.)tw\\.jiepang\\.com$\n(^|\\.)tw\\.knowledge\\.yahoo\\.com$\n(^|\\.)tw\\.mall\\.yahoo\\.com$\n(^|\\.)tw\\.mobi\\.yahoo\\.com$\n(^|\\.)tw\\.money\\.yahoo\\.com$\n(^|\\.)tw\\.myblog\\.yahoo\\.com$\n(^|\\.)tw\\.news\\.yahoo\\.com$\n(^|\\.)twnorth\\.org\\.tw$\n(^|\\.)tw-npo\\.org$\n(^|\\.)twskype\\.com$\n(^|\\.)twstar\\.net$\n(^|\\.)tw\\.streetvoice\\.com$\n(^|\\.)twtkr\\.com$\n(^|\\.)tw\\.tomonews\\.net$\n(^|\\.)twtr2src\\.ogaoga\\.org$\n(^|\\.)twtrland\\.com$\n(^|\\.)twt\\.tl$\n(^|\\.)twttr\\.com$\n(^|\\.)twurl\\.nl$\n(^|\\.)tw\\.voa\\.mobi$\n(^|\\.)twyac\\.org$\n(^|\\.)tw\\.yahoo\\.com$\n(^|\\.)txxx\\.com$\n(^|\\.)tycool\\.com$\n(^|\\.)typepad\\.com$\n(^|\\.)u15\\.info$\n(^|\\.)u9un\\.com$\n(^|\\.)ub0\\.cc$\n(^|\\.)ubddns\\.org$\n(^|\\.)uberproxy\\.net$\n(^|\\.)ucdc1998\\.org$\n(^|\\.)uchicago\\.edu$\n(^|\\.)uc-japan\\.org$\n(^|\\.)uderzo\\.it$\n(^|\\.)udnbkk\\.com$\n(^|\\.)udn\\.com$\n(^|\\.)udn\\.com\\.tw$\n(^|\\.)uforadio\\.com\\.tw$\n(^|\\.)ufreevpn\\.com$\n(^|\\.)ugo\\.com$\n(^|\\.)uhdwallpapers\\.org$\n(^|\\.)uhrp\\.org$\n(^|\\.)uighurbiz\\.net$\n(^|\\.)uighur\\.narod\\.ru$\n(^|\\.)uighur\\.nl$\n(^|\\.)ukcdp\\.co\\.uk$\n(^|\\.)ukliferadio\\.co\\.uk$\n(^|\\.)uku\\.im$\n(^|\\.)ulike\\.net$\n(^|\\.)ulop\\.net$\n(^|\\.)ultravpn\\.fr$\n(^|\\.)ultraxs\\.com$\n(^|\\.)umich\\.edu$\n(^|\\.)unblock\\.cn\\.com$\n(^|\\.)unblockdmm\\.com$\n(^|\\.)unblocker\\.yt$\n(^|\\.)unblocksit\\.es$\n(^|\\.)unblock-us\\.com$\n(^|\\.)uncyclomedia\\.org$\n(^|\\.)uncyclopedia\\.hk$\n(^|\\.)uncyclopedia\\.tw$\n(^|\\.)underwoodammo\\.com$\n(^|\\.)unholyknight\\.com$\n(^|\\.)uni\\.cc$\n(^|\\.)unification\\.net$\n(^|\\.)unification\\.org\\.tw$\n(^|\\.)unirule\\.cloud$\n(^|\\.)unitedsocialpress\\.com$\n(^|\\.)unix100\\.com$\n(^|\\.)unknownspace\\.org$\n(^|\\.)unodedos\\.com$\n(^|\\.)unpo\\.org$\n(^|\\.)unseen\\.is$\n(^|\\.)untraceable\\.us$\n(^|\\.)uocn\\.org$\n(^|\\.)upcoming\\.yahoo\\.com$\n(^|\\.)updates\\.tdesktop\\.com$\n(^|\\.)upholdjustice\\.org$\n(^|\\.)upload4u\\.info$\n(^|\\.)uploaded\\.net$\n(^|\\.)uploaded\\.to$\n(^|\\.)uploadstation\\.com$\n(^|\\.)upmedia\\.mg$\n(^|\\.)upornia\\.com$\n(^|\\.)uproxy\\.org$\n(^|\\.)upwill\\.org$\n(^|\\.)ur7s\\.com$\n(^|\\.)uraban\\.me$\n(^|\\.)urbansurvival\\.com$\n(^|\\.)urchin\\.com$\n(^|\\.)urlborg\\.com$\n(^|\\.)urlparser\\.com$\n(^|\\.)usacn\\.com$\n(^|\\.)usaip\\.eu$\n(^|\\.)userapi\\.nytlog\\.com$\n(^|\\.)users\\.skynet\\.be$\n(^|\\.)usfk\\.mil$\n(^|\\.)ushuarencity\\.echainhost\\.com$\n(^|\\.)usinfo\\.state\\.gov$\n(^|\\.)usma\\.edu$\n(^|\\.)usmc\\.mil$\n(^|\\.)usmgtcg\\.ning\\.com$\n(^|\\.)usno\\.navy\\.mil$\n(^|\\.)usocctn\\.com$\n(^|\\.)us\\.to$\n(^|\\.)ustream\\.tv$\n(^|\\.)usunitednews\\.com$\n(^|\\.)usus\\.cc$\n(^|\\.)utopianpal\\.com$\n(^|\\.)uu-gg\\.com$\n(^|\\.)uukanshu\\.com$\n(^|\\.)uvwxyz\\.xyz$\n(^|\\.)uwants\\.com$\n(^|\\.)uwants\\.net$\n(^|\\.)uyghuramerican\\.org$\n(^|\\.)uyghurcanadiansociety\\.org$\n(^|\\.)uyghurcongress\\.org$\n(^|\\.)uyghur\\.co\\.uk$\n(^|\\.)uyghurensemble\\.co\\.uk$\n(^|\\.)uyghur-j\\.org$\n(^|\\.)uyghurpen\\.org$\n(^|\\.)uyghurpress\\.com$\n(^|\\.)uyghurstudies\\.org$\n(^|\\.)uygur\\.fc2web\\.com$\n(^|\\.)uygur\\.org$\n(^|\\.)uymaarip\\.com$\n(^|\\.)v2ex\\.com$\n(^|\\.)v2ray\\.com$\n(^|\\.)van001\\.com$\n(^|\\.)van698\\.com$\n(^|\\.)vanemu\\.cn$\n(^|\\.)vanilla-jp\\.com$\n(^|\\.)vanpeople\\.com$\n(^|\\.)vansky\\.com$\n(^|\\.)vaticannews\\.va$\n(^|\\.)vatn\\.org$\n(^|\\.)vcfbuilder\\.org$\n(^|\\.)vcf-online\\.org$\n(^|\\.)vds\\.rightster\\.com$\n(^|\\.)vegasred\\.com$\n(^|\\.)vegas\\.williamhill\\.com$\n(^|\\.)velkaepocha\\.sk$\n(^|\\.)venbbs\\.com$\n(^|\\.)venchina\\.com$\n(^|\\.)venetianmacao\\.com$\n(^|\\.)ventureswell\\.com$\n(^|\\.)veoh\\.com$\n(^|\\.)vermonttibet\\.org$\n(^|\\.)versavpn\\.com$\n(^|\\.)verybs\\.com$\n(^|\\.)vevo\\.com$\n(^|\\.)vft\\.com\\.tw$\n(^|\\.)viber\\.com$\n(^|\\.)vica\\.info$\n(^|\\.)victimsofcommunism\\.org$\n(^|\\.)vidble\\.com$\n(^|\\.)video\\.aol\\.ca$\n(^|\\.)video\\.aol\\.com$\n(^|\\.)video\\.aol\\.co\\.uk$\n(^|\\.)video\\.ap\\.org$\n(^|\\.)videobam\\.com$\n(^|\\.)videodetective\\.com$\n(^|\\.)video\\.fdbox\\.com$\n(^|\\.)video\\.foxbusiness\\.com$\n(^|\\.)videomega\\.tv$\n(^|\\.)videomo\\.com$\n(^|\\.)video\\.pbs\\.org$\n(^|\\.)videopediaworld\\.com$\n(^|\\.)videopress\\.com$\n(^|\\.)video\\.yahoo\\.com$\n(^|\\.)vidinfo\\.org$\n(^|\\.)vid\\.me$\n(^|\\.)vietdaikynguyen\\.com$\n(^|\\.)vijayatemple\\.org$\n(^|\\.)vimeo\\.com$\n(^|\\.)vimperator\\.org$\n(^|\\.)vincnd\\.com$\n(^|\\.)vine\\.co$\n(^|\\.)vinniev\\.com$\n(^|\\.)vip-enterprise\\.com$\n(^|\\.)virtualrealporn\\.com$\n(^|\\.)visibletweets\\.com$\n(^|\\.)vital247\\.org$\n(^|\\.)viu\\.com$\n(^|\\.)viu\\.tv$\n(^|\\.)vivahentai4u\\.net$\n(^|\\.)vivatube\\.com$\n(^|\\.)vivthomas\\.com$\n(^|\\.)vizvaz\\.com$\n(^|\\.)vjav\\.com$\n(^|\\.)vjmedia\\.com\\.hk$\n(^|\\.)vllcs\\.org$\n(^|\\.)vlog\\.xuite\\.net$\n(^|\\.)vmixcore\\.com$\n(^|\\.)vmpsoft\\.com$\n(^|\\.)vnet\\.link$\n(^|\\.)vn\\.hao123\\.com$\n(^|\\.)voa-11\\.akacast\\.akamaistream\\.net$\n(^|\\.)voacantonese\\.com$\n(^|\\.)voachineseblog\\.com$\n(^|\\.)voachinese\\.com$\n(^|\\.)voagd\\.com$\n(^|\\.)voanews\\.com$\n(^|\\.)voatibetan\\.com$\n(^|\\.)voatibetanenglish\\.com$\n(^|\\.)vocativ\\.com$\n(^|\\.)vocn\\.tv$\n(^|\\.)vod-abematv\\.akamaized\\.net$\n(^|\\.)vod\\.wwe\\.com$\n(^|\\.)vot\\.org$\n(^|\\.)vovo2000\\.com$\n(^|\\.)voxer\\.com$\n(^|\\.)voy\\.com$\n(^|\\.)vpn4all\\.com$\n(^|\\.)vpn\\.ac$\n(^|\\.)vpnaccount\\.org$\n(^|\\.)vpnaccounts\\.com$\n(^|\\.)vpnbook\\.com$\n(^|\\.)vpn\\.cjb\\.net$\n(^|\\.)vpn\\.cmu\\.edu$\n(^|\\.)vpncomparison\\.org$\n(^|\\.)vpncoupons\\.com$\n(^|\\.)vpncup\\.com$\n(^|\\.)vpndada\\.com$\n(^|\\.)vpnfan\\.com$\n(^|\\.)vpnfire\\.com$\n(^|\\.)vpnfires\\.biz$\n(^|\\.)vpnforgame\\.net$\n(^|\\.)vpngate\\.jp$\n(^|\\.)vpngate\\.net$\n(^|\\.)vpngratis\\.net$\n(^|\\.)vpnhq\\.com$\n(^|\\.)vpninja\\.net$\n(^|\\.)vpnintouch\\.com$\n(^|\\.)vpnintouch\\.net$\n(^|\\.)vpnjack\\.com$\n(^|\\.)vpnmaster\\.com$\n(^|\\.)vpnmentor\\.com$\n(^|\\.)vpnpick\\.com$\n(^|\\.)vpnpop\\.com$\n(^|\\.)vpnpronet\\.com$\n(^|\\.)vpnreactor\\.com$\n(^|\\.)vpnreviewz\\.com$\n(^|\\.)vpnsecure\\.me$\n(^|\\.)vpnshazam\\.com$\n(^|\\.)vpnshieldapp\\.com$\n(^|\\.)vpnsp\\.com$\n(^|\\.)vpn\\.sv\\.cmu\\.edu$\n(^|\\.)vpntraffic\\.com$\n(^|\\.)vpntunnel\\.com$\n(^|\\.)vpnuk\\.info$\n(^|\\.)vpnunlimitedapp\\.com$\n(^|\\.)vpnvip\\.com$\n(^|\\.)vpnworldwide\\.com$\n(^|\\.)vporn\\.com$\n(^|\\.)vpser\\.net$\n(^|\\.)vraiesagesse\\.net$\n(^|\\.)vrmtr\\.com$\n(^|\\.)vrsmash\\.com$\n(^|\\.)vtunnel\\.com$\n(^|\\.)vuku\\.cc$\n(^|\\.)vultryhw\\.com$\n(^|\\.)w3schools\\.com$\n(^|\\.)waffle1999\\.com$\n(^|\\.)wahas\\.com$\n(^|\\.)waigaobu\\.com$\n(^|\\.)waikeung\\.org$\n(^|\\.)wailaike\\.net$\n(^|\\.)waiwaier\\.com$\n(^|\\.)wallmama\\.com$\n(^|\\.)wallornot\\.org$\n(^|\\.)wallpapercasa\\.com$\n(^|\\.)wallproxy\\.com$\n(^|\\.)waltermartin\\.com$\n(^|\\.)waltermartin\\.org$\n(^|\\.)wanderinghorse\\.net$\n(^|\\.)wangafu\\.net$\n(^|\\.)wangjinbo\\.org$\n(^|\\.)wanglixiong\\.com$\n(^|\\.)wango\\.org$\n(^|\\.)wangruoshui\\.net$\n(^|\\.)want-daily\\.com$\n(^|\\.)wanz-factory\\.com$\n(^|\\.)wapedia\\.mobi$\n(^|\\.)warbler\\.iconfactory\\.net$\n(^|\\.)waselpro\\.com$\n(^|\\.)washeng\\.net$\n(^|\\.)washingtonpost\\.com$\n(^|\\.)watch8x\\.com$\n(^|\\.)watchinese\\.com$\n(^|\\.)watchmygf\\.net$\n(^|\\.)wattpad\\.com$\n(^|\\.)waveprotocol\\.org$\n(^|\\.)wav\\.tv$\n(^|\\.)waymo\\.com$\n(^|\\.)wda\\.gov\\.tw$\n(^|\\.)wdf5\\.com$\n(^|\\.)wearehairy\\.com$\n(^|\\.)wearn\\.com$\n(^|\\.)web2project\\.net$\n(^|\\.)webbang\\.net$\n(^|\\.)web\\.dev$\n(^|\\.)webevader\\.org$\n(^|\\.)webfreer\\.com$\n(^|\\.)webjb\\.org$\n(^|\\.)weblagu\\.com$\n(^|\\.)webmproject\\.org$\n(^|\\.)webrtc\\.org$\n(^|\\.)webrush\\.net$\n(^|\\.)website\\.informer\\.com$\n(^|\\.)websitepulse\\.com$\n(^|\\.)webs-tv\\.net$\n(^|\\.)webwarper\\.net$\n(^|\\.)webworkerdaily\\.com$\n(^|\\.)weekmag\\.info$\n(^|\\.)wefightcensorship\\.org$\n(^|\\.)wefong\\.com$\n(^|\\.)wego\\.here\\.com$\n(^|\\.)weiboleak\\.com$\n(^|\\.)weiboscope\\.jmsc\\.hku\\.hk$\n(^|\\.)weihuo\\.org$\n(^|\\.)weijingsheng\\.org$\n(^|\\.)weiming\\.info$\n(^|\\.)weiquanwang\\.org$\n(^|\\.)weisuo\\.ws$\n(^|\\.)welovecock\\.com$\n(^|\\.)wemigrate\\.org$\n(^|\\.)wengewang\\.com$\n(^|\\.)wengewang\\.org$\n(^|\\.)wenhui\\.ch$\n(^|\\.)wenxuecity\\.com$\n(^|\\.)wenyunchao\\.com$\n(^|\\.)wenzhao\\.ca$\n(^|\\.)westca\\.com$\n(^|\\.)westernshugdensociety\\.org$\n(^|\\.)westernwolves\\.com$\n(^|\\.)westkit\\.net$\n(^|\\.)westpoint\\.edu$\n(^|\\.)wetplace\\.com$\n(^|\\.)wetpussygames\\.com$\n(^|\\.)wexiaobo\\.org$\n(^|\\.)wezhiyong\\.org$\n(^|\\.)wezone\\.net$\n(^|\\.)wforum\\.com$\n(^|\\.)wha\\.la$\n(^|\\.)whatblocked\\.com$\n(^|\\.)whatbrowser\\.org$\n(^|\\.)whatsapp\\.com$\n(^|\\.)whatsapp\\.net$\n(^|\\.)whatsonweibo\\.com$\n(^|\\.)wheatseeds\\.org$\n(^|\\.)wheelockslatin\\.com$\n(^|\\.)whereiswerner\\.com$\n(^|\\.)wheretowatch\\.com$\n(^|\\.)whippedass\\.com$\n(^|\\.)whitebear\\.freebearblog\\.org$\n(^|\\.)whodns\\.xyz$\n(^|\\.)whoer\\.net$\n(^|\\.)whotalking\\.com$\n(^|\\.)whylover\\.com$\n(^|\\.)whyx\\.org$\n(^|\\.)w\\.idaiwan\\.com$\n(^|\\.)widevine\\.com$\n(^|\\.)wikaba\\.com$\n(^|\\.)wiki\\.cnitter\\.com$\n(^|\\.)wiki\\.esu\\.im$\n(^|\\.)wiki\\.gamerp\\.jp$\n(^|\\.)wiki\\.jqueryui\\.com$\n(^|\\.)wiki\\.keso\\.cn$\n(^|\\.)wikileaks\\.ch$\n(^|\\.)wikileaks\\.com$\n(^|\\.)wikileaks\\.de$\n(^|\\.)wikileaks\\.eu$\n(^|\\.)wikileaks-forum\\.com$\n(^|\\.)wikileaks\\.lu$\n(^|\\.)wikileaks\\.org$\n(^|\\.)wikileaks\\.pl$\n(^|\\.)wikilivres\\.info$\n(^|\\.)wikimapia\\.org$\n(^|\\.)wiki\\.moegirl\\.org$\n(^|\\.)wiki\\.oauth\\.net$\n(^|\\.)wikipedia\\.org$\n(^|\\.)wiki\\.phonegap\\.com$\n(^|\\.)wikiwiki\\.jp$\n(^|\\.)wildammo\\.com$\n(^|\\.)williamhill\\.com$\n(^|\\.)willw\\.net$\n(^|\\.)windowsphoneme\\.com$\n(^|\\.)windscribe\\.com$\n(^|\\.)wingamestore\\.com$\n(^|\\.)wingy\\.site$\n(^|\\.)winning11\\.com$\n(^|\\.)winwhispers\\.info$\n(^|\\.)wire\\.com$\n(^|\\.)wiredbytes\\.com$\n(^|\\.)wiredpen\\.com$\n(^|\\.)wisdompubs\\.org$\n(^|\\.)wisevid\\.com$\n(^|\\.)withgoogle\\.com$\n(^|\\.)withyoutube\\.com$\n(^|\\.)witnessleeteaching\\.com$\n(^|\\.)witopia\\.net$\n(^|\\.)wizcrafts\\.net$\n(^|\\.)wjbk\\.org$\n(^|\\.)wlcnew\\.jigsy\\.com$\n(^|\\.)wlx\\.sowiki\\.net$\n(^|\\.)wnacg\\.com$\n(^|\\.)wnacg\\.org$\n(^|\\.)wn\\.com$\n(^|\\.)wo3ttt\\.wordpress\\.com$\n(^|\\.)woeser\\.com$\n(^|\\.)woesermiddle-way\\.net$\n(^|\\.)wokar\\.org$\n(^|\\.)wolfax\\.com$\n(^|\\.)woolyss\\.com$\n(^|\\.)woopie\\.jp$\n(^|\\.)woopie\\.tv$\n(^|\\.)wordpress\\.com$\n(^|\\.)workatruna\\.com$\n(^|\\.)workerdemo\\.org\\.hk$\n(^|\\.)workerempowerment\\.org$\n(^|\\.)workersthebig\\.net$\n(^|\\.)worldcat\\.org$\n(^|\\.)worldjournal\\.com$\n(^|\\.)worldvpn\\.net$\n(^|\\.)wo\\.tc$\n(^|\\.)wow\\.com$\n(^|\\.)wowgirls\\.com$\n(^|\\.)wowlegacy\\.ml$\n(^|\\.)wow-life\\.net$\n(^|\\.)wowporn\\.com$\n(^|\\.)wowrk\\.com$\n(^|\\.)woxinghuiguo\\.com$\n(^|\\.)woyaolian\\.org$\n(^|\\.)wozy\\.in$\n(^|\\.)wp\\.com$\n(^|\\.)wpoforum\\.com$\n(^|\\.)wqyd\\.org$\n(^|\\.)wrchina\\.org$\n(^|\\.)wretch\\.cc$\n(^|\\.)writer\\.zoho\\.com$\n(^|\\.)wsgzao\\.github\\.io$\n(^|\\.)wsj\\.com$\n(^|\\.)wsjhk\\.com$\n(^|\\.)wsj\\.net$\n(^|\\.)wtbn\\.org$\n(^|\\.)wtfpeople\\.com$\n(^|\\.)wuerkaixi\\.com$\n(^|\\.)wufafangwen\\.com$\n(^|\\.)wufi\\.org\\.tw$\n(^|\\.)wuguoguang\\.com$\n(^|\\.)wujieliulan\\.com$\n(^|\\.)wujie\\.net$\n(^|\\.)wukangrui\\.net$\n(^|\\.)wuw\\.red$\n(^|\\.)wuyanblog\\.com$\n(^|\\.)wwitv\\.com$\n(^|\\.)www1\\.american\\.edu$\n(^|\\.)www1\\.biz$\n(^|\\.)www2\\.ohchr\\.org$\n(^|\\.)www2\\.rocketbbs\\.com$\n(^|\\.)www\\.abclite\\.net$\n(^|\\.)www\\.ajsands\\.com$\n(^|\\.)www\\.americorps\\.gov$\n(^|\\.)www\\.antd\\.org$\n(^|\\.)www\\.aolnews\\.com$\n(^|\\.)www\\.businessinsider\\.com\\.au$\n(^|\\.)www\\.citizenlab\\.org$\n(^|\\.)www\\.cmoinc\\.org$\n(^|\\.)www\\.cool18\\.com$\n(^|\\.)www\\.dmm\\.com$\n(^|\\.)www\\.dwheeler\\.com$\n(^|\\.)www\\.eastturkistan\\.net$\n(^|\\.)www\\.gmiddle\\.com$\n(^|\\.)www\\.gmiddle\\.net$\n(^|\\.)wwwhost\\.biz$\n(^|\\.)www\\.hustlercash\\.com$\n(^|\\.)www\\.idlcoyote\\.com$\n(^|\\.)www\\.imdb\\.com$\n(^|\\.)www\\.kindleren\\.com$\n(^|\\.)www\\.klip\\.me$\n(^|\\.)www\\.lamenhu\\.com$\n(^|\\.)www\\.lib\\.virginia\\.edu$\n(^|\\.)www\\.linksalpha\\.com$\n(^|\\.)www\\.metro\\.taipei$\n(^|\\.)www\\.monlamit\\.org$\n(^|\\.)www\\.moztw\\.org$\n(^|\\.)www\\.m-sport\\.co\\.uk$\n(^|\\.)www\\.nbc\\.com$\n(^|\\.)www\\.orchidbbs\\.com$\n(^|\\.)www\\.owind\\.com$\n(^|\\.)www\\.oxid\\.it$\n(^|\\.)www\\.powerpointninja\\.com$\n(^|\\.)www\\.s4miniarchive\\.com$\n(^|\\.)www\\.sciencemag\\.org$\n(^|\\.)www\\.shadowsocks\\.com$\n(^|\\.)www\\.shwchurch\\.org$\n(^|\\.)www\\.skype\\.com$\n(^|\\.)www\\.tablesgenerator\\.com$\n(^|\\.)www\\.taiwanonline\\.cc$\n(^|\\.)www\\.taup\\.org\\.tw$\n(^|\\.)www\\.thechinastory\\.org$\n(^|\\.)www\\.wangruowang\\.org$\n(^|\\.)www\\.wan-press\\.org$\n(^|\\.)www\\.websnapr\\.com$\n(^|\\.)www\\.zensur\\.freerk\\.com$\n(^|\\.)wzyboy\\.im$\n(^|\\.)x1949x\\.com$\n(^|\\.)x24hr\\.com$\n(^|\\.)x365x\\.com$\n(^|\\.)xanga\\.com$\n(^|\\.)x-art\\.com$\n(^|\\.)xa\\.yimg\\.com$\n(^|\\.)xbabe\\.com$\n(^|\\.)x-berry\\.com$\n(^|\\.)xbookcn\\.com$\n(^|\\.)xbtce\\.com$\n(^|\\.)xcafe\\.in$\n(^|\\.)xcity\\.jp$\n(^|\\.)x\\.company$\n(^|\\.)xcritic\\.com$\n(^|\\.)xda-developers\\.com$\n(^|\\.)xerotica\\.com$\n(^|\\.)xfinity\\.com$\n(^|\\.)xfm\\.pp\\.ru$\n(^|\\.)xgmyd\\.com$\n(^|\\.)xhamster\\.com$\n(^|\\.)xianba\\.net$\n(^|\\.)xianchawang\\.net$\n(^|\\.)xianjian\\.tw$\n(^|\\.)xianqiao\\.net$\n(^|\\.)xiaobaiwu\\.com$\n(^|\\.)xiaochuncnjp\\.com$\n(^|\\.)xiaod\\.in$\n(^|\\.)xiaohexie\\.com$\n(^|\\.)xiaolan\\.me$\n(^|\\.)xiaoma\\.org$\n(^|\\.)xiezhua\\.com$\n(^|\\.)xihua\\.es$\n(^|\\.)xijie\\.wordpress\\.com$\n(^|\\.)xing\\.com$\n(^|\\.)xinhuanet\\.org$\n(^|\\.)xinmiao\\.com\\.hk$\n(^|\\.)xinqimeng\\.over-blog\\.com$\n(^|\\.)xinsheng\\.net$\n(^|\\.)xinshijue\\.com$\n(^|\\.)xinyubbs\\.net$\n(^|\\.)xiongpian\\.com$\n(^|\\.)xiuren\\.org$\n(^|\\.)xizang-zhiye\\.org$\n(^|\\.)xjp\\.cc$\n(^|\\.)xjtravelguide\\.com$\n(^|\\.)xkiwi\\.tk$\n(^|\\.)xlfmtalk\\.com$\n(^|\\.)xlfmwz\\.info$\n(^|\\.)xm\\.com$\n(^|\\.)xml-training-guide\\.com$\n(^|\\.)xmovies\\.com$\n(^|\\.)xn--4gq171p\\.com$\n(^|\\.)xn--czq75pvv1aj5c\\.org$\n(^|\\.)xn--i2ru8q2qg\\.com$\n(^|\\.)xn--ngstr-lra8j\\.com$\n(^|\\.)xn--oiq\\.cc$\n(^|\\.)xn--p8j9a0d9c9a\\.xn--q9jyb4c$\n(^|\\.)xnxx\\.com$\n(^|\\.)xpdo\\.net$\n(^|\\.)xpud\\.org$\n(^|\\.)xrentdvd\\.com$\n(^|\\.)xskywalker\\.com$\n(^|\\.)xskywalker\\.net$\n(^|\\.)xtube\\.com$\n(^|\\.)xuchao\\.net$\n(^|\\.)xuchao\\.org$\n(^|\\.)xuehua\\.us$\n(^|\\.)xuzhiyong\\.net$\n(^|\\.)xvideo\\.cc$\n(^|\\.)xvideos\\.com$\n(^|\\.)xvideos\\.es$\n(^|\\.)x-wall\\.org$\n(^|\\.)xxbbx\\.com$\n(^|\\.)xxlmovies\\.com$\n(^|\\.)xxuz\\.com$\n(^|\\.)xxx\\.com$\n(^|\\.)xxxfuckmom\\.com$\n(^|\\.)xxxx\\.com\\.au$\n(^|\\.)xxx\\.xxx$\n(^|\\.)xxxy\\.biz$\n(^|\\.)xxxy\\.info$\n(^|\\.)xxxymovies\\.com$\n(^|\\.)xysblogs\\.org$\n(^|\\.)xys\\.dxiong\\.com$\n(^|\\.)xys\\.org$\n(^|\\.)xyy69\\.com$\n(^|\\.)xyy69\\.info$\n(^|\\.)yahoo\\.com\\.hk$\n(^|\\.)yakbutterblues\\.com$\n(^|\\.)yam\\.com$\n(^|\\.)yam\\.org\\.tw$\n(^|\\.)yanghengjun\\.com$\n(^|\\.)yangjianli\\.com$\n(^|\\.)yasni\\.co\\.uk$\n(^|\\.)yayabay\\.com$\n(^|\\.)ydy\\.com$\n(^|\\.)yeahteentube\\.com$\n(^|\\.)yecl\\.net$\n(^|\\.)yeelou\\.com$\n(^|\\.)yeeyi\\.com$\n(^|\\.)yegle\\.net$\n(^|\\.)yes123\\.com\\.tw$\n(^|\\.)yesasia\\.com$\n(^|\\.)yesasia\\.com\\.hk$\n(^|\\.)yes-news\\.com$\n(^|\\.)yespornplease\\.com$\n(^|\\.)yes\\.xxx$\n(^|\\.)yeyeclub\\.com$\n(^|\\.)ygto\\.com$\n(^|\\.)yhcw\\.net$\n(^|\\.)yibada\\.com$\n(^|\\.)yibaochina\\.com$\n(^|\\.)yidio\\.com$\n(^|\\.)yigeni\\.com$\n(^|\\.)yilubbs\\.com$\n(^|\\.)yingsuoss\\.com$\n(^|\\.)yinlei\\.org$\n(^|\\.)yipub\\.com$\n(^|\\.)yizhihongxing\\.com$\n(^|\\.)yobit\\.net$\n(^|\\.)yobt\\.com$\n(^|\\.)yobt\\.tv$\n(^|\\.)yogichen\\.org$\n(^|\\.)yolasite\\.com$\n(^|\\.)yomiuri\\.co\\.jp$\n(^|\\.)yong\\.hu$\n(^|\\.)yorkbbs\\.ca$\n(^|\\.)youdontcare\\.com$\n(^|\\.)you-get\\.org$\n(^|\\.)youjizz\\.com$\n(^|\\.)youmaker\\.com$\n(^|\\.)youngpornvideos\\.com$\n(^|\\.)youngspiration\\.hk$\n(^|\\.)youpai\\.org$\n(^|\\.)youporn\\.com$\n(^|\\.)youporngay\\.com$\n(^|\\.)yourepeat\\.com$\n(^|\\.)your-freedom\\.net$\n(^|\\.)yourlisten\\.com$\n(^|\\.)yourlust\\.com$\n(^|\\.)yourprivatevpn\\.com$\n(^|\\.)yourtrap\\.com$\n(^|\\.)yousendit\\.com$\n(^|\\.)youshun12\\.com$\n(^|\\.)youthnetradio\\.org$\n(^|\\.)youtu\\.be$\n(^|\\.)youtubecn\\.com$\n(^|\\.)youtube\\.com$\n(^|\\.)youtubeeducation\\.com$\n(^|\\.)youtubegaming\\.com$\n(^|\\.)youtube-nocookie\\.com$\n(^|\\.)youversion\\.com$\n(^|\\.)youwin\\.com$\n(^|\\.)youxu\\.info$\n(^|\\.)yt\\.be$\n(^|\\.)ytht\\.net$\n(^|\\.)ytimg\\.com$\n(^|\\.)ytn\\.co\\.kr$\n(^|\\.)yuanming\\.net$\n(^|\\.)yuanzhengtang\\.org$\n(^|\\.)yulghun\\.com$\n(^|\\.)yunchao\\.net$\n(^|\\.)yuntipub\\.com$\n(^|\\.)yuvutu\\.com$\n(^|\\.)yvesgeleyn\\.com$\n(^|\\.)ywpw\\.com$\n(^|\\.)yx51\\.net$\n(^|\\.)yyii\\.org$\n(^|\\.)yzzk\\.com$\n(^|\\.)zacebook\\.com$\n(^|\\.)zalmos\\.com$\n(^|\\.)zannel\\.com$\n(^|\\.)zaobao\\.com$\n(^|\\.)zaobao\\.com\\.sg$\n(^|\\.)zaozon\\.com$\n(^|\\.)zapto\\.org$\n(^|\\.)zattoo\\.com$\n(^|\\.)zb\\.com$\n(^|\\.)zdnet\\.com\\.tw$\n(^|\\.)zello\\.com$\n(^|\\.)zengjinyan\\.org$\n(^|\\.)zenmate\\.com$\n(^|\\.)zenmate\\.com\\.ru$\n(^|\\.)zeronet\\.io$\n(^|\\.)zeutch\\.com$\n(^|\\.)zfreet\\.com$\n(^|\\.)zgsddh\\.com$\n(^|\\.)zgzcjj\\.net$\n(^|\\.)zhanbin\\.net$\n(^|\\.)zhangboli\\.net$\n(^|\\.)zhangtianliang\\.com$\n(^|\\.)zhanlve\\.org$\n(^|\\.)zhao\\.1984\\.city$\n(^|\\.)zhao\\.jinhai\\.de$\n(^|\\.)zh\\.bitterwinter\\.org$\n(^|\\.)zh\\.ecdm\\.wikia\\.com$\n(^|\\.)zhenghui\\.org$\n(^|\\.)zhengjian\\.org$\n(^|\\.)zhengwunet\\.org$\n(^|\\.)zhenlibu1984\\.com$\n(^|\\.)zhenlibu\\.info$\n(^|\\.)zhenxiang\\.biz$\n(^|\\.)zhinengluyou\\.com$\n(^|\\.)zhongguo\\.ca$\n(^|\\.)zhongguorenquan\\.org$\n(^|\\.)zhongguotese\\.net$\n(^|\\.)zhongmeng\\.org$\n(^|\\.)zhoushuguang\\.com$\n(^|\\.)zh\\.pokerstrategy\\.com$\n(^|\\.)zh\\.pttpedia\\.wikia\\.com$\n(^|\\.)zhreader\\.com$\n(^|\\.)zhuangbi\\.me$\n(^|\\.)zhuanxing\\.cn$\n(^|\\.)zhuatieba\\.com$\n(^|\\.)zhuichaguoji\\.org$\n(^|\\.)zh\\.uncyclopedia\\.wikia\\.com$\n(^|\\.)zh\\.wikinews\\.org$\n(^|\\.)zh\\.wikisource\\.org$\n(^|\\.)ziddu\\.com$\n(^|\\.)zillionk\\.com$\n(^|\\.)zim\\.vn$\n(^|\\.)zinio\\.com$\n(^|\\.)ziporn\\.com$\n(^|\\.)zippyshare\\.com$\n(^|\\.)zkaip\\.com$\n(^|\\.)zmw\\.cn$\n(^|\\.)zodgame\\.us$\n(^|\\.)zomobo\\.net$\n(^|\\.)zonaeuropa\\.com$\n(^|\\.)zonghexinwen\\.com$\n(^|\\.)zonghexinwen\\.net$\n(^|\\.)zoogvpn\\.com$\n(^|\\.)zootool\\.com$\n(^|\\.)zoozle\\.net$\n(^|\\.)zorrovpn\\.com$\n(^|\\.)zozotown\\.com$\n(^|\\.)zpn\\.im$\n(^|\\.)zspeeder\\.me$\n(^|\\.)zsrhao\\.com$\n(^|\\.)zuobiao\\.me$\n(^|\\.)zuo\\.la$\n(^|\\.)zuola\\.com$\n(^|\\.)zvereff\\.com$\n(^|\\.)zynaima\\.com$\n(^|\\.)zynamics\\.com$\n(^|\\.)zyns\\.com$\n(^|\\.)zyzc9\\.com$\n(^|\\.)zzcartoon\\.com$\n(^|\\.)zzcloud\\.me$\n(^|\\.)zzux\\.com$\n\n# Amazon\n(^|\\.)amazon\\.co\\.jp$\n(^|\\.)amazon\\.com$\n(^|\\.)amazonaws\\.com$\n13.32.0.0/15\n13.35.0.0/17\n18.184.0.0/15\n18.194.0.0/15\n18.208.0.0/13\n18.232.0.0/14\n52.58.0.0/15\n52.74.0.0/16\n52.77.0.0/16\n52.84.0.0/15\n52.200.0.0/13\n54.93.0.0/16\n54.156.0.0/14\n54.226.0.0/15\n54.230.156.0/22\n\n# BBC\n(^|\\.)\\w*uk-live\\w*\\.\\w*$\n(^|\\.)bbc\\.co$\n(^|\\.)bbc\\.com$\n\n# Discord\n(^|\\.)discord\\.gg$\n(^|\\.)discord\\.media$\n(^|\\.)discordapp\\.com$\n(^|\\.)discordapp\\.net$\n\n# Facebook\n(^|\\.)facebook\\.com$\n(^|\\.)fb\\.com$\n(^|\\.)fb\\.me$\n(^|\\.)fbcdn\\.com$\n(^|\\.)fbcdn\\.net$\n31.13.24.0/21\n31.13.64.0/18\n45.64.40.0/22\n66.220.144.0/20\n69.63.176.0/20\n69.171.224.0/19\n74.119.76.0/22\n103.4.96.0/22\n129.134.0.0/17\n157.240.0.0/17\n173.252.64.0/18\n179.60.192.0/22\n185.60.216.0/22\n204.15.20.0/22\n\n# Github\n(^|\\.)github\\.com$\n(^|\\.)github\\.io$\n(^|\\.)githubapp\\.com$\n(^|\\.)githubassets\\.com$\n(^|\\.)githubusercontent\\.com$\n(^|\\.)s3\\.amazonaws\\.com$\n\n# Google\n(^|\\.)1e100\\.net$\n(^|\\.)2mdn\\.net$\n(^|\\.)app-measurement\\.net$\n(^|\\.)g\\.co$\n(^|\\.)ggpht\\.com$\n(^|\\.)goo\\.gl$\n(^|\\.)googleapis\\.cn$\n(^|\\.)googleapis\\.com$\n(^|\\.)gstatic\\.cn$\n(^|\\.)gstatic\\.com$\n(^|\\.)gvt0\\.com$\n(^|\\.)gvt1\\.com$\n(^|\\.)gvt2\\.com$\n(^|\\.)gvt3\\.com$\n(^|\\.)xn--ngstr-lra8j\\.com$\n(^|\\.)youtu\\.be$\n(^|\\.)youtube-nocookie\\.com$\n(^|\\.)youtube\\.com$\n(^|\\.)yt\\.be$\n(^|\\.)ytimg\\.com$\n74.125.0.0/16\n173.194.0.0/16\n\n# Instagram\n(^|\\.)cdninstagram\\.com$\n(^|\\.)instagram\\.com$\n(^|\\.)instagr\\.am$\n(^|\\.)akamaihd\\.net$\n\n# Kakao Talk\n(^|\\.)kakao\\.com$\n(^|\\.)kakao\\.co\\.kr$\n(^|\\.)kakaocdn\\.net$\n1.201.0.0/24\n27.0.236.0/22\n103.27.148.0/22\n103.246.56.0/22\n110.76.140.0/22\n113.61.104.0/22\n\n# Line\n(^|\\.)lin\\.ee$\n(^|\\.)line-apps\\.com$\n(^|\\.)line-cdn\\.net$\n(^|\\.)line-scdn\\.net$\n(^|\\.)line\\.me$\n(^|\\.)line\\.naver\\.jp$\n(^|\\.)nhncorp\\.jp$\n103.2.28.0/24\n103.2.30.0/23\n119.235.224.0/24\n119.235.232.0/24\n119.235.235.0/24\n119.235.236.0/23\n147.92.128.0/17\n203.104.128.0/19\n\n# Microsoft\n(^|\\.)1drv\\.com$\n(^|\\.)aadrm\\.com$\n(^|\\.)acompli\\.com$\n(^|\\.)acompli\\.net$\n(^|\\.)aka\\.ms$\n(^|\\.)akadns\\.net$\n(^|\\.)aspnetcdn\\.com$\n(^|\\.)assets-yammer\\.com$\n(^|\\.)azure\\.com$\n(^|\\.)azure\\.net$\n(^|\\.)azureedge\\.net$\n(^|\\.)azurerms\\.com$\n(^|\\.)bing\\.com$\n(^|\\.)cloudapp\\.net$\n(^|\\.)cloudappsecurity\\.com$\n(^|\\.)edgesuite\\.net$\n(^|\\.)getmicrosoftkey\\.com$\n(^|\\.)gfx\\.ms$\n(^|\\.)hotmail\\.com$\n(^|\\.)live\\.com$\n(^|\\.)live\\.net$\n(^|\\.)lync\\.com$\n(^|\\.)microsoft\\.com$\n(^|\\.)microsoftazuread-sso\\.com$\n(^|\\.)microsoftonline-p\\.com$\n(^|\\.)microsoftonline-p\\.net$\n(^|\\.)microsoftonline\\.com$\n(^|\\.)microsoftstream\\.com$\n(^|\\.)msappproxy\\.net$\n(^|\\.)msauth\\.net$\n(^|\\.)msauthimages\\.net$\n(^|\\.)msecnd\\.net$\n(^|\\.)msedge\\.net$\n(^|\\.)msft\\.net$\n(^|\\.)msftauth\\.net$\n(^|\\.)msftauthimages\\.net$\n(^|\\.)msftidentity\\.com$\n(^|\\.)msidentity\\.com$\n(^|\\.)msn\\.com$\n(^|\\.)msocdn\\.com$\n(^|\\.)msocsp\\.com$\n(^|\\.)mstea\\.ms$\n(^|\\.)o365weve\\.com$\n(^|\\.)oaspapps\\.com$\n(^|\\.)office\\.com$\n(^|\\.)office\\.net$\n(^|\\.)office365\\.com$\n(^|\\.)officecdn-microsoft-com\\.akamaized\\.net$\n(^|\\.)officeppe\\.net$\n(^|\\.)omniroot\\.com$\n(^|\\.)onedrive\\.com$\n(^|\\.)onenote\\.com$\n(^|\\.)onenote\\.net$\n(^|\\.)onestore\\.ms$\n(^|\\.)onmicrosoft\\.com$\n(^|\\.)outlook\\.com$\n(^|\\.)outlookmobile\\.com$\n(^|\\.)phonefactor\\.net$\n(^|\\.)public-trust\\.com$\n(^|\\.)s-microsoft\\.com$\n(^|\\.)sfbassets\\.com$\n(^|\\.)sfx\\.ms$\n(^|\\.)sharepoint\\.com$\n(^|\\.)sharepointonline\\.com$\n(^|\\.)skype\\.com$\n(^|\\.)skypeassets\\.com$\n(^|\\.)skypeforbusiness\\.com$\n(^|\\.)staffhub\\.ms$\n(^|\\.)svc\\.ms$\n(^|\\.)sway-cdn\\.com$\n(^|\\.)sway-extensions\\.com$\n(^|\\.)sway\\.com$\n(^|\\.)trafficmanager\\.net$\n(^|\\.)uservoice\\.com$\n(^|\\.)virtualearth\\.net$\n(^|\\.)visualstudio\\.com$\n(^|\\.)windows-ppe\\.net$\n(^|\\.)windows\\.com$\n(^|\\.)windows\\.net$\n(^|\\.)windowsazure\\.com$\n(^|\\.)windowsupdate\\.com$\n(^|\\.)wunderlist\\.com$\n(^|\\.)yammer\\.com$\n(^|\\.)yammerusercontent\\.com$\n\n# MytvSUPER\n(^|\\.)\\w*nowtv100\\w*\\.\\w*$\n(^|\\.)\\w*rthklive\\w*\\.\\w*$\n(^|\\.)mytvsuper\\.com$\n\n# Netflix\n(^|\\.)netflix\\.com$\n(^|\\.)netflix\\.net$\n(^|\\.)nflxext\\.com$\n(^|\\.)nflximg\\.com$\n(^|\\.)nflximg\\.net$\n(^|\\.)nflxvideo\\.net$\n8.41.4.0/24\n23.246.0.0/18\n37.77.184.0/21\n45.57.0.0/17\n64.120.128.0/17\n66.197.128.0/17\n69.53.224.0/19\n108.175.32.0/20\n185.2.220.0/22\n185.9.188.0/22\n192.173.64.0/18\n198.38.96.0/19\n198.45.48.0/20\n207.45.72.0/22\n208.75.76.0/22\n\n# OneDrive\n(^|\\.)\\w*1drv\\w*\\.\\w*$\n(^|\\.)\\w*onedrive\\w*\\.\\w*$\n(^|\\.)\\w*skydrive\\w*\\.\\w*$\n(^|\\.)livefilestore\\.com$\n(^|\\.)oneclient\\.sfx\\.ms$\n(^|\\.)onedrive\\.com$\n(^|\\.)onedrive\\.live\\.com$\n(^|\\.)photos\\.live\\.com$\n(^|\\.)skydrive\\.wns\\.windows\\.com$\n(^|\\.)spoprod-a\\.akamaihd\\.net$\n(^|\\.)storage\\.live.com$\n(^|\\.)storage\\.msn.com$\n\n# Pixiv\n(^|\\.)pixiv\\.net$\n(^|\\.)pximg\\.net$\n\n# Porn\n(^|\\.)\\w*porn\\w*\\.\\w*$\n(^|\\.)8teenxxx\\.com$\n(^|\\.)ahcdn\\.com$\n(^|\\.)bcvcdn\\.com$\n(^|\\.)bongacams\\.com$\n(^|\\.)chaturbate\\.com$\n(^|\\.)dditscdn\\.com$\n(^|\\.)livejasmin\\.com$\n(^|\\.)rdtcdn\\.com$\n(^|\\.)redtube\\.com$\n(^|\\.)sb-cd\\.com$\n(^|\\.)spankbang\\.com$\n(^|\\.)t66y\\.com$\n(^|\\.)xhamster\\.com$\n(^|\\.)xnxx-cdn\\.com$\n(^|\\.)xnxx\\.com$\n(^|\\.)xvideos-cdn\\.com$\n(^|\\.)xvideos\\.com$\n(^|\\.)ypncdn\\.com$\n\n# ResiloSync\n(^|\\.)config\\.getsync\\.com$\n(^|\\.)config\\.resilio\\.com$\n54.235.182.157/32\n107.182.230.198/32\n173.244.209.150/32\n173.244.217.42/32\n209.95.56.60/32\n\n# Steam\n(^|\\.)fanatical\\.com$\n(^|\\.)humblebundle\\.com$\n(^|\\.)steamcommunity\\.com$\n(^|\\.)steampowered\\.com$\n(^|\\.)steamstatic\\.com$\n\n# Telegram\n(^|\\.)t\\.me$\n(^|\\.)tdesktop\\.com$\n(^|\\.)telegra\\.ph$\n(^|\\.)telegram\\.me$\n(^|\\.)telegram\\.org$\n91.108.0.0/16\n109.239.140.0/24\n149.154.160.0/20\n2001:67c:4e8::/48\n2001:b28:f23d::/48\n2001:b28:f23f::/48\n\n# Twitch\n(^|\\.)twitch\\.tv$\n(^|\\.)ttvnw\\.net$\n(^|\\.)jtvnw\\.net$\n(^|\\.)akamaized\\.net$\n\n# Twitter\n(^|\\.)t\\.co$\n(^|\\.)twimg\\.co$\n(^|\\.)twimg\\.com$\n(^|\\.)twimg\\.org$\n\n# Whatsapp\n18.194.0.0/15\n34.224.0.0/12\n54.242.0.0/15\n50.22.198.204/30\n208.43.122.128/27\n108.168.174.0/16\n173.192.231.32/27\n158.85.5.192/27\n174.37.243.0/16\n158.85.46.128/27\n173.192.222.160/27\n184.173.128.0/17\n158.85.224.160/27\n75.126.150.0/16\n69.171.235.0/16\n\n#飞流直播\n(^|\\.)neulion\\.com$\n(^|\\.)icntv\\.xyz$\n(^|\\.)flzbcdn\\.xyz$\n\n#华文电视\n(^|\\.)ocnttv\\.com$\n"
  },
  {
    "path": "Trojan/File/gfwlist.txt",
    "content": "W0F1dG9Qcm94eSAwLjIuOV0KISBDaGVja3N1bTogYk1zbU53UENncXZCRjJzWGZu\nY2xoZwohIEV4cGlyZXM6IDZoCiEgVGl0bGU6IEdGV0xpc3Q0TEwKISBHRldMaXN0\nIHdpdGggRVZFUllUSElORyBpbmNsdWRlZAohIExhc3QgTW9kaWZpZWQ6IFNhdCwg\nMjIgU2VwIDIwMTggMTc6MjE6NDcgLTA0MDAKIQohIEhvbWVQYWdlOiBodHRwczov\nL2dpdGh1Yi5jb20vZ2Z3bGlzdC9nZndsaXN0CiEgTGljZW5zZTogaHR0cHM6Ly93\nd3cuZ251Lm9yZy9saWNlbnNlcy9vbGQtbGljZW5zZXMvbGdwbC0yLjEudHh0CiEK\nISBHRldMaXN0IGlzIHVubGlrZWx5IHRvIGZ1bGx5IGNvbXByaXNlIHRoZSByZWFs\nCiEgcnVsZXMgYmVpbmcgZGVwbG95ZWQgaW5zaWRlIEdGVyBzeXN0ZW0uIFdlIHRy\neQohIG91ciBiZXN0IHRvIGtlZXAgdGhlIGxpc3QgdXAgdG8gZGF0ZS4gUGxlYXNl\nCiEgY29udGFjdCB1cyByZWdhcmRpbmcgVVJMIHN1Ym1pc3Npb24gLyByZW1vdmFs\nLAohIG9yIHN1Z2dlc3Rpb24gLyBlbmhhbmNlbWVudCBhdCBpc3N1ZSB0cmFja2Vy\nOgohIGh0dHBzOi8vZ2l0aHViLmNvbS9nZndsaXN0L2dmd2xpc3QvaXNzdWVzLy4K\nCiEtLS0tLS0tLS00MDMvNDUxLzUyMCAmIFVSTCBSZWRpcmVjdHMtLS0tLS0tLS0K\nIS0tZWhlbnRhaQp8aHR0cDovLzg1LjE3LjczLjMxLwohLS18fGFkb3JhbWEuY29t\nCnx8YWduZXNiLmZyCnx8YWtpYmEtd2ViLmNvbQp8fGFsdHJlYy5jb20KfHxhcGFy\ndG1lbnRyYXRpbmdzLmNvbQp8fGFwYXJ0bWVudHMuY29tCnx8YXJlbmEudGFpcGVp\nCnx8YXNpYW5zcGlzcy5jb20KfHxhc3NpbXAub3JnCnx8YXRoZW5hZWl6b3UuY29t\nCnx8YXp1YnUudHYKfHxiYW5rbW9iaWxldmliZS5jb20KfHxiYW5vcnRlLmNvbQp8\nfGJhc2gtaGFja2Vycy5vcmcKfHxiZWVnLmNvbQp8fGdsb2JhbC5iaW5nLmNvbQp8\nfGJsb29tYmVyZ3ZpZXcuY29tCnx8Ym9va3RvcGlhLmNvbS5hdQp8fGJveXNtYXN0\nZXIuY29tCnx8YnluZXQuY28uaWwKfHxjYXJmYXguY29tCi5jYXNpbm9iZWxsaW5p\nLmNvbQp8fGNhc2lub2JlbGxpbmkuY29tCnx8Y2VudGF1cm8uY29tLmJyCnx8Y2hv\nYml0LmNjCnx8Y2xlYXJzdXJhbmNlLmNvbQp8fGltYWdlcy5jb21pY28udHcKfHxz\ndGF0aWMuY29taWNvLnR3Cnx8Y29zdGNvLmNvbQp8fGNyb3NzZmlyZS5jby5rcgp8\nfGQycGFzcy5jb20KfHxkYXJwYS5taWwKfHxkYXdhbmdpZGMuY29tCnx8ZGVlemVy\nLmNvbQp8fGRlc2lwcm8uZGUKfHxkaW5nY2hpbi5jb20udHcKfHxkaXNjb3JkYXBw\nLmNvbQp8fGRpc2NvcmRhcHAubmV0Cnx8ZGlzaC5jb20KfGh0dHA6Ly9pbWcuZGxz\naXRlLmpwLwp8fGRtNTMwLm5ldApzaGFyZS5kbWh5Lm9yZwpAQHxodHRwczovL3No\nYXJlLmRtaHkub3JnCnx8ZG1tLmNvLmpwCnxodHRwOi8vd3d3LmRtbS5jb20vbmV0\nZ2FtZQp8fGRudm9kLnR2Cnx8ZHZkcGFjLmNvbQp8fGVlc3RpLmVlCnx8ZXN1cmFu\nY2UuY29tCi5leHBla3QuY29tCnx8ZXhwZWt0LmNvbQouZXh0bWF0cml4LmNvbQp8\nfGV4dG1hdHJpeC5jb20KfHxmYWtrdS5uZXQKfHxmYXN0cGljLnJ1Cnx8ZmlsZXNv\nci5jb20KfHxmaW5hbmNldHdpdHRlci5jb20KfHxmbGlwYm9hcmQuY29tCnx8Zmxp\ndHRvLmNvbQp8fGZuYWMuYmUKfHxmbmFjLmNvbQp8fGZ1bmt5aW1nLmNvbQp8fGZ4\nbmV0d29ya3MuY29tCnx8Zy1hcmVhLm9yZwp8fGdldHR5aW1hZ2VzLmNvbQp8fGdl\ndHVwbG9hZGVyLmNvbQohLS18aHR0cHM6Ly9naXRodWIuY29tL3Byb2dyYW10aGlu\nay96aGFvCnxodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vcHJvZ3Jh\nbXRoaW5rL3poYW8KfHxnbGFzczguZXUKfHxnbHlwZS5jb20KfHxnbzE0MS5jb20K\nfHxndW8ubWVkaWEKfHxoYXV0ZWxvb2suY29tCnx8aGF1dGVsb29rY2RuLmNvbQp8\nfHdlZ28uaGVyZS5jb20KfHxobXZkaWdpdGFsLmNhCnx8aG12ZGlnaXRhbC5jb20K\nfHxob21lZGVwb3QuY29tCnx8aG9vdmVycy5jb20KfHxodWx1LmNvbQp8fGh1bHVp\nbS5jb20KfGh0dHA6Ly9zZWN1cmUuaHVzdGxlci5jb20KfGh0dHA6Ly9odXN0bGVy\nY2FzaC5jb20KfGh0dHA6Ly93d3cuaHVzdGxlcmNhc2guY29tCnx8aHlicmlkLWFu\nYWx5c2lzLmNvbQp8fGNkbiouaS1zY21wLmNvbQp8fGlsb3ZlbG9uZ3RvZXMuY29t\nCnxodHRwOi8vaW1nbWVnYS5jb20vKi5naWYuaHRtbAp8aHR0cDovL2ltZ21lZ2Eu\nY29tLyouanBnLmh0bWwKfGh0dHA6Ly9pbWdtZWdhLmNvbS8qLmpwZWcuaHRtbAp8\naHR0cDovL2ltZ21lZ2EuY29tLyoucG5nLmh0bWwKfGh0dHA6Ly9pbWd1ci5jb20v\ndXBsb2FkCnxodHRwczovL2ltZ3VyLmNvbS91cGxvYWQKfHxpbWxpdmUuY29tCnx8\namF2aHViLm5ldAp8fGphdmh1Z2UuY29tCi5qYXZsaWJyYXJ5LmNvbQp8fGphdmxp\nYnJhcnkuY29tCnx8amNwZW5uZXkuY29tCnx8amltcy5uZXQKfHxqdWt1am8tY2x1\nYi5jb20KfHxqdWxpZXBvc3QuY29tCnx8a2F3YWlpa2F3YWlpLmpwCnx8a2VuZGF0\naXJlLmNvbQp8fGtoYXRyaW1hemEub3JnCnx8a2tib3guY29tCnx8bGVpc3VyZXBy\nby5jb20KfHxsaWZlbWlsZXMuY29tCnx8bG9uZ3RvZXMuY29tCnx8bG92ZXR2c2hv\ndy5jb20KfGh0dHA6Ly93d3cubS1zcG9ydC5jby51awp8fG1hY2dhbWVzdG9yZS5j\nb20KfHxtYWRvbm5hLWF2LmNvbQp8fG1hbmdhZm94LmNvbQp8fG1hbmdhZm94Lm1l\nCnx8bWFudGEuY29tCnx8bWF0b21lLXBsdXMuY29tCnx8bWF0b21lLXBsdXMubmV0\nCnx8bWF0dHdpbGNveC5uZXQKfHxtZXRhcnRodW50ZXIuY29tCnx8bWZ4bWVkaWEu\nY29tCnx8a2IubW9uaXRvcndhcmUuY29tCnx8bW9uc3Rlci5jb20KfHxtb29keXou\nY29tCnx8bW9vbmJpbmdvLmNvbQp8fG1vcy5ydQp8fG1zaGEuZ292Cnx8bXV6dS50\ndgp8fG12Zy5qcAoubXliZXQuY29tCnx8bXliZXQuY29tCnx8bmF0aW9ud2lkZS5j\nb20KfGh0dHA6Ly93d3cubmJjLmNvbS9saXZlCnx8bmVvLW1pcmFjbGUuY29tCnx8\nbmV0ZmxpeC5jb20KfHxuZmx4aW1nLmNvbQp8fG5mbHhpbWcubmV0Cnx8bmZseGV4\ndC5jb20KfHxuZmx4c28ubmV0Cnx8bmZseHZpZGVvLm5ldAp8fG5pYy5nb3YKfGh0\ndHA6Ly9tby5uaWdodGxpZmUxNDEuY29tCnx8bm9yZHN0cm9tLmNvbQp8fG5vcmRz\ndHJvbWltYWdlLmNvbQp8fG5vcmRzdHJvbXJhY2suY29tCnx8bm90dGluZ2hhbXBv\nc3QuY29tCnx8bnRkdHYuY3oKfHxzMS5udWRlenouY29tCnx8bnVzYXRyaXAuY29t\nCnx8bnV1dmVtLmNvbQp8fG9tbmk3LmpwCnx8b25hcHAuY29tCiEtLVdlIGFyZSBj\nb25mdXNlZCBhcyB3ZWxsCnx8b250cmFjLmNvbQpAQHxodHRwOi8vYmxvZy5vbnRy\nYWMuY29tCnx8cGFuZG9yYS5jb20KLnBhbmRvcmEudHYKfHxwYXJrYW5za3kuY29t\nCnx8cGhtc29jaWV0eS5vcmcKfGh0dHA6Ly8qLnBpbWcudHcvCnx8cHVyZTE4LmNv\nbQp8fHB5dG9yY2gub3JnCnx8cXEuY28uemEKfHxyMTguY29tCnxodHRwOi8vcmFk\naWtvLmpwCnx8cmFtY2l0eS5jb20uYXUKfHxyZC5jb20KfHxyZGlvLmNvbQp8aHR0\ncHM6Ly9yaXNldXAubmV0Cnx8c2FkaXN0aWMtdi5jb20KfGh0dHA6Ly9jZG4qLnNl\nYXJjaC54eHgvCnx8c2hpa3NoYS5jb20KfHxzbGFja2VyLmNvbQp8fHNtLW1pcmFj\nbGUuY29tCnx8c295bGVudG5ld3Mub3JnCnx8c3BvdGlmeS5jb20KfHxzcHJlYWRz\naGlydC5lcwp8fHNwcmluZ2JvYXJkcGxhdGZvcm0uY29tCnx8c3ByaXRlLm9yZwpA\nQHxodHRwOi8vc3RvcmUuc3ByaXRlLm9yZwp8fHN1cGVyb2theWFtYS5jb20KfHxz\ndXBlcnBhZ2VzLmNvbQp8fHN3YWdidWNrcy5jb20KfHxzd2l0Y2gxLmpwCnx8dGFw\nYW53YXAuY29tCnx8Z3NwLnRhcmdldC5jb20KfHxsb2dpbi50YXJnZXQuY29tCiEt\nLUBAfHxpbnRsLnRhcmdldC5jb20KfHxyY2FtLnRhcmdldC5jb20KfHx0aGVib2R5\nc2hvcC11c2EuY29tCnx8dG1hLmNvLmpwCnx8dHJhY2ZvbmUuY29tCnx8dHJ5aGVh\ncnQuanAKfHx0dXJudGFibGUuZm0KfHx0d2Vya2luZ2J1dHQuY29tCnx8dWxvcC5u\nZXQKfHx2ZWdhc3JlZC5jb20KfHx2ZXZvLmNvbQp8fHZpcC1lbnRlcnByaXNlLmNv\nbQp8aHR0cDovL3ZpdS50di9jaC8KfGh0dHA6Ly92aXUudHYvZW5jb3JlLwp8fHZt\ncHNvZnQuY29tCnxodHRwOi8vZWNzbS52cy5jb20vCnx8d2Fuei1mYWN0b3J5LmNv\nbQp8fHNzbC53ZWJwYWNrLmRlCnx8d2hlcmV0b3dhdGNoLmNvbQp8fHdpbmdhbWVz\ndG9yZS5jb20KfHx3aXpjcmFmdHMubmV0Cnx8dm9kLnd3ZS5jb20KfHx4ZmluaXR5\nLmNvbQp8fHlvdXdpbi5jb20KfHx5dG4uY28ua3IKfHx6YXR0b28uY29tCnx8emlt\nLnZuCnx8em96b3Rvd24uY29tCgohIyMjIyMjIyMjIyMjIyNHZW5lcmFsIExpc3Qg\nU3RhcnQjIyMjIyMjIyMjIyMjIyMKIS0tLS0tLS0tLS0tLS0tLS0tLS1QdXJlIElQ\nLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnx8MS4xLjEuMQoxNC4xMDIuMjUwLjE4CjE0\nLjEwMi4yNTAuMTkKNTAuNy4zMS4yMzA6ODg5OAoxNzQuMTQyLjEwNS4xNTMKNjku\nNjUuMTkuMTYwCgohLS0tLS0tLS0tLS0tLS0tLS0tLS0tLUlETi0tLS0tLS0tLS0t\nLS0tLS0tLS0tLS0KfHx4bi0tNGdxMTcxcC5jb20KfHx4bi0tY3pxNzVwdnYxYWo1\nYy5vcmcKfHx4bi0taTJydThxMnFnLmNvbQp8fHhuLS1vaXEuY2MKfHx4bi0tcDhq\nOWEwZDljOWEueG4tLXE5anliNGMKCiEtLS0tLS0tLS0tLS0tLS0tLUROUyBQb2lz\nb25pbmctLS0tLS0tLS0tLS0tLS0tLQohLS0tQW1hem9uLS0tCiEtfHxjZG4taW1h\nZ2VzLm1haWxjaGltcC5jb20KfGh0dHBzOi8vKi5zMy5hbWF6b25hd3MuY29tCnx8\nczMtYXAtc291dGhlYXN0LTIuYW1hem9uYXdzLmNvbQoKfHxhZ3JvLmhrCnx8YXBr\nbWlycm9yLmNvbQp8fGJpcmQuc28KfHxidXNpbmVzc2luc2lkZXIuY29tCnx8Ym9v\nbXNzci5jb20KfHxjYXN0Ym94LmZtCnx8Y21jbi5vcmcKfHxjbXguaW0KfHxkZXBv\nc2l0cGhvdG9zLmNvbQp8fGZhbmdlcWlhbmcuY29tCnx8Zmx5enkyMDA1LmNvbQp8\nfGZyZWUtc3Muc2l0ZQp8fGJsb2cuZnVja2dmdzIzMy5vcmcKfHxnbG9iYWx2b2lj\nZXMub3JnCnx8Z2xvcnlzdGFyLm1lCnx8aGJvLmNvbQp8fGlwZnMuaW8KfHxqYXBh\nbnRpbWVzLmNvLmpwCnx8amlqaS5jb20KfHxqaW54LmNvbQp8fGxpbmUtc2Nkbi5u\nZXQKfHxpLmxpdGhpdW0uY29tCnx8Y2xvdWQubWFpbC5ydQp8fGNkbi1pbWFnZXMu\nbWFpbGNoaW1wLmNvbQp8fG1vaHUuY2x1Ygp8fG1vaHUubWwKfHxtYXN0b2Rvbi5o\nb3N0Cnx8ZGljdGlvbmFyeS5nb28ubmUuanAKfHxnby5uZXNub2RlLmNvbQp8fG5p\na2tlaS5jb20KfHxub2ZpbGUuaW8KfHxub3cuY29tCnx8c3VrZWJlaS5ueWFhLnNp\nCnx8b25lamF2LmNvbQp8fHBhc3RlLmVlCnx8bXkucGNsb3VkLmNvbQp8fHBpY2Fj\nb21pYy5jb20KfHxwaXhpdi5uZXQKfHxwcm90b252cG4uY29tCnx8cXVvcmEuY29t\nCnx8Y2RuLnNlYXRndXJ1LmNvbQp8fHNlY3VyZS5yYXhjZG4uY29tCnx8cmVkZC5p\ndAp8fHJlZGRpdC5jb20KfHxyZWRkaXRtZWRpYS5jb20KfHxyZWRkaXRzdGF0aWMu\nY29tCnx8cnNkbG1vbml0b3IuY29tCnx8c2hhZG93c29ja3MuYmUKfHxzaGFkb3dz\nb2NrczkuY29tCnx8dG4xLnNoZW1hbGV6LmNvbQp8fHRuMi5zaGVtYWxlei5jb20K\nfHx0bjMuc2hlbWFsZXouY29tCnx8c3RhdGljLnNoZW1hbGV6LmNvbQp8fHNvc3Jl\nYWRlci5jb20KfHxzdWxpYW4ubWUKfHxzdXBjaGluYS5jb20KfHx0ZWRkeXN1bi5j\nb20KfHx0ZXh0bm93Lm1lCnx8dGluZXllLmNvbQp8fHR1YmVwb3JuY2xhc3NpYy5j\nb20KfHx0d2l0Y2gudHYKfHx1a3UuaW0KfHx1bnNlZW4uaXMKfHxjbi51cHRvZG93\nbi5jb20KfHx1cmFiYW4ubWUKfHx2cnNtYXNoLmNvbQp8fHNjYWNoZS52encuY29t\nCnx8c2NhY2hlMS52encuY29tCnx8c2NhY2hlMi52encuY29tCnx8c3M3LnZ6dy5j\nb20KfHx3ZW56aGFvLmNhCnx8d2hhdHNvbndlaWJvLmNvbQp8fHdpcmUuY29tCnx8\neG0uY29tCnx8eHVlaHVhLnVzCgohLS0tRGlnaXRhbCBDdXJyZW5jeSBFeGNoYW5n\nZShDUllQVE8pLS0tCnx8YWxsY29pbi5jb20KfHxhZGNleC5jb20KfHxiY2V4LmNh\nCnx8Ymlib3guY29tCnx8YmlnLm9uZQp8fGJpbmFuY2UuY29tCnx8Yml0LXouY29t\nCnx8Yml0Y29pbndvcmxkLmNvbQp8fGJpdGZpbmV4LmNvbQp8fGJpdGlua2EuY29t\nLmFyCnx8Yml0bWV4LmNvbQp8fGJ0Y2JhbmsuYmFuawp8fGJ0Y3RyYWRlLmltCnx8\nYzJjeC5jb20KfHxjaGFvZXguY29tCnx8Y29pbjJjby5pbgouY29pbmVnZy5jb20K\nfHxjb2luZWdnLmNvbQp8fGNvaW5leC5jb20KIS0tfGh0dHBzOi8vd3d3LmNvaW5l\neGNoYW5nZS5pby8KfHxjb2luZ2kuY29tCnx8Y29pbnJhaWwuY28ua3IKfHxjb2lu\ndG9iZS5jb20KfHxjb2ludXQuY29tCnx8ZGlzY29pbnMuY29tCnx8ZHJhZ29uZXgu\naW8KfHxlYnRjYmFuay5jb20KfHxldGhlcmRlbHRhLmNvbQp8fGV4bW8uY29tCnx8\nZXhyYXRlcy5tZQp8fGV4eC5jb20KfHxmYXRidGMuY29tCnx8Z2F0ZS5pbwp8fGdh\ndGVjb2luLmNvbQp8fGhpdGJ0Yy5jb20KfHxodW9iaS5jb20KfHxodW9iaS5wcm8K\nfHxodW9iaXByby5jb20KfHxieC5pbi50aAp8fGpleC5jb20KfHxrZXguY29tCnx8\na3NwY29pbi5jb20KfHxrdWNvaW4uY29tCnx8bGJhbmsuaW5mbwp8fGxpdmVjb2lu\nLm5ldAp8fG9leC5jb20KfHxva2V4LmNvbQp8fHJpZ2h0YnRjLmNvbQp8fHRvcGJ0\nYy5jb20KfHx4YnRjZS5jb20KfHx5b2JpdC5uZXQKfHx6Yi5jb20KCiEtLS0tLS0t\nLS0tLS0tLS0tRnJhdWRzICYgU2NhbXMtLS0tLS0tLS0tLS0tLS0tLQohIS0tLUNv\nbnRlbnQgRmFybShmYWtlIDUwMCBlcnJvciktLS0KfHxyZWFkMDEuY29tCnx8a2tu\nZXdzLmNjCgpjaGluYS1tbW0uanAubmV0Ci5sc3hzenpnLmNvbQouY2hpbmEtbW1t\nLm5ldAp8fGNoaW5hLW1tbS5uZXQKY2hpbmEtbW1tLnNhLmNvbQoKIS0tLS0tLS0t\nLS0tLS0tLS0tLS0tLUdyb3Vwcy0tLS0tLS0tLS0tLS0tLS0tLS0tCiEhLS0tQWZy\nYWlkIEZyZWVETlMtLS0KLmFsbG93ZWQub3JnCi5ub3cuaW0KCiEhLS0tQW1hem9u\nLS0tCnx8YW1hem9uLmNvLmpwCi5hbWF6b24uY29tL0RhbGFpLUxhbWEKYW1hem9u\nLmNvbS9Qcmlzb25lci1TdGF0ZS1TZWNyZXQtSm91cm5hbC1QcmVtaWVyCnMzLWFw\nLW5vcnRoZWFzdC0xLmFtYXpvbmF3cy5jb20KCiEhLS0tQU9MLS0tCnx8YW9sY2hh\nbm5lbHMuYW9sLmNvbQp2aWRlby5hb2wuY2EvdmlkZW8tZGV0YWlsCnZpZGVvLmFv\nbC5jby51ay92aWRlby1kZXRhaWwKdmlkZW8uYW9sLmNvbQp8fHZpZGVvLmFvbC5j\nb20KfHxzZWFyY2guYW9sLmNvbQp3d3cuYW9sbmV3cy5jb20KCiEhLS0tQXZNb28t\nLS0KLmF2bW8ucHcKIS0tfGh0dHA6Ly9hdm1vLnB3Ci5hdm1vby5jb20KfGh0dHA6\nLy9hdm1vby5jb20KLmF2bW9vLm5ldAp8aHR0cDovL2F2bW9vLm5ldAp8fGF2bW9v\nLnB3Ci5qYXZtb28ueHl6CnxodHRwOi8vamF2bW9vLnh5egouamF2dGFnLmNvbQp8\naHR0cDovL2phdnRhZy5jb20KLmphdnpvby5jb20KfGh0dHA6Ly9qYXZ6b28uY29t\nCi50ZWxsbWUucHcKCiEhLS0tQkJDLS0tCiEtLS5iYmMuY28udWsvYmxvZ3MKIS0t\nLmJiYy5jby51ay9jaGluZXNlCiEtLS5iYmMuY28udWsvbmV3cy93b3JsZC1hc2lh\nLWNoaW5hCiEtLS5iYmMuY28udWsvdHYKIS0tLmJiYy5jby51ay96aG9uZ3dlbgoh\nLS0uYmJjLmNvbS91a2NoaW5hCiEtLS5iYmMuY29tL3pob25nd2VuCiEtLS5iYmMu\nY29tJTJGemhvbmd3ZW4KIS0tbmV3cy5iYmMuY28udWsvb250aGlzZGF5Km5ld3Np\nZF8yNDk2MDAwLzI0OTYyNzcKIS0tbmV3c2ZvcnVtcy5iYmMuY28udWsKLmJiYy5j\nb20KfHxiYmMuY29tCi5iYmMuY28udWsKfHxiYmMuY28udWsKfHxiYmNpLmNvLnVr\nCi5iYmNjaGluZXNlLmNvbQp8fGJiY2NoaW5lc2UuY29tCnxodHRwOi8vYmJjLmlu\nCgohIS0tLUNoYW5nZUlQLS0tCi4xZHVtYi5jb20KLjI1dS5jb20KLjJ3YWt5LmNv\nbQouMy1hLm5ldAouNGRxLmNvbQouNG15ZG9tYWluLmNvbQouNHB1LmNvbQouYWNt\nZXRveS5jb20KLmFsbW9zdG15LmNvbQouYW1lcmljYW51bmZpbmlzaGVkLmNvbQou\nYXV0aG9yaXplZGRucy5uZXQKLmF1dGhvcml6ZWRkbnMub3JnCi5hdXRob3JpemVk\nZG5zLnVzCi5iaWdtb25leS5iaXoKLmNoYW5nZWlwLm5hbWUKLmNoYW5nZWlwLm5l\ndAouY2hhbmdlaXAub3JnCi5jbGVhbnNpdGUuYml6Ci5jbGVhbnNpdGUuaW5mbwou\nY2xlYW5zaXRlLnVzCi5jb21wcmVzcy50bwouZGRucy5pbmZvCi5kZG5zLm1lLnVr\nCi5kZG5zLm1vYmkKLmRkbnMubXMKLmRkbnMubmFtZQouZGRucy51cwouZGhjcC5i\naXoKLmRucy1kbnMuY29tCi5kbnMtc3R1ZmYuY29tCi5kbnMwNC5jb20KLmRuczA1\nLmNvbQouZG5zMS51cwouZG5zMi51cwouZG5zZXQuY29tCi5kbnNyZC5jb20KLmRz\nbXRwLmNvbQouZHVtYjEuY29tCi5keW5hbWljLWRucy5uZXQKLmR5bmFtaWNkbnMu\nYml6Ci5keW5hbWljZG5zLmNvLnVrCi5keW5hbWljZG5zLm1lLnVrCi5keW5hbWlj\nZG5zLm9yZy51awouZHluZG5zLnBybwouZHluc3NsLmNvbQouZWRucy5iaXoKLmVw\nYWMudG8KLmVzbXRwLmJpegouZXp1YS5jb20KLmZhcXNlcnYuY29tCi5mYXJ0aXQu\nY29tCi5mcmVlZGRucy5jb20KLmZyZWV0Y3AuY29tCi5mcmVld3d3LmJpegouZnJl\nZXd3dy5pbmZvCi5mdHAxLmJpegouZnRwc2VydmVyLmJpegouZ2V0dHJpYWxzLmNv\nbQouZ290LWdhbWUub3JnCi5ncjhkb21haW4uYml6Ci5ncjhuYW1lLmJpegouaHR0\ncHM0NDMubmV0Ci5odHRwczQ0My5vcmcKLmlrd2IuY29tCi5pbnN0YW50aHEuY29t\nCi5pb3dueW91ci5iaXoKLmlvd255b3VyLm9yZwouaXNhc2VjcmV0LmNvbQouaXRl\nbWRiLmNvbQouaXRzYW9sLmNvbQouamV0b3MuY29tCi5qa3ViLmNvbQouanVuZ2xl\naGVhcnQuY29tCi5qdXN0ZGllZC5jb20KLmxmbGluay5jb20KLmxmbGlua3VwLmNv\nbQoubGZsaW5rdXAubmV0Ci5sZmxpbmt1cC5vcmcKLmxvbmdtdXNpYy5jb20KLm1l\nZm91bmQuY29tCi5tb25leWhvbWUuYml6Ci5tcmJhc2ljLmNvbQoubXJib251cy5j\nb20KLm1yZmFjZS5jb20KLm1yc2xvdmUuY29tCi5teTAzLmNvbQoubXlkYWQuaW5m\nbwoubXlkZG5zLmNvbQoubXlmdHAuaW5mbwoubXlmdHAubmFtZQoubXlsZnR2LmNv\nbQoubXltb20uaW5mbwoubXluZXRhdi5uZXQKLm15bmV0YXYub3JnCi5teW51bWJl\nci5vcmcKLm15cGljdHVyZS5pbmZvCi5teXBvcDMubmV0Ci5teXBvcDMub3JnCi5t\neXNlY29uZGFyeWRucy5jb20KLm15d3d3LmJpegoubXl6LmluZm8KLm5pbnRoLmJp\negoubnMwMS5iaXoKLm5zMDEuaW5mbwoubnMwMS51cwoubnMwMi5iaXoKLm5zMDIu\naW5mbwoubnMwMi51cwoubnMxLm5hbWUKLm5zMi5uYW1lCi5uczMubmFtZQoub2Ny\neS5jb20KLm9uZWR1bWIuY29tCi5vbm15cGMuYml6Ci5vbm15cGMuaW5mbwoub25t\neXBjLm5ldAoub25teXBjLm9yZwoub25teXBjLnVzCi5vcmdhbmljY3JhcC5jb20K\nLm90em8uY29tCi5vdXJob2JieS5jb20KLnBjYW55d2hlcmUubmV0Ci5wb3J0MjUu\nYml6Ci5wcm94eWRucy5jb20KLnFoaWdoLmNvbQoucXBvZS5jb20KLnJlYmF0ZXNy\ndWxlLm5ldAouc2VsbGNsYXNzaWNzLmNvbQouc2VuZHNtdHAuY29tCi5zZXJ2ZXVz\nZXIuY29tCi5zZXJ2ZXVzZXJzLmNvbQouc2V4aWR1ZGUuY29tCi5zZXh4eHkuYml6\nCi5zaXh0aC5iaXoKLnNxdWlybHkuaW5mbwouc3NsNDQzLm9yZwoudG9oLmluZm8K\nLnRveXRoaWV2ZXMuY29tCi50cmlja2lwLm5ldAoudHJpY2tpcC5vcmcKLnZpenZh\nei5jb20KLndoYS5sYQoud2lrYWJhLmNvbQoud3d3MS5iaXoKLnd3d2hvc3QuYml6\nCkBAfGh0dHA6Ly94eC53d3dob3N0LmJpegoueDI0aHIuY29tCi54eHV6LmNvbQou\neHh4eS5iaXoKLnh4eHkuaW5mbwoueWd0by5jb20KLnlvdWRvbnRjYXJlLmNvbQou\neW91cnRyYXAuY29tCi56eW5zLmNvbQouenp1eC5jb20KCiEhLS0tQ2xvdWRGcm9u\ndC0tLQpkMWIxODNzZzBudm51aC5jbG91ZGZyb250Lm5ldAp8aHR0cHM6Ly9kMWIx\nODNzZzBudm51aC5jbG91ZGZyb250Lm5ldApkMWMzN2dqd2EyNnRhYS5jbG91ZGZy\nb250Lm5ldAp8aHR0cHM6Ly9kMWMzN2dqd2EyNnRhYS5jbG91ZGZyb250Lm5ldApk\nM2MzM2hjZ2l3ZXYzLmNsb3VkZnJvbnQubmV0CnxodHRwczovL2QzYzMzaGNnaXdl\ndjMuY2xvdWRmcm9udC5uZXQKfHxkM3JocjdrZ210cnExdi5jbG91ZGZyb250Lm5l\ndAoKISEtLS1EdEROUy0tLQohIyMjaHR0cHM6Ly93d3cuZHRkbnMuY29tL2R0c2l0\nZS9mYXEKLjNkLWdhbWUuY29tCi40aXJjLmNvbQouYjBuZS5jb20KLmNoYXRub29r\nLmNvbQouZGFya3RlY2gub3JnCi5kZWFmdG9uZS5jb20KLmR0ZG5zLm5ldAouZWZm\nZXJzLmNvbQouZXRvd25zLm5ldAouZXRvd25zLm9yZwouZmxuZXQub3JnCi5nb3Rn\nZWVrcy5jb20KLnNjaWVyb24uY29tCi5zbHlpcC5jb20KLnNseWlwLm5ldAouc3Vy\nb290LmNvbQoKISEtLS1EeW5ETlMtLS0KISMjI2h0dHBzOi8vaGVscC5keW4uY29t\nL2xpc3Qtb2YtZHluLWRucy1wcm8tcmVtb3RlLWFjY2Vzcy1kb21haW4tbmFtZXMv\nCi5ibG9nZG5zLm9yZwouZHluZG5zLm9yZwouZHluZG5zLWlwLmNvbQouZHluZG5z\nLXBpY3MuY29tCi5mcm9tLXNkLmNvbQouZnJvbS1wci5jb20KLmlzLWEtaHVudGVy\nLmNvbQoKISEtLS1EeW51LS0tCi5keW51LmNvbQouZHludS5uZXQKLmZyZWVkZG5z\nLm9yZwoKISEtLS1GYWNlYm9vay0tLQpjZG5pbnN0YWdyYW0uY29tCnx8Y2RuaW5z\ndGFncmFtLmNvbQp8fGZhY2Vib29rLmJyCi5mYWNlYm9vay5jb20KfHxmYWNlYm9v\nay5jb20KIS0tL15odHRwcz86XC9cL1teXC9dK2ZhY2Vib29rXC5jb20vCkBAfHx2\nNi5mYWNlYm9vay5jb20KfHxmYWNlYm9vay5kZXNpZ24KfHxjb25uZWN0LmZhY2Vi\nb29rLm5ldAp8fGZhY2Vib29rLmh1Cnx8ZmFjZWJvb2suaW4KfHxmYWNlYm9vay5u\nbAp8fGZhY2Vib29rLnNlCnx8ZmIuY29tCnx8ZmIubWUKfHxmYmNkbi5uZXQKfHxm\nYnNieC5jb20KfHxmYmFkZGlucy5jb20KfHxmYndvcmttYWlsLmNvbQouaW5zdGFn\ncmFtLmNvbQp8fGluc3RhZ3JhbS5jb20KfHxtLm1lCnx8bWVzc2VuZ2VyLmNvbQp8\nfG9jdWx1cy5jb20KfHxvY3VsdXNjZG4uY29tCnx8cm9ja3NkYi5vcmcKQEB8fGlw\nNi5zdGF0aWMuc2wtcmV2ZXJzZS5jb20KfHx0aGVmYWNlYm9vay5jb20KfHx3aGF0\nc2FwcC5jb20KfHx3aGF0c2FwcC5uZXQKCiEhLS0tRlRDaGluZXNlLS0tCnxodHRw\nczovL3d3dy5mdGNoaW5lc2UuY29tCi5mdGNoaW5lc2UuY29tL2NoYW5uZWwvdmlk\nZW8KLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDI3NTMKLmZ0Y2hpbmVzZS5jb20v\nc3RvcnkvMDAxMDI2NjE2Ci5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTAyNjc0OQou\nZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwMjY4MDcKLmZ0Y2hpbmVzZS5jb20vc3Rv\ncnkvMDAxMDI2ODA4Ci5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTAyNjgzNAouZnRj\naGluZXNlLmNvbS9zdG9yeS8wMDEwMjY4ODAKLmZ0Y2hpbmVzZS5jb20vc3Rvcnkv\nMDAxMDI3NDI5Ci5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTAzMDM0MQouZnRjaGlu\nZXNlLmNvbS9zdG9yeS8wMDEwMzA1MDIKLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAx\nMDMwODAzCi5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTAzMTMxNwouZnRjaGluZXNl\nLmNvbS9zdG9yeS8wMDEwMzI2MTcKLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDMy\nNjM2Ci5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTAzMjY5MgouZnRjaGluZXNlLmNv\nbS9zdG9yeS8wMDEwMzI3NjIKLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDMzMTM4\nCi5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTAzNDkxNwouZnRjaGluZXNlLmNvbS9z\ndG9yeS8wMDEwMzQ5MjYKLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDM0OTI3Ci5m\ndGNoaW5lc2UuY29tL3N0b3J5LzAwMTAzNDkyOAouZnRjaGluZXNlLmNvbS9zdG9y\neS8wMDEwMzQ5NTIKLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDM1ODkwCi5mdGNo\naW5lc2UuY29tL3N0b3J5LzAwMTAzNTk3MgouZnRjaGluZXNlLmNvbS9zdG9yeS8w\nMDEwMzU5OTMKLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDM2NDE3Ci5mdGNoaW5l\nc2UuY29tL3N0b3J5LzAwMTAzNzA5MAouZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEw\nMzcwOTEKLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDM4MTc4Ci5mdGNoaW5lc2Uu\nY29tL3N0b3J5LzAwMTAzODE5OQouZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwMzgy\nMjAKLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDM4ODE5Ci5mdGNoaW5lc2UuY29t\nL3N0b3J5LzAwMTAzODg2MgouZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwMzkwNjcK\nLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDM5MTc4Ci5mdGNoaW5lc2UuY29tL3N0\nb3J5LzAwMTAzOTIxMQouZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwMzkyNzEKLmZ0\nY2hpbmVzZS5jb20vc3RvcnkvMDAxMDM5Mjk1Ci5mdGNoaW5lc2UuY29tL3N0b3J5\nLzAwMTAzOTM2OQouZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwMzk0ODIKLmZ0Y2hp\nbmVzZS5jb20vc3RvcnkvMDAxMDM5NTM0Ci5mdGNoaW5lc2UuY29tL3N0b3J5LzAw\nMTAzOTU1NQouZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwMzk1NzYKLmZ0Y2hpbmVz\nZS5jb20vc3RvcnkvMDAxMDM5NzEyCi5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTAz\nOTc3OQouZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwMzk4MDkKLmZ0Y2hpbmVzZS5j\nb20vc3RvcnkvMDAxMDQwMTM0Ci5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA0MDgz\nNQouZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNDA4OTAKLmZ0Y2hpbmVzZS5jb20v\nc3RvcnkvMDAxMDQwOTE4Ci5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA0MDk5Mgou\nZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNDEyMDkKLmZ0Y2hpbmVzZS5jb20vc3Rv\ncnkvMDAxMDQyMTAwCi5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA0MjI1MgouZnRj\naGluZXNlLmNvbS9zdG9yeS8wMDEwNDIyNzIKLmZ0Y2hpbmVzZS5jb20vc3Rvcnkv\nMDAxMDQyMjgwCi5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA0MzAyOQouZnRjaGlu\nZXNlLmNvbS9zdG9yeS8wMDEwNDMwNjYKLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAx\nMDQzMDk2Ci5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA0MzEyNAouZnRjaGluZXNl\nLmNvbS9zdG9yeS8wMDEwNDMxNTIKLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDQz\nMTg5Ci5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA0MzQyOAouZnRjaGluZXNlLmNv\nbS9zdG9yeS8wMDEwNDM0MzkKLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDQzNTM0\nCi5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA0MzY3NQouZnRjaGluZXNlLmNvbS9z\ndG9yeS8wMDEwNDM2ODAKLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDQzNzAyCi5m\ndGNoaW5lc2UuY29tL3N0b3J5LzAwMTA0Mzg0OQouZnRjaGluZXNlLmNvbS9zdG9y\neS8wMDEwNDQwOTkKLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDQ0Nzc2Ci5mdGNo\naW5lc2UuY29tL3N0b3J5LzAwMTA0NDg3MQouZnRjaGluZXNlLmNvbS9zdG9yeS8w\nMDEwNDQ4OTcKLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDQ1MTE0Ci5mdGNoaW5l\nc2UuY29tL3N0b3J5LzAwMTA0NTEzOQouZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEw\nNDUxODYKLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDQ1NzU1Ci5mdGNoaW5lc2Uu\nY29tL3N0b3J5LzAwMTA0NjA4NwouZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNDYx\nMDUKLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDQ2MTE4Ci5mdGNoaW5lc2UuY29t\nL3N0b3J5LzAwMTA0NjEzMgouZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNDY1MTcK\nLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDQ2ODIyCi5mdGNoaW5lc2UuY29tL3N0\nb3J5LzAwMTA0Njg2NgouZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNDY5NDIKLmZ0\nY2hpbmVzZS5jb20vc3RvcnkvMDAxMDQ3MTgwCi5mdGNoaW5lc2UuY29tL3N0b3J5\nLzAwMTA0NzIwNgouZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNDczMDQKLmZ0Y2hp\nbmVzZS5jb20vc3RvcnkvMDAxMDQ3MzE3Ci5mdGNoaW5lc2UuY29tL3N0b3J5LzAw\nMTA0NzM0NQouZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNDczNTgKLmZ0Y2hpbmVz\nZS5jb20vc3RvcnkvMDAxMDQ3Mzc1Ci5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA0\nNzM4MQouZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNDc0MTMKLmZ0Y2hpbmVzZS5j\nb20vc3RvcnkvMDAxMDQ3NDU2Ci5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA0NzQ5\nMQouZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNDc1NDUKLmZ0Y2hpbmVzZS5jb20v\nc3RvcnkvMDAxMDQ3NTU4Ci5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA0NzU2OAou\nZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNDc2MjcKLmZ0Y2hpbmVzZS5jb20vc3Rv\ncnkvMDAxMDQ4MjkzCi5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA0ODM0MwouZnRj\naGluZXNlLmNvbS9zdG9yeS8wMDEwNDg3MTAKLmZ0Y2hpbmVzZS5jb20vc3Rvcnkv\nMDAxMDQ5Mjg5Ci5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA0OTM2MAouZnRjaGlu\nZXNlLmNvbS9zdG9yeS8wMDEwNDk4OTYKLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAx\nMDUwMTUyCi5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA1MTAyNwouZnRjaGluZXNl\nLmNvbS9zdG9yeS8wMDEwNTExNjEKLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDUx\nMzcyCi5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA1MTQ3OQouZnRjaGluZXNlLmNv\nbS9zdG9yeS8wMDEwNTIxMzgKLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDUyMTYx\nCi5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA1MjUyNQouZnRjaGluZXNlLmNvbS9z\ndG9yeS8wMDEwNTI1NDkKLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDUyNzAxCi5m\ndGNoaW5lc2UuY29tL3N0b3J5LzAwMTA1Mjk2NQouZnRjaGluZXNlLmNvbS9zdG9y\neS8wMDEwNTMxNDkKLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDUzMTUwCi5mdGNo\naW5lc2UuY29tL3N0b3J5LzAwMTA1MzIwMAouZnRjaGluZXNlLmNvbS9zdG9yeS8w\nMDEwNTM0MjUKLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDUzNDk2Ci5mdGNoaW5l\nc2UuY29tL3N0b3J5LzAwMTA1MzUyNgouZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEw\nNTM5MDYKLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDU0MDQ5Ci5mdGNoaW5lc2Uu\nY29tL3N0b3J5LzAwMTA1NDEwMwouZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNTQx\nMDkKLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDU0MTE5Ci5mdGNoaW5lc2UuY29t\nL3N0b3J5LzAwMTA1NDEyMwouZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNTQxMzkK\nLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDU0MTY2Ci5mdGNoaW5lc2UuY29tL3N0\nb3J5LzAwMTA1NDE2OAouZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNTQxOTAKLmZ0\nY2hpbmVzZS5jb20vc3RvcnkvMDAxMDU0NDM3Ci5mdGNoaW5lc2UuY29tL3N0b3J5\nLzAwMTA1NDUyNgouZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNTQ2MDcKLmZ0Y2hp\nbmVzZS5jb20vc3RvcnkvMDAxMDU0NjQ0Ci5mdGNoaW5lc2UuY29tL3N0b3J5LzAw\nMTA1NDc4NgouZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNTQ4NDMKLmZ0Y2hpbmVz\nZS5jb20vc3RvcnkvMDAxMDU0OTI1Ci5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA1\nNDk0MAouZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNTUwNTEKLmZ0Y2hpbmVzZS5j\nb20vc3RvcnkvMDAxMDU1MDYzCi5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA1NTA2\nOQouZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNTUxMzYKLmZ0Y2hpbmVzZS5jb20v\nc3RvcnkvMDAxMDU1MTcwCi5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA1NTIwMgou\nZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNTUyNDIKLmZ0Y2hpbmVzZS5jb20vc3Rv\ncnkvMDAxMDU1MjYzCi5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA1NTI3NAouZnRj\naGluZXNlLmNvbS9zdG9yeS8wMDEwNTUyOTkKLmZ0Y2hpbmVzZS5jb20vc3Rvcnkv\nMDAxMDU1NDgwCi5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA1NTU1MQouZnRjaGlu\nZXNlLmNvbS9zdG9yeS8wMDEwNTU1NTkKLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAx\nMDU1NTY2Ci5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA1NTg0MAouZnRjaGluZXNl\nLmNvbS9zdG9yeS8wMDEwNTYwOTkKLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDU2\nMTA4Ci5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA1NjEzMQouZnRjaGluZXNlLmNv\nbS9zdG9yeS8wMDEwNTYzNzUKLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDU2NDkx\nCi5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA1NjUyOQouZnRjaGluZXNlLmNvbS9z\ndG9yeS8wMDEwNTY1MzQKLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDU2NTM4Ci5m\ndGNoaW5lc2UuY29tL3N0b3J5LzAwMTA1NjU0MQouZnRjaGluZXNlLmNvbS9zdG9y\neS8wMDEwNTY1NTQKLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDU2NTU3Ci5mdGNo\naW5lc2UuY29tL3N0b3J5LzAwMTA1NjU2MAouZnRjaGluZXNlLmNvbS9zdG9yeS8w\nMDEwNTY1NjcKLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDU2NTc0Ci5mdGNoaW5l\nc2UuY29tL3N0b3J5LzAwMTA1NjU4OAouZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEw\nNTY1OTQKLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDU2NTk2Ci5mdGNoaW5lc2Uu\nY29tL3N0b3J5LzAwMTA1NjY4NAouZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNTY4\nMzIKLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDU2ODMzCi5mdGNoaW5lc2UuY29t\nL3N0b3J5LzAwMTA1Njg1MQouZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNTY4NzQK\nLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDU2ODk2Ci5mdGNoaW5lc2UuY29tL3N0\nb3J5LzAwMTA1NjkyNwouZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNTcwMTEKLmZ0\nY2hpbmVzZS5jb20vc3RvcnkvMDAxMDU3MDE4Ci5mdGNoaW5lc2UuY29tL3N0b3J5\nLzAwMTA1NzA0NAouZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNTcxNjIKLmZ0Y2hp\nbmVzZS5jb20vc3RvcnkvMDAxMDU3NTAwCi5mdGNoaW5lc2UuY29tL3N0b3J5LzAw\nMTA1NzUwNAouZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNTc1MDkKLmZ0Y2hpbmVz\nZS5jb20vc3RvcnkvMDAxMDU3NTE4Ci5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA1\nNzUzMgouZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNTc1MzMKLmZ0Y2hpbmVzZS5j\nb20vc3RvcnkvMDAxMDU3NTU2Ci5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA1NzU4\nMAouZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNTc2MzgKLmZ0Y2hpbmVzZS5jb20v\nc3RvcnkvMDAxMDU3NjQ0Ci5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA1NzgxNwou\nZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNTc4NzUKLmZ0Y2hpbmVzZS5jb20vc3Rv\ncnkvMDAxMDU4MDA5Ci5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA1ODA1NgouZnRj\naGluZXNlLmNvbS9zdG9yeS8wMDEwNTgyMjQKLmZ0Y2hpbmVzZS5jb20vc3Rvcnkv\nMDAxMDU4MjU3Ci5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA1ODI5NQouZnRjaGlu\nZXNlLmNvbS9zdG9yeS8wMDEwNTgzMjgKLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAx\nMDU4MzM5Ci5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA1ODM0NAouZnRjaGluZXNl\nLmNvbS9zdG9yeS8wMDEwNTgzNTIKLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDU4\nNDEzCi5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA1ODQyMQouZnRjaGluZXNlLmNv\nbS9zdG9yeS8wMDEwNTg0NDAKLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDU4NDU4\nCi5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA1ODQ2OAouZnRjaGluZXNlLmNvbS9z\ndG9yeS8wMDEwNTg1NjEKLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDU4NTY2Ci5m\ndGNoaW5lc2UuY29tL3N0b3J5LzAwMTA1ODU2NwouZnRjaGluZXNlLmNvbS9zdG9y\neS8wMDEwNTg1ODUKLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDU4NjI4Ci5mdGNo\naW5lc2UuY29tL3N0b3J5LzAwMTA1ODY1NgouZnRjaGluZXNlLmNvbS9zdG9yeS8w\nMDEwNTg2NjUKLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDU4Njc4Ci5mdGNoaW5l\nc2UuY29tL3N0b3J5LzAwMTA1ODY5MQouZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEw\nNTg3MjEKLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDU4NzI4Ci5mdGNoaW5lc2Uu\nY29tL3N0b3J5LzAwMTA1OTQ2NAouZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNTk0\nODQKLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDU5NTM3Ci5mdGNoaW5lc2UuY29t\nL3N0b3J5LzAwMTA1OTUzOAouZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNTk1NTEK\nLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDU5ODE4Ci5mdGNoaW5lc2UuY29tL3N0\nb3J5LzAwMTA1OTkxNAouZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNTk5MjAKLmZ0\nY2hpbmVzZS5jb20vc3RvcnkvMDAxMDU5OTU3Ci5mdGNoaW5lc2UuY29tL3N0b3J5\nLzAwMTA2MDA4OAouZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNjAxNTYKLmZ0Y2hp\nbmVzZS5jb20vc3RvcnkvMDAxMDYwMTU3Ci5mdGNoaW5lc2UuY29tL3N0b3J5LzAw\nMTA2MDE2MAouZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNjAxODEKLmZ0Y2hpbmVz\nZS5jb20vc3RvcnkvMDAxMDYwMTg1Ci5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA2\nMDQ5MwouZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNjA0OTUKLmZ0Y2hpbmVzZS5j\nb20vc3RvcnkvMDAxMDYwNTkwCi5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA2MDg0\nNgouZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNjA4NDcKLmZ0Y2hpbmVzZS5jb20v\nc3RvcnkvMDAxMDYwODc1Ci5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA2MDkyMQou\nZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNjA5NDYKLmZ0Y2hpbmVzZS5jb20vc3Rv\ncnkvMDAxMDYxMTIwCi5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA2MTQ3NAouZnRj\naGluZXNlLmNvbS9zdG9yeS8wMDEwNjE1MjQKLmZ0Y2hpbmVzZS5jb20vc3Rvcnkv\nMDAxMDYxNjQyCi5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA2MjAxNwouZnRjaGlu\nZXNlLmNvbS9zdG9yeS8wMDEwNjIwMjAKLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAx\nMDYyMDI4Ci5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA2MjA5MgouZnRjaGluZXNl\nLmNvbS9zdG9yeS8wMDEwNjIwOTYKLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDYy\nMTQ3Ci5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA2MjE3NgouZnRjaGluZXNlLmNv\nbS9zdG9yeS8wMDEwNjIxODgKLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDYyMjU0\nCi5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA2MjM3NAouZnRjaGluZXNlLmNvbS9z\ndG9yeS8wMDEwNjI0ODIKLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDYyNDk2Ci5m\ndGNoaW5lc2UuY29tL3N0b3J5LzAwMTA2MjUwMQouZnRjaGluZXNlLmNvbS9zdG9y\neS8wMDEwNjI1MDgKLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDYyNTE5Ci5mdGNo\naW5lc2UuY29tL3N0b3J5LzAwMTA2MjU1NAouZnRjaGluZXNlLmNvbS9zdG9yeS8w\nMDEwNjI3NDEKLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDYyNzk0Ci5mdGNoaW5l\nc2UuY29tL3N0b3J5LzAwMTA2MzE2MAouZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEw\nNjMzNTkKLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDYzNTEyCi5mdGNoaW5lc2Uu\nY29tL3N0b3J5LzAwMTA2MzY2OAouZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNjM2\nOTIKLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDYzNzYzCi5mdGNoaW5lc2UuY29t\nL3N0b3J5LzAwMTA2Mzc2NAouZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNjM4MjYK\nLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDY0MTI3Ci5mdGNoaW5lc2UuY29tL3N0\nb3J5LzAwMTA2NDMxMgouZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNjQ3MDUKLmZ0\nY2hpbmVzZS5jb20vc3RvcnkvMDAxMDY0ODA3Ci5mdGNoaW5lc2UuY29tL3N0b3J5\nLzAwMTA2NTEyMAouZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNjUxNjgKLmZ0Y2hp\nbmVzZS5jb20vc3RvcnkvMDAxMDY1MjQ5Ci5mdGNoaW5lc2UuY29tL3N0b3J5LzAw\nMTA2NTI4NwouZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNjUzMzcKLmZ0Y2hpbmVz\nZS5jb20vc3RvcnkvMDAxMDY1NTQxCi5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA2\nNTcxNQouZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNjU3MzUKLmZ0Y2hpbmVzZS5j\nb20vc3RvcnkvMDAxMDY1NzU2Ci5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA2NTgw\nMgouZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNjYxMTIKLmZ0Y2hpbmVzZS5jb20v\nc3RvcnkvMDAxMDY2MTM2Ci5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA2NjE0MAou\nZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNjY0NjUKLmZ0Y2hpbmVzZS5jb20vc3Rv\ncnkvMDAxMDY2ODgxCi5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA2Njk1MAouZnRj\naGluZXNlLmNvbS9zdG9yeS8wMDEwNjY5NTkKLmZ0Y2hpbmVzZS5jb20vc3Rvcnkv\nMDAxMDY3NDM1Cnd3dy5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA2NzQ3OQouZnRj\naGluZXNlLmNvbS9zdG9yeS8wMDEwNjc1MjgKLmZ0Y2hpbmVzZS5jb20vc3Rvcnkv\nMDAxMDY3NTQ1Ci5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA2NzU3MgouZnRjaGlu\nZXNlLmNvbS9zdG9yeS8wMDEwNjc2NDgKLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAx\nMDY3NjUwCi5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA2NzY4MAouZnRjaGluZXNl\nLmNvbS9zdG9yeS8wMDEwNjc2OTIKLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDY3\nODcxCi5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA2NzkyMwouZnRjaGluZXNlLmNv\nbS9zdG9yeS8wMDEwNjgwNjIKLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDY4MjQ4\nCi5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA2ODI3OAouZnRjaGluZXNlLmNvbS9z\ndG9yeS8wMDEwNjgzNzkKLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDY4NDgzCi5m\ndGNoaW5lc2UuY29tL3N0b3J5LzAwMTA2ODUwNgouZnRjaGluZXNlLmNvbS9zdG9y\neS8wMDEwNjg1NDcKLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDY4NjE2Ci5mdGNo\naW5lc2UuY29tL3N0b3J5LzAwMTA2ODYyMgouZnRjaGluZXNlLmNvbS9zdG9yeS8w\nMDEwNjg3MDcKLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDY5MTQ2Ci5mdGNoaW5l\nc2UuY29tL3N0b3J5LzAwMTA2OTM3MwouZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEw\nNjk1MTYKLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDY5NTE3Ci5mdGNoaW5lc2Uu\nY29tL3N0b3J5LzAwMTA2OTY4NwouZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNjk3\nNDEKLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDY5ODYxCi5mdGNoaW5lc2UuY29t\nL3N0b3J5LzAwMTA2OTk1MgouZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNzAwNTMK\nLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDcwMTc3Ci5mdGNoaW5lc2UuY29tL3N0\nb3J5LzAwMTA3MDMwNwouZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNzA4MDkKLmZ0\nY2hpbmVzZS5jb20vc3RvcnkvMDAxMDcwOTkwCi5mdGNoaW5lc2UuY29tL3N0b3J5\nLzAwMTA3MTA0MgouZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNzEwNDQKLmZ0Y2hp\nbmVzZS5jb20vc3RvcnkvMDAxMDcxMTA2Ci5mdGNoaW5lc2UuY29tL3N0b3J5LzAw\nMTA3MTE2NgouZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNzExODEKZnRjaGluZXNl\nLmNvbS9zdG9yeS8wMDEwNzEyMDAKLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDcx\nMjA4Ci5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA3MTIzOAouZnRjaGluZXNlLmNv\nbS9zdG9yeS8wMDEwNzE2ODMKLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDcyMjcx\nCi5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA3MjM0OAouZnRjaGluZXNlLmNvbS9z\ndG9yeS8wMDEwNzI2NzcKLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDcyNzk0Ci5m\ndGNoaW5lc2UuY29tL3N0b3J5LzAwMTA3Mjg1MwouZnRjaGluZXNlLmNvbS9zdG9y\neS8wMDEwNzI4OTUKLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDcyOTkzCi5mdGNo\naW5lc2UuY29tL3N0b3J5LzAwMTA3MzA0MwouZnRjaGluZXNlLmNvbS9zdG9yeS8w\nMDEwNzMxMDMKLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDczMTU3Ci5mdGNoaW5l\nc2UuY29tL3N0b3J5LzAwMTA3MzIxNgouZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEw\nNzMyNDYKLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDczMzA1Ci5mdGNoaW5lc2Uu\nY29tL3N0b3J5LzAwMTA3MzMwNwouZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNzM0\nMDgKLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDczNTM3Ci5mdGNoaW5lc2UuY29t\nL3N0b3J5LzAwMTA3MzY3MgouZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNzM4NDkK\nLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDczOTA2Ci5mdGNoaW5lc2UuY29tL3N0\nb3J5LzAwMTA3NDA4OQouZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNzQxMTAKLmZ0\nY2hpbmVzZS5jb20vc3RvcnkvMDAxMDc0MTI4Ci5mdGNoaW5lc2UuY29tL3N0b3J5\nLzAwMTA3NDE1NwouZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNzQyNDYKLmZ0Y2hp\nbmVzZS5jb20vc3RvcnkvMDAxMDc0MzA3Ci5mdGNoaW5lc2UuY29tL3N0b3J5LzAw\nMTA3NDM0NwouZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNzQ0MjMKLmZ0Y2hpbmVz\nZS5jb20vc3RvcnkvMDAxMDc0NDU0Ci5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA3\nNDQ2NwouZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNzQ0OTMKLmZ0Y2hpbmVzZS5j\nb20vc3RvcnkvMDAxMDc0NTUwCi5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA3NDU2\nMgouZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNzQ2NTMKLmZ0Y2hpbmVzZS5jb20v\nc3RvcnkvMDAxMDc0NjkzCi5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA3NDY5OQou\nZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNzQ3MTIKLmZ0Y2hpbmVzZS5jb20vc3Rv\ncnkvMDAxMDc0NzEzCi5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA3NDc2OAouZnRj\naGluZXNlLmNvbS9zdG9yeS8wMDEwNzQ3ODIKLmZ0Y2hpbmVzZS5jb20vc3Rvcnkv\nMDAxMDc0Nzk0Ci5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA3NDgyMgouZnRjaGlu\nZXNlLmNvbS9zdG9yeS8wMDEwNzQ4NzQKLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAx\nMDc0ODkxCi5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA3NDkxOAouZnRjaGluZXNl\nLmNvbS9zdG9yeS8wMDEwNzUwODEKLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDc1\nMTM0Ci5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA3NTIxNgouZnRjaGluZXNlLmNv\nbS9zdG9yeS8wMDEwNzUyMzAKLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDc1MjYy\nCi5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA3NTI2OQouZnRjaGluZXNlLmNvbS9z\ndG9yeS8wMDEwNzU0OTEKLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDc1NTAwCi5m\ndGNoaW5lc2UuY29tL3N0b3J5LzAwMTA3NTY1MAouZnRjaGluZXNlLmNvbS9zdG9y\neS8wMDEwNzU2NzgKLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDc1NzAzCi5mdGNo\naW5lc2UuY29tL3N0b3J5LzAwMTA3NjA2NgouZnRjaGluZXNlLmNvbS9zdG9yeS8w\nMDEwNzYxNDIKLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDc2NDU5Ci5mdGNoaW5l\nc2UuY29tL3N0b3J5LzAwMTA3NjQ3MAouZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEw\nNzY1MzgKLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDc2NTczCi5mdGNoaW5lc2Uu\nY29tL3N0b3J5LzAwMTA3NjkwMQouZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNzcw\nNjcKLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDc3MjM1Ci5mdGNoaW5lc2UuY29t\nL3N0b3J5LzAwMTA3NzM0NAouZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNzczOTAK\nLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDc3MzkyCi5mdGNoaW5lc2UuY29tL3N0\nb3J5LzAwMTA3NzQ2NQouZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNzc0NjgKLmZ0\nY2hpbmVzZS5jb20vc3RvcnkvMDAxMDc3NDkyCi5mdGNoaW5lc2UuY29tL3N0b3J5\nLzAwMTA3Nzc0NQouZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNzc3NjgKLmZ0Y2hp\nbmVzZS5jb20vc3RvcnkvMDAxMDc3ODA0Ci5mdGNoaW5lc2UuY29tL3RhZy8lRTUl\nOEQlODElRTUlODUlQUIlRTUlQjElOEElRTQlQjglODklRTQlQjglQUQlRTUlODUl\nQTglRTQlQkMlOUEKLmZ0Y2hpbmVzZS5jb20vdGFnLyVFNiVCOCVBOSVFNSVBRSVC\nNiVFNSVBRSU5RAouZnRjaGluZXNlLmNvbS90YWcvJUU4JTk2JTg0JUU3JTg2JTk5\nJUU2JTlEJUE1Ci5mdGNoaW5lc2UuY29tL3ZpZGVvLzE0MzcKLmZ0Y2hpbmVzZS5j\nb20vdmlkZW8vMTg4MgouZnRjaGluZXNlLmNvbS92aWRlby8yNDQ2Ci5mdGNoaW5l\nc2UuY29tL3ZpZGVvLzI2MDEKLmZ0Y2hpbmVzZS5jb20vY29tbWVudHMKCiEhLS0t\nR29vZ2xlLS0tCiEjIyNodHRwczovL3d3dy5nb29nbGUuY29tL3N1cHBvcnRlZF9k\nb21haW5zIyMjCiEuLi5HRldMaXN0IGRvZXNuJ3QgaW50ZW5kIHRvIHN1cHBvcnQg\ndHlwb3NxdWF0dGluZy4uLgp8fDFlMTAwLm5ldAp8fDQ2NjQ1My5jb20KfHxhYmMu\neHl6Cnx8YWRtb2IuY29tCnx8YWRzZW5zZS5jb20KfHxhZ29vZ2xlYWRheS5jb20K\nfHxhaS5nb29nbGUKfHxhbXBwcm9qZWN0Lm9yZwp8fGFuZHJvaWQuY29tCnx8YW5k\ncm9pZGlmeS5jb20KfHxhcGkuYWkKLmFwcHNwb3QuY29tCnx8YXBwc3BvdC5jb20K\nfHxhdXRvZHJhdy5jb20KfHxibG9nLmdvb2dsZQp8fGJsb2dibG9nLmNvbQpibG9n\nc3BvdC5jb20KL15odHRwcz86XC9cL1teXC9dK2Jsb2dzcG90XC4oLiopLwouYmxv\nZ3Nwb3QuaGsKLmJsb2dzcG90LmpwCi5ibG9nc3BvdC50dwohLS18fGNhcGl0YWxn\nLmNvbQp8fGNlcnRpZmljYXRlLXRyYW5zcGFyZW5jeS5vcmcKfHxjaHJvbWUuY29t\nCnx8Y2hyb21lY2FzdC5jb20KfHxjaHJvbWVleHBlcmltZW50cy5jb20KfHxjaHJv\nbWVyY2lzZS5jb20KfHxjaHJvbWVzdGF0dXMuY29tCnx8Y2hyb21pdW0ub3JnCnx8\nY29tLmdvb2dsZQp8fGNyZWF0aXZlbGFiNS5jb20KfHxjcnJldi5jb20KfHxkYXRh\nLXZvY2FidWxhcnkub3JnCnx8ZGVidWcuY29tCnx8ZGVlcG1pbmQuY29tCnx8ZGVq\nYS5jb20KfHxkZXNpZ24uZ29vZ2xlCnx8ZGlnaXNmZXJhLmNvbQp8fGRvbWFpbnMu\nZ29vZ2xlCnx8ZHVjay5jb20KfHxlbnZpcm9ubWVudC5nb29nbGUKfHxmZWVkYnVy\nbmVyLmNvbQp8fGZpcmViYXNlaW8uY29tCnx8Zy5jbwp8fGdjci5pbwp8fGdldC5h\ncHAKfHxnZXQuaG93Cnx8Z2V0bWRsLmlvCnx8Z2V0b3V0bGluZS5vcmcKfHxnZ3Bo\ndC5jb20KfHxnbWFpbC5jb20KfHxnbW9kdWxlcy5jb20KfHxnb2RvYy5vcmcKfHxn\nb2xhbmcub3JnCnx8Z29vLmdsCi5nb29nbGUuYWUKLmdvb2dsZS5hcwouZ29vZ2xl\nLmFtCi5nb29nbGUuYXQKLmdvb2dsZS5hegouZ29vZ2xlLmJhCi5nb29nbGUuYmUK\nLmdvb2dsZS5iZwouZ29vZ2xlLmNhCi5nb29nbGUuY2QKLmdvb2dsZS5jaQouZ29v\nZ2xlLmNvLmlkCi5nb29nbGUuY28uanAKLmdvb2dsZS5jby5rcgouZ29vZ2xlLmNv\nLm1hCi5nb29nbGUuY28udWsKLmdvb2dsZS5jb20KLmdvb2dsZS5kZQouZ29vZ2xl\nLmRqCi5nb29nbGUuZGsKLmdvb2dsZS5lcwouZ29vZ2xlLmZpCi5nb29nbGUuZm0K\nLmdvb2dsZS5mcgouZ29vZ2xlLmdnCi5nb29nbGUuZ2wKLmdvb2dsZS5ncgouZ29v\nZ2xlLmllCi5nb29nbGUuaXMKLmdvb2dsZS5pdAouZ29vZ2xlLmpvCi5nb29nbGUu\na3oKLmdvb2dsZS5sdgouZ29vZ2xlLm1uCi5nb29nbGUubXMKLmdvb2dsZS5ubAou\nZ29vZ2xlLm51Ci5nb29nbGUubm8KLmdvb2dsZS5ybwouZ29vZ2xlLnJ1Ci5nb29n\nbGUucncKLmdvb2dsZS5zYwouZ29vZ2xlLnNoCi5nb29nbGUuc2sKLmdvb2dsZS5z\nbQouZ29vZ2xlLnNuCi5nb29nbGUudGsKLmdvb2dsZS50bQouZ29vZ2xlLnRvCi5n\nb29nbGUudHQKLmdvb2dsZS52dQouZ29vZ2xlLndzCi9eaHR0cHM/OlwvXC8oW15c\nL10rXC4pKmdvb2dsZVwuKGFjfGFkfGFlfGFmfGFsfGFtfGFzfGF0fGF6fGJhfGJl\nfGJmfGJnfGJpfGJqfGJzfGJ0fGJ5fGNhfGNhdHxjZHxjZnxjZ3xjaHxjaXxjbHxj\nbXxjby5hb3xjby5id3xjby5ja3xjby5jcnxjby5pZHxjby5pbHxjby5pbnxjby5q\ncHxjby5rZXxjby5rcnxjby5sc3xjby5tYXxjb218Y29tLmFmfGNvbS5hZ3xjb20u\nYWl8Y29tLmFyfGNvbS5hdXxjb20uYmR8Y29tLmJofGNvbS5ibnxjb20uYm98Y29t\nLmJyfGNvbS5ienxjb20uY298Y29tLmN1fGNvbS5jeXxjb20uZG98Y29tLmVjfGNv\nbS5lZ3xjb20uZXR8Y29tLmZqfGNvbS5naHxjb20uZ2l8Y29tLmd0fGNvbS5oa3xj\nb20uam18Y29tLmtofGNvbS5rd3xjb20ubGJ8Y29tLmx5fGNvbS5tbXxjb20ubXR8\nY29tLm14fGNvbS5teXxjb20ubmF8Y29tLm5mfGNvbS5uZ3xjb20ubml8Y29tLm5w\nfGNvbS5vbXxjb20ucGF8Y29tLnBlfGNvbS5wZ3xjb20ucGh8Y29tLnBrfGNvbS5w\ncnxjb20ucHl8Y29tLnFhfGNvbS5zYXxjb20uc2J8Y29tLnNnfGNvbS5zbHxjb20u\nc3Z8Y29tLnRqfGNvbS50cnxjb20udHd8Y29tLnVhfGNvbS51eXxjb20udmN8Y29t\nLnZufGNvLm16fGNvLm56fGNvLnRofGNvLnR6fGNvLnVnfGNvLnVrfGNvLnV6fGNv\nLnZlfGNvLnZpfGNvLnphfGNvLnptfGNvLnp3fGN2fGN6fGRlfGRqfGRrfGRtfGR6\nfGVlfGVzfGV1fGZpfGZtfGZyfGdhfGdlfGdnfGdsfGdtfGdwfGdyfGd5fGhrfGhu\nfGhyfGh0fGh1fGllfGltfGlxfGlzfGl0fGl0LmFvfGplfGpvfGtnfGtpfGt6fGxh\nfGxpfGxrfGx0fGx1fGx2fG1kfG1lfG1nfG1rfG1sfG1ufG1zfG11fG12fG13fG14\nfG5lfG5sfG5vfG5yfG51fG9yZ3xwbHxwbnxwc3xwdHxyb3xyc3xydXxyd3xzY3xz\nZXxzaHxzaXxza3xzbXxzbnxzb3xzcnxzdHx0ZHx0Z3x0a3x0bHx0bXx0bnx0b3x0\ndHx1c3x2Z3x2bnx2dXx3cylcLy4qLwohLS18fGdvb2dsZS1hbmFseXRpY3MuY29t\nCiEtLXx8Z29vZ2xlYWRzZXJ2aWNlcy5jb20KfHxnb29nbGVhcGlzLmNuCnx8Z29v\nZ2xlYXBpcy5jb20KfHxnb29nbGVhcHBzLmNvbQp8fGdvb2dsZWFydHByb2plY3Qu\nY29tCnx8Z29vZ2xlYmxvZy5jb20KfHxnb29nbGVib3QuY29tCiEtLXx8Z29vZ2xl\nY2FwaXRhbC5jb20KfHxnb29nbGVjaGluYXdlYm1hc3Rlci5jb20KfHxnb29nbGVj\nb2RlLmNvbQp8fGdvb2dsZWNvbW1lcmNlLmNvbQp8fGdvb2dsZWRvbWFpbnMuY29t\nCnx8Z29vZ2xlYXJ0aC5jb20KfHxnb29nbGVlYXJ0aC5jb20KfHxnb29nbGVkcml2\nZS5jb20KfHxnb29nbGVncm91cHMuY29tCnx8Z29vZ2xlaG9zdGVkLmNvbQp8fGdv\nb2dsZWlkZWFzLmNvbQp8fGdvb2dsZWluc2lkZXNlYXJjaC5jb20KfHxnb29nbGVs\nYWJzLmNvbQp8fGdvb2dsZW1haWwuY29tCnx8Z29vZ2xlbWFzaHVwcy5jb20KfHxn\nb29nbGVwYWdlY3JlYXRvci5jb20KfHxnb29nbGVwbGF5LmNvbQp8fGdvb2dsZXBs\ndXMuY29tCnx8Z29vZ2xlc2Nob2xhci5jb20KfHxnb29nbGVzb3VyY2UuY29tCiEt\nLXx8Z29vZ2xlc3luZGljYXRpb24uY29tCiEtLXx8Z29vZ2xldGFnbWFuYWdlci5j\nb20KIS0tfHxnb29nbGV0YWdzZXJ2aWNlcy5jb20KfHxnb29nbGV1c2VyY29udGVu\ndC5jb20KLmdvb2dsZXZpZGVvLmNvbQp8fGdvb2dsZXZpZGVvLmNvbQp8fGdvb2ds\nZXdlYmxpZ2h0LmNvbQp8fGdvb2dsZXppcC5uZXQKfHxncm91cHMuZ29vZ2xlLmNu\nCnx8Z3N0YXRpYy5jb20KIS0tfHxndi5jb20KfHxndnQwLmNvbQp8fGd2dDEuY29t\nCkBAfHxyZWRpcmVjdG9yLmd2dDEuY29tCnx8Z3Z0My5jb20KfHxnd3Rwcm9qZWN0\nLm9yZwp8fGh0bWw1cm9ja3MuY29tCnx8aWFtLnNveQp8fGlnb29nbGUuY29tCnx8\naXRhc29mdHdhcmUuY29tCnx8bGVycy5nb29nbGUKfHxsaWtlLmNvbQp8fG1hZGV3\naXRoY29kZS5jb20KfHxtYXRlcmlhbC5pbwp8fG5pYy5nb29nbGUKfHxvbjIuY29t\nCnx8cGFub3JhbWlvLmNvbQp8fHBpY2FzYXdlYi5jb20KfHxwb2x5bWVyLXByb2pl\nY3Qub3JnCnx8cXVlc3R2aXN1YWwuY29tCnx8YWRtaW4ucmVjYXB0Y2hhLm5ldAp8\nfGFwaS5yZWNhcHRjaGEubmV0Cnx8YXBpLXNlY3VyZS5yZWNhcHRjaGEubmV0Cnx8\nYXBpLXZlcmlmeS5yZWNhcHRjaGEubmV0Cnx8cmVkaG90bGFicy5jb20KfHxyZWdp\nc3RyeS5nb29nbGUKfHxzYXZldGhlZGF0ZS5mb28KfHxzY2hlbWEub3JnCnx8c2hh\ndHRlcmVkLmlvCnxodHRwOi8vc2lwbWw1Lm9yZy8KfHxzdG9yaWVzLmdvb2dsZQp8\nfHN5bmVyZ3lzZS5jb20KfHx0ZWFjaHBhcmVudHN0ZWNoLm9yZwp8fHRlbnNvcmZs\nb3cub3JnCnx8dGhpbmt3aXRoZ29vZ2xlLmNvbQp8fHRpbHRicnVzaC5jb20KfHx1\ncmNoaW4uY29tCiEtLXx8d3d3Lmdvb2dsZQp8fHdhdmVwcm90b2NvbC5vcmcKfHx3\nYXltby5jb20KfHx3ZWJtcHJvamVjdC5vcmcKfHx3ZWJydGMub3JnCnx8d2hhdGJy\nb3dzZXIub3JnCnx8d2lkZXZpbmUuY29tCnx8d2l0aGdvb2dsZS5jb20KfHx3aXRo\neW91dHViZS5jb20KfHx4LmNvbXBhbnkKfHx4bi0tbmdzdHItbHJhOGouY29tCnx8\neW91dHUuYmUKLnlvdXR1YmUuY29tCnx8eW91dHViZS5jb20KfHx5b3V0dWJlLW5v\nY29va2llLmNvbQp8fHlvdXR1YmVlZHVjYXRpb24uY29tCnx8eW91dHViZWdhbWlu\nZy5jb20KfHx5dC5iZQp8fHl0aW1nLmNvbQp8fHp5bmFtaWNzLmNvbQoKISEtLS1L\naWNrQVNTLS0tCiEtLU9GRklDSUFMIFVSTCBsaXN0IGF0OiBodHRwczovL2thc3Rh\ndHVzLmNvbQoKISEtLS1OYXVnaHR5QW1lcmljYS0tLQp8fG5hdWdodHlhbWVyaWNh\nLmNvbQoKISEtLS1OWVRpbWVzLS0tCiEtLXx8ZDFmMWVyeWlxeWpzMHIuY2xvdWRm\ncm9udC5uZXQKIS0tfHxkM2xhcjA5eGJ3bHNnZS5jbG91ZGZyb250Lm5ldAohLS18\nfGQzcTFxajlqenN1OG53LmNsb3VkZnJvbnQubmV0CiEtLXx8ZGM4eGwwbmR6bjJj\nYi5jbG91ZGZyb250Lm5ldAohLS18fGExLm55dC5jb20KIS0tfHxpbnQubnl0LmNv\nbQohLS18fHMxLm55dC5jb20Kc3RhdGljMDEubnl0LmNvbQohLS18fHN0YXRpYzAx\nLm55dC5jb20KIS0tfHx0eXBlZmFjZS5ueXQuY29tCnx8bnl0LmNvbQpueXRjaGlu\nYS5jb20Kbnl0Y24ubWUKfHxueXRjbi5tZQp8fG55dGNvLmNvbQp8aHR0cDovL255\ndGkubXMvCi5ueXRpbWVzLmNvbQp8fG55dGltZXMuY29tCnx8bnl0aW1nLmNvbQp1\nc2VyYXBpLm55dGxvZy5jb20KY24ubnl0c3R5bGUuY29tCnx8bnl0c3R5bGUuY29t\nCgohIS0tLVN0ZWFtLS0tCi5zdGVhbWNvbW11bml0eS5jb20KfHxzdGVhbWNvbW11\nbml0eS5jb20KIS0tc3RlYW1jb21tdW5pdHkuY29tL3Byb2ZpbGVzLzc2NTYxMTk4\nMDYyNzcxNjA5CiEtLXN0ZWFtY29tbXVuaXR5LmNvbS9ncm91cHMvTGliZXRUaWJl\ndAohLS1zdGVhbWNvbW11bml0eS5jb20vZ3JvdXBzL3pob25nZ29uZwohLS1zdGVh\nbWNvbW11bml0eS5jb20vaWQvQ0pUX0phY2t0b24KfGh0dHA6Ly9zdG9yZS5zdGVh\nbXBvd2VyZWQuY29tL2FwcC8zMzM2MDAKCiEhLS0tVGVsZWdyYW0tLS0KISEhLS0t\nRG9tYWluLS0tCnx8dC5tZQp8fHVwZGF0ZXMudGRlc2t0b3AuY29tCnx8dGVsZWdy\nYW0uZG9nCnx8dGVsZWdyYW0ubWUKfHx0ZWxlZ3JhbS5vcmcKLnRlbGVncmFtZG93\nbmxvYWQuY29tCnx8dGVsZXNjby5wZQohISEtLS1JUC0tLQoKISEtLS1Ud2l0dGVy\nLS0tCnx8cGVyaXNjb3BlLnR2Ci5wc2NwLnR2Cnx8cHNjcC50dgoudC5jbwp8fHQu\nY28KLnR3ZWV0ZGVjay5jb20KfHx0d2VldGRlY2suY29tCnx8dHdpbWcuY29tCi50\nd2l0cGljLmNvbQp8fHR3aXRwaWMuY29tCi50d2l0dGVyLmNvbQp8fHR3aXR0ZXIu\nY29tCnx8dHdpdHRlci5qcAp8fHZpbmUuY28KCiEhLS0tVGFpd2FuLS0tCnx8Z292\nLnRhaXBlaQouZ292LnR3CnxodHRwczovL2Fpc3MuYW53cy5nb3YudHcKfHxhcmNo\naXZlcy5nb3YudHcKfHx0YWNjLmN3Yi5nb3YudHcKfHxkYXRhLmdvdi50dwp8fGVw\nYS5nb3YudHcKfHxmYS5nb3YudHcKfHxmZGEuZ292LnR3Cnx8aHBhLmdvdi50dwp8\nfGltbWlncmF0aW9uLmdvdi50dwp8fGl0YWl3YW4uZ292LnR3Cnx8bWppYi5nb3Yu\ndHcKfHxtb2VhaWMuZ292LnR3Cnx8bW9mYS5nb3YudHcKfHxtb2wuZ292LnR3Cnx8\nbXZkaXMuZ292LnR3Cnx8bmF0Lmdvdi50dwp8fG5oaS5nb3YudHcKfHxucGEuZ292\nLnR3Cnx8bnNjLmdvdi50dwp8fG50YmsuZ292LnR3Cnx8bnRibmEuZ292LnR3Cnx8\nbnRidC5nb3YudHcKfHxudHNuYS5nb3YudHcKfHxwY2MuZ292LnR3Cnx8c3RhdC5n\nb3YudHcKfHx0YWlwZWkuZ292LnR3Cnx8dGFpd2Fuam9icy5nb3YudHcKfHx0aGIu\nZ292LnR3Cnx8dGlwby5nb3YudHcKfHx3ZGEuZ292LnR3Cgp8fHRlY28taGsub3Jn\nCnx8dGVjby1tby5vcmcKCkBAfHxhZnR5Z2guZ292LnR3CkBAfHxhaWRlLmdvdi50\ndwpAQHx8dHBkZS5haWRlLmdvdi50dwpAQHx8YXJ0ZS5nb3YudHcKQEB8fGNodWt1\nYW5nLmdvdi50dwpAQHx8Y3diLmdvdi50dwpAQHx8Y3ljYWIuZ292LnR3CkBAfHxk\nYm5zYS5nb3YudHcKQEB8fGRmLmdvdi50dwpAQHx8ZWFzdGNvYXN0LW5zYS5nb3Yu\ndHcKQEB8fGVydi1uc2EuZ292LnR3CkBAfHxncmIuZ292LnR3CkBAfHxneXNkLm55\nYy5nb3YudHcKQEB8fGhjaGNjLmdvdi50dwpAQHx8aHNpbmNodS1jYy5nb3YudHcK\nQEB8fGluZXIuZ292LnR3CkBAfHxrbHNpby5nb3YudHcKQEB8fGttc2VoLmdvdi50\ndwpAQHx8bHVuZ3RhbmhyLmdvdi50dwpAQHx8bWFvbGluLW5zYS5nb3YudHcKQEB8\nfG1hdHN1LW5ld3MuZ292LnR3CkBAfHxtYXRzdS1uc2EuZ292LnR3CkBAfHxtYXRz\ndWNjLmdvdi50dwpAQHx8bW9lLmdvdi50dwpAQHx8bXZkaXMuZ292LnR3CkBAfHxu\nYW5rYW4uZ292LnR3CkBAfHxuY3JlZS5nb3YudHcKQEB8fG5lY29hc3QtbnNhLmdv\ndi50dwpAQHx8c2lyYXlhLW5zYS5nb3YudHcKQEB8fGNyb21vdGMubmF0Lmdvdi50\ndwpAQHx8dGF4Lm5hdC5nb3YudHcKQEB8fG5lY29hc3QtbnNhLmdvdi50dwpAQHx8\nbmVyLmdvdi50dwpAQHx8bm1tYmEuZ292LnR3CkBAfHxubXAuZ292LnR3CkBAfHxu\nbXZ0dGMuZ292LnR3CkBAfHxub3J0aGd1YW4tbnNhLmdvdi50dwpAQHx8bnBtLmdv\ndi50dwpAQHx8bnN0bS5nb3YudHcKQEB8fG50ZG1oLmdvdi50dwpAQHx8bnRsLmdv\ndi50dwpAQHx8bnRzZWMuZ292LnR3CkBAfHxudHVoLmdvdi50dwpAQHx8bnZyaS5n\nb3YudHcKQEB8fHBlbmdodS1uc2EuZ292LnR3CkBAfHxwb3N0Lmdvdi50dwpAQHx8\nc2lyYXlhLW5zYS5nb3YudHcKQEB8fHN0ZHRpbWUuZ292LnR3CkBAfHxzdW5tb29u\nbGFrZS5nb3YudHcKQEB8fHRhaXR1bmctaG91c2UuZ292LnR3CkBAfHx0YW95dWFu\nLmdvdi50dwpAQHx8dHBoY2MuZ292LnR3CkBAfHx0cmltdC1uc2EuZ292LnR3CkBA\nfHx2Z2h0cGUuZ292LnR3CkBAfHx2Z2hrcy5nb3YudHcKQEB8fHZnaHRjLmdvdi50\ndwpAQHx8d2FuZmFuZy5nb3YudHcKQEB8fHlhdHNlbi5nb3YudHcKQEB8fHlkYS5n\nb3YudHcKCiEtLUBAfHw0cHBwYy5nb3YudHcKIS0tQEB8fDkyMS5nb3YudHcKIS0t\nQEB8fGRtdGlwLmdvdi50dwohLS1AQHx8ZXRyYWluaW5nLmdvdi50dwohLS1AQHx8\nZ3NuLWNlcnQubmF0Lmdvdi50dwohLS1AQHx8bmljaS5uYXQuZ292LnR3CiEtLUBA\nfHxoY2MuZ292LnR3CiEtLUBAfHxoZW5nY2h1ZW4uZ292LnR3CiEtLUBAfHxraGNj\nLmdvdi50dwohLS1AQHx8a2htcy5nb3YudHcKIS0tQEB8fGtrLmdvdi50dwohLS1A\nQHx8a2xjY2FiLmdvdi50dwohLS1AQHx8a2xyYS5nb3YudHcKIS0tQEB8fG5taC5n\nb3YudHcKIS0tQEB8fG5tdGwuZ292LnR3CiEtLUBAfHxwYWJwLmdvdi50dwohLS1A\nQHx8cGV0Lmdvdi50dwohLS1AQHx8dGNoYi5nb3YudHcKIS0tQEB8fHRjc2FjLmdv\ndi50dwohLS1AQHx8dG5jc2VjLmdvdi50dwp8fGtpbm1lbi5vcmcudHcKCiEhLS0t\nVjJFWC0tLQoudjJleC5jb20KIS0tSW5jbHVkZWQgaW4gYWJvdmUgcnVsZTogZG5z\nLnYyZXguY29tCkBAfGh0dHA6Ly92MmV4LmNvbQpAQHxodHRwOi8vY2RuLnYyZXgu\nY29tCkBAfGh0dHA6Ly9jbi52MmV4LmNvbQpAQHxodHRwOi8vaGsudjJleC5jb20K\nQEB8aHR0cDovL2kudjJleC5jb20KQEB8aHR0cDovL2xheC52MmV4LmNvbQpAQHxo\ndHRwOi8vbmV1ZS52MmV4LmNvbQpAQHxodHRwOi8vcGFnZXNwZWVkLnYyZXguY29t\nCkBAfGh0dHA6Ly9zdGF0aWMudjJleC5jb20KQEB8aHR0cDovL3dvcmtzcGFjZS52\nMmV4LmNvbQpAQHxodHRwOi8vd3d3LnYyZXguY29tCgohIS0tLVlhaG9vLS0tCnx8\nZGF0YS5mbHVycnkuY29tCnBhZ2UuYmlkLnlhaG9vLmNvbQp0dy5iaWQueWFob28u\nY29tCnxodHRwczovL3R3LmJpZC55YWhvby5jb20KYmxvZ3MueWFob28uY28uanAK\nfHxzZWFyY2gueWFob28uY28uanAKYnV5LnlhaG9vLmNvbS50dy9nZHNhbGUKaGsu\neWFob28uY29tCmhrLmtub3dsZWRnZS55YWhvby5jb20KdHcubW9uZXkueWFob28u\nY29tCmhrLm15YmxvZy55YWhvby5jb20KbmV3cy55YWhvby5jb20vY2hpbmEtYmxv\nY2tzLWJiYwp8fGhrLm5ld3MueWFob28uY29tCmhrLnJkLnlhaG9vLmNvbQpoay5z\nZWFyY2gueWFob28uY29tL3NlYXJjaApoay52aWRlby5uZXdzLnlhaG9vLmNvbS92\naWRlbwptZW1lLnlhaG9vLmNvbQohLS10dy55YWhvby5jb20KdHcuYW5zd2Vycy55\nYWhvby5jb20KfGh0dHBzOi8vdHcuYW5zd2Vycy55YWhvby5jb20KfHx0dy5rbm93\nbGVkZ2UueWFob28uY29tCnx8dHcubWFsbC55YWhvby5jb20KdHcueWFob28uY29t\nCnx8dHcubW9iaS55YWhvby5jb20KdHcubXlibG9nLnlhaG9vLmNvbQp8fHR3Lm5l\nd3MueWFob28uY29tCnB1bHNlLnlhaG9vLmNvbQp1cGNvbWluZy55YWhvby5jb20K\ndmlkZW8ueWFob28uY29tCnx8eWFob28uY29tLmhrCnx8ZHVja2R1Y2tnby1vd25l\nZC1zZXJ2ZXIueWFob28ubmV0CgohLS0tLS0tLS0tLS0tLS0tLS0tTnVtZXJpY3Mt\nLS0tLS0tLS0tLS0tLS0tLS0tLS0KLjAzMGJ1eS5jb20KLjByei50dwp8aHR0cDov\nLzByei50dwoxLWFwcGxlLmNvbS50dwp8fDEtYXBwbGUuY29tLnR3Ci4xMC50dAou\nMTAwa2Uub3JnCi4xMDAwZ2lyaS5uZXQKfHwxMDAwZ2lyaS5uZXQKLjEwY29uZGl0\naW9uc29mbG92ZS5jb20KfHwxMG11c3VtZS5jb20KMTIzcmYuY29tCi4xMmJldC5j\nb20KfHwxMmJldC5jb20KLjEydnBuLmNvbQouMTJ2cG4ubmV0Cnx8MTJ2cG4uY29t\nCnx8MTJ2cG4ubmV0Ci4xMzguY29tCjE0MWhvbmdrb25nLmNvbS9mb3J1bQp8fDE0\nMWpqLmNvbQouMTQxdHViZS5jb20KLjE2ODguY29tLmF1Ci4xNzNuZy5jb20KfHwx\nNzNuZy5jb20KLjE3N3BpYy5pbmZvCi4xN3QxN3AuY29tCnx8MThib2FyZC5jb20K\nfHwxOGJvYXJkLmluZm8KMThvbmx5Z2lybHMuY29tCi4xOHAycC5jb20KLjE4dmly\nZ2luc2V4LmNvbQouMTk0OWVyLm9yZwp6aGFvLjE5ODQuY2l0eQp8fHpoYW8uMTk4\nNC5jaXR5CjE5ODRiYnMuY29tCnx8MTk4NGJicy5jb20KIS0tfHwxOTg0YmxvZy5j\nb20KLjE5ODRiYnMub3JnCnx8MTk4NGJicy5vcmcKLjE5OTF3YXkuY29tCnx8MTk5\nMXdheS5jb20KLjE5OThjZHAub3JnCi4xYmFvLm9yZwp8aHR0cDovLzFiYW8ub3Jn\nCi4xZWV3LmNvbQouMW1vYmlsZS5jb20KfGh0dHA6Ly8qLjFtb2JpbGUudHcKfHwx\ncG9uZG8udHYKLjItaGFuZC5pbmZvCi4yMDAwZnVuLmNvbS9iYnMKLjIwMDh4aWFu\nemhhbmcuaW5mbwp8fDIwMDh4aWFuemhhbmcuaW5mbwp8fDIwMTcuaGsKMjFhbmR5\nLmNvbS9ibG9nCi4yMXByb24uY29tCjIxc2V4dHVyeS5jb20KLjIyOC5uZXQudHcK\nfHwyMzNhYmMuY29tCnx8MjRocnMuY2EKMjRzbWlsZS5vcmcKMmxpcHN0dWJlLmNv\nbQouMnNoYXJlZC5jb20KMzBib3hlcy5jb20KLjMxNWx6LmNvbQp8fDMycmVkLmNv\nbQp8fDM2cmFpbi5jb20KLjNhNWEuY29tCjNhcmFidHYuY29tCi4zYm95czJnaXJs\ncy5jb20KLjNwcm94eS5ydQouM3Jlbi5jYQouM3R1aS5uZXQKfHw0Ymx1ZXN0b25l\ncy5iaXoKLjRjaGFuLmNvbQohLS18fDRjaGFuLm9yZwouNGV2ZXJwcm94eS5jb20K\nfHw0ZXZlcnByb3h5LmNvbQp8fDRyYnR2LmNvbQp8fDRzaGFyZWQuY29tCnRhaXdh\nbm5hdGlvbi41MHdlYnMuY29tCnx8NTEuY2EKfHw1MWphdi5vcmcKLjUxbHVvYmVu\nLmNvbQp8fDUxbHVvYmVuLmNvbQouNTI3OC5jYwo1YWltaWt1LmNvbQo1aTAxLmNv\nbQouNWlzb3RvaTUub3JnCi41bWFvZGFuZy5jb20KfHw2M2kuY29tCi42NG11c2V1\nbS5vcmcKNjR0aWFud2FuZy5jb20KNjR3aWtpLmNvbQouNjYuY2EKNjY2a2IuY29t\nCjZwYXJrLmNvbQp8fDZwYXJrLmNvbQp8fDZwYXJrZXIuY29tCnx8N2NhcHR1cmUu\nY29tCi43Y293LmNvbQouOC1kLmNvbQp8aHR0cDovLzgtZC5jb20KODVjYy5uZXQK\nLjg1Y2MudXMKfGh0dHA6Ly84NWNjLnVzCnxodHRwOi8vODVzdC5jb20KLjg4MTkw\nMy5jb20vcGFnZS96aC10dy8KfHw4ODE5MDMuY29tCi44ODguY29tCi44ODhwb2tl\nci5jb20KODkuNjQuY2hhcnRlci5jb25zdGl0dXRpb25hbGlzbS5zb2x1dGlvbnMK\nODktNjQub3JnCnx8ODktNjQub3JnCi44bmV3cy5jb20udHcKLjh6MS5uZXQKfHw4\nejEubmV0Ci45MDAxNzAwLmNvbQp8aHR0cDovLzkwOHRhaXdhbi5vcmcvCnx8OTFw\nb3JuLmNvbQp8fDkxdnBzLmNsdWIKLjkyY2Nhdi5jb20KLjk5MS5jb20KfGh0dHA6\nLy85OTEuY29tCi45OWJ0Z2MwMS5jb20KfHw5OWJ0Z2MwMS5jb20KLjk5Y24uaW5m\nbwp8aHR0cDovLzk5Y24uaW5mbwp8fDliaXMuY29tCnx8OWJpcy5uZXQKCiEtLS0t\nLS0tLS0tLS0tLS0tLS0tLUFBLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoudGli\nZXQuYS5zZQp8aHR0cDovL3RpYmV0LmEuc2UKfHxhLW5vcm1hbC1kYXkuY29tCmE1\nLmNvbS5ydQp8aHR0cDovL2FhbWFjYXUuY29tCiEtLXxodHRwOi8vY2RuKi5hYmMu\nY29tLwouYWJjLmNvbQouYWJjLm5ldC5hdQp8fGFiYy5uZXQuYXUKLmFiY2hpbmVz\nZS5jb20KYWJjbGl0ZS5uZXQKfGh0dHBzOi8vd3d3LmFiY2xpdGUubmV0Ci5hYmx3\nYW5nLmNvbQouYWJvbHVvd2FuZy5jb20KfHxhYm9sdW93YW5nLmNvbQouYWJvdXRn\nZncuY29tCi5hYnMuZWR1Ci5hY2NpbS5vcmcKLmFjZXJvcy1kZS1oaXNwYW5pYS5j\nb20KLmFjZXZwbi5jb20KfHxhY2V2cG4uY29tCi5hY2cxOC5tZQp8aHR0cDovL2Fj\nZzE4Lm1lCnx8YWNna2ouY29tCi5hY21lZGlhMzY1LmNvbQouYWNudy5jb20uYXUK\nYWN0Zm9ydGliZXQub3JnCmFjdGltZXMuY29tLmF1CmFjdGl2cG4uY29tCnx8YWN0\naXZwbi5jb20KfHxhY3Vsby51cwp8fGFkZGljdGVkdG9jb2ZmZWUuZGUKLmFkZWxh\naWRlYmJzLmNvbS9iYnMKLmFkcGwub3JnLmhrCnxodHRwOi8vYWRwbC5vcmcuaGsK\nLmFkdWx0LXNleC1nYW1lcy5jb20KfHxhZHVsdC1zZXgtZ2FtZXMuY29tCmFkdWx0\nZnJpZW5kZmluZGVyLmNvbQphZHVsdGtlZXAubmV0L3BlZXBzaG93L21lbWJlcnMv\nbWFpbi5odG0KfHxhZHZhbnNjZW5lLmNvbQp8fGFkdmVydGZhbi5jb20KLmFlLm9y\nZwp8fGFlbmhhbmNlcnMuY29tCnx8YWYubWlsCi5hZmFudGliYnMuY29tCnxodHRw\nOi8vYWZhbnRpYmJzLmNvbQouYWkta2FuLm5ldAp8fGFpLWthbi5uZXQKYWktd2Vu\nLm5ldAouYWlwaC5uZXQKfHxhaXBoLm5ldAouYWlyYXNpYS5jb20KfHxhaXJjb25z\nb2xlLmNvbQp8aHR0cDovL2Rvd25sb2FkLmFpcmNyYWNrLW5nLm9yZwouYWlydnBu\nLm9yZwp8fGFpcnZwbi5vcmcKLmFpc2V4LmNvbQp8fGFpdC5vcmcudHcKYWl3ZWl3\nZWkuY29tCi5haXdlaXdlaWJsb2cuY29tCnx8YWl3ZWl3ZWlibG9nLmNvbQp8fHd3\ndy5hanNhbmRzLmNvbQoKISEtLS1Ba2FtYWktLS0KYTI0OC5lLmFrYW1haS5uZXQK\nfHxhMjQ4LmUuYWthbWFpLm5ldAoKcmZhbGl2ZTEuYWthY2FzdC5ha2FtYWlzdHJl\nYW0ubmV0CnZvYS0xMS5ha2FjYXN0LmFrYW1haXN0cmVhbS5uZXQKCiEhLS00MDMK\nfHxhYmVtYXR2LmFrYW1haXplZC5uZXQKfHxsaW5lYXItYWJlbWF0di5ha2FtYWl6\nZWQubmV0Cnx8dm9kLWFiZW1hdHYuYWthbWFpemVkLm5ldAoKfGh0dHBzOi8vZmJj\nZG4qLmFrYW1haWhkLm5ldC8KIS0tfHxmYmV4dGVybmFsLWEuYWthbWFpaGQubmV0\nCiEtLXx8ZmJzdGF0aWMtYS5ha2FtYWloZC5uZXQKIS0tfGh0dHBzOi8vaWdjZG4q\nLmFrYW1haWhkLm5ldApydGhrbGl2ZTItbGguYWthbWFpaGQubmV0CgouYWthZGVt\naXllLm9yZy91Zwp8aHR0cDovL2FrYWRlbWl5ZS5vcmcvdWcKfHxha2liYS1vbmxp\nbmUuY29tCnx8YWtvdy5vcmcKLmFsLWlzbGFtLmNvbQp8fGFsLXFpbW1haC5uZXQK\nfHxhbGFib3V0LmNvbQouYWxhbmhvdS5jb20KfGh0dHA6Ly9hbGFuaG91LmNvbQou\nYWxhcmFiLnFhCnx8YWxhc2JhcnJpY2FkYXMub3JnCmFsZXhsdXIub3JnCnx8YWxm\nb3JhdHR2Lm5ldAouYWxoYXlhdC5jb20KLmFsaWNlamFwYW4uY28uanAKYWxpZW5n\ndS5jb20KfHxhbGthc2lyLmNvbQp8fGFsbGNvbm5lY3RlZC5jbwouYWxsZHJhd25z\nZXguY29tCnx8YWxsZHJhd25zZXguY29tCi5hbGxlcnZwbi5jb20KfHxhbGxmaW5l\nZ2lybHMuY29tCi5hbGxnaXJsbWFzc2FnZS5jb20KYWxsZ2lybHNhbGxvd2VkLm9y\nZwouYWxsZ3JhdnVyZS5jb20KYWxsaWFuY2Uub3JnLmhrCi5hbGxpbmZhLmNvbQp8\naHR0cDovL2FsbGluZmEuY29tCi5hbGxqYWNrcG90c2Nhc2luby5jb20KfHxhbGxt\nb3ZpZS5jb20KfHxhbG1hc2Rhcm5ld3MuY29tCi5hbHBoYXBvcm5vLmNvbQp8fGFs\ndGVybmF0ZS10b29scy5jb20KYWx0ZXJuYXRpdmV0by5uZXQvc29mdHdhcmUKYWx2\naW5hbGV4YW5kZXIuY29tCmFsd2F5c2RhdGEuY29tCnx8YWx3YXlzZGF0YS5jb20K\nfHxhbHdheXNkYXRhLm5ldAouYWx3YXlzdnBuLmNvbQp8fGFsd2F5c3Zwbi5jb20K\nfHxhbTczMC5jb20uaGsKYW1lYmxvLmpwCnx8YW1lYmxvLmpwCnd3dzEuYW1lcmlj\nYW4uZWR1L3RlZC9pY2UvdGliZXQKfHxhbWVyaWNhbmdyZWVuY2FyZC5jb20KfGh0\ndHA6Ly93d3cuYW1lcmljb3Jwcy5nb3YKfHxhbWlibG9ja2Vkb3Jub3QuY29tCi5h\nbWlnb2Jicy5uZXQKLmFtaXRhYmhhZm91bmRhdGlvbi51cwp8aHR0cDovL2FtaXRh\nYmhhZm91bmRhdGlvbi51cwouYW1uZXN0eS5vcmcKfHxhbW5lc3R5Lm9yZwp8fGFt\nbmVzdHkub3JnLmhrCi5hbW5lc3R5LnR3Ci5hbW5lc3R5dXNhLm9yZwp8fGFtbmVz\ndHl1c2Eub3JnCi5hbW55ZW1hY2hlbi5vcmcKLmFtb2lpc3QuY29tCi5hbXRiLXRh\naXBlaS5vcmcKYW5kcm9pZHBsdXMuY28vYXBrCi5hbmR5Z29kLmNvbQp8aHR0cDov\nL2FuZHlnb2QuY29tCmFubmF0YW0uY29tL2NoaW5lc2UKfHxhbmNob3JmcmVlLmNv\nbQohLS1HSFMKfHxhbmNzY29uZi5vcmcKfHxhbmRmYXJhd2F5Lm5ldAp8fGFuZHJv\naWQteDg2Lm9yZwphbmdlbGZpcmUuY29tL2hpL2hheWFzaGkKfHxhbmd1bGFyanMu\nb3JnCmFuaW1lY3JhenkubmV0Ci5hbmltZXNoaXBwdXVkZW4uY29tCmFuaXNjYXJ0\ndWpvLmNvbQp8fGFuaXNjYXJ0dWpvLmNvbQp8fGFub2JpaS5jb20KYW5vbnltaXNl\nLnVzCi5hbm9ueW1pdHluZXR3b3JrLmNvbQouYW5vbnltaXplci5jb20KYW5vbnRl\neHQuY29tCi5hbnBvcG8uY29tCi5hbnN3ZXJpbmctaXNsYW0ub3JnCnxodHRwOi8v\nd3d3LmFudGQub3JnCnx8YW50aG9ueWNhbHphZGlsbGEuY29tCi5hbnRpMTk4NC5j\nb20KYW50aWNocmlzdGVuZG9tLmNvbQouYW50aXdhdmUubmV0CnxodHRwOi8vYW50\naXdhdmUubmV0Ci5hbnlwb3JuLmNvbQouYW55c2V4LmNvbQp8aHR0cDovL2FueXNl\neC5jb20KfHxhb2JvLmNvbS5hdQouYW9mcmllbmQuY29tCnxodHRwOi8vYW9mcmll\nbmQuY29tCi5hb2ZyaWVuZC5jb20uYXUKLmFvamlhby5vcmcKfHxhb21pd2FuZy5j\nb20KdmlkZW8uYXAub3JnCi5hcGV0dWJlLmNvbQp8fGFwaWFyeS5pbwouYXBpZ2Vl\nLmNvbQp8fGFwaWdlZS5jb20KYXBrLWRsLmNvbQphcGtkbGVyLmNvbS9hcGsvdmll\ndwouYXBrbW9uay5jb20vYXBwCnx8YXBrcGx6LmNvbQphcGtwdXJlLmNvbQp8fGFw\na3B1cmUuY29tCi5hcGx1c3Zwbi5jb20KIS0tfHxhcHBhbm5pZS5jb20KLmFwcGRv\nd25sb2FkZXIubmV0L0FuZHJvaWQKLmFwcGxlZGFpbHkuY29tCnx8YXBwbGVkYWls\neS5jb20KYXBwbGVkYWlseS5jb20uaGsKfHxhcHBsZWRhaWx5LmNvbS5oawphcHBs\nZWRhaWx5LmNvbS50dwp8fGFwcGxlZGFpbHkuY29tLnR3Ci5hcHBzaG9wcGVyLmNv\nbQp8aHR0cDovL2FwcHNob3BwZXIuY29tCnx8YXBwc29ja3MubmV0Cnx8YXBwc3Rv\nLnJlCi5hcHRvaWRlLmNvbQp8fGFwdG9pZGUuY29tCnx8YXJjaGl2ZXMuZ292Ci5h\ncmNoaXZlLmZvCnx8YXJjaGl2ZS5mbwouYXJjaGl2ZS5pcwp8fGFyY2hpdmUuaXMK\nLmFyY2hpdmUubGkKfHxhcmNoaXZlLmxpCnx8YXJjaGl2ZS5vcmcKYXJjaGl2ZS50\nb2RheQp8aHR0cHM6Ly9hcmNoaXZlLnRvZGF5Ci5hcmN0b3NpYS5jb20KfGh0dHA6\nLy9hcmN0b3NpYS5jb20KfHxhcmVjYS1iYWNrdXAub3JnCi5hcmV0aHVzYS5zdQp8\nfGFyZXRodXNhLnN1Cnx8YXJsaW5ndG9uY2VtZXRlcnkubWlsCnx8YXJteS5taWwK\nLmFydDR0aWJldDE5OTgub3JnCmFydG9mcGVhY2Vmb3VuZGF0aW9uLm9yZwphcnRz\neS5uZXQKfHxhc2FjcC5vcmcKLmFzYWhpY2hpbmVzZS5jb20KfHxhc2FoaWNoaW5l\nc2UuY29tCmFzZGZnLmpwL2RhYnIKYXNnLnRvCi5hc2lhLWdhbWluZy5jb20KLmFz\naWFoYXJ2ZXN0Lm9yZwp8fGFzaWFoYXJ2ZXN0Lm9yZwphc2lhbmV3cy5pdAp8aHR0\ncDovL2phcGFuZmlyc3QuYXNpYW5mcmVlZm9ydW0uY29tLwp8fGFzaWFuc2V4ZGlh\ncnkuY29tCnx8YXNpYW53b21lbnNmaWxtLmRlCi5hc2lhdGdwLmNvbQouYXNpYXRv\nZGF5LnVzCnx8YXNrc3R1ZGVudC5jb20KLmFza3luei5uZXQKfHxhc2t5bnoubmV0\nCnx8YXNzZW1ibGEuY29tCnx8YXN0cmlsbC5jb20KfHxhdGMub3JnLmF1Ci5hdGNo\naW5lc2UuY29tCnxodHRwOi8vYXRjaGluZXNlLmNvbQphdGdmdy5vcmcKLmF0bGFz\ncG9zdC5jb20KfHxhdGxhc3Bvc3QuY29tCnx8YXRkbXQuY29tCi5hdGxhbnRhMTY4\nLmNvbS9mb3J1bQouYXRuZXh0LmNvbQp8fGF0bmV4dC5jb20KaWNlLmF1ZGlvbm93\nLmNvbQouYXYuY29tCnx8YXYubW92aWUKLmF2LWUtYm9keS5jb20KYXZhYXoub3Jn\nCnx8YXZhYXoub3JnCiEtLXx8YXZhc3QuY29tCi5hdmJvZHkudHYKLmF2Y2l0eS50\ndgouYXZjb29sLmNvbQouYXZkYi5pbgp8fGF2ZGIuaW4KLmF2ZGIudHYKfHxhdmRi\nLnR2Ci5hdmZhbnRhc3kuY29tCi5hdmdsZS5jb20KfHxhdmdsZS5jb20KfHxhdmlk\nZW11eC5vcmcKfHxhdm9pc2lvbi5jb20KLmF2eWFob28uY29tCnx8YXh1cmVmb3Jt\nYWMuY29tCi5hemVyYmF5Y2FuLnR2CmF6ZXJpbWl4LmNvbQohLS1ib3h1bi5henVy\nZXdlYnNpdGVzLm5ldCBkb2Vzbid0IGV4aXN0Lgpib3h1biouYXp1cmV3ZWJzaXRl\ncy5uZXQKfHxib3h1biouYXp1cmV3ZWJzaXRlcy5uZXQKCiEtLS0tLS0tLS0tLS0t\nLS0tLS0tLUJCLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpmb3J1bS5iYWJ5LWtp\nbmdkb20uY29tCmJhYnluZXQuY29tLmhrCmJhY2tjaGluYS5jb20KfHxiYWNrY2hp\nbmEuY29tCi5iYWNrcGFja2Vycy5jb20udHcvZm9ydW0KYmFja3RvdGlhbmFubWVu\nLmNvbQouYmFkaXVjYW8uY29tCnx8YmFkaXVjYW8uY29tCi5iYWRqb2pvLmNvbQpi\nYWRvby5jb20KfGh0dHA6Ly8qMi5iYWhhbXV0LmNvbS50dwp8fGJhaWR1LmpwCi5i\nYWlqaWUub3JnCnxodHRwOi8vYmFpamllLm9yZwp8fGJhaWxhbmRhaWx5LmNvbQp8\nfGJhaXhpbmcubWUKfHxiYWtnZWVraG9tZS50awouYmFuYW5hLXZwbi5jb20KfHxi\nYW5hbmEtdnBuLmNvbQouYmFuZHdhZ29uaG9zdC5jb20KfHxiYW5kd2Fnb25ob3N0\nLmNvbQouYmFuZ2Jyb3NuZXR3b3JrLmNvbQouYmFuZ2NoZW4ubmV0CnxodHRwOi8v\nYmFuZ2NoZW4ubmV0Cnx8YmFuZ3lvdWxhdGVyLmNvbQpiYW5uZWRib29rLm9yZwp8\nfGJhbm5lZGJvb2sub3JnCi5iYW5uZWRuZXdzLm9yZwouYmFyYW1hbmdhb25saW5l\nLmNvbQp8aHR0cDovL2JhcmFtYW5nYW9ubGluZS5jb20KLmJhcmVuYWtlZGlzbGFt\nLmNvbQp8fGJhcm5hYnUuY28udWsKYmFydHZwbi5jb20KLmJhc3RpbGxlcG9zdC5j\nb20KYmF5dm9pY2UubmV0Cnx8YmF5dm9pY2UubmV0CmRhanVzaGEuYmF5d29yZHMu\nY29tCnx8YmJjaGF0LnR2Cnx8YmItY2hhdC50dgouYmJnLmdvdgouYmJrei5jb20v\nZm9ydW0KLmJibnJhZGlvLm9yZwpiYnMtdHcuY29tCi5iYnNkaWdlc3QuY29tL3Ro\ncmVhZAp8fGJic2ZlZWQuY29tCmJic2xhbmQuY29tCi5iYnNtby5jb20KLmJic29u\nZS5jb20KYmJ0b3lzdG9yZS5jb20KLmJjYXN0LmNvLm56Ci5iY2MuY29tLnR3L2Jv\nYXJkCi5iY2NoaW5lc2UubmV0Ci5iY21vcm5pbmcuY29tCmJkc212aWRlb3MubmV0\nCi5iZWFjb25ldmVudHMuY29tCi5iZWJvLmNvbQp8fGJlYm8uY29tCi5iZWV2cG4u\nY29tCnx8YmVldnBuLmNvbQouYmVoaW5ka2luay5jb20KfHxiZWlqaW5nMTk4OS5j\nb20KYmVpamluZ3NwcmluZy5jb20KfHxiZWlqaW5nc3ByaW5nLmNvbQouYmVpamlu\nZ3p4Lm9yZwp8aHR0cDovL2JlaWppbmd6eC5vcmcKLmJlbGFtaW9ubGluZS5jb20K\nLmJlbGwud2lraQp8aHR0cDovL2JlbGwud2lraQpiZW15d2lmZS5jYwpiZXJpYy5t\nZQouYmVybGludHdpdHRlcndhbGwuY29tCnx8YmVybGludHdpdHRlcndhbGwuY29t\nCi5iZXJtLmNvLm56Ci5iZXN0Zm9yY2hpbmEub3JnCnx8YmVzdGZvcmNoaW5hLm9y\nZwouYmVzdGdvcmUuY29tCi5iZXN0cG9ybnN0YXJkYi5jb20KfHxiZXN0dnBuLmNv\nbQouYmVzdHZwbmFuYWx5c2lzLmNvbQouYmVzdHZwbnNlcnZlci5jb20KLmJlc3R2\ncG5zZXJ2aWNlLmNvbQouYmVzdHZwbnVzYS5jb20KfHxiZXQzNjUuY29tCi5iZXRm\nYWlyLmNvbQp8fGJldHRlcm5ldC5jbwouYmV0dGVydnBuLmNvbQp8fGJldHRlcnZw\nbi5jb20KLmJldHR3ZWVuLmNvbQp8fGJldHR3ZWVuLmNvbQp8fGJldHZpY3Rvci5j\nb20KLmJld3d3Lm5ldAouYmV5b25kZmlyZXdhbGwuY29tCnx8YmZubi5vcmcKfHxi\nZnNoLmhrCi5iZ3Zwbi5jb20KfHxiZ3Zwbi5jb20KLmJpYW5sZWkuY29tCkBAfHxi\naWFubGVpLmNvbQpiaWFudGFpbGFqaWFvLmNvbQpiaWFudGFpbGFqaWFvLmluCi5i\naWJsZXNmb3JhbWVyaWNhLm9yZwp8aHR0cDovL2JpYmxlc2ZvcmFtZXJpY2Eub3Jn\nCi5iaWMyMDExLm9yZwpiaWdmb29scy5jb20KfHxiaWdqYXBhbmVzZXNleC5jb20K\nLmJpZ25ld3Mub3JnCnx8YmlnbmV3cy5vcmcKLmJpZ3NvdW5kLm9yZwouYmlsaXdv\ncmxkLmNvbQp8aHR0cDovL2JpbGl3b3JsZC5jb20KfGh0dHA6Ly9iaWxseXBhbi5j\nb20vd2lraQouYmludXgubWUKYWkuYmlud2FuZy5tZS9jb3VwbGV0CmJpcGljLm5l\ndAouYml0LmRvCnxodHRwOi8vYml0LmRvCi5iaXQubHkKfGh0dHA6Ly9iaXQubHkK\nIS0tfHxiaXRidWNrZXQub3JnCnx8Yml0Y29pbnRhbGsub3JnCi5iaXRzaGFyZS5j\nb20KfHxiaXRzaGFyZS5jb20KYml0c25vb3AuY29tCi5iaXR2aXNlLmNvbQp8fGJp\ndHZpc2UuY29tCmJpemhhdC5jb20KfHxibC1kb3VqaW5zb3Vrby5jb20KLmJqbmV3\nbGlmZS5vcmcKLmJqcy5vcmcKYmp6Yy5vcmcKfHxianpjLm9yZwouYmxhY2tsb2dp\nYy5jb20KLmJsYWNrdnBuLmNvbQp8fGJsYWNrdnBuLmNvbQpibGV3cGFzcy5jb20K\ndG9yLmJsaW5nYmxpbmdzcXVhZC5uZXQKLmJsaW5reC5jb20KfHxibGlua3guY29t\nCmJsaW53LmNvbQouYmxpcC50dgp8fGJsaXAudHYvCi5ibG9ja2NuLmNvbQp8fGJs\nb2NrY24uY29tCnx8YmxvY2tsZXNzLmNvbQp8fGJsb2cuZGUKLmJsb2cuanAKfGh0\ndHA6Ly9ibG9nLmpwCkBAfHxqcHVzaC5jbgouYmxvZ2NhdGFsb2cuY29tCnx8Ymxv\nZ2NhdGFsb2cuY29tCnx8YmxvZ2NpdHkubWUKLmJsb2dnZXIuY29tCnx8YmxvZ2dl\nci5jb20KYmxvZ2ltZy5qcAp8fGJsb2cua2FuZ3llLm9yZwouYmxvZ2xpbmVzLmNv\nbQp8fGJsb2dsaW5lcy5jb20KfHxibG9nbG92aW4uY29tCnJjb252ZXJzYXRpb24u\nYmxvZ3MuY29tCmJsb2d0ZC5uZXQKLmJsb2d0ZC5vcmcKfGh0dHA6Ly9ibG9ndGQu\nb3JnCnx8Ymxvb2RzaGVkLm5ldAouYmxvb21iZXJnLmNuCnx8Ymxvb21iZXJnLmNu\nCi5ibG9vbWJlcmcuY29tCnx8Ymxvb21iZXJnLmNvbQpibG9vbWJlcmcuZGUKfHxi\nbG9vbWJlcmcuZGUKfHxibG9vbWZvcnR1bmUuY29tCmJsdWVhbmdlbGxpdmUuY29t\nCi5ibWZpbm4uY29tCi5ibmV3cy5jbwp8fGJuZXdzLmNvCnx8Ym5ybWV0YWwuY29t\nCmJvYXJkcmVhZGVyLmNvbS90aHJlYWQKfHxib2FyZHJlYWRlci5jb20KLmJvZC5h\nc2lhCnxodHRwOi8vYm9kLmFzaWEKLmJvZG9nODguY29tCi5ib2xlaHZwbi5uZXQK\nfHxib2xlaHZwbi5uZXQKYm9uYm9ubWUuY29tCi5ib25ib25zZXguY29tCi5ib25m\nb3VuZGF0aW9uLm9yZwouYm9uZ2FjYW1zLmNvbQp8fGJvb2JzdGFncmFtLmNvbQp8\nfGJvb2suY29tLnR3CmJvb2tlcHViLmNvbQp8fGJvb2tzLmNvbS50dwp8fGJvdGFu\nd2FuZy5jb20KLmJvdC5udQouYm93ZW5wcmVzcy5jb20KfHxib3dlbnByZXNzLmNv\nbQp8fGFwcC5ib3guY29tCmRsLmJveC5uZXQKfHxkbC5ib3gubmV0Ci5ib3hwbi5j\nb20KfHxib3hwbi5jb20KYm94dW4uY29tCnx8Ym94dW4uY29tCi5ib3h1bi50dgp8\nfGJveHVuLnR2CmJveHVuYmxvZy5jb20KfHxib3h1bmJsb2cuY29tCi5ib3h1bmNs\ndWIuY29tCmJveWFuZ3UuY29tCi5ib3lmcmllbmR0di5jb20KLmJveXNmb29kLmNv\nbQp8fGJyLnN0Ci5icmFpbnlxdW90ZS5jb20vcXVvdGVzL2F1dGhvcnMvZC9kYWxh\naV9sYW1hCnx8YnJhbmRvbmh1dGNoaW5zb24uY29tCnx8YnJhdW1laXN0ZXIub3Jn\nCi5icmF2b3R1YmUubmV0Cnx8YnJhdm90dWJlLm5ldAouYnJhenplcnMuY29tCnx8\nYnJhenplcnMuY29tCi5icmVhay5jb20KfHxicmVhay5jb20KYnJlYWtnZncuY29t\nCnx8YnJlYWtnZncuY29tCmJyZWFraW5nOTExLmNvbQouYnJlYWtpbmd0d2VldHMu\nY29tCnx8YnJlYWtpbmd0d2VldHMuY29tCnx8YnJlYWt3YWxsLm5ldApicmlpYW4u\nY29tLzY1MTEvZnJlZWdhdGUKLmJyaWVmZHJlYW0uY29tLyVFNyVCNCVBMCVFNiVB\nMyVCQQpicml6emx5LmNvbQp8fGJyaXp6bHkuY29tCnx8YnJrbWQuY29tCmJyb2Fk\nYm9vay5jb20KLmJyb2FkcHJlc3NpbmMuY29tCnx8YnJvYWRwcmVzc2luYy5jb20K\nYmJzLmJyb2NrYmJzLmNvbQpicnVjZXdhbmcubmV0Ci5icnV0YWx0Z3AuY29tCnx8\nYnJ1dGFsdGdwLmNvbQouYnQybWFnLmNvbQp8fGJ0OTUuY29tCi5idGFpYS5jb20K\nLmJ0YnRhdi5jb20KfGh0dHA6Ly9idGRpZ2cub3JnCi5idGt1Lm1lCnx8YnRrdS5t\nZQp8fGJ0a3Uub3JnCi5idHNwcmVhZC5jb20KLmJ0c3luY2tleXMuY29tCi5idWRh\nZWR1Lm9yZwp8fGJ1ZGFlZHUub3JnCi5idWRkaGFuZXQuY29tLnR3L3pmcm9wL3Rp\nYmV0Ci5idWRkaGlzdGNoYW5uZWwudHYKLmJ1ZmZlcmVkLmNvbQp8aHR0cDovL2J1\nZmZlcmVkLmNvbQouYnVsbG9nLm9yZwp8fGJ1bGxvZy5vcmcKLmJ1bGxvZ2dlci5j\nb20KfHxidWxsb2dnZXIuY29tCmJ1bmJ1bmhrLmNvbQouYnVzYXlhcmkuY29tCnxo\ndHRwOi8vYnVzYXlhcmkuY29tCi5idXNpbmVzc2luc2lkZXIuY29tL2JpbmctY291\nbGQtYmUtY2Vuc29yaW5nLXNlYXJjaC1yZXN1bHRzLTIwMTQKLmJ1c2luZXNzaW5z\naWRlci5jb20vY2hpbmEtYmFua3MtcHJlcGFyaW5nLWZvci1kZWJ0LWltcGxvc2lv\nbi0yMDE0Ci5idXNpbmVzc2luc2lkZXIuY29tL2hvbmcta29uZy1hY3RpdmlzdHMt\nZGVmeS1wb2xpY2UtdGVhci1nYXMtYXMtcHJvdGVzdHMtY29udGludWUtb3Zlcm5p\nZ2h0LTIwMTQKLmJ1c2luZXNzaW5zaWRlci5jb20vaW50ZXJuZXQtb3V0YWdlcy1y\nZXBvcnRlZC1pbi1ub3J0aC1rb3JlYS0yMDE0Ci5idXNpbmVzc2luc2lkZXIuY29t\nL2lwaG9uZS02LWlzLWFwcHJvdmVkLWZvci1zYWxlLWluLWNoaW5hLTIwMTQKLmJ1\nc2luZXNzaW5zaWRlci5jb20vbmZsLWFubm91bmNlcnMtc3VyZmFjZS10YWJsZXRz\nLTIwMTQKLmJ1c2luZXNzaW5zaWRlci5jb20vcGFuYW1hLXBhcGVycwouYnVzaW5l\nc3NpbnNpZGVyLmNvbS91bWJyZWxsYS1tYW4taG9uZy1rb25nLTIwMTQKfGh0dHA6\nLy93d3cuYnVzaW5lc3NpbnNpZGVyLmNvbS5hdS8qCi5idXNpbmVzc3dlZWsuY29t\nCi5idXN1Lm9yZy9uZXdzCnxodHRwOi8vYnVzdS5vcmcvbmV3cwpidXN5dHJhZGUu\nY29tCi5idXVnYWEuY29tCi5idXp6aGFuZC5jb20KLmJ1enpoYW5kLm5ldAouYnV6\nem9yYW5nZS5jb20KfHxidXp6b3JhbmdlLmNvbQp8fGJ2cG4uY29tCmJ3c2ouaGsK\nfHxieC50bAoKIS0tLS0tLS0tLS0tLS0tLS0tLS0tQ0MtLS0tLS0tLS0tLS0tLS0t\nLS0tLS0tLS0tCi5jLXNwYW52aWRlby5vcmcKfHxjLXNwYW52aWRlby5vcmcKfHxj\nLWVzdC1zaW1wbGUuY29tCi5jMTAwdGliZXQub3JnCnx8Y2FibGVnYXRlc2VhcmNo\nLm5ldAouY2FjaGluZXNlLmNvbQouY2FjbncuY29tCnxodHRwOi8vY2FjbncuY29t\nCi5jYWN0dXN2cG4uY29tCnx8Y2FjdHVzdnBuLmNvbQouY2FmZXByZXNzLmNvbQou\nY2Foci5vcmcudHcKLmNhbGFtZW8uY29tL2Jvb2tzCmNuLmNhbGFtZW8uY29tCnxo\ndHRwOi8vY24uY2FsYW1lby5jb20KLmNhbGdhcnljaGluZXNlLmNhCi5jYWxnYXJ5\nY2hpbmVzZS5jb20KLmNhbGdhcnljaGluZXNlLm5ldAp8aHR0cDovL2Jsb2cuY2Fs\naWJyZS1lYm9vay5jb20KfGh0dHA6Ly9nb29nbGUuY2Fsc3RhdGUuZWR1CmZhbHVu\nLmNhbHRlY2guZWR1Ci5pdHMuY2FsdGVjaC5lZHUvfmZhbHVuLwouY2FtNC5jb20K\nLmNhbTQuanAKLmNhbTQuc2cKLmNhbWZyb2cuY29tCnx8Y2FtZnJvZy5jb20KfHxj\nYW1zLmNvbQouY2Ftcy5vcmcuc2cKY2FuYWRhbWVldC5jb20KLmNhbmFscG9ybm8u\nY29tCnxodHRwOi8vYmJzLmNhbnRvbmVzZS5hc2lhLwohLS1odHRwOi8vd3d3LmNh\nbnRvbmVzZS5hc2lhL2FjdGlvbi1iYnMuaHRtbAouY2FueXUub3JnCnx8Y2FueXUu\nb3JnCi5jYW8uaW0KLmNhb2JpYW4uaW5mbwp8fGNhb2JpYW4uaW5mbwpjYW9jaGFu\nZ3FpbmcuY29tCnx8Y2FvY2hhbmdxaW5nLmNvbQouY2FwLm9yZy5oawp8fGNhcC5v\ncmcuaGsKLmNhcmFiaW5hc3lwaXN0b2xhcy5jb20KY2FyZGluYWxrdW5nZm91bmRh\ndGlvbi5vcmcKY2FybW90b3JzaG93LmNvbQpzcy5jYXJyeXpob3UuY29tCi5jYXJ0\nb29ubW92ZW1lbnQuY29tCnx8Y2FydG9vbm1vdmVtZW50LmNvbQouY2FzYWRlbHRp\nYmV0YmNuLm9yZwouY2FzYXRpYmV0Lm9yZy5teAp8aHR0cDovL2Nhc2F0aWJldC5v\ncmcubXgKY2FyaS5jb20ubXkKfHxjYXJpYmJlYW5jb20uY29tCi5jYXNpbm9raW5n\nLmNvbQouY2FzaW5vcml2YS5jb20KfHxjYXRjaDIyLm5ldAouY2F0Y2hnb2QuY29t\nCnxodHRwOi8vY2F0Y2hnb2QuY29tCnx8Y2F0ZmlnaHRwYXlwZXJ2aWV3Lnh4eAou\nY2F0aG9saWMub3JnLmhrCnx8Y2F0aG9saWMub3JnLmhrCmNhdGhvbGljLm9yZy50\ndwp8fGNhdGhvbGljLm9yZy50dwouY2F0aHZvaWNlLm9yZy50dwp8fGNhdHR0LmNv\nbQouY2JjLmNhCnx8Y2JjLmNhCi5jYnNuZXdzLmNvbS92aWRlbwouY2J0Yy5vcmcu\naGsKIS0uY2NjLmRlCiEtfHxjY2MuZGUKfHxjY2NhdC5jYwp8fGNjY2F0LmNvCi5j\nY2R0ci5vcmcKfHxjY2R0ci5vcmcKLmNjaGVyZS5jb20KfHxjY2hlcmUuY29tCi5j\nY2ltLm9yZwouY2NsaWZlLmNhCmNjbGlmZS5vcmcKY2NsaWZlZmwub3JnCi5jY3Ro\nZXJlLmNvbQp8fGNjdGhlcmUuY29tCi5jY3Rtd2ViLm5ldAouY2N0b25nYmFvLmNv\nbS9hcnRpY2xlLzIwNzg3MzIKY2N1ZS5jYQpjY3VlLmNvbQouY2N2b2ljZS5jYQou\nY2N3Lm9yZy50dwouY2dkZXBvdC5vcmcKfGh0dHA6Ly9jZ2RlcG90Lm9yZwp8fGNk\nYm9vay5vcmcKLmNkY3BhcnR5LmNvbQouY2RlZi5vcmcKfHxjZGVmLm9yZwp8fGNk\naWcuaW5mbwpjZGpwLm9yZwp8fGNkanAub3JnCi5jZG4tYXBwbGUuY29tCnx8Y2Ru\nLWFwcGxlLmNvbQouY2RuZXdzLmNvbS50dwpjZHAxOTg5Lm9yZwpjZHAxOTk4Lm9y\nZwp8fGNkcDE5OTgub3JnCmNkcDIwMDYub3JnCnx8Y2RwMjAwNi5vcmcKLmNkcGEu\ndXJsLnR3CmNkcGV1Lm9yZwpjZHB1c2Eub3JnCmNkcHdlYi5vcmcKfHxjZHB3ZWIu\nb3JnCmNkcHd1Lm9yZwp8fGNkcHd1Lm9yZwp8fGNkdy5jb20KLmNlY2MuZ292Cnx8\nY2VjYy5nb3YKfHxjZWxsdWxvLmluZm8KfHxjZW5ld3MuZXUKfHxjZW50ZXJmb3Jo\ndW1hbnJlcHJvZC5jb20KfHxjZW50cmFsbmF0aW9uLmNvbQouY2VudHVyeXMubmV0\nCnxodHRwOi8vY2VudHVyeXMubmV0Ci5jZmhrcy5vcmcuaGsKLmNmb3MuZGUKLmNm\ndGZjLmNvbQouY2dzdC5lZHUKLmNoYW5nZS5vcmcKfHxjaGFuZ2Uub3JnCi5jaGFu\nZ3AuY29tCnx8Y2hhbmdwLmNvbQouY2hhbmdzYS5uZXQKfGh0dHA6Ly9jaGFuZ3Nh\nLm5ldAouY2hhbm5lbDhuZXdzLnNnL25ld3M4Ci5jaGFwbTI1LmNvbQouY2hhdHVy\nYmF0ZS5jb20KLmNodWFuZy15ZW4ub3JnCmNoZW5nbWluZ21hZy5jb20KLmNoZW5n\ndWFuZ2NoZW5nLmNvbQp8fGNoZW5ndWFuZ2NoZW5nLmNvbQouY2hlbnBva29uZy5j\nb20KLmNoZW5wb2tvbmcubmV0CnxodHRwOi8vY2hlbnBva29uZy5uZXQKfHxjaGVy\ncnlzYXZlLmNvbQouY2hob25nYmkub3JnCmNoaWNhZ29uY210di5jb20KfGh0dHA6\nLy9jaGljYWdvbmNtdHYuY29tCi5jaGluYS13ZWVrLmNvbQpjaGluYTEwMS5jb20K\nfHxjaGluYTEwMS5jb20KfHxjaGluYTE4Lm9yZwp8fGNoaW5hMjEuY29tCmNoaW5h\nMjEub3JnCnx8Y2hpbmEyMS5vcmcKLmNoaW5hNTAwMC51cwpjaGluYWFmZmFpcnMu\nb3JnCnx8Y2hpbmFhZmZhaXJzLm9yZwp8fGNoaW5hYWlkLm1lCmNoaW5hYWlkLnVz\nCmNoaW5hYWlkLm9yZwpjaGluYWFpZC5uZXQKY2hpbmFjb21tZW50cy5vcmcKfHxj\naGluYWNvbW1lbnRzLm9yZwouY2hpbmFjaGFuZ2Uub3JnCnx8Y2hpbmFjaGFuZ2Uu\nb3JnCmNoaW5hY2hhbm5lbC5oawp8fGNoaW5hY2hhbm5lbC5oawouY2hpbmFjaXR5\nbmV3cy5iZQouY2hpbmFkaWFsb2d1ZS5uZXQKLmNoaW5hZGlnaXRhbHRpbWVzLm5l\ndAp8fGNoaW5hZGlnaXRhbHRpbWVzLm5ldAouY2hpbmFlbGVjdGlvbnMub3JnCnx8\nY2hpbmFlbGVjdGlvbnMub3JnCi5jaGluYWV3ZWVrbHkuY29tCnx8Y2hpbmFld2Vl\na2x5LmNvbQp8fGNoaW5hZnJlZXByZXNzLm9yZwouY2hpbmFnYXRlLmNvbQpjaGlu\nYWdlZWtzLm9yZwpjaGluYWdmdy5vcmcKfHxjaGluYWdmdy5vcmcKLmNoaW5hZ29u\nZXQuY29tCi5jaGluYWdyZWVucGFydHkub3JnCnx8Y2hpbmFncmVlbnBhcnR5Lm9y\nZwouY2hpbmFob3Jpem9uLm9yZwp8fGNoaW5haG9yaXpvbi5vcmcKLmNoaW5haHVz\naC5jb20KLmNoaW5haW5wZXJzcGVjdGl2ZS5jb20KfHxjaGluYWludGVyaW1nb3Yu\nb3JnCmNoaW5hbGFib3J3YXRjaC5vcmcKY2hpbmFsYXd0cmFuc2xhdGUuY29tCi5j\naGluYXBvc3QuY29tLnR3L3RhaXdhbi9uYXRpb25hbC9uYXRpb25hbC1uZXdzCmNo\naW5heGNoaW5hLmNvbS9ob3d0bwpjaGluYWxhd2FuZHBvbGljeS5jb20KLmNoaW5h\nbXVsZS5jb20KfHxjaGluYW11bGUuY29tCmNoaW5hbXoub3JnCi5jaGluYXByZXNz\nLmNvbS5teQp8fGNoaW5hcHJlc3MuY29tLm15Ci5jaGluYS1yZXZpZXcuY29tLnVh\nCnxodHRwOi8vY2hpbmEtcmV2aWV3LmNvbS51YQouY2hpbmFyaWdodHNpYS5vcmcK\nY2hpbmFzbWlsZS5uZXQvZm9ydW1zCmNoaW5hc29jaWFsZGVtb2NyYXRpY3BhcnR5\nLmNvbQp8fGNoaW5hc29jaWFsZGVtb2NyYXRpY3BhcnR5LmNvbQpjaGluYXNvdWwu\nb3JnCnx8Y2hpbmFzb3VsLm9yZwouY2hpbmFzdWNrcy5uZXQKLmNoaW5hdGltZXMu\nY29tL3JlYWx0aW1lbmV3cy8yNjA0MDkvCnx8Y2hpbmF0b3BzZXguY29tCi5jaGlu\nYXRvd24uY29tLmF1CmNoaW5hdHdlZXBzLmNvbQpjaGluYXdheS5vcmcKLmNoaW5h\nd29ya2VyLmluZm8KfHxjaGluYXdvcmtlci5pbmZvCmNoaW5heW91dGgub3JnLmhr\nCmNoaW5heXVhbm1pbi5vcmcKfHxjaGluYXl1YW5taW4ub3JnCi5jaGluZXNlLWhl\ncm1pdC5uZXQKY2hpbmVzZS1sZWFkZXJzLm9yZwpjaGluZXNlLW1lbW9yaWFsLm9y\nZwouY2hpbmVzZWRhaWx5LmNvbQp8fGNoaW5lc2VkYWlseW5ld3MuY29tCi5jaGlu\nZXNlZGVtb2NyYWN5LmNvbQp8fGNoaW5lc2VkZW1vY3JhY3kuY29tCnx8Y2hpbmVz\nZWdheS5vcmcKLmNoaW5lc2VuLmRlCnx8Y2hpbmVzZW4uZGUKLmNoaW5lc2VuZXdz\nLm5ldC5hdS8KLmNoaW5lc2VwZW4ub3JnCi5jaGluZXNldGFsa3MubmV0L2NoCnx8\nY2hpbmVzZXVwcmVzcy5jb20KLmNoaW5nY2hlb25nLmNvbQp8fGNoaW5nY2hlb25n\nLmNvbQouY2hpbm1hbi5uZXQKfGh0dHA6Ly9jaGlubWFuLm5ldApjaGl0aHUub3Jn\nCnxodHRwOi8vY2huLmNob3N1bi5jb20KY25uZXdzLmNob3N1bi5jb20vY2xpZW50\nL25ld3Mvdml3LmFzcD9jYXRlPUMwMSZtY2F0ZQouY2hyZG5ldC5jb20KfGh0dHA6\nLy9jaHJkbmV0LmNvbQouY2hyaXN0aWFuZnJlZWRvbS5vcmcKfGh0dHA6Ly9jaHJp\nc3RpYW5mcmVlZG9tLm9yZwpjaHJpc3RpYW5zdHVkeS5jb20KfHxjaHJpc3RpYW5z\ndHVkeS5jb20KY2hyaXN0dXNyZXgub3JnL3d3dzEvc2RjCi5jaHVib2xkLmNvbQpj\naHVidW4uY29tCmNodWl6aS5uZXQKY2hyaXN0aWFudGltZXMub3JnLmhrCi5jaHJs\nYXd5ZXJzLmhrCnxodHRwOi8vY2hybGF3eWVycy5oawouY2h1cmNoaW5ob25na29u\nZy5vcmcvYjUvaW5kZXgucGhwCnxodHRwOi8vY2h1cmNoaW5ob25na29uZy5vcmcv\nYjUvaW5kZXgucGhwCi5jaHVzaGlnYW5nZHJ1Zy5jaAouY2llbmVuLmNvbQouY2lu\nZWFzdGVudHJlZmYuZGUKLmNpcGZnLm9yZwp8fGNpcmNsZXRoZWJheWZvcnRpYmV0\nLm9yZwp8fGNpcm9zYW50aWxsaS5jb20KLmNpdGl6ZW5jbi5jb20KfHxjaXRpemVu\nY24uY29tCnxodHRwOi8vY2l0aXplbmxhYi5vcmcKfGh0dHA6Ly93d3cuY2l0aXpl\nbmxhYi5vcmcKfHxjaXRpemVuc2NvbW1pc3Npb24uaGsKLmNpdGl6ZW5sYWIub3Jn\nCmNpdGl6ZW5zcmFkaW8ub3JnCi5jaXR5MzY1LmNhCnxodHRwOi8vY2l0eTM2NS5j\nYQpjaXR5OXguY29tCnx8Y2l0eXBvcHVsYXRpb24uZGUKLmNpdHl0YWxrLnR3L2V2\nZW50Ci5jaXZpY3BhcnR5LmhrCnx8Y2l2aWNwYXJ0eS5oawouY2l2aWxkaXNvYmVk\naWVuY2Vtb3ZlbWVudC5vcmcKY2l2aWxocmZyb250Lm9yZwp8fGNpdmlsaHJmcm9u\ndC5vcmcKLmNpdmlsaWFuZ3VubmVyLmNvbQouY2l2aWxtZWRpYS50dwp8fGNpdmls\nbWVkaWEudHcKcHNpcGhvbi5jaXZpc2VjLm9yZwp8fHZwbi5jamIubmV0Ci5jazEw\nMS5jb20KfHxjazEwMS5jb20KLmNsYXJpb25wcm9qZWN0Lm9yZy9uZXdzL2lzbGFt\naWMtc3RhdGUtaXNpcy1pc2lsLXByb3BhZ2FuZGEKfHxjbGFzc2ljYWxndWl0YXJi\nbG9nLm5ldAouY2xiLm9yZy5oawpjbGVhcmhhcm1vbnkubmV0CmNsZWFyd2lzZG9t\nLm5ldApjbGluaWNhLXRpYmV0LnJ1Ci5jbGlwZmlzaC5kZQpjbG9ha3BvaW50LmNv\nbQp8fGNsdWIxMDY5LmNvbQpjbWkub3JnLnR3CnxodHRwOi8vd3d3LmNtb2luYy5v\ncmcKY21wLmhrdS5oawpoa3Vwb3AuaGt1LmhrCnx8Y211bGUuY29tCnx8Y211bGUu\nb3JnCnx8Y21zLmdvdgp8aHR0cDovL3Zwbi5jbXUuZWR1CnxodHRwOi8vdnBuLnN2\nLmNtdS5lZHUKLmNuNi5ldQouY25hLmNvbS50dwp8fGNuYS5jb20udHcKLmNuYWJj\nLmNvbQouY25kLm9yZwp8fGNuZC5vcmcKZG93bmxvYWQuY25ldC5jb20KLmNuZXgu\nb3JnLmNuCi5jbmluZXUuY29tCndpa2kuY25pdHRlci5jb20KLmNubi5jb20vdmlk\nZW8KLmNucG9saXRpY3Mub3JnCnx8Y25wb2xpdGljcy5vcmcKLmNuLXByb3h5LmNv\nbQp8aHR0cDovL2NuLXByb3h5LmNvbQouY25wcm94eS5jb20KYmxvZy5jbnllcy5j\nb20KbmV3cy5jbnllcy5jb20KfHxjb2F0LmNvLmpwCi5jb2NoaW5hLmNvCnx8Y29j\naGluYS5jbwp8fGNvY2hpbmEub3JnCi5jb2RlMTk4NC5jb20vNjQKfGh0dHA6Ly9n\nb2FnZW50LmNvZGVwbGV4LmNvbQp8fGNvZGVzaGFyZS5pbwp8fGNvZGVza3VscHRv\nci5vcmcKfGh0dHA6Ly90b3NoLmNvbWVkeWNlbnRyYWwuY29tCmNvbWVmcm9tY2hp\nbmEuY29tCnx8Y29tZWZyb21jaGluYS5jb20KLmNvbWljLW1lZ2EubWUKY29tbWFu\nZGFybXMuY29tCnx8Y29tbWVudHNoay5jb20KLmNvbW11bmlzdGNyaW1lcy5vcmcK\nfHxjb21tdW5pc3RjcmltZXMub3JnCnx8Y29tbXVuaXR5Y2hvaWNlY3UuY29tCnx8\nY29tcGlsZWhlYXJ0LmNvbQp8fGNvbm9oYS5qcAouY29udGFjdG1hZ2F6aW5lLm5l\ndAouY29udmlvLm5ldAouY29vYmF5LmNvbQp8aHR0cDovL3d3dy5jb29sMTguY29t\nL2JicyovCi5jb29sYWxlci5jb20KfHxjb29sYWxlci5jb20KY29vbGRlci5jb20K\nfHxjb29sZGVyLmNvbQp8fGNvb2xsb3VkLm9yZy50dwouY29vbG5jdXRlLmNvbQp8\nfGNvb2xzdHVmZmluYy5jb20KY29ydW1jb2xsZWdlLmNvbQouY29zLW1vZS5jb20K\nfGh0dHA6Ly9jb3MtbW9lLmNvbQouY29zcGxheWphdi5wbAp8aHR0cDovL2Nvc3Bs\nYXlqYXYucGwKLmNvdHdlZXQuY29tCnx8Y290d2VldC5jb20KLmNvdXJzZWhlcm8u\nY29tCnx8Y291cnNlaGVyby5jb20KY3BqLm9yZwp8fGNwai5vcmcKLmNxOTkudXMK\nfGh0dHA6Ly9jcTk5LnVzCmNyYWNrbGUuY29tCnx8Y3JhY2tsZS5jb20KLmNyYXp5\ncy5jYwouY3JhenlzaGl0LmNvbQp8fGNyY2hpbmEub3JnCmNyZC1uZXQub3JnCmNy\nZWFkZXJzLm5ldAp8fGNyZWFkZXJzLm5ldAouY3JlYWRlcnNuZXQuY29tCnx8Y3Jp\nc3R5bGkuY29tCi5jcm9jb3R1YmUuY29tCnxodHRwOi8vY3JvY290dWJlLmNvbQou\nY3Jvc3N0aGV3YWxsLm5ldAp8fGNyb3NzdGhld2FsbC5uZXQKLmNyb3NzdnBuLm5l\ndAp8fGNyb3NzdnBuLm5ldAp8fGNydWNpYWwuY29tCmNzZHBhcnR5LmNvbQp8fGNz\nZHBhcnR5LmNvbQp8fGNzdWNoZW4uZGUKLmNzdy5vcmcudWsKLmN0Lm9yZy50dwp8\nfGN0Lm9yZy50dwouY3Rhby5vcmcKLmN0ZnJpZW5kLm5ldAouY3RpdHYuY29tLnR3\nCmN0cy5jb20udHcKfGh0dHA6Ly9saWJyYXJ5LnVzYy5jdWhrLmVkdS5oay8KfGh0\ndHA6Ly9tamxzaC51c2MuY3Voay5lZHUuaGsvCi5jdWhrYWNzLm9yZy9+YmVubmcK\nLmN1aWh1YS5vcmcKfHxjdWlodWEub3JnCi5jdWl3ZWlwaW5nLm5ldAp8fGN1aXdl\naXBpbmcubmV0Cnx8Y3VsdHVyZS50dwouY3VtbG91ZGVyLmNvbQp8fGN1bWxvdWRl\nci5jb20KfHxjdXJ2ZWZpc2guY29tCi5jdXN1LmhrCnx8Y3VzdS5oawouY3V0c2Nl\nbmVzLm5ldAouY3cuY29tLnR3Cnx8Y3cuY29tLnR3CnxodHRwOi8vZm9ydW0uY3li\nZXJjdG0uY29tCmN5YmVyZ2hvc3R2cG4uY29tCnx8Y3liZXJnaG9zdHZwbi5jb20K\nfHxjeW5zY3JpYmUuY29tCmN5dG9kZS51cwp8fGlmYW4uY3ouY2MKfHxtaWtlLmN6\nLmNjCnx8bmljLmN6LmNjCgohLS0tLS0tLS0tLS0tLS0tLS0tLS1ERC0tLS0tLS0t\nLS0tLS0tLS0tLS0tLS0tLS0KLmQtZnVreXUuY29tCnxodHRwOi8vZC1mdWt5dS5j\nb20KY2wuZDB6Lm5ldAouZDEwMC5uZXQKfHxkMTAwLm5ldAouZDJiYXkuY29tCnxo\ndHRwOi8vZDJiYXkuY29tCi5kYWJyLmNvLnVrCnx8ZGFici5jby51awpkYWJyLmV1\nCmRhYnIubW9iaQp8fGRhYnIubW9iaQp8fGRhYnIubWUKZGFkYXppbS5jb20KfHxk\nYWRhemltLmNvbQouZGFkaTM2MC5jb20KLmRhZmFiZXQuY29tCmRhZmFnb29kLmNv\nbQpkYWZhaGFvLmNvbQouZGFmb2gub3JnCi5kYWZ0cG9ybi5jb20KLmRhZ2VsaWpr\nc2VzdGFuZGFhcmQubmwKLmRhaWRvc3R1cC5ydQp8aHR0cDovL2RhaWRvc3R1cC5y\ndQouZGFpbGlkYWlsaS5jb20KfHxkYWlsaWRhaWxpLmNvbQouZGFpbHltb3Rpb24u\nY29tCnx8ZGFpbHltb3Rpb24uY29tCmRhaXBoYXBpbmZvLm5ldAouZGFqaXl1YW4u\nY29tCnx8ZGFqaXl1YW4uZGUKZGFqaXl1YW4uZXUKZGFsYWlsYW1hLmNvbQouZGFs\nYWlsYW1hLm1uCnxodHRwOi8vZGFsYWlsYW1hLm1uCi5kYWxhaWxhbWEucnUKfHxk\nYWxhaWxhbWEucnUKZGFsYWlsYW1hODAub3JnCi5kYWxhaWxhbWEtYXJjaGl2ZXMu\nb3JnCi5kYWxhaWxhbWFjZW50ZXIub3JnCnxodHRwOi8vZGFsYWlsYW1hY2VudGVy\nLm9yZwpkYWxhaWxhbWFmZWxsb3dzLm9yZwouZGFsYWlsYW1hZmlsbS5jb20KLmRh\nbGFpbGFtYWZvdW5kYXRpb24ub3JnCi5kYWxhaWxhbWFoaW5kaS5jb20KLmRhbGFp\nbGFtYWluYXVzdHJhbGlhLm9yZwouZGFsYWlsYW1hamFwYW5lc2UuY29tCi5kYWxh\naWxhbWFwcm90ZXN0ZXJzLmluZm8KLmRhbGFpbGFtYXF1b3Rlcy5vcmcKLmRhbGFp\nbGFtYXRydXN0Lm9yZwouZGFsYWlsYW1hdmlzaXQub3JnLm56Ci5kYWxhaWxhbWF3\nb3JsZC5jb20KfHxkYWxhaWxhbWF3b3JsZC5jb20KZGFsaWFubWVuZy5vcmcKfHxk\nYWxpYW5tZW5nLm9yZwouZGFsaXVsaWFuLm9yZwp8fGRhbGl1bGlhbi5vcmcKLmRh\nbmtlNGNoaW5hLm5ldAp8fGRhbmtlNGNoaW5hLm5ldAouZGFud2VpLm9yZwpkYW9s\nYW4ubmV0Ci5kYW96aG9uZ3hpbmcub3JnCmRhcmt0b3kubmV0Cnx8ZGFzdHJhc3Np\nLm9yZwpibG9nLmRhdW0ubmV0L19ibG9nCi5kYXZpZC1raWxnb3VyLmNvbQp8aHR0\ncDovL2RhdmlkLWtpbGdvdXIuY29tCmRheGEuY24KfHxkYXhhLmNuCmNuLmRheWFi\nb29rLmNvbQouZGF5bGlmZS5jb20vdG9waWMvZGFsYWlfbGFtYQp8fGRiLnR0Ci5k\nYmMuaGsvbWFpbgp8fGRjYXJkLnR3CmRjbWlsaXRhcnkuY29tCi5kZGMuY29tLnR3\nCi5kZGh3LmluZm8KfHxkZS1zY2kub3JnCi5kZS1zY2kub3JnCnBhY2thZ2VzLmRl\nYmlhbi5vcmcvemgtY24vbGVubnkvZ3Bhc3MKfHxkZWNvZGV0LmNvCgohLS1Pcmln\naW46Y2RuLWkzMCRfCiEtLUV4Y2VwdGlvbjogSG9tZXBhZ2UgYWNjZXNzIHdpdGhv\ndXQgcnN0CiEtLUtleXdvcmQgaXMgJF8KLmRlZmluZWJhYmUuY29tCgp8fGRlbGNh\nbXAubmV0CmRlbGljaW91cy5jb20vR0ZXYm9va21hcmsKLmRlbW9jcmF0cy5vcmcK\nfHxkZW1vY3JhdHMub3JnCnx8ZGVzYy5zZQp8fGRlc3NjaS5jb20KLmRlc3Ryb3kt\nY2hpbmEuanAKfHxkZXV0c2NoZS13ZWxsZS5kZQohLS18fGRldmlhbnRhcnQuY29t\nCiEtLXx8ZGV2aWFudGFydC5uZXQKfHxkZXZpby51cwp8fGRldnBuLmNvbQp8fGRm\nYXMubWlsCmRmbi5vcmcKZGhhcm1ha2FyYS5uZXQKLmRoYXJhbXNhbGFuZXQuY29t\nCi5kaWFveXVpc2xhbmRzLm9yZwp8fGRpYW95dWlzbGFuZHMub3JnCi5kaWZhbmd3\nZW5nZS5vcmcKfGh0dHA6Ly9kaWdpbGFuZC50dy8KfHxkaWdpdGFsbm9tYWRzcHJv\namVjdC5vcmcKLmRpaWdvLmNvbQp8fGRpaWdvLmNvbQp8fGRpbGJlci5zZQp8fGZ1\ncmwubmV0Ci5kaXBpdHkuY29tCnx8ZGlyZWN0Y3JlYXRpdmUuY29tCiEtLXx8ZGlz\nY29ncy5jb20KIS0tQEB8fGNkbi5kaXNjb2dzLmNvbQp8aHR0cHM6Ly9zZWFyY2gu\nZGlzY29ubmVjdC5tZQouZGlzY3Vzcy5jb20uaGsKfHxkaXNjdXNzLmNvbS5oawou\nZGlzY3VzczR1LmNvbQpkaXNwLmNjCi5kaXNxdXMuY29tCnx8ZGlzcXVzLmNvbQou\nZGl0LWluYy51cwp8fGRpdC1pbmMudXMKLmRpemhpZGl6aGkuY29tCnx8ZGl6aHV6\naGlzaGFuZy5jb20KZGphbmdvc25pcHBldHMub3JnCi5kam9yei5jb20KfHxkam9y\nei5jb20KfHxkbC1sYWJ5LmpwCnx8ZGxzaXRlLmNvbQp8fGRseW91dHViZS5jb20K\nfHxkbWNkbi5uZXQKLmRuc2NyeXB0Lm9yZwp8fGRuc2NyeXB0Lm9yZwp8fGRuczJn\nby5jb20KfHxkbnNzZWMubmV0CmRvY3RvcnZvaWNlLm9yZwoKIS0tRG9nRmFydE5l\ndHdvcmsKLmRvZ2ZhcnRuZXR3b3JrLmNvbS90b3VyCmdsb3J5aG9sZS5jb20KCi5k\nb2ppbi5jb20KLmRvay1mb3J1bS5uZXQKfHxkb2xjLmRlCnx8ZG9sZi5vcmcuaGsK\nfHxkb2xsZi5jb20KLmRvbWFpbi5jbHViLnR3Ci5kb21haW50b2RheS5jb20uYXUK\nY2hpbmVzZS5kb25nYS5jb20KZG9uZ3RhaXdhbmcuY29tCnx8ZG9uZ3RhaXdhbmcu\nY29tCi5kb25ndGFpd2FuZy5uZXQKfHxkb25ndGFpd2FuZy5uZXQKLmRvbmd5YW5n\namluZy5jb20KfGh0dHA6Ly9kYW5ib29ydS5kb25tYWkudXMKLmRvbnRmaWx0ZXIu\ndXMKfHxkb250bW92ZXRvY2hpbmEuY29tCi5kb3JqZXNodWdkZW4uY29tCi5kb3Rw\nbGFuZS5jb20KfHxkb3RwbGFuZS5jb20KfHxkb3RzdWIuY29tCi5kb3R2cG4uY29t\nCnx8ZG90dnBuLmNvbQouZG91Yi5pbwp8fGRvdWIuaW8KfHxkb3Vnc2NyaXB0cy5j\nb20KfHxkb3Vob2thbmtvLm5ldAp8fGRvdWppbmNhZmUuY29tCmRvd2VpLm9yZwpk\ncGhrLm9yZwpkcHAub3JnLnR3Cnx8ZHBwLm9yZy50dwp8fGRwci5pbmZvCnx8ZHJh\nZ29uc3ByaW5ncy5vcmcKIS0tfHxkcmF3LmlvCi5kcmVhbWFtYXRldXJzLmNvbQou\nZHJlcHVuZy5vcmcKfHxkcmdhbi5uZXQKLmRybWluZ3hpYS5vcmcKfGh0dHA6Ly9k\ncm1pbmd4aWEub3JnCnx8ZHJvcGJvb2tzLnR2Cnx8ZHJvcGJveC5jb20KfHxhcGku\nZHJvcGJveGFwaS5jb20KfHxub3RpZnkuZHJvcGJveGFwaS5jb20KfHxkcm9wYm94\ndXNlcmNvbnRlbnQuY29tCmRyc3VuYWNhZGVteS5jb20KLmRydHViZXIuY29tCi5k\nc2NuLmluZm8KfGh0dHA6Ly9kc2NuLmluZm8KLmRzdGsuZGsKfGh0dHA6Ly9kc3Rr\nLmRrCnx8ZHRpYmxvZy5jb20KfHxkdGljLm1pbAouZHR3YW5nLm9yZwouZHVhbnpo\naWh1LmNvbQouZHVja2Rucy5vcmcKfGh0dHA6Ly9kdWNrZG5zLm9yZwouZHVja2R1\nY2tnby5jb20KfHxkdWNrZHVja2dvLmNvbQouZHVja2xvYWQuY29tL2Rvd25sb2Fk\nCnx8ZHVja215bGlmZS5jb20KLmR1Z2EuanAKfGh0dHA6Ly9kdWdhLmpwCi5kdWlo\ndWEub3JnCnx8ZHVpaHVhLm9yZwp8fGR1aWh1YWhyam91cm5hbC5vcmcKLmR1bnlh\nYnVsdGVuaS5uZXQKLmR1b3dlaXRpbWVzLmNvbQp8fGR1b3dlaXRpbWVzLmNvbQpk\ndXBpbmcubmV0Cnx8ZHVwbGljYXRpLmNvbQpkdXBvbGEuY29tCmR1cG9sYS5uZXQK\nLmR1c2hpLmNhCnx8ZHZvcmFrLm9yZwouZHcuY29tCnx8ZHcuY29tCnx8ZHcuZGUK\nLmR3LXdvcmxkLmNvbQp8fGR3LXdvcmxkLmNvbQouZHctd29ybGQuZGUKfGh0dHA6\nLy9kdy13b3JsZC5kZQp3d3cuZHdoZWVsZXIuY29tCmR3bmV3cy5jb20KfHxkd25l\nd3MuY29tCmR3bmV3cy5uZXQKfHxkd25ld3MubmV0Cnh5cy5keGlvbmcuY29tCnx8\nZHluYXdlYmluYy5jb20KLmR6emUuY29tCgohLS0tLS0tLS0tLS0tLS0tLS0tLS1F\nRS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KfHxlLWNsYXNzaWNhbC5jb20udHcK\nfHxlLWdvbGQuY29tCi5lLWdvbGQuY29tCi5lLWhlbnRhaS5vcmcKfHxlLWhlbnRh\naS5vcmcKLmUtaGVudGFpZGIuY29tCnxodHRwOi8vZS1oZW50YWlkYi5jb20KZS1p\nbmZvLm9yZy50dwouZS10cmFkZXJsYW5kLm5ldC9ib2FyZAouZS16b25lLmNvbS5o\nay9kaXNjdXoKfGh0dHA6Ly9lLXpvbmUuY29tLmhrL2Rpc2N1egouZTEyMy5oawp8\nfGUxMjMuaGsKLmVhcmx5dGliZXQuY29tCnxodHRwOi8vZWFybHl0aWJldC5jb20K\nLmVhcnRoY2FtLmNvbQouZWFydGh2cG4uY29tCnx8ZWFydGh2cG4uY29tCmVhc3Rl\ncm4tYXJrLmNvbQouZWFzdGVybmxpZ2h0bmluZy5vcmcKLmVhc3R0dXJrZXN0YW4u\nY29tCnxodHRwOi8vd3d3LmVhc3R0dXJraXN0YW4ubmV0LwouZWFzdHR1cmtpc3Rh\nbi1nb3Yub3JnCi5lYXN0dHVya2lzdGFuY2Mub3JnCi5lYXN0dHVya2lzdGFuZ292\nZXJubWVudGluZXhpbGUudXMKfHxlYXN0dHVya2lzdGFuZ292ZXJubWVudGluZXhp\nbGUudXMKLmVhc3ljYS5jYQouZWFzeXBpYy5jb20KLmVib255LWJlYXV0eS5jb20K\nZWJvb2ticm93c2UuY29tCmVib29rZWUuY29tCnx8ZWNmYS5vcmcudHcKdXNodWFy\nZW5jaXR5LmVjaGFpbmhvc3QuY29tCnx8ZWNpbWcudHcKZWNtaW5pc3RyeS5uZXQK\nLmVjb25vbWlzdC5jb20KYmJzLmVjc3RhcnQuY29tCmVkZ2VjYXN0Y2RuLm5ldAp8\nfGVkZ2VjYXN0Y2RuLm5ldAovdHdpbWdcLmVkZ2VzdWl0ZVwubmV0XC9cLz9hcHBs\nZWRhaWx5LwplZGljeXBhZ2VzLmNvbQouZWRtb250b25jaGluYS5jbgouZWRtb250\nb25zZXJ2aWNlLmNvbQplZG9vcnMuY29tCi5lZHVicmlkZ2UuY29tCnx8ZWR1YnJp\nZGdlLmNvbQouZWR1cHJvLm9yZwp8fGVldnBuLmNvbQplZmNjLm9yZy5oawouZWZ1\na3QuY29tCnxodHRwOi8vZWZ1a3QuY29tCnx8ZWljLWF2LmNvbQp8fGVpcmVpbmlr\nb3RhZXJ1a2FpLmNvbQouZWlzYmIuY29tCi5la3Npc296bHVrLmNvbQp8fGVrc2lz\nb3psdWsuY29tCmVsZWN0aW9uc21ldGVyLmNvbQp8fGVsZ29vZy5pbQouZWxwYWlz\nLmNvbQp8fGVscGFpcy5jb20KLmVsdG9uZGlzbmV5LmNvbQouZW1hZ2EuY29tL2lu\nZm8vMzQwNwplbWlseWxhdS5vcmcuaGsKLmVtYW5uYS5jb20vY2hpbmVzZVRyYWRp\ndGlvbmFsCmJpdGMuYm1lLmVtb3J5LmVkdS9+bHpob3UvYmxvZ3MKLmVtcGZpbC5j\nb20KLmVtdWxlLWVkMmsuY29tCnxodHRwOi8vZW11bGUtZWQyay5jb20KLmVtdWxl\nZmFucy5jb20KfGh0dHA6Ly9lbXVsZWZhbnMuY29tCi5lbXVwYXJhZGlzZS5tZQou\nZW5hbnlhbmcubXkKIS0tLmVuYW55YW5nLm15L25ld3MvMjAxNzA1MDIvJUU3JUJF\nJThFJUU1JTlCJUJEJUU0JUI5JThCJUU5JTlGJUIzJUU1JUE0JUE3JUU1JTlDJUIw\nJUU5JTlDJTg3JUUzJTgwJThBJUU4JThCJUI5JUU2JTlFJTlDJUUzJTgwJThCJUU3\nJThCJUFDJUU1JUFFJUI2Cnx8ZW5ld3N0cmVlLmNvbQouZW5mYWwuZGUKY2hpbmVz\nZS5lbmdhZGdldC5jb20KfHxlbmdhZ2VkYWlseS5vcmcKZW5nbGlzaGZvcmV2ZXJ5\nb25lLm9yZwp8fGVuZ2xpc2hmcm9tZW5nbGFuZC5jby51awplbmdsaXNocGVuLm9y\nZwouZW5saWdodGVuLm9yZy50dwp8fGVudGVybWFwLmNvbQouZW50bnQuY29tCnxo\ndHRwOi8vZW50bnQuY29tCi5lcGlzY29wYWxjaHVyY2gub3JnCi5lcG9jaGhrLmNv\nbQp8aHR0cDovL2Vwb2NoaGsuY29tCmVwb2NodGltZXMtYmcuY29tCnx8ZXBvY2h0\naW1lcy1iZy5jb20KZXBvY2h0aW1lcy1yb21hbmlhLmNvbQp8fGVwb2NodGltZXMt\ncm9tYW5pYS5jb20KZXBvY2h0aW1lcy5jby5pbAp8fGVwb2NodGltZXMuY28uaWwK\nZXBvY2h0aW1lcy5jby5rcgp8fGVwb2NodGltZXMuY28ua3IKZXBvY2h0aW1lcy5j\nb20KfHxlcG9jaHRpbWVzLmNvbQouZXBvY2h0aW1lcy5jegplcG9jaHRpbWVzLmRl\nCmVwb2NodGltZXMuZnIKLmVwb2NodGltZXMuaWUKLmVwb2NodGltZXMuaXQKZXBv\nY2h0aW1lcy5qcAplcG9jaHRpbWVzLnJ1CmVwb2NodGltZXMuc2UKZXBvY2h0aW1l\nc3RyLmNvbQouZXBvY2h3ZWVrLmNvbQp8fGVwb2Nod2Vlay5jb20KfHxlcG9jaHdl\nZWtseS5jb20KLmVwb3JuZXIuY29tCi5lcXVpbmVub3cuY29tCmVyYWJhcnUubmV0\nCi5lcmFjb20uY29tLnR3Ci5lcmF5c29mdC5jb20udHIKLmVyZXB1Ymxpay5jb20K\nLmVyaWdodHMubmV0Cnx8ZXJpZ2h0cy5uZXQKLmVya3R2LmNvbQp8aHR0cDovL2Vy\na3R2LmNvbQp8fGVybmVzdG1hbmRlbC5vcmcKfHxlcm9kYWl6ZW5zeXUuY29tCnx8\nZXJvZG91amlubG9nLmNvbQp8fGVyb2RvdWppbndvcmxkLmNvbQp8fGVyb21hbmdh\nLWtpbmdkb20uY29tCnx8ZXJvbWFuZ2Fkb3V6aW4uY29tCi5lcm9tb24ubmV0Cnxo\ndHRwOi8vZXJvbW9uLm5ldAouZXJvcHJvZmlsZS5jb20KLmVyb3RpY3NhbG9vbi5u\nZXQKLmVzbGl0ZS5jb20KfHxlc2xpdGUuY29tCiEtLS5lc2xpdGUuY29tL3Byb2R1\nY3QKIS0tLmVzbGl0ZS5jb20vU2VhcmNoX0JXLmFzcHg/cQp3aWtpLmVzdS5pbS8l\nRTglOUIlQTQlRTglOUIlQTQlRTglQUYlQUQlRTUlQkQlOTUKLmV0YWEub3JnLmF1\nCi5ldGFkdWx0LmNvbQpldGFpd2FubmV3cy5jb20KfHxldGl6ZXIub3JnCnx8ZXRv\na2tpLmNvbQohLS0uZXR0b2RheS5uZXQKLmV0dG9kYXkubmV0L25ld3MvMjAxNTEy\nMTYvNjE0MDgxCmV0dm9ubGluZS5oawouZXUub3JnCnx8ZXUub3JnCi5ldWNhc2lu\nby5jb20KLmV1bGFtLmNvbQouZXVyZWthdnB0LmNvbQp8fGV1cmVrYXZwdC5jb20K\nZWVhcy5ldXJvcGEuZXUvZGVsZWdhdGlvbnMvY2hpbmEvcHJlc3NfY29ybmVyL2Fs\nbF9uZXdzL25ld3MvMjAxNS8yMDE1MDcxNl96aAplZWFzLmV1cm9wYS5ldS9zdGF0\nZW1lbnRzLWVlYXMvMjAxNS8xNTEwMjIKLmV2c2Nob29sLm5ldAp8aHR0cDovL2V2\nc2Nob29sLm5ldAp8fGV4YmxvZy5qcAp8fGJsb2cuZXhibG9nLmNvLmpwCkBAfHx3\nd3cuZXhibG9nLmpwCi5leGNocmlzdGlhbi5oawp8fGV4Y2hyaXN0aWFuLmhrCnxo\ndHRwOi8vYmxvZy5leGNpdGUuY28uanAKfHxleG1vcm1vbi5vcmcKfHxleHBhdHNo\naWVsZC5jb20KLmV4cGVjdGhpbS5jb20KfHxleHBlY3RoaW0uY29tCmV4cGVydHMt\ndW5pdmVycy5jb20KfHxleHBsb2FkZXIubmV0Ci5leHByZXNzdnBuLmNvbQp8fGV4\ncHJlc3N2cG4uY29tCi5leHRyZW1ldHViZS5jb20KZXlldmlvLmpwCnx8ZXlldmlv\nLmpwCi5leW55LmNvbQp8fGV5bnkuY29tCi5lenBjLnRrL2NhdGVnb3J5L3NvZnQK\nLmV6cGVlci5jb20KCiEtLS0tLS0tLS0tLS0tLS0tLS0tLUZGLS0tLS0tLS0tLS0t\nLS0tLS0tLS0tLS0tLQp8fGZhY2Vib29rcXVvdGVzNHUuY29tCi5mYWNlbGVzcy5t\nZQp8fGZhY2VsZXNzLm1lCnxodHRwOi8vZmFjZXNvZnRpYmV0YW5zZWxmaW1tb2xh\ndG9ycy5pbmZvCnx8ZmFjZXNvZm55ZncuY29tCi5mYWl0aDEwMC5vcmcKfGh0dHA6\nLy9mYWl0aDEwMC5vcmcKCiEtLUVuaGFuY2VtZW50OgohLS1odHRwOi8vZmFpdGhm\ndWxleWUuY29tLmRldGFpbC53ZWJzaXRlLwohLS1odHRwOi8vZmFpdGhmdWxleWUu\nY29tLmlwYWRkcmVzcy5jb20vCi5mYWl0aGZ1bGV5ZS5jb20KCnx8ZmFpdGh0aGVk\nb2cuaW5mbwouZmFra3UubmV0Ci5mYWxzZWZpcmUuY29tCnx8ZmFsc2VmaXJlLmNv\nbQpmYWx1bi1jby5vcmcKZmFsdW5hcnQub3JnCnx8ZmFsdW5hc2lhLmluZm8KfGh0\ndHA6Ly9mYWx1bmF1Lm9yZwouZmFsdW5hei5uZXQKZmFsdW5kYWZhLm9yZwpmYWx1\nbmRhZmEtZGMub3JnCnx8ZmFsdW5kYWZhLWZsb3JpZGEub3JnCnx8ZmFsdW5kYWZh\nLW5jLm9yZwp8fGZhbHVuZGFmYS1wYS5uZXQKfHxmYWx1bmRhZmEtc2FjcmFtZW50\nby5vcmcKZmFsdW4tbnkubmV0Cnx8ZmFsdW5kYWZhaW5kaWEub3JnCmZhbHVuZGFm\nYW11c2V1bS5vcmcKLmZhbHVuZ29uZy5jbHViCi5mYWx1bmdvbmcuZGUKZmFsdW5n\nb25nLm9yZy51awp8fGZhbHVuaHIub3JnCmZhbHVuaW5mby5kZQpmYWx1bmluZm8u\nbmV0Ci5mYWx1bnBpbGlwaW5hcy5uZXQKfHxmYWx1bndvcmxkLm5ldApmYW1pbHlm\nZWQub3JnCi5mYW5nZW1pbmcuY29tCnx8ZmFuZ2xpemhpLmluZm8KfHxmYW5nb25n\nLm9yZwpmYW5nb25naGVpa2UuY29tCi5mYW5xaWFuZy50awpmYW5xaWFuZ2hvdS5j\nb20KfHxmYW5xaWFuZ2hvdS5jb20KLmZhbnFpYW5nemhlLmNvbQp8fGZhbnFpYW5n\nemhlLmNvbQpmYXBkdS5jb20KZmFwcm94eS5jb20KIS0tLmZhcnhpYW4uY29tCi5m\nYXdhbmdodWlodWkub3JnCmZhbnFpYW5neWFrZXhpLm5ldApmYWlsLmhrCnx8ZmFt\ndW5pb24uY29tCi5mYW4tcWlhbmcuY29tCi5mYW5nYmlueGluZy5jb20KfHxmYW5n\nYmlueGluZy5jb20KZmFuZ2VtaW5nLmNvbQouZmFuZ21pbmNuLm9yZwp8fGZhbmdt\naW5jbi5vcmcKLmZhbmhhb2RhbmcuY29tCnx8ZmFuc3dvbmcuY29tCi5mYW55dWUu\naW5mbwouZmFyd2VzdGNoaW5hLmNvbQoKIS0tRmFzdGx5CmVuLmZhdm90dGVyLm5l\ndAohLS18fHJudy5nbG9iYWwuc3NsLmZhc3RseS5uZXQKIS0tfGh0dHBzOi8vKmds\nb2JhbC5zc2wuZmFzdGx5Lm5ldC8Kbnl0aW1lcy5tYXAuZmFzdGx5Lm5ldAp8fG55\ndGltZXMubWFwLmZhc3RseS5uZXQKfHxmYXN0Lndpc3RpYS5jb20KCnx8ZmFzdHNz\naC5jb20KfHxmYXN0c3RvbmUub3JnCmZhdnN0YXIuZm0KfHxmYXZzdGFyLmZtCmZh\neWRhby5jb20vd2VibG9nCnx8ZmJzYnguY29tCi5mYzIuY29tCi5mYzJjaGluYS5j\nb20KLmZjMmNuLmNvbQp8fGZjMmNuLmNvbQpmYzJibG9nLm5ldAp8aHR0cDovL3V5\nZ3VyLmZjMndlYi5jb20vCnZpZGVvLmZkYm94LmNvbQouZmRjNjQuZGUKLmZkYzY0\nLm9yZwouZmRjODkuanAKfHxmb3VyZmFjZS5ub2Rlc25vb3AuY29tCiEtLWZlZWRi\nb29rcy5tb2JpCnx8ZmVlbHNzaC5jb20KZmVlci5jb20KLmZlaWZlaXNzLmNvbQp8\naHR0cDovL2ZlaXRpYW5hY2FkZW15Lm9yZwouZmVpdGlhbi1jYWxpZm9ybmlhLm9y\nZwp8fGZlbWluaXN0dGVhY2hlci5jb20KLmZlbmd6aGVuZ2h1LmNvbQp8fGZlbmd6\naGVuZ2h1LmNvbQouZmVuZ3poZW5naHUubmV0Cnx8ZmVuZ3poZW5naHUubmV0Ci5m\nZXZlcm5ldC5jb20KfGh0dHA6Ly9mZi5pbQpmZmZmZi5hdApmZmxpY2suY29tCi5m\nZnZwbi5jb20KZmdtdHYubmV0Ci5mZ210di5vcmcKLmZocmVwb3J0cy5uZXQKfGh0\ndHA6Ly9maHJlcG9ydHMubmV0Ci5maWdwcmF5ZXIuY29tCnx8ZmlncHJheWVyLmNv\nbQouZmlsZWZseWVyLmNvbQp8fGZpbGVmbHllci5jb20KfGh0dHA6Ly9mZWVkcy5m\naWxlZm9ydW0uY29tCi5maWxlczJtZS5jb20KLmZpbGVzZXJ2ZS5jb20vZmlsZQpm\naWxsdGhlc3F1YXJlLm9yZwpmaWxtaW5nZm9ydGliZXQub3JnCi5maWx0aGR1bXAu\nY29tCi5maW5jaHZwbi5jb20KfHxmaW5jaHZwbi5jb20KIS0tZmluZGJvb2sudHcK\nZmluZG1lc3BvdC5jb20KfHxmaW5keW91dHViZS5jb20KfHxmaW5keW91dHViZS5u\nZXQKLmZpbmdlcmRhaWx5LmNvbQpmaW5sZXIubmV0Ci5maXJlYXJtc3dvcmxkLm5l\ndAp8aHR0cDovL2ZpcmVhcm1zd29ybGQubmV0Ci5maXJlb2ZsaWJlcnR5Lm9yZwp8\nfGZpcmVvZmxpYmVydHkub3JnCi5maXJldHdlZXQuaW8KfHxmaXJldHdlZXQuaW8K\nIS0tfHxmbGFnZm94Lm5ldAouZmxhZ3NvbmxpbmUuaXQKZmxlc2hib3QuY29tCi5m\nbGV1cnNkZXNsZXR0cmVzLmNvbQp8aHR0cDovL2ZsZXVyc2Rlc2xldHRyZXMuY29t\nCnx8ZmxnZy51cwp8fGZsZ2p1c3RpY2Uub3JnCgohLS18fGZhcm02LnN0YXRpY2Zs\naWNrci5jb20KIS0tLmZsaWNrci5jb20vcGhvdG9zLzQ2MjMxMDc3QE4wNgohLS0u\nZmxpY2tyLmNvbS9ncm91cHMvYWl3ZWl3ZWkKIS0tLmZsaWNrci5jb20vcGhvdG9z\nL2RpZ2l0YWxib3kxMDAKIS0tLmZsaWNrci5jb20vcGhvdG9zL2Z6aGVuZ2h1CiEt\nLS5mbGlja3IuY29tL3Bob3Rvcy9sb25lbHlmb3gKIS0tZmxpY2tyLmNvbS9waG90\nb3MvdmFudmFuLzUyOTkyNTE1NwohLS0uZmxpY2tyLmNvbS9waG90b3Mvd2ludGVy\na2FuYWwKIS0tLmZsaWNrci5jb20vcGhvdG9zL3pvbGEKfHxmbGlja3IuY29tCnx8\nc3RhdGljZmxpY2tyLmNvbQoKZmxpY2tyaGl2ZW1pbmQubmV0Ci5mbGlja3JpdmVy\nLmNvbQouZmxpbmcuY29tCnx8ZmxpcGthcnQuY29tCnx8ZmxvZy50dwouZmx5dnBu\nLmNvbQp8fGZseXZwbi5jb20KfGh0dHA6Ly9jbi5mbW5ub3cuY29tCmZvZmxkZnJh\nZGlvLm9yZwpibG9nLmZvb2xzbW91bnRhaW4uY29tCi5mb3J1bTRoay5jb20KZmFu\nZ29uZy5mb3J1bXMtZnJlZS5jb20KcGlvbmVlci13b3JrZXIuZm9ydW1zLWZyZWUu\nY29tCiEtLWZvdXJzcXVhcmUuY29tCiEtLXxodHRwOi8vNHNxLmNvbQp8aHR0cHM6\nLy9zcyouNHNxaS5uZXQKdmlkZW8uZm94YnVzaW5lc3MuY29tCnxodHRwOi8vZm94\nZ2F5LmNvbQp8fGZyaW5nZW5ldHdvcmsuY29tCnx8ZmxlY2hlaW50aGVwZWNoZS5m\ncgouZm9jaGsub3JnCnxodHRwOi8vZm9jaGsub3JnCnx8Zm9jdXN0YWl3YW4udHcK\nLmZvY3VzdnBuLmNvbQp8fGZvZmcub3JnCi5mb2ZnLWV1cm9wZS5uZXQKLmZvb29v\nby5jb20KfHxmb29vb28uY29tCmZvb3R3aWJhbGwuY29tCi5mb3RpbGUubWUKfHxm\nb3VydGhpbnRlcm5hdGlvbmFsLm9yZwp8fGZveGRpZS51cwp8fGZveHN1Yi5jb20K\nZm94dGFuZy5jb20KLmZwbXQub3JnCnxodHRwOi8vZnBtdC5vcmcKLmZwbXQudHcK\nLmZwbXQtb3NlbC5vcmcKfHxmcG10bWV4aWNvLm9yZwpmcW9rLm9yZwp8fGZxcm91\ndGVyLmNvbQp8fGZyYW5rbGMuY29tCi5mcmVha3NoYXJlLmNvbQp8aHR0cDovL2Zy\nZWFrc2hhcmUuY29tCnx8ZnJlZTR1LmNvbS5hcgpmcmVlLWdhdGUub3JnCi5mcmVl\nLWhhZGEtbm93Lm9yZwpmcmVlLXByb3h5LmN6Ci5mcmVlLmZyL2Fkc2wKa2luZW94\nLmZyZWUuZnIKdGliZXRsaWJyZS5mcmVlLmZyCnx8ZnJlZWFsaW0uY29tCndoaXRl\nYmVhci5mcmVlYmVhcmJsb2cub3JnCnx8ZnJlZWJyb3dzZXIub3JnCi5mcmVlY2hh\nbC5jb20KLmZyZWVkb21jaGluYS5pbmZvCnx8ZnJlZWRvbWNoaW5hLmluZm8KLmZy\nZWVkb21ob3VzZS5vcmcKfHxmcmVlZG9taG91c2Uub3JnCi5mcmVlZG9tc2hlcmFs\nZC5vcmcKfHxmcmVlZG9tc2hlcmFsZC5vcmcKLmZyZWVmcS5jb20KLmZyZWVmdWNr\ndmlkcy5jb20KLmZyZWVnYW8uY29tCnx8ZnJlZWdhby5jb20KZnJlZWlsaGFtdG9o\ndGkub3JnCi5mcmVla3dvbnB5b25nLm9yZwp8fHNhdmVsaXV4aWFvYm8uY29tCi5m\ncmVlbG90dG8uY29tCnx8ZnJlZWxvdHRvLmNvbQpmcmVlbWFuMi5jb20KLmZyZWVv\ncGVudnBuLmNvbQpmcmVlbW9yZW4uY29tCmZyZWVtb3JlbmV3cy5jb20KZnJlZW11\nc2Uub3JnL2FyY2hpdmVzLzc4OQpmcmVlbmV0LWNoaW5hLm9yZwpmcmVlbmV3c2Nu\nLmNvbQpjbi5mcmVlb25lcy5jb20KLmZyZWVvei5vcmcvYmJzCnx8ZnJlZW96Lm9y\nZwp8fGZyZWVzc2gudXMKZnJlZTR1LmNvbS5hcgouZnJlZS1zc2guY29tCnx8ZnJl\nZS1zc2guY29tCi5mcmVlY2hpbmEubmV3cy8KfHxmcmVlY2hpbmFmb3J1bS5vcmcK\nfHxmcmVlY2hpbmF3ZWliby5jb20KLmZyZWVkb21jb2xsZWN0aW9uLm9yZy9pbnRl\ncnZpZXdzL3JlYml5YV9rYWRlZXIKLmZyZWVmb3J1bXMub3JnCnx8ZnJlZW5ldHBy\nb2plY3Qub3JnCi5mcmVlb3oub3JnCi5mcmVldGliZXQubmV0Cnx8ZnJlZXRpYmV0\nLm9yZwouZnJlZXRpYmV0YW5oZXJvZXMub3JnCnxodHRwOi8vZnJlZXRpYmV0YW5o\nZXJvZXMub3JnCi5mcmVldmlld21vdmllcy5jb20KLmZyZWV2cG4ubWUKfGh0dHA6\nLy9mcmVldnBuLm1lCnx8ZnJlZXdhbGxwYXBlcjQubWUKLmZyZWV3ZWJzLmNvbQou\nZnJlZXdlY2hhdC5jb20KfHxmcmVld2VjaGF0LmNvbQpmcmVld2VpYm8uY29tCnx8\nZnJlZXdlaWJvLmNvbQouZnJlZXhpbndlbi5jb20KLmZyZWV5b3V0dWJlcHJveHku\nbmV0Cnx8ZnJlZXlvdXR1YmVwcm94eS5uZXQKZnJpZW5kZmVlZC5jb20KZnJpZW5k\nZmVlZC1tZWRpYS5jb20vZTk5YTRlYmUyZmI0YzE5ODVjMmE1ODc3NWViNDQyMjk2\nMWFhNWEyZQpmcmllbmRzLW9mLXRpYmV0Lm9yZwouZnJpZW5kc29mdGliZXQub3Jn\nCmZyZWVjaGluYS5uZXQKfGh0dHA6Ly93d3cuemVuc3VyLmZyZWVyay5jb20vCmZy\nZWV2cG4ubmwKZnJlZXllbGxvdy5jb20KaGsuZnJpZW5kZHkuY29tL2hrCnxodHRw\nOi8vYWR1bHQuZnJpZW5kZmluZGVyLmNvbS8KLmZyaW5nLmNvbQp8fGZyaW5nLmNv\nbQouZnJvbWNoaW5hdG91c2EubmV0Cnx8ZnJvbW1lbC5uZXQKLmZyb250bGluZWRl\nZmVuZGVycy5vcmcKLmZyb290dnBuLmNvbQp8fGZyb290dnBuLmNvbQp8fGZzY2tl\nZC5vcmcKLmZzdXJmLmNvbQouZnR2LmNvbS50dwpmdWNkLmNvbQouZnVja2Nubmlj\nLm5ldAp8fGZ1Y2tjbm5pYy5uZXQKZnVja2dmdy5vcmcKfHxmdWxsZXJjb25zaWRl\ncmF0aW9uLmNvbQpmdWx1ZS5jb20KLmZ1bmYudHcKZnVucC5jb20KLmZ1cS5jb20K\nLmZ1cmhoZGwub3JnCnx8ZnVyaW5rYW4uY29tCi5mdXR1cmVjaGluYWZvcnVtLm9y\nZwp8fGZ1dHVyZW1lc3NhZ2Uub3JnCi5mdXguY29tCi5mdXlpbi5uZXQKLmZ1eWlu\nZGlhbnRhaS5vcmcKLmZ1eXUub3JnLnR3Cnx8ZncuY20KLmZ4Y20tY2hpbmVzZS5j\nb20KfHxmeGNtLWNoaW5lc2UuY29tCmZ6aDk5OS5jb20KZnpoOTk5Lm5ldApmemxt\nLmNvbQoKIS0tLS0tLS0tLS0tLS0tLS0tLS0tR0ctLS0tLS0tLS0tLS0tLS0tLS0t\nLS0tLS0tCi5nNmhlbnRhaS5jb20KfGh0dHA6Ly9nNmhlbnRhaS5jb20KfHxnLXF1\nZWVuLmNvbQp8fGdhYm9jb3JwLmNvbQouZ2FlcHJveHkuY29tCi5nYWZvcnVtLm9y\nZwouZ2FsYXh5bWFjYXUuY29tCnx8Z2FsZW53dS5jb20KLmdhbHN0YXJzLm5ldAp8\nfGdhbWU3MzUuY29tCmdhbWViYXNlLmNvbS50dwpnYW1lam9sdC5jb20KfGh0dHA6\nLy93aWtpLmdhbWVycC5qcAp8fGdhbWVyLmNvbS50dwouZ2FtZXIuY29tLnR3Ci5n\nYW1lei5jb20udHcKfHxnYW1lei5jb20udHcKLmdhbW91c2EuY29tCi5nYW9taW5n\nLm5ldAp8fGdhb21pbmcubmV0Cmdhbmdlcy5jb20KLmdhb3BpLm5ldAp8aHR0cDov\nL2dhb3BpLm5ldAouZ2Fvemhpc2hlbmcub3JnCi5nYW96aGlzaGVuZy5uZXQKZ2Fy\nZGVubmV0d29ya3MuY29tCnx8Z2FyZGVubmV0d29ya3Mub3JnCiEtLUlQIG9mIEdh\ncmRlbiBOZXR3b3JrCjcyLjUyLjgxLjIyCnx8Z2FydGxpdmUuY29tCnx8Z2F0ZS1w\ncm9qZWN0LmNvbQp8fGdhdGhlci5jb20KLmdhdGhlcnByb3h5LmNvbQpnYXRpLm9y\nZy50dwouZ2F5YnViYmxlLmNvbQouZ2F5Y24ubmV0Ci5nYXlodWIuY29tCnx8Z2F5\nbWFwLmNjCi5nYXltZW5yaW5nLmNvbQouZ2F5dHViZS5jb20KIS0tfHxnYXl0dWJl\nLmNvbQp8fGltYWdlcy1nYXl0dWJlLmNvbQouZ2F5d2F0Y2guY29tCnxodHRwOi8v\nZ2F5d2F0Y2guY29tCi5nYXpvdHViZS5jb20KfHxnYXpvdHViZS5jb20KfHxnY2Mu\nb3JnLmhrCnx8Z2Nsb29uZXkuY29tCnx8Z2NtYXNpYS5jb20KLmdjcG5ld3MuY29t\nCnxodHRwOi8vZ2NwbmV3cy5jb20KLmdkYnQubmV0L2ZvcnVtCmdkemYub3JnCnx8\nZ2Vlay1hcnQubmV0CmdlZWtlcmhvbWUuY29tLzIwMTAvMDMveGl4aWFuZy1wcm9q\nZWN0LWNyb3NzLWdmdwp8fGdlZWtoZWFydC5pbmZvCi5nZWtpa2FtZS5jb20KfGh0\ndHA6Ly9nZWtpa2FtZS5jb20KLmdlbGJvb3J1LmNvbQp8aHR0cDovL2dlbGJvb3J1\nLmNvbQohLS18fGdlbnVpdGVjLmNvbQouZ2VvY2l0aWVzLmNvLmpwCi5nZW9jaXRp\nZXMuY29tL1NpbGljb25WYWxsZXkvQ2lyY3VpdC81NjgzL2Rvd25sb2FkLmh0bWwK\naGsuZ2VvY2l0aWVzLmNvbQpnZW9jaXRpZXMuanAKLmdlcmVmb3VuZGF0aW9uLm9y\nZwp8fGdldGFzdHJpbGwuY29tCi5nZXRjaHUuY29tCi5nZXRjbG9hay5jb20KfHxn\nZXRjbG9hay5jb20KfHxnZXRmb3h5cHJveHkub3JnCi5nZXRmcmVlZHVyLmNvbQp8\nfGdldGdvbS5jb20KLmdldGkycC5uZXQKfHxnZXRpMnAubmV0Ci5nZXRsYW50ZXJu\nLm9yZwp8fGdldGxhbnRlcm4ub3JnCi5nZXRqZXRzby5jb20vZm9ydW0KZ2V0aXRv\nbi5jb20KLmdldHNvY2lhbHNjb3BlLmNvbQp8fGdldHN5bmMuY29tCmdmYnYuZGUK\nLmdmZ29sZC5jb20uaGsKLmdmc2FsZS5jb20KfHxnZnNhbGUuY29tCmdmdy5vcmcu\ndWEKLmdmdy5wcmVzcwp8fGdmdy5wcmVzcwouZ2dzc2wuY29tCnx8Z2dzc2wuY29t\nCiEtLXx8Z2hvc3Qub3JnCi5naG9zdHBhdGguY29tCnx8Z2hvc3RwYXRoLmNvbQp8\nfGdodXQub3JnCi5naWFudGVzc25pZ2h0LmNvbQp8aHR0cDovL2dpYW50ZXNzbmln\naHQuY29tCi5naWZyZWUuY29tCnx8Z2lnYS13ZWIuanAKdHcuZ2lnYWNpcmNsZS5j\nb20KfGh0dHA6Ly9jbi5naWdhbmV3cy5jb20vCmdpZ3Bvcm5vLnJ1Cnx8Z2lybGJh\nbmtlci5jb20KLmdpdC5pbwp8fGdpdC5pbwp8aHR0cDovL3NvZnR3YXJlZG93bmxv\nYWQuZ2l0Ym9va3MuaW8KCiEtLS1HaXRIdWItLS0KZ2l0aHViLmNvbS9nZXRsYW50\nZXJuCnxodHRwczovL2dpc3QuZ2l0aHViLmNvbQpodHRwOi8vY3RobG8uZ2l0aHVi\nLmlvL2hrdHYKaGFoYXhpeGkuZ2l0aHViLmlvCnxodHRwczovL2hhaGF4aXhpLmdp\ndGh1Yi5pbwp8fGhhb2VsLmdpdGh1Yi5pbwohLS18aHR0cDovL29uaW9uaGFja2Vy\nLmdpdGh1Yi5pbwp8fHNpa2FvemhlMTk5Ny5naXRodWIuaW8KfHxzb2RhdGVhLmdp\ndGh1Yi5pbwp8fHRlcm1pbnVzMjA0OS5naXRodWIuaW8Kd3NnemFvLmdpdGh1Yi5p\nbwp8aHR0cHM6Ly93c2d6YW8uZ2l0aHViLmlvCiEtLS5naXRodWIuaW8KCi5naXps\nZW4ubmV0Cnx8Z2l6bGVuLm5ldAouZ2pjenouY29tCnx8Z2pjenouY29tCmdsb2Jh\nbGppaGFkLm5ldApnbG9iYWxtZWRpYW91dHJlYWNoLmNvbQpnbG9iYWxtdXNldW1v\nbmNvbW11bmlzbS5vcmcKfHxnbG9iYWxyZXNjdWUubmV0Ci5nbG9iYWx0bS5vcmcK\nLmdsb2JhbHZvaWNlc29ubGluZS5vcmcKfHxnbG9iYWx2b2ljZXNvbmxpbmUub3Jn\nCnx8Z2xvYmFsdnBuLm5ldAouZ2xvY2suY29tCmdsdWNrbWFuLmNvbS9EYWxhaUxh\nbWEKZ21iZC5jbgp8fGdtaHoub3JnCnxodHRwOi8vd3d3LmdtaWRkbGUuY29tCnxo\ndHRwOi8vd3d3LmdtaWRkbGUubmV0Ci5nbWxsLm9yZwp8fGduY2kub3JnLmhrCmdv\nLXBraS5jb20KfHxnb2FnZW50LmJpegp8fGdvYWdlbnRwbHVzLmNvbQpnb2JldC5j\nYwpnb2Rmb290c3RlcHMub3JnCnx8Z29kZm9vdHN0ZXBzLm9yZwpnb2Rucy53b3Jr\nCmdvZHNkaXJlY3Rjb250YWN0LmNvLnVrCi5nb2RzZGlyZWN0Y29udGFjdC5vcmcK\nZ29kc2RpcmVjdGNvbnRhY3Qub3JnLnR3Ci5nb2RzaW1tZWRpYXRlY29udGFjdC5j\nb20KLmdvZ290dW5uZWwuY29tCnx8Z29oYXBweS5jb20udHcKLmdva2JheXJhay5j\nb20KLmdvbGRiZXQuY29tCnx8Z29sZGJldHNwb3J0cy5jb20KfHxnb2xkZW5leWV2\nYXVsdC5jb20KLmdvbGRlbmZyb2cuY29tCnx8Z29sZGVuZnJvZy5jb20KLmdvbGRq\naXp6LmNvbQp8aHR0cDovL2dvbGRqaXp6LmNvbQouZ29sZHN0ZXAubmV0Cnx8Z29s\nZHdhdmUuY29tCmdvbmdtZW5nLmluZm8KZ29uZ20uaW4KZ29uZ21pbmxpbGlhbmcu\nY29tCi5nb25nd3QuY29tCnxodHRwOi8vZ29uZ3d0LmNvbQpibG9nLmdvby5uZS5q\ncC9kdWNrLXRhaWxfMjAwOQouZ29vZGF5Lnh5egp8aHR0cDovL2dvb2RheS54eXoK\nLmdvb2RyZWFkcy5jb20KfHxnb29kcmVhZHMuY29tCi5nb29kcmVhZGVycy5jb20K\nfHxnb29kcmVhZGVycy5jb20KLmdvb2R0di5jb20udHcKLmdvb2R0di50dgp8fGdv\nb2ZpbmQuY29tCi5nb29nbGVzaWxlLmNvbQouZ29wZXRpdGlvbi5jb20KfHxnb3Bl\ndGl0aW9uLmNvbQouZ29wcm94aW5nLm5ldAouZ290cnVzdGVkLmNvbQp8fGdvdHJ1\nc3RlZC5jb20KfHxnb3R3LmNhCnx8Z3JhbW1hbHkuY29tCmdyYW5kdHJpYWwub3Jn\nCi5ncmFwaGlzLm5lLmpwCnx8Z3JhcGhpcy5uZS5qcAp8fGdyYXBocWwub3JnCiEt\nLXx8cy5ncmF2YXRhci5jb20KZ3JlYXRmaXJld2FsbC5iaXoKfHxncmVhdGZpcmV3\nYWxsb2ZjaGluYS5uZXQKLmdyZWF0ZmlyZXdhbGxvZmNoaW5hLm9yZwp8fGdyZWF0\nZmlyZXdhbGxvZmNoaW5hLm9yZwp8fGdyZWVuZmllbGRib29rc3RvcmUuY29tLmhr\nCi5ncmVlbnBhcnR5Lm9yZy50dwp8fGdyZWVucGVhY2Uub3JnCi5ncmVlbnJlYWRp\nbmdzLmNvbS9mb3J1bQpncmVhdC1maXJld2FsbC5jb20KZ3JlYXQtcm9jLm9yZwpn\ncmVhdHJvYy5vcmcKZ3JlYXR6aG9uZ2h1YS5vcmcKLmdyZWVucGVhY2UuY29tLnR3\nCi5ncmVlbnZwbi5uZXQKfHxncmVlbnZwbi5uZXQKLmdyZWVudnBuLm9yZwp8fGdy\nb3R0eS1tb25kYXkuY29tCmdzLWRpc2N1c3MuY29tCnx8Z3RyaWNrcy5jb20KZ3Vh\nbmNoYS5vcmcKZ3VhbmVyeXUuY29tCi5ndWFyZHN0ZXIuY29tCi5ndW4td29ybGQu\nbmV0Cmd1bnNhbmRhbW1vLmNvbQp8fGd1dHRlcnVuY2Vuc29yZWQuY29tCnx8Z3Zt\nLmNvbS50dwouZ3ptLnR2Cnx8Z3pvbmUtYW5pbWUuaW5mbwoKIS0tLS0tLS0tLS0t\nLS1HSFMtLS0tLQohLXx8ZmVlZHMuY2JzbmV3cy5jb20KIS18fHd3dy5jaGluZXNl\nYWxidW1hcnQuY29tCnx8Y2xlbWVudGluZS1wbGF5ZXIub3JnCiEtfHxjbGVtZXNo\nYS5vcmcKIS18fHd3dy5jbG91ZGdpcmxmcmllbmQuY29tCiEtfHxjb2NvYXdpdGhs\nb3ZlLmNvbQohLXx8YmxvZy5jb250cm9sc3BhY2Uub3JnCiEtRAohLXx8d3d3LmRh\naWx5Z3lhbi5jb20KIS18fGRhaWx5dG9kby5vcmcKIS18fGJsb2cuZGFubWFybmVy\nLmNvbQohLXx8Z2l0aHViLmRhbm1hcm5lci5jb20KIS18fGRlc2lnbi1zZWVkcy5j\nb20KIS18fGRlc2lnbmVycy1hcnRpc3RzLmNvbQohLXx8bWFpbC5kaXlhbmcub3Jn\nCiEtfHxibG9nLmRvdWdoZWxsbWFubi5jb20KIS18fGRvd25mb3JldmVyeW9uZW9y\nanVzdG1lLmNvbQohLXx8ZHJvaWRzZWN1cml0eS5jb20KIS18fHd3dy5kcm9wbW9j\na3MuY29tCiEtfHxkdW1ibGl0dGxlbWFuLmNvbQohLUUKZWNob2Zvbi5jb20KIS18\nfGVjaG9mb24uY29tCiEtfHxlcGMtamF2LmNvbQohLXx8ZXZlcmRhcmsuaW5mbwoh\nLXx8ZXZoZWFkLmNvbQohLUYKIS18fGZhY2lsZWxvZ2luLmNvbQohLXx8Ki5mYXRk\ndWNrLm9yZwohLXx8YmxvZy5mZGNuLm9yZwohLXx8ZmZ0b2dvLmNvbQohLXx8Zmxp\nZ2h0c2ltdGFsay5jb20KIS18fG1jbGVlLmZvb2xtZS5uZXQKIS18fHd3dy5mcmll\nbmRkZWNrLmNvbQohLXx8ZnJpbmdlc3BvaWxlcnMuY29tCiEtfHxmcmluZ2V0ZWxl\ndmlzaW9uLmNvbQohLXx8ZnVucGVhLmNvbQohLUcKIS18fGJsb2cuZ2F0ZWluLm9y\nZwohLXx8ZmVlZHMuZ2F3a2VyLmNvbQohLXx8Z2Vla3RhbmcuY29tCiEtfHxnZW9o\nb3QudXMKIS18fGdldGFyb3VuZC5jb20KIS18fGdtZXIubmV0CiEtfHx3d3cuZ21v\ndGUub3JnCiEtfHxibG9nLmdvMndlYjIwLm5ldAohLXx8Z29vZ2xlLW1lbGFuZ2Uu\nY29tCiEtfHxmYW1lLmdvbnpvbGFicy5vcmcKIS18fGdvdmVjbi5vcmcKIS18fGdx\ndWV1ZXMuY29tCiEtfHxncmFwaHljYWxjLmNvbQp8fGdyZWFzZXNwb3QubmV0CiEt\nfHxibG9nLmdyb3dsZm9yd2luZG93cy5jb20KIS1ICiEtfHxoY20uY29tLnR3CiEt\nfHxibG9nLmhlYWRpdXMuY29tCiEtfHxob2diYXlzb2Z0d2FyZS5jb20KIS18fGJs\nb2cuaG90b3Qub3JnCiEtfHxmZWVkcy5ob3dzdHVmZndvcmtzLmNvbQohLXx8aHVo\nYWl0YWkuY29tCiEtfHxibG9nLmh1bWFucmlnaHRzZmlyc3Qub3JnCiEtSQohLXx8\nc2l0ZS5pY3UtcHJvamVjdC5vcmcKIS18fGlnb3J3YXJlLmNvbQohLXx8aWhhczEz\nMzdjb2RlLmNvbQohLXx8aW5rbm91dmVhdS5jb20KIS18fGlub3RlLnR3CiEtfHxp\ncm9uaGVsbWV0LmNvbQohLXx8aXdmd2NmLmNvbQohLUoKIS18fGJsb2cuamFuZ210\nLmNvbQohLXx8YmxvZy5qYXlmaWVsZHMuY29tCiEtfHxibG9nLmpvaW50Lm5ldAoh\nLXx8YmxvZy5qc3F1YXJlZGphdmFzY3JpcHQuY29tCiEtfHxibG9nLmp0Yndvcmxk\nLmNvbQohLUsKIS18fGthdGh5c2Nod2FsYmUuY29tCiEtfHx0b21hdG92cG4ua2Vp\ndGhtb3llci5jb20KIS18fHd3dy5rZWl0aG1veWVyLmNvbQohLXx8a2VuZGFsdmFu\nZHlrZS5jb20KIS18fGJsb2cua2VuZ2FvLnR3CiEtfHxsb2cua2Vzby5jbgohLXx8\nd3d3LmtoYW5hY2FkZW15Lm9yZwp8fHd3dy5rbGlwLm1lCiEtfHx1c2Jsb2FkZXJn\neC5rb3VyZWlvLm5ldAohLXx8YmxvZy5rb3dhbGN6eWsuaW5mbwohLUwKIS18fGxh\nYnlyaW50aDIuY29tCiEtfHxsYXJzZ2VvcmdlLmNvbQohLXx8YmxvZy5sYXN0cGFz\ncy5jb20KIS18fGRvY3MubGF0ZXhsYWIub3JnCiEtfHxsZWFuZXNzYXlzLmNvbQoh\nLXx8YmxvZy5saWRhb2JpbmcuaW5mbwohLXx8bG9nLmxpZ2h0b3J5Lm5ldAohLXx8\nZmVlZHMubGltaS5uZXQKIS18fHd3dy5saXRlYXBwbGljYXRpb25zLmNvbQohLXx8\nYmxvZy5saXVrYW5neHUuaW5mbwohLXx8dHdpdHRlci5saXVrYW5neHUuaW5mbwoh\nLXx8b2FzaXNuZXdzcm9vbS5saXZlNGV2ZXIudXMKIS18fHd3dy5sb2NrZXJnbm9t\nZS5jb20KIS18fGxvY3FsLmNvbQpAQHx8c2l0ZS5sb2NxbC5jb20KIS18fGZlZWRz\nLmxvaWNsZW1ldXIuY29tCiEtfHxibG9nLmxvdWlzZ3JheS5jb20KIS1NCiEtfHxt\nYWRlYnlzb2ZhLmNvbQohLXx8bWFkZW1vaXNlbGxlcm9ib3QuY29tCiEtfHxtYXNh\nbWl4ZXMuY29tCiEtfHx3d3cubWV0YW11c2UubmV0CiEtfHxibG9nLm1ldGFzcGxv\naXQuY29tCiEtfHxtaWxhemkuY29tCiEtfHx3d3cubWluaXdlYXRoZXIuY29tCiEt\nfHx0d2l0dGVyLm1pc3NpdS5jb20KIS18fHBsdXJrdG9wLWJ1dHRvbi5tbWRheXMu\nY29tCiEtfHxmZWVkcy5tb2JpbGVyZWFkLmNvbQohLXx8d3d3Lm1vZGVybml6ci5j\nb20KIS18fHd3dy5tb2RrLml0CiEtfHxteXR3aXNoaXJ0LmNvbQohLU4KIS18fGJs\nb2cubmV0ZmxpeC5jb20KIS18fGJsb2cubmloaWxvZ2ljLmRrCiEtfHxudGxrLm9y\nZwohLXx8bnZxdWFuLm9yZwohLXx8bm9nb29kYXRjb2RpbmcuY29tCiEtfHxibG9n\nLm5vdGRvdC5uZXQKIS18fHd3dy5ub3RpZnkuaW8KIS1PCiEtfHxibG9nLm9idmlv\ndXMuY29tCiEtfHxvbmViaWdmbHVrZS5jb20KIS18fG92ZXJzdGltdWxhdGUuY29t\nCiEtUAohLXx8cGNnZWVrYmxvZy5jb20KIS18fGZlZWRzLnBkZmNobS5uZXQKIS18\nfGZlZWRzLnBlb3BsZS5jb20KIS18fGJsb2cucGVyc2lzdGVudC5pbmZvCiEtfHxj\naHJvbWUucGxhbnRzdnN6b21iaWVzLmNvbQohLXx8cG9ydGFibGVzb2Z0Lm9yZy5y\ndQohLXx8cHJhc2FubmF0ZWNoLm5ldAohLXx8dGFsay5uZXdzLnB0cy5vcmcudHcK\nIS18fHB5dGhvbi1leGNlbC5vcmcKIS1RCiEtUgohLXx8ci1jaGFydC5jb20KIS18\nfHJhbWVzaHN1YnJhbWFuaWFuLm9yZwohLXx8cmFwaWQucGsKIS18fGJsb2cucmVu\nYW5zZS5jb20KIS18fHJvYmVydG1hby5jb20KIS18fHd3dy5yb21lby1mb3h0cm90\nLmNvbQohLVMKIS18fHNhbG1peXVjay5jb20KIS18fHNhbXNhbC5jb20KIS18fGJs\nb2cuc2VlbWluZ2xlZS5jb20KIS18fGJsb2cuc2Zsb3cuY29tCiEtfHxibG9nLnNp\nZ2ZwZS5jb20KIS18fHNpbXBsZXRleHQud3MKIS18fHd3dy5za3VscHQub3JnCiEt\nfHxyc3Muc2xhc2hkb3Qub3JnCiEtfHxzbmlwcGV0c2FwcC5jb20KIS18fHcuc25z\nLmx5CiEtfHx3d3cuc29jaWFsbm1vYmlsZS5jb20KIS18fHd3dy5zb2NpYWx3aG9p\ncy5jb20KIS18fHNwaXJpdGpiLm9yZwohLXx8c3Nib29rLmNvbQohLXx8c3NoZm9y\nd2FyZGluZy5jb20KIS18fHN0YXRpb25lcmlhLmNvbQp8fHN0ZXBoYW5pZXJlZC5j\nb20KIS18fHN1bmppZG9uZy5uZXQKIS18fHN5bml1bXNvZnR3YXJlLmNvbQpAQHx8\nZG93bmxvYWQuc3luaXVtc29mdHdhcmUuY29tCiEtVAohLXx8dGFneGVkby5jb20K\nIS18fGJsb2cudGF0b2ViYS5vcmcKIS18fHd3dy50ZWNoZm9iLmNvbQohLXx8dGVh\nY2hwYXJlbnRzdGVjaC5vcmcKIS18fHRoZThwZW4uY29tCiEtfHx0aGVpcGhvbmV3\naWtpLmNvbQohLXx8YmxvZy50aGVzaWxlbnRudW1iZXIubWUKIS18fHRoZXNwb250\neS5jb20KIS18fHRoZXVsdHJhbGlueC5jb20KIS18fGJsb2cudGhpbmstYXN5bmMu\nY29tCiEtfHx0b3JuYWRvd2ViLm9yZwohLXx8dHJhbnNwYXJlbnR1cHRpbWUuY29t\nCiEtfHx0cmlhbmd1bGF0aW9uYmxvZy5jb20KIS18fGJsb2cudHN1bmFuZXQubmV0\nCiEtfHxlbi50dXhlcm8uY29tCiEtfHx0d2F6enVwLmNvbQohLXx8dHdlZXRzd2Vs\nbC5jb20KIS18fHR3aWJlcy5jb20KIS18fGFydC50d2dnLm9yZwohLXx8dHdpdmVy\ndC5jb20KIS1VCnxodHRwOi8vdWIwLmNjCiEtfHxqb25ueS51YnVudHUtdHcubmV0\nCiEtfHxibG9nLnVtb25rZXkubmV0CiEtVgohLXx8dHAudmJhcC5jb20uYXUKIS18\nfHd3dy52aXJ0dW91c3JvbS5jb20KIS18fGJsb2cudmlzaWJvdGVjaC5jb20KIS1X\nCiEtfHx3YXZlcHJvdG9jb2wub3JnCiEtfHx3d3cud2F2ZXNhbmRib3guY29tCiEt\nfHx3ZWJmZWUub3JnLnJ1CiEtfHxibG9nLndlYm1wcm9qZWN0Lm9yZwohLXx8d2Vi\ndXBkOC5vcmcKIS18fHd3dy53aGF0YnJvd3Nlci5vcmcKIS18fHd3dy53aGVyZWRv\neW91Z28ubmV0CiEtfHx3aWxsaGFpbnMuY29tCiEtfHxmZWVkcy53aXJlZC5jb20K\nIS18fHdpc2VtYXBwaW5nLm9yZwp3b3p5LmluCiEtfHx3b3p5LmluLwohLXx8Ymxv\nZy53dW5kZXJjb3VudGVyLmNvbQohLVgKIS18fHhkZWx0YS5vcmcKIS18fHhpYW9n\nYW96aS5vcmcKIS18fHhpbG91LnVzCiEtfHx4enkub3JnLnJ1CiEtWQohLXx8eW9v\ncGVyLmJlCiEtfHx0c29uZy55dW54aS5uZXQKIS1aCgpnb3NwZWxoZXJhbGQuY29t\nCnx8Z29zcGVsaGVyYWxkLmNvbQp8aHR0cDovL2hrLmdyYWRjb25uZWN0aW9uLmNv\nbS8KfHxncmFuZ29yei5vcmcKZ3JlYXRmaXJlLm9yZwp8fGdyZWF0ZmlyZS5vcmcK\nZ3JlYXRmaXJld2FsbG9mY2hpbmEub3JnCnx8Z3JlYXRyb2MudHcKLmd0cy12cG4u\nY29tCnxodHRwOi8vZ3RzLXZwbi5jb20KLmd1LWNodS1zdW0ub3JnCnxodHRwOi8v\nZ3UtY2h1LXN1bS5vcmcKLmd1YWd1YXNzLmNvbQp8aHR0cDovL2d1YWd1YXNzLmNv\nbQouZ3VhZ3Vhc3Mub3JnCnxodHRwOi8vZ3VhZ3Vhc3Mub3JnCi5ndWFuZ21pbmcu\nY29tLm15Cmd1aXNoYW4ub3JnCnx8Z3Vpc2hhbi5vcmcKLmd1bXJvYWQuY29tCnx8\nZ3Vtcm9hZC5jb20KfHxndW5zYW1lcmljYS5jb20KZ3VydW9ubGluZS5oawp8aHR0\ncDovL2d2bGliLmNvbQouZ3lhbHdhcmlucG9jaGUuY29tCi5neWF0c29zdHVkaW8u\nY29tCgohLS0tLS0tLS0tLS0tLS0tLS0tLS1ISC0tLS0tLS0tLS0tLS0tLS0tLS0t\nLS0tLS0KLmg1MjguY29tCi5oNWRtLmNvbQouaDVnYWxnYW1lLm1lCnx8aC1jaGlu\nYS5vcmcKLmgtbW9lLmNvbQp8aHR0cDovL2gtbW9lLmNvbQpoMW4xY2hpbmEub3Jn\nCi5oYWNnLmNsdWIKfHxoYWNnLmNsdWIKLmhhY2cuaW4KfGh0dHA6Ly9oYWNnLmlu\nCi5oYWNnLmxpCnxodHRwOi8vaGFjZy5saQouaGFjZy5tZQp8aHR0cDovL2hhY2cu\nbWUKLmhhY2cucmVkCnxodHRwOi8vaGFjZy5yZWQKLmhhY2tlbi5jYy9iYnMKLmhh\nY2tlci5vcmcKfHxoYWNrdGhhdHBob25lLm5ldApoYWhsby5jb20KfHxoYWtrYXR2\nLm9yZy50dwouaGFuZGNyYWZ0ZWRzb2Z0d2FyZS5vcmcKfGh0dHA6Ly9iYnMuaGFu\nbWluenUub3JnLwouaGFudW55aS5jb20KLmhhby5uZXdzL25ld3MKfGh0dHA6Ly9h\nZS5oYW8xMjMuY29tCnxodHRwOi8vYXIuaGFvMTIzLmNvbQp8aHR0cDovL2JyLmhh\nbzEyMy5jb20KfGh0dHA6Ly9lbi5oYW8xMjMuY29tCnxodHRwOi8vaWQuaGFvMTIz\nLmNvbQp8aHR0cDovL2pwLmhhbzEyMy5jb20KfGh0dHA6Ly9tYS5oYW8xMjMuY29t\nCnxodHRwOi8vbXguaGFvMTIzLmNvbQp8aHR0cDovL3NhLmhhbzEyMy5jb20KfGh0\ndHA6Ly90aC5oYW8xMjMuY29tCnxodHRwOi8vdHcuaGFvMTIzLmNvbQp8aHR0cDov\nL3ZuLmhhbzEyMy5jb20KfGh0dHA6Ly9oay5oYW8xMjNpbWcuY29tCnxodHRwOi8v\nbGQuaGFvMTIzaW1nLmNvbQp8fGhhcHB5LXZwbi5jb20KLmhhcHJveHkub3JnCnx8\naGFyZHNleHR1YmUuY29tCi5oYXJ1bnlhaHlhLmNvbQp8aHR0cDovL2hhcnVueWFo\neWEuY29tCmJicy5oYXNpLndhbmcKaGF2ZTguY29tCkBAfHxoYXlnby5jb20KLmhj\nbGlwcy5jb20KfHxoZGx0Lm1lCnx8aGR0dmIubmV0Ci5oZHpvZy5jb20KfGh0dHA6\nLy9oZHpvZy5jb20KfHxoZWFydHlpdC5jb20KLmhlYXZ5LXIuY29tCi5oZWMuc3UK\nfGh0dHA6Ly9oZWMuc3UKLmhlY2FpdG91Lm5ldAp8fGhlY2FpdG91Lm5ldAouaGVj\naGFqaS5jb20KfHxoZWNoYWppLmNvbQp8fGhlZWFjdC5lZHUudHcKLmhlZ3JlLWFy\ndC5jb20KfGh0dHA6Ly9oZWdyZS1hcnQuY29tCnx8Y2RuLmhlbGl4c3R1ZGlvcy5u\nZXQKfHxoZWxwbGluZmVuLmNvbQp8fGhlbGxvYW5kcm9pZC5jb20KfHxoZWxsb3F1\nZWVyLmNvbQouaGVsbG9zcy5wdwpoZWxsb3R4dC5jb20KfHxoZWxsb3R4dC5jb20K\nLmhlbnRhaS50bwouaGVsbG91ay5vcmcvZm9ydW0vbG9maXZlcnNpb24KLmhlbHBl\nYWNocGVvcGxlLmNvbQp8fGhlbHBlYWNocGVvcGxlLmNvbQp8fGhlbHBzdGVyLmRl\nCi5oZWxwemh1bGluZy5vcmcKaGVudGFpdHViZS50dgouaGVudGFpdmlkZW93b3Js\nZC5jb20KCiEjIyMjIyMjIyMjIy0tSGVyb2t1LS0jIyMjIyMjIyMjCiEtLXx8Z2V0\nY2xvdWRhcHAuY29tCiEtLXx8Y2wubHkKIS0tQEB8fGYuY2wubHkKIS0tRUMyIERO\nUyBQb2lzb25lZAp8fGlkLmhlcm9rdS5jb20KCmhlcWluZ2xpYW4ubmV0Cnx8aGV1\nbmdrb25nZGlzY3Vzcy5jb20KLmhleGllc2hlLmNvbQp8fGhleGllc2hlLmNvbQp8\nfGhleGllc2hlLnh5egohLS1Hb29nbGUgZW1wbG95ZWUgd2l0aGluIEdvb2dsZSBJ\nUAp8fGhleHhlaC5uZXQKYXBwLmhleXdpcmUuY29tCi5oZXl6by5jb20KLmhnc2Vh\ndi5jb20KLmhoZGNiM29mZmljZS5vcmcKLmhodGhlc2FreWF0cml6aW4ub3JnCmhp\nLW9uLm9yZy50dwpoaWRkZW4tYWR2ZW50Lm9yZwp8fGhpZGRlbi1hZHZlbnQub3Jn\nCmhpZGVjbG91ZC5jb20vYmxvZy8yMDA4LzA3LzI5L2Z1Y2stYmVpamluZy1vbHlt\ncGljcy5odG1sCnx8aGlkZS5tZQouaGlkZWluLm5ldAouaGlkZWlwdnBuLmNvbQp8\nfGhpZGVpcHZwbi5jb20KLmhpZGVtYW4ubmV0Cnx8aGlkZW1hbi5uZXQKaGlkZW1l\nLm5sCnx8aGlkZW15Lm5hbWUKLmhpZGVteWFzcy5jb20KfHxoaWRlbXlhc3MuY29t\nCmhpZGVteWNvbXAuY29tCnx8aGlkZW15Y29tcC5jb20KLmhpaGlmb3J1bS5jb20K\nLmhpaGlzdG9yeS5uZXQKfHxoaWhpc3RvcnkubmV0Ci5oaWdmdy5jb20KaGlnaHBl\nYWtzcHVyZWVhcnRoLmNvbQp8fGhpZ2hyb2NrbWVkaWEuY29tCnx8aGlpdGNoLmNv\nbQp8fGhpa2luZ2dmdy5vcmcKLmhpbGl2ZS50dgouaGltYWxheWFuLWZvdW5kYXRp\nb24ub3JnCmhpbWFsYXlhbmdsYWNpZXIuY29tCi5oaW1lbWl4LmNvbQp8fGhpbWVt\naXguY29tCi5oaW1lbWl4Lm5ldAp0aW1lcy5oaW5ldC5uZXQKLmhpdG9taS5sYQp8\naHR0cDovL2hpdG9taS5sYQouaGl3aWZpLmNvbQpAQHx8aGl3aWZpLmNvbQpoaXpi\ndXR0YWhyaXIub3JnCmhpemItdXQtdGFocmlyLmluZm8KaGl6Yi11dC10YWhyaXIu\nb3JnCi5oamNsdWIuaW5mbwouaGstcHViLmNvbS9mb3J1bQp8aHR0cDovL2hrLXB1\nYi5jb20KLmhrMDEuY29tCnx8aGswMS5jb20KLmhrMzIxNjguY29tCnx8aGszMjE2\nOC5jb20KfHxoa2FjZy5jb20KfHxoa2FjZy5uZXQKLmhrYXR2bmV3cy5jb20KaGti\nYy5uZXQKLmhrYmYub3JnCi5oa2Jvb2tjaXR5LmNvbQp8fGhrYm9va2NpdHkuY29t\nCi5oa2NodXJjaC5vcmcKaGtjaS5vcmcuaGsKLmhrY21pLmVkdQp8fGhrY25ld3Mu\nY29tCnx8aGtjb2MuY29tCmhrZGF5Lm5ldAouaGtkYWlseW5ld3MuY29tLmhrL2No\naW5hLnBocApoa2RmLm9yZwouaGtlai5jb20KLmhrZXBjLmNvbS9mb3J1bS92aWV3\ndGhyZWFkLnBocD90aWQ9MTE1MzMyMgpjaGluYS5oa2V0LmNvbQp8fGhrZmFhLmNv\nbQpoa2ZyZWV6b25lLmNvbQpoa2Zyb250Lm9yZwptLmhrZ2FsZGVuLmNvbQp8aHR0\ncHM6Ly9tLmhrZ2FsZGVuLmNvbQpoa2dvbGRlbi5jb20KLmhrZ3JlZW5yYWRpby5v\ncmcvaG9tZQouaGtoZWFkbGluZS5jb20qYmxvZwouaGtoZWFkbGluZS5jb20vaW5z\ndGFudG5ld3MKaGtoa2hrLmNvbQpoa2hyYy5vcmcuaGsKaGtocm0ub3JnLmhrCnx8\naGtpcC5vcmcudWsKMTk4OXJlcG9ydC5oa2phLm9yZy5oawpoa2pjLmNvbQouaGtq\ncC5vcmcKLmhrbGZ0LmNvbQouaGtsdHMub3JnLmhrCnx8aGtsdHMub3JnLmhrCm5l\nd3MuaGtwZWFudXQuY29tCmhrcHR1Lm9yZwouaGtyZXBvcnRlci5jb20KfHxoa3Jl\ncG9ydGVyLmNvbQp8aHR0cDovL2hrdXBvcC5oa3UuaGsvCi5oa3VzdS5uZXQKfHxo\na3VzdS5uZXQKLmhrdndldC5jb20KLmhrd2NjLm9yZy5oawp8fGhrem9uZS5vcmcK\nLmhtb25naG90LmNvbQp8aHR0cDovL2htb25naG90LmNvbQouaG12LmNvLmpwLwpo\nbmpoai5jb20KfHxobmpoai5jb20KLmhubnR1YmUuY29tCnx8aG9sYS5jb20KfHxo\nb2xhLm9yZwpob2x5bW91bnRhaW5jbi5jb20KaG9seXNwaXJpdHNwZWFrcy5vcmcK\nfHxob2x5c3Bpcml0c3BlYWtzLm9yZwp8fGRlcmVraHN1LmhvbWVpcC5uZXQKLmhv\nbWVwZXJ2ZXJzaW9uLmNvbQp8aHR0cDovL2hvbWVzZXJ2ZXJzaG93LmNvbQp8aHR0\ncDovL29sZC5ob25leW5ldC5vcmcvc2NhbnMvc2NhbjMxL3N1Yi9kb3VnX2VyaWMv\nc3BhbV90cmFuc2xhdGlvbi5odG1sCi5ob25na29uZ2ZwLmNvbQp8fGhvbmdrb25n\nZnAuY29tCmhvbmdtZWltZWkuY29tCnx8aG9uZ3poaS5saQouaG9vdHN1aXRlLmNv\nbQp8fGhvb3RzdWl0ZS5jb20KLmhvcGVkaWFsb2d1ZS5vcmcKfGh0dHA6Ly9ob3Bl\nZGlhbG9ndWUub3JnCi5ob3B0by5vcmcKLmhvcm55Z2FtZXIuY29tCi5ob3JueXRy\naXAuY29tCnxodHRwOi8vaG9ybnl0cmlwLmNvbQouaG90YXYudHYKLmhvdGVscy5j\nbgpob3Rmcm9nLmNvbS50dwpob3Rnb28uY29tCi5ob3Rwb3Juc2hvdy5jb20KaG90\ncG90LmhrCi5ob3RzaGFtZS5jb20KfHxob3RzcG90c2hpZWxkLmNvbQouaG90dnBu\nLmNvbQp8fGhvdHZwbi5jb20KfHxob3VnYWlnZS5jb20KfHxob3d0b2ZvcmdlLmNv\nbQp8fGhveHguY29tCi5ocWNkcC5vcmcKfHxocWNkcC5vcmcKfHxocWphcGFuZXNl\nc2V4LmNvbQpocW1vdmllcy5jb20KLmhyY2lyLmNvbQouaHJjY2hpbmEub3JnCi5o\ncmVhLm9yZwouaHJpY2hpbmEub3JnCnx8aHJpY2hpbmEub3JnCi5ocncub3JnCnx8\naHJ3Lm9yZwpocndlYi5vcmcKfHxoc2pwLm5ldAp8fGhzc2VsaXRlLmNvbQp8aHR0\ncDovL2hzdC5uZXQudHcKLmhzdGVybi5uZXQKLmhzdHQubmV0Ci5odGtvdS5uZXQK\nfHxodGtvdS5uZXQKLmh1YS15dWUubmV0Ci5odWFnbGFkLmNvbQp8fGh1YWdsYWQu\nY29tCi5odWFuZ2h1YWdhbmcub3JnCnx8aHVhbmdodWFnYW5nLm9yZwouaHVhbmd5\naXl1LmNvbQouaHVhcmVuLnVzCnx8aHVhcmVuLnVzCi5odWFyZW40dXMuY29tCi5o\ndWFzaGFuZ25ld3MuY29tCnxodHRwOi8vaHVhc2hhbmduZXdzLmNvbQpiYnMuaHVh\nc2luZy5vcmcKaHVheGlhLW5ld3MuY29tCmh1YXhpYWJhby5vcmcKaHVheGluLnBo\nCnx8aHVheXV3b3JsZC5vcmcKLmh1ZmZpbmd0b25wb3N0LmNvbS9yZWJpeWEta2Fk\nZWVyCnx8aHVnb3JveS5ldQp8fGh1aGFpdGFpLmNvbQp8fGh1aGFtaGlyZS5jb20K\naHVpeWkuaW4KLmh1bGtzaGFyZS5jb20KaHVtYW5yaWdodHNicmllZmluZy5vcmcK\nfHxodW5nLXlhLmNvbQp8fGh1bmdlcnN0cmlrZWZvcmFpZHMub3JnCnx8aHVwaW5n\nLm5ldApodXJnb2tiYXlyYWsuY29tCi5odXJyaXlldC5jb20udHIKLmh1dDIucnUK\nfHxodXRpYW55aS5uZXQKaHV0b25nOS5uZXQKaHV5YW5kZXguY29tCi5od2FkemFu\nLnR3Cnx8aHdheXVlLm9yZy50dwp8fGh3aW5mby5jb20KfHxoeHdrLm9yZwpoeHdx\nLm9yZwp8fGh5cGVycmF0ZS5jb20KZWJvb2suaHlyZWFkLmNvbS50dwp8fGVib29r\nLmh5cmVhZC5jb20udHcKCiEtLS0tLS0tLS0tLS0tLS0tLS0tLUlJLS0tLS0tLS0t\nLS0tLS0tLS0tLS0tLS0tLQp8fGkxLmhrCnx8aTJwMi5kZQp8fGkycnVubmVyLmNv\nbQp8fGk4MThoay5jb20KLmktY2FibGUuY29tCi5pLXBhcnQuY29tLnR3Ci5pYW10\nb3BvbmUuY29tCmlhc2suY2EKfHxpYXNrLmNhCmlhc2suYnoKfHxpYXNrLmJ6Ci5p\nYXYxOS5jb20KaWJpYmxpby5vcmcvcHViL3BhY2thZ2VzL2NjaWMKLmlibGlzdC5j\nb20KfHxpYmxvZ3NlcnYtZi5uZXQKaWJyb3Mub3JnCnxodHRwOi8vY24uaWJ0aW1l\ncy5jb20KLmlidnBuLmNvbQp8fGlidnBuLmNvbQppY2Ftcy5jb20KYmxvZ3MuaWNl\ncm9ja2V0LmNvbS90YWcKLmljaWoub3JnCnx8aWNpai5vcmcKfHxpY2wtZmkub3Jn\nCi5pY29jby5jb20KfHxpY29jby5jb20KCiEtLTM4LjEwMy4xNjUuNTAKfHxmdXJi\nby5vcmcKIS0tfHxpY29uZmFjdG9yeS5jb20KfHx3YXJibGVyLmljb25mYWN0b3J5\nLm5ldAoKfHxpY29ucGFwZXIub3JnCiEtLSBHb29nbGUgUGFnZXMKfHxpY3UtcHJv\namVjdC5vcmcKdy5pZGFpd2FuLmNvbS9mb3J1bQp8fGlkZGRkZy5jb20KaWRlbW9j\ncmFjeS5hc2lhCi5pZGVudGkuY2EKfHxpZGVudGkuY2EKfHxpZGlvbWNvbm5lY3Rp\nb24uY29tCnxodHRwOi8vd3d3LmlkbGNveW90ZS5jb20KLmlkb3VnYS5jb20KLmlk\ncmVhbXguY29tCmZvcnVtLmlkc2FtLmNvbQouaWR2LnR3Ci5pZWFzeTUuY29tCnxo\ndHRwOi8vaWVhc3k1LmNvbQouaWVkMmsubmV0Ci5pZW5lcmd5MS5jb20KfGh0dHA6\nLy9pZi50dHQvCmlmYW5xaWFuZy5jb20KLmlmY3NzLm9yZwp8fGlmY3NzLm9yZwpp\nZmpjLm9yZwouaWZ0LnR0CnxodHRwOi8vaWZ0LnR0Cnx8aWZyZWV3YXJlcy5jb20K\nfHxpZ2NkLm5ldAouaWdmdy5uZXQKfHxpZ2Z3Lm5ldAouaWdmdy50ZWNoCnx8aWdm\ndy50ZWNoCi5pZ21nLmRlCnx8aWduaXRlZGV0cm9pdC5uZXQKLmlnb3RtYWlsLmNv\nbS50dwp8fGlndml0YS5jb20KfHxpaGFra2EubmV0Ci5paGFvLm9yZy9kejUKfHxp\naWNucy5jb20KLmlrc3Rhci5jb20KfHxpbGx1c2lvbmZhY3RvcnkuY29tCnx8aWxv\ndmU4MC5iZQp8fGltLnR2CkBAfHxteXZsb2cuaW0udHYKfHxpbTg4LnR3Ci5pbWdj\naGlsaS5uZXQKfGh0dHA6Ly9pbWdjaGlsaS5uZXQKLmltYWdlYWIuY29tCi5pbWFn\nZWZhcC5jb20KfHxpbWFnZWZhcC5jb20KfHxpbWFnZWZsZWEuY29tCmltYWdlc2hh\nY2sudXMKfHxpbWFnZXZlbnVlLmNvbQp8fGltYWdlemlsbGEubmV0Ci5pbWIub3Jn\nCnxodHRwOi8vaW1iLm9yZwoKIS0tSU1EQgp8aHR0cDovL3d3dy5pbWRiLmNvbS9u\nYW1lL25tMDQ4MjczMAouaW1kYi5jb20vdGl0bGUvdHQwODE5MzU0Ci5pbWRiLmNv\nbS90aXRsZS90dDE1NDAwNjgKLmltZGIuY29tL3RpdGxlL3R0NDkwODY0NAoKLmlt\nZy5seQp8fGltZy5seQouaW1rZXYuY29tCnx8aW1rZXYuY29tCi5pbWxpdmUuY29t\nCi5pbW1vcmFsLmpwCmltcGFjdC5vcmcuYXUKaW1wcC5tbgp8aHR0cDovL3RlY2gy\nLmluLmNvbS92aWRlby8KaW45OS5vcmcKaW4tZGlzZ3Vpc2UuY29tCi5pbmNhcGRu\ncy5uZXQKLmluY2xvYWsuY29tCnx8aW5jbG9hay5jb20KfHxpbmNyZWRpYm94LmZy\nCnx8aW5kaWFuZGVmZW5zZW5ld3MuaW4KdGltZXNvZmluZGlhLmluZGlhdGltZXMu\nY29tL2RhbGFpCnRpbWVzb2ZpbmRpYS5pbmRpYXRpbWVzLmNvbS9kZWZhdWx0aW50\nZXJzdGl0aWFsLmNtcwouaW5kaWVtZXJjaC5jb20KfHxpbmRpZW1lcmNoLmNvbQpp\nbmZvLWdyYWYuZnIKd2Vic2l0ZS5pbmZvcm1lci5jb20KLmluaXRpYXRpdmVzZm9y\nY2hpbmEub3JnCi5pbmt1aS5jb20KLmlubWVkaWFoay5uZXQKfHxpbm1lZGlhaGsu\nbmV0Cnx8aW5uZXJtb25nb2xpYS5vcmcKfGh0dHA6Ly9ibG9nLmlub3JlYWRlci5j\nb20KLmlub3RlLnR3Ci5pbnNlY2FtLm9yZwp8aHR0cDovL2luc2VjYW0ub3JnCnx8\naW5zaWRldm9hLmNvbQouaW5zdGl0dXQtdGliZXRhaW4ub3JnCnxodHRwOi8vaW50\nZXJuZXQub3JnLwppbnRlcm5ldGRlZmVuc2VsZWFndWUub3JnCmludGVybmV0ZnJl\nZWRvbS5vcmcKIS0tfHxpbnRlcnBvbC5pbnQKfHxpbnRlcm5ldHBvcGN1bHR1cmUu\nY29tCmlueGlhbi5jb20KfHxpbnhpYW4uY29tCmlwYWx0ZXIuY29tCiEtLXx8aXBj\nZi5vcmcudHcKLmlwZmlyZS5vcmcKfHxpcGhvbmU0aG9uZ2tvbmcuY29tCnx8aXBo\nb25laGFja3MuY29tCnx8aXBob25ldGFpd2FuLm9yZwp8fGlwaG9uaXguZnIKfHxp\ncGljdHVyZS5ydQouaXBqZXRhYmxlLm5ldAp8fGlwamV0YWJsZS5uZXQKLmlwb2Jh\nci5jb20vcmVhZC5waHA/Cmlwb29jay5jb20vaW1nCi5pcG9ydGFsLm1lCnxodHRw\nOi8vaXBvcnRhbC5tZQp8fGlwcG90di5jb20KLmlwcmVkYXRvci5zZQp8fGlwcmVk\nYXRvci5zZQouaXB0di5jb20udHcKfHxpcHR2YmluLmNvbQp8fGlwdmFuaXNoLmNv\nbQppcmVkbWFpbC5vcmcKY2hpbmVzZS5pcmliLmlyCnx8aXJvbmJpZ2Zvb2xzLmNv\nbXB5dGhvbi5uZXQKfHxpcm9ucHl0aG9uLm5ldAouaXJvbnNvY2tldC5jb20KfHxp\ncm9uc29ja2V0LmNvbQouaXMuZ2QKLmlzbGFoaGFiZXIubmV0Ci5pc2xhbS5vcmcu\naGsKfGh0dHA6Ly9pc2xhbS5vcmcuaGsKLmlzbGFtYXdhcmVuZXNzLm5ldC9Bc2lh\nL0NoaW5hCi5pc2xhbWhvdXNlLmNvbQp8fGlzbGFtaG91c2UuY29tCi5pc2xhbWlj\naXR5LmNvbQouaXNsYW1pY3BsdXJhbGlzbS5vcmcKLmlzbGFtdG9kYXkubmV0Ci5p\nc2FhY21hby5jb20KfHxpc2FhY21hby5jb20KfHxpc2dyZWF0Lm9yZwp8fGlzbWFl\nbGFuLmNvbQouaXNtYWxsdGl0cy5jb20KfHxpc21wcm9mZXNzaW9uYWwubmV0Cmlz\nb2h1bnQuY29tCnx8aXNyYWJveC5jb20KLmlzc3V1LmNvbQp8fGlzc3V1LmNvbQou\naXN0YXJzLmNvLm56Cm92ZXJzZWEuaXN0YXJzaGluZS5jb20KfHxvdmVyc2VhLmlz\ndGFyc2hpbmUuY29tCmJsb2cuaXN0ZWYuaW5mby8yMDA3LzEwLzIxL215ZW50dW5u\nZWwKLmlzdGlxbGFsaGV3ZXIuY29tCi5pc3RvY2twaG90by5jb20KaXN1bmFmZmFp\ncnMuY29tCmlzdW50di5jb20KaXRhYm9vLmluZm8KfHxpdGFib28uaW5mbwouaXRh\nbGlhdGliZXQub3JnCmRvd25sb2FkLml0aG9tZS5jb20udHcKaXRoZWxwLml0aG9t\nZS5jb20udHcKfHxpdHNoaWRkZW4uY29tCi5pdHNreS5pdAouaXR3ZWV0Lm5ldAp8\naHR0cDovL2l0d2VldC5uZXQKLml1NDUuY29tCi5pdWhyZGYub3JnCnx8aXVocmRm\nLm9yZwouaXVrc2t5LmNvbQouaXZhY3kuY29tCnx8aXZhY3kuY29tCi5pdmVyeWNk\nLmNvbQouaXZwbi5uZXQKIS0tfHxpdnBuLm5ldAp8fGl4cXVpY2suY29tCi5peHh4\nLmNvbQppeW91cG9ydC5jb20KfHxpeW91cG9ydC5jb20KLml6YW9iYW8udXMKfHxn\nbW96b21nLml6aWhvc3Qub3JnCi5pemxlcy5uZXQKLml6bGVzZW0ub3JnCgohLS0t\nLS0tLS0tLS0tLS0tLS0tLS1KSi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KfHxq\nLm1wCmJsb2cuamFja2ppYS5jb20KamFtYWF0Lm9yZwouamFteWFuZ25vcmJ1LmNv\nbQp8aHR0cDovL2phbXlhbmdub3JidS5jb20KLmphbmR5eC5jb20KfHxqYW53b25n\ncGhvdG8uY29tCnx8amFwYW4td2hvcmVzLmNvbQouamF2LmNvbQouamF2MTAxLmNv\nbQouamF2MmJlLmNvbQp8fGphdjJiZS5jb20KLmphdjY4LnR2Ci5qYXZha2liYS5v\ncmcKfGh0dHA6Ly9qYXZha2liYS5vcmcKLmphdmJ1cy5jb20KfHxqYXZidXMuY29t\nCnx8amF2Zm9yLm1lCi5qYXZoZC5jb20KLmphdmhpcC5jb20KLmphdm1vYmlsZS5u\nZXQKfGh0dHA6Ly9qYXZtb2JpbGUubmV0Ci5qYXZtb28uY29tCi5qYXZzZWVuLmNv\nbQp8aHR0cDovL2phdnNlZW4uY29tCmpidGFsa3MuY2MKamJ0YWxrcy5jb20KamJ0\nYWxrcy5teQouamR3c3kuY29tCmplYW55aW0uY29tCnx8amZxdTM2LmNsdWIKfHxq\nZnF1MzcueHl6Cnx8amdvb2RpZXMuY29tCi5qaWFuZ3dlaXBpbmcuY29tCnx8amlh\nbmd3ZWlwaW5nLmNvbQp8fGppYW95b3U4LmNvbQouamllaHVhLmN6Cnx8aGsuamll\ncGFuZy5jb20KfHx0dy5qaWVwYW5nLmNvbQpqaWVzaGliYW9iYW8uY29tCi5qaWdn\nbGVnaWZzLmNvbQo1NmN1bjA0LmppZ3N5LmNvbQpqaWdvbmcxMDI0LmNvbQpkYW9k\ndTE0LmppZ3N5LmNvbQpzcGVjeGluemwuamlnc3kuY29tCndsY25ldy5qaWdzeS5j\nb20KLmppaGFkb2xvZ3kubmV0CnxodHRwOi8vamloYWRvbG9neS5uZXQKamluYnVz\naGUub3JnCnx8amluYnVzaGUub3JnCi5qaW5nc2ltLm9yZwp6aGFvLmppbmhhaS5k\nZQpqaW5ncGluLm9yZwp8fGppbmdwaW4ub3JnCmppbnBpYW53YW5nLmNvbQouamlu\ncm91a29uZy5jb20KYWMuamlydWFuLm5ldAp8fGppdG91Y2guY29tCi5qaXp6dGhp\ncy5jb20KampnaXJscy5jb20KLmprYi5jYwp8aHR0cDovL2prYi5jYwpqa2ZvcnVt\nLm5ldAp8fGptYS5nby5qcApyZXNlYXJjaC5qbXNjLmhrdS5oay9zb2NpYWwKd2Vp\nYm9zY29wZS5qbXNjLmhrdS5oawouam1zY3VsdC5jb20KfGh0dHA6Ly9qbXNjdWx0\nLmNvbQp8fGpvYWNoaW1zLm9yZwp8fGpvYnNvLnR2Ci5zdW53aW5pc20uam9pbmJi\ncy5uZXQKLmpvdXJuYWxjaHJldGllbi5uZXQKfHxqb3VybmFsb2ZkZW1vY3JhY3ku\nb3JnCi5qb3ltaWlodWIuY29tCi5qb3lvdXJzZWxmLmNvbQpqcG9wZm9ydW0ubmV0\nCi5qdWJ1c2hvdXNoZW4uY29tCnx8anVidXNob3VzaGVuLmNvbQohLS1Eb2FtaW4g\ncGFya2luZwouanVodWFyZW4uY29tCnx8anVsaWVyZXljLmNvbQp8fGp1bmF1emEu\nY29tCi5qdW5lNGNvbW1lbW9yYXRpb24ub3JnCi5qdW5lZm91cnRoLTIwLm5ldAp8\nfGp1bmVmb3VydGgtMjAubmV0Cnx8YmJzLmp1bmdsb2JhbC5uZXQKLmp1b2FhLmNv\nbQp8aHR0cDovL2p1b2FhLmNvbQpqdXN0ZnJlZXZwbi5jb20KLmp1c3RpY2Vmb3J0\nZW56aW4ub3JnCmp1c3RwYXN0ZS5pdApqdXN0dHJpc3Rhbi5jb20KanV5dWFuZ2Uu\nb3JnCmp1eml5dWUuY29tCnx8anV6aXl1ZS5jb20KfHxqd211c2ljLm9yZwpAQHx8\nbXVzaWMuandtdXNpYy5vcmcKLmp5eGYubmV0CgohLS0tLS0tLS0tLS0tLS0tLS0t\nLS1LSy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KfHxrLWRvdWppbi5uZXQKfHxr\nYS13YWkuY29tCi5rYWd5dS5vcmcKfHxrYWd5dS5vcmcuemEKLmthZ3l1bW9ubGFt\nLm9yZwoua2FneXVuZXdzLmNvbS5oawoua2FneXVvZmZpY2Uub3JnCnx8a2FneXVv\nZmZpY2Uub3JnCnx8a2FneXVvZmZpY2Uub3JnLnR3Ci5rYWl5dWFuLmRlCi5rYWth\nby5jb20KfHxrYWthby5jb20KLmthbGFjaGFrcmFsdWdhbm8ub3JnCi5rYW5rYW4u\ndG9kYXkKLmthbm5ld3lvcmsuY29tCnx8a2FubmV3eW9yay5jb20KLmthbnNoaWZh\nbmcuY29tCnx8a2Fuc2hpZmFuZy5jb20KfHxrYW50aWUub3JnCmthbnpob25nZ3Vv\nLmNvbQprYW56aG9uZ2d1by5ldQoua2FvdGljLmNvbQp8fGthcmF5b3UuY29tCmth\ncmtodW5nLmNvbQoua2FybWFwYS5vcmcKLmthcm1hcGEtdGVhY2hpbmdzLm9yZwp8\nfGthd2FzZS5jb20KLmtiYS10eC5vcmcKLmtjb29sb25saW5lLmNvbQoua2VicnVt\nLmNvbQp8fGtlYnJ1bS5jb20KLmtlY2hhcmEuY29tCi5rZWVwYW5kc2hhcmUuY29t\nL3Zpc2l0L3Zpc2l0X3BhZ2UucGhwP2k9Njg4MTU0CiEtLXx8a2VlcHZpZC5jb20K\nLmtlZXptb3ZpZXMuY29tCi5rZW5kaW5jb3MubmV0Ci5rZW5lbmdiYS5jb20KfHxr\nZW5lbmdiYS5jb20KfHxrZW9udGVjaC5uZXQKLmtlcGFyZC5jb20KfHxrZXBhcmQu\nY29tCndpa2kua2Vzby5jbi9Ib21lCnx8a2V5Y2RuLmNvbQoua2hhYmRoYS5vcmcK\nLmtobXVzaWMuY29tLnR3Cnx8a2ljaGlrdS1kb3VqaW5rby5jb20KLmtpay5jb20K\nfHxraWsuY29tCmJicy5raW15LmNvbS50dwoua2luZGxlcmVuLmNvbQp8aHR0cDov\nL2tpbmRsZXJlbi5jb20KfGh0dHA6Ly93d3cua2luZGxlcmVuLmNvbQoua2luZ2Rv\nbXNhbHZhdGlvbi5vcmcKfHxraW5nZG9tc2FsdmF0aW9uLm9yZwpraW5naG9zdC5j\nb20KIS0tLmtpbmdzdG9uZS5jb20udHcvYm9vay8KfHxraW5nc3RvbmUuY29tLnR3\nCi5raW5rLmNvbQpraWxsd2FsbC5jb20KfHxraWxsd2FsbC5jb20KfHxraW5tZW4u\ndHJhdmVsCi5raXIuanAKLmtpc3NiYmFvLmNuCnxodHRwOi8va2l3aS5regp8fGtr\nLXdoeXMuY28uanAKIS0tfHxrbXQub3JnLnR3Ci5rbXVoLm9yZy50dwoua25vd2xl\nZGdlcnVzaC5jb20va3IvZW5jeWNsb3BlZGlhCi5rb2JvLmNvbQp8fGtvYm8uY29t\nCi5rb2JvYm9va3MuY29tCnx8a29ib2Jvb2tzLmNvbQp8fGtvZGluZ2VuLmNvbQpA\nQHx8d3d3LmtvZGluZ2VuLmNvbQp8fGtvbXBvemVyLm5ldAoua29uYWNoYW4uY29t\nCnxodHRwOi8va29uYWNoYW4uY29tCi5rb25lLmNvbQp8fGtvb2xzb2x1dGlvbnMu\nY29tCi5rb29ybmsuY29tCnx8a29vcm5rLmNvbQp8fGtvcmFubWFuZGFyaW4uY29t\nCi5rb3JlbmFuMi5jb20KfGh0dHA6Ly9nb2pldC5rcnRjby5jb20udHcKLmtzZGwu\nb3JnCi5rc25ld3MuY29tLnR3Cnx8a3R6aGsuY29tCi5rdWkubmFtZS9ldmVudApr\ndW4uaW0KLmt1cmFzaHN1bHRhbi5jb20KfHxrdXJ0bXVuZ2VyLmNvbQprdXNvY2l0\neS5jb20KfHxrd2NnLmNhCmt3b25nd2FoLmNvbS5teQoua3hzdy5saWZlCnx8a3hz\ndy5saWZlCi5reW9mdW4uY29tCmt5b2hrLm5ldAp8fGt5b3l1ZS5jb20KLmt5enlo\nZWxsby5jb20KfHxreXp5aGVsbG8uY29tCi5remVuZy5pbmZvCnx8a3plbmcuaW5m\nbwoKIS0tLS0tLS0tLS0tLS0tLS0tLS0tTEwtLS0tLS0tLS0tLS0tLS0tLS0tLS0t\nLS0tCmxhLWZvcnVtLm9yZwpsYWRicm9rZXMuY29tCnx8bGFiaWVubmFsZS5vcmcK\nLmxhZ3JhbmVwb2NhLmNvbQp8fGxhZ3JhbmVwb2NhLmNvbQoubGFsdWxhbHUuY29t\nCi5sYW1hLmNvbS50dwp8fGxhbWEuY29tLnR3Ci5sYW1heWVzaGUuY29tCnxodHRw\nOi8vbGFtYXllc2hlLmNvbQp8aHR0cDovL3d3dy5sYW1lbmh1LmNvbQoubGFtbmlh\nLmNvLnVrCnx8bGFtbmlhLmNvLnVrCmxhbXJpbS5jb20KLmxhbnRlcm5jbi5jbgp8\naHR0cDovL2xhbnRlcm5jbi5jbgoubGFudG9zZm91bmRhdGlvbi5vcmcKLmxhb2Qu\nY24KfGh0dHA6Ly9sYW9kLmNuCmxhb2dhaS5vcmcKfHxsYW9nYWkub3JnCmxhb21p\ndS5jb20KLmxhb3lhbmcuaW5mbwp8aHR0cDovL2xhb3lhbmcuaW5mbwp8fGxhcHRv\ncGxvY2tkb3duLmNvbQoubGFxaW5nZGFuLm5ldAp8fGxhcWluZ2Rhbi5uZXQKfHxs\nYXJzZ2VvcmdlLmNvbQoubGFzdGNvbWJhdC5jb20KfGh0dHA6Ly9sYXN0Y29tYmF0\nLmNvbQp8fGxhc3RmbS5lcwpsYXRlbGluZW5ld3MuY29tCi5sYXRpYmV0Lm9yZwp8\nfGxlLXZwbi5jb20KLmxlYWZ5dnBuLm5ldAp8fGxlYWZ5dnBuLm5ldApsZWVhby5j\nb20uY24vYmJzL2ZvcnVtLnBocAohLS18fGxlZWNoZXVreWFuLm9yZwpsZWZvcmEu\nY29tCnx8bGVmdDIxLmhrCi5sZWdhbHBvcm5vLmNvbQoubGVnc2phcGFuLmNvbQp8\naHR0cDovL2xlaXJlbnR2LmNhCmxlaXN1cmVjYWZlLmNhCnx8bGVtYXRpbi5jaAou\nbGVtb25kZS5mcgp8fGxlbndoaXRlLmNvbQpsZXJvc3VhLm9yZwp8fGxlcm9zdWEu\nb3JnCmJsb2cubGVzdGVyODUwLmluZm8KfHxsZXNvaXIuYmUKLmxldG91LmNvbQps\nZXRzY29ycC5uZXQKfHxsZXRzY29ycC5uZXQKfHxzcy5sZXZ5aHN1LmNvbQohNjku\nMTYuMTc1LjQyCnx8Y2RuLmFzc2V0cy5sZnBjb250ZW50LmNvbQoubGhha2FyLm9y\nZwp8aHR0cDovL2xoYWthci5vcmcKLmxoYXNvY2lhbHdvcmsub3JnCi5saWFuZ3lv\ndS5uZXQKfHxsaWFuZ3lvdS5uZXQKLmxpYW55dWUubmV0Cnx8bGlhb3dhbmd4aXph\nbmcubmV0Ci5saWFvd2FuZ3hpemFuZy5uZXQKfHxsaWJlcmFsLm9yZy5oawoubGli\nZXJ0eXRpbWVzLmNvbS50dwpibG9ncy5saWJyYXJ5aW5mb3JtYXRpb250ZWNobm9s\nb2d5LmNvbS9qeHl6Ci5saWRlY2hlbmcuY29tL2Jsb2cvZnVja2luZy1nZncKLmxp\nZ2h0ZW4ub3JnLnR3Ci5saWdodG5vdmVsLmNuCkBAfGh0dHBzOi8vd3d3LmxpZ2h0\nbm92ZWwuY24KbGltaWFvLm5ldApsaW5rdXN3ZWxsLmNvbQphYml0bm8ubGlucGll\nLmNvbS91c2UtaXB2Ni10by1mdWNrLWdmdwp8fGxpbmUubWUKfHxsaW5lLWFwcHMu\nY29tCi5saW5nbGluZ2ZhLmNvbQp8fGxpbmd2b2RpY3MuY29tCi5saW5rLW8tcmFt\nYS5jb20KfGh0dHA6Ly9saW5rLW8tcmFtYS5jb20KLmxpbmtpZGVvLmNvbQp8fGFw\naS5saW5rc2FscGhhLmNvbQp8fGFwaWRvY3MubGlua3NhbHBoYS5jb20KfHx3d3cu\nbGlua3NhbHBoYS5jb20KfHxoZWxwLmxpbmtzYWxwaGEuY29tCnx8bGludXgub3Jn\nLmhrCmxpbnV4dG95Lm9yZy9hcmNoaXZlcy9pbnN0YWxsaW5nLXdlc3QtY2hhbWJl\nci1vbi11YnVudHUKLmxpb25zcm9hci5jb20KLmxpcHVtYW4uY29tCnx8bGlxdWlk\ndnBuLmNvbQp8fGdyZWF0ZmlyZS51czcubGlzdC1tYW5hZ2UuY29tCnx8bGlzdGVu\ndG95b3V0dWJlLmNvbQpsaXN0b3Jpb3VzLmNvbQoubGl1LXhpYW9iby5vcmcKfHxs\naXVkZWp1bi5jb20KLmxpdWhhbnl1LmNvbQoubGl1amlhbnNodS5jb20KfHxsaXVq\naWFuc2h1LmNvbQoubGl1eGlhb2JvLm5ldAp8aHR0cDovL2xpdXhpYW9iby5uZXQK\nbGl1eGlhb3RvbmcuY29tCnx8bGl1eGlhb3RvbmcuY29tCi5saXZlZG9vci5qcAou\nbGl2ZWxlYWsuY29tCnx8bGl2ZWxlYWsuY29tCi5saXZlc3RhdGlvbi5jb20KbGl2\nZXN0cmVhbS5jb20KfHxsaXZlc3RyZWFtLmNvbQp8fGxpdmluZ29ubGluZS51cwp8\nfGxpdmluZ3N0cmVhbS5jb20KfHxsaXZldmlkZW8uY29tCi5saXZldmlkZW8uY29t\nCi5saXdhbmd5YW5nLmNvbQpsaXpoaXpodWFuZ2JpLmNvbQpsa2NuLm5ldAoubGxz\ncy5tZS8KLmxvYWQudG8KLmxvYnNhbmd3YW5neWFsLmNvbQoubG9jYWxkb21haW4u\nd3MKfHxsb2NhbGRvbWFpbi53cwpsb2NhbHByZXNzaGsuY29tCnx8bG9ja2VzdGVr\nLmNvbQpsb2dib3QubmV0Cnx8bG9naXF4LmNvbQpzZWN1cmUubG9nbWVpbi5jb20K\nfHxzZWN1cmUubG9nbWVpbi5jb20KLmxvbmRvbmNoaW5lc2UuY2EKLmxvbmdoYWly\nLmhrCmxvbmdtdXNpYy5jb20KfHxsb25ndGVybWx5Lm5ldAp8fGxvb2twaWMuY29t\nCi5sb29rdG9yb250by5jb20KfGh0dHA6Ly9sb29rdG9yb250by5jb20KLmxvdHNh\nd2Fob3VzZS5vcmcvdGliZXRhbi1tYXN0ZXJzL2ZvdXJ0ZWVudGgtZGFsYWktbGFt\nYQoubG90dXNsaWdodC5vcmcuaGsKLmxvdHVzbGlnaHQub3JnLnR3CmhrcmVwb3J0\nZXIubG92ZWQuaGsKIS0tNDAzPwp8fGxwc2cuY29tCnx8bHJmei5jb20KLmxyaXAu\nb3JnCnx8bHJpcC5vcmcKLmxzZC5vcmcuaGsKfHxsc2Qub3JnLmhrCmxzZm9ydW0u\nbmV0Ci5sc20ub3JnCnx8bHNtLm9yZwoubHNtY2hpbmVzZS5vcmcKfHxsc21jaGlu\nZXNlLm9yZwoubHNta29yZWFuLm9yZwp8fGxzbWtvcmVhbi5vcmcKLmxzbXJhZGlv\nLmNvbS9yYWRfYXJjaGl2ZXMKLmxzbXdlYmNhc3QuY29tCi5sdG4uY29tLnR3Cnxo\ndHRwOi8vbHRuLmNvbS50dwoubHVrZTU0LmNvbQoubHVrZTU0Lm9yZwoubHVwbS5v\ncmcKfHxsdXBtLm9yZwp8fGx1c2hzdG9yaWVzLmNvbQpsdXhlYmMuY29tCmx2aGFp\nLm9yZwp8fGx2aGFpLm9yZwp8fGx2djIuY29tCi5seWZoay5uZXQKfGh0dHA6Ly9s\neWZoay5uZXQKLmx6bXRuZXdzLm9yZwp8fGx6bXRuZXdzLm9yZwoKIS0tLS0tLS0t\nLS0tLS0tLS0tLS0tTU0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmh0dHA6Ly8q\nLm0tdGVhbS5jYwohLS1tLXRlYW0uY2MvZm9ydW0KLm1hY3JvdnBuLmNvbQptYWN0\ncy5jb20udHcKfHxtYWQtYXIuY2gKfHxtYWRyYXUuY29tCnx8bWFkdGh1bWJzLmNv\nbQp8fG1hZ2ljLW5ldC5pbmZvCm1haGFib2RoaS5vcmcKbXkubWFpbC5ydQoubWFp\ncGx1cy5jb20KfGh0dHA6Ly9tYWlwbHVzLmNvbQoubWFpemhvbmcub3JnCm1ha2th\naG5ld3NwYXBlci5jb20KLm1hbWluZ3poZS5jb20KbWFuaWN1cjRpay5ydQoubWFw\nbGV3LmNvbQp8aHR0cDovL21hcGxldy5jb20KfHxtYXJjLmluZm8KbWFyZ3Vlcml0\nZS5zdQp8fG1hcnRpbmNhcnRvb25zLmNvbQptYXNrZWRpcC5jb20KLm1haWlvLm5l\ndAptYWlsLWFyY2hpdmUuY29tCi5tYWxheXNpYWtpbmkuY29tCnx8bWFrZW15bW9v\nZC5jb20KLm1hbmNodWt1by5uZXQKLm1hbmlhc2guY29tCnxodHRwOi8vbWFuaWFz\naC5jb20KLm1hbnNpb24uY29tCi5tYW5zaW9ucG9rZXIuY29tCiEtLXx8bWFyaW5l\ncy5taWwKIS0tbWFya21haWwub3JnKm1lc3NhZ2UKfHxtYXJ0YXUuY29tCnxodHRw\nOi8vYmxvZy5tYXJ0aW5vZWkuY29tCi5tYXJ0c2FuZ2thZ3l1b2ZmaWNpYWwub3Jn\nCnxodHRwOi8vbWFydHNhbmdrYWd5dW9mZmljaWFsLm9yZwptYXJ1dGEuYmUvZm9y\nZ2V0Ci5tYXJ4aXN0LmNvbQp8fG1hcnhpc3QubmV0Ci5tYXJ4aXN0cy5vcmcvY2hp\nbmVzZQohLS18fG1hc2hhYmxlLmNvbQp8fG1hdGFpbmphLmNvbQp8fG1hdGhhYmxl\nLmlvCnx8bWF0aGlldy1iYWRpbW9uLmNvbQp8fG1hdHN1c2hpbWFrYWVkZS5jb20K\nfGh0dHA6Ly9tYXR1cmVqcC5jb20KbWF5aW1heWkuY29tCi5tYXhpbmcuanAKLm1j\nYWYuZWUKfGh0dHA6Ly9tY2FmLmVlCnx8bWNhZGZvcnVtcy5jb20KbWNmb2cuY29t\nCm1jcmVhc2l0ZS5jb20KLm1kLXQub3JnCnx8bWQtdC5vcmcKfHxtZWFuc3lzLmNv\nbQoubWVkaWEub3JnLmhrCi5tZWRpYWNoaW5lc2UuY29tCnx8bWVkaWFjaGluZXNl\nLmNvbQoubWVkaWFmaXJlLmNvbS8/Ci5tZWRpYWZpcmUuY29tL2Rvd25sb2FkCi5t\nZWRpYWZyZWFrY2l0eS5jb20KfHxtZWRpYWZyZWFrY2l0eS5jb20KLm1lZGl1bS5j\nb20KfHxtZWRpdW0uY29tCi5tZWV0YXYuY29tCnx8bWVldHVwLmNvbQptZWZlZWRp\nYS5jb20KamloYWRpbnRlbC5tZWZvcnVtLm9yZwp8fG1lZ2EubnoKfHxtZWdhcHJv\neHkuY29tCnx8bWVnYXJvdGljLmNvbQptZWdhdmlkZW8uY29tCnx8bWVndXJpbmVs\ndWthLmNvbQptZWlyaXhpYW9jaGFvLmNvbQoubWVsdG9kYXkuY29tCi5tZW1laGsu\nY29tCnx8bWVtZWhrLmNvbQptZW1vcnliYnMuY29tCi5tZW1yaS5vcmcKLm1lbXJp\nanR0bS5vcmcKLm1lcmN5cHJvcGhldC5vcmcKfGh0dHA6Ly9tZXJjeXByb3BoZXQu\nb3JnCi5tZXJpZGlhbi10cnVzdC5vcmcKfGh0dHA6Ly9tZXJpZGlhbi10cnVzdC5v\ncmcKLm1lcmlwZXQuYml6CnxodHRwOi8vbWVyaXBldC5iaXoKLm1lcmlwZXQuY29t\nCnxodHRwOi8vbWVyaXBldC5jb20KbWVyaXQtdGltZXMuY29tLnR3Cm1lc2hyZXAu\nY29tCi5tZXNvdHcuY29tL2JicwptZXRhY2FmZS5jb20vd2F0Y2gKfHxtZXRlb3Jz\naG93ZXJzb25saW5lLmNvbQp8aHR0cDovL3d3dy5tZXRyby50YWlwZWkvCi5tZXRy\nb2hrLmNvbS5oay8/Y21kPWRldGFpbCZjYXRlZ29yeUlEPTIKfHxtZXRyb2xpZmUu\nY2EKLm1ldHJvcmFkaW8uY29tLmhrCnxodHRwOi8vbWV0cm9yYWRpby5jb20uaGsK\nbWV5b3UuanAKLm1leXVsLmNvbQp8fG1nb29uLmNvbQp8fG1nc3RhZ2UuY29tCnx8\nbWg0dS5vcmcKbWhyYWRpby5vcmcKfGh0dHA6Ly9taWNoYWVsYW50aS5jb20KfHxt\naWNoYWVsbWFya2V0bC5jb20KLm1pY3JvdnBuLmNvbQp8aHR0cDovL21pY3JvdnBu\nLmNvbQptaWRkbGUtd2F5Lm5ldAoubWloay5oay9mb3J1bQoubWloci5jb20KbWlo\ndWEub3JnCiEtLUlQCnx8bWlrZXNvbHR5cy5jb20KLm1pbHBoLm5ldAp8aHR0cDov\nL21pbHBoLm5ldAoubWlsc3VycHMuY29tCm1pbWlhaS5uZXQKLm1pbWl2aXAuY29t\nCi5taW1pdnYuY29tCi5taW5kcm9sbGluZy5vcmcKfGh0dHA6Ly9taW5kcm9sbGlu\nZy5vcmcKLm1pbmdodWkub3Iua3IKfGh0dHA6Ly9taW5naHVpLm9yLmtyCm1pbmdo\ndWkub3JnCnx8bWluZ2h1aS5vcmcKbWluZ2h1aS1hLm9yZwptaW5naHVpLWIub3Jn\nCm1pbmdodWktc2Nob29sLm9yZwoubWluZ2ppbmdsaXNoaS5jb20KfHxtaW5namlu\nZ2xpc2hpLmNvbQptaW5namluZ25ld3MuY29tCnx8bWluZ2ppbmd0aW1lcy5jb20K\nLm1pbmdwYW8uY29tCnx8bWluZ3Bhby5jb20KLm1pbmdwYW9jYW5hZGEuY29tCi5t\naW5ncGFvbW9udGhseS5jb20KfGh0dHA6Ly9taW5ncGFvbW9udGhseS5jb20KbWlu\nZ3Bhb25ld3MuY29tCi5taW5ncGFvbnkuY29tCi5taW5ncGFvc2YuY29tCi5taW5n\ncGFvdG9yLmNvbQoubWluZ3Bhb3Zhbi5jb20KLm1pbmdzaGVuZ2Jhby5jb20KLm1p\nbmhodWUubmV0Ci5taW5pZm9ydW0ub3JnCi5taW5pc3RyeWJvb2tzLm9yZwoubWlu\nemh1aHVhLm5ldAp8fG1pbnpodWh1YS5uZXQKbWluemh1emhhbnhpYW4uY29tCm1p\nbnpodXpob25nZ3VvLm9yZwp8fG1pcm9ndWlkZS5jb20KbWlycm9yYm9va3MuY29t\nCi5taXN0LnZpcAp0aGVjZW50ZXIubWl0LmVkdQoubWl0YW8uY29tLnR3Ci5taXRi\nYnMuY29tCnx8bWl0YmJzLmNvbQptaXRiYnNhdS5jb20KLm1peGVyby5jb20KfHxt\naXhlcm8uY29tCm1peHBvZC5jb20KLm1peHguY29tCnx8bWl4eC5jb20KfHxtaXp6\nbW9uYS5jb20KLm1rNTAwMC5jb20KLm1sY29vbC5jb20KfHxtbHpzLndvcmsKLm1t\nLWNnLmNvbQp8fG1tYWF4eC5jb20KLm1tbWNhLmNvbQptbmV3c3R2LmNvbQp8fG1v\nYmF0ZWsubmV0Ci5tb2JpbGUwMS5jb20KfHxtb2JpbGUwMS5jb20KfHxtb2JpbGV3\nYXlzLmRlCi5tb2J5cGljdHVyZS5jb20KfGh0dHA6Ly9tb2J5LnRvCnx8bW9lZXJv\nbGlicmFyeS5jb20Kd2lraS5tb2VnaXJsLm9yZwoubW9mYXhpZWh1aS5jb20KLm1v\nZm9zLmNvbQp8fG1vZy5jb20KbW9saWh1YS5vcmcKfHxtb25kZXgub3JnCi5tb25l\neS1saW5rLmNvbS50dwp8aHR0cDovL21vbmV5LWxpbmsuY29tLnR3CnxodHRwOi8v\nd3d3Lm1vbmxhbWl0Lm9yZwoubW9vbmJicy5jb20KfHxtb29uYmJzLmNvbQpjMTUy\nMi5tb29vLmNvbQp8fG1vbml0b3JjaGluYS5vcmcKYmJzLm1vcmJlbGwuY29tCnx8\nbW9ybmluZ3N1bi5vcmcKfHxtb3JvbmV0YS5jb20KLm1vdGhlcmxlc3MuY29tCnxo\ndHRwOi8vbW90aGVybGVzcy5jb20KbW90b3I0aWsucnUKLm1vdXNlYnJlYWtlci5j\nb20KIS0tfHxtb3ZhYmxldHlwZS5jb20KLm1vdmVtZW50cy5vcmcKfHxtb3ZlbWVu\ndHMub3JnCnx8bW92aWVmYXAuY29tCnx8d3d3Lm1venR3Lm9yZwoubXAzYnVzY2Fk\nb3IuY29tCm1wM3llLmV1Cnx8bXBldHRpcy5jb20KbXBmaW5hbmNlLmNvbQptcGlu\nZXdzLmNvbQptcG9ubGluZS5oawoubXF4ZC5vcmcKfGh0dHA6Ly9tcXhkLm9yZwpt\ncnR3ZWV0LmNvbQp8fG1ydHdlZXQuY29tCm5ld3MuaGsubXNuLmNvbQpuZXdzLm1z\nbi5jb20udHcKbXNndWFuY2hhLmNvbQoubXN3ZTEub3JnCnxodHRwOi8vbXN3ZTEu\nb3JnCnx8bXRocnVmLmNvbQptdWNob3N1Y2tvLmNvbQp8fG11bHRpcGx5LmNvbQpt\ndWx0aXByb3h5Lm9yZwptdWx0aXVwbG9hZC5jb20KLm11bGx2YWQubmV0Cnx8bXVs\nbHZhZC5uZXQKLm11bW15c2dvbGQuY29tCi5tdXJtdXIudHcKfGh0dHA6Ly9tdXJt\ndXIudHcKLm11c2ljYWRlLm5ldAoubXVzbGltdmlkZW8uY29tCnx8bXV6aS5jb20K\nfHxtdXppLm5ldAp8fG14OTgxLmNvbQoubXktZm9ybW9zYS5jb20KLm15LXByb3h5\nLmNvbQoubXktcHJpdmF0ZS1uZXR3b3JrLmNvLnVrCnx8bXktcHJpdmF0ZS1uZXR3\nb3JrLmNvLnVrCmZvcnVtLm15OTAzLmNvbQoubXlhY3RpbWVzLmNvbS9hY3RpbWVz\nCnx8bXlhbm5pdS5jb20KLm15YXVkaW9jYXN0LmNvbQp8fG15YXVkaW9jYXN0LmNv\nbQoubXlhdi5jb20udHcvYmJzCi5teWJicy51cwoubXljYTE2OC5jb20KLm15Y2Fu\nYWRhbm93LmNvbQp8fGJicy5teWNoYXQudG8KfHxteWNoaW5hbXlob21lLmNvbQou\nbXljaGluYW15aG9tZS5jb20KLm15Y2hpbmFuZXQuY29tCi5teWNoaW5hbmV3cy5j\nb20KfHxteWNoaW5hbmV3cy5jb20KLm15Y2hpbmVzZS5uZXdzCnx8bXljbm5ld3Mu\nY29tCnx8bXlrb21pY2Eub3JnCm15Y291bGQuY29tL2Rpc2N1egoubXllYXN5dHYu\nY29tCnx8bXllY2xpcHNlaWRlLmNvbQoubXlmb3J1bS5jb20uaGsKfHxteWZvcnVt\nLmNvbS5oawp8fG15Zm9ydW0uY29tLnVrCi5teWZyZWVjYW1zLmNvbQoubXlmcmVl\ncGF5c2l0ZS5jb20KLm15ZnJlc2huZXQuY29tCi5teWlwaGlkZS5jb20KfHxteWlw\naGlkZS5jb20KZm9ydW0ubXltYWppLmNvbQpteW1lZGlhcm9tLmNvbS9maWxlcy9i\nb3gKfHxteW1vZS5tb2UKfHxteW11c2ljLm5ldC50dwp8fG15cGFyYWdsaWRpbmcu\nY29tCnx8bXlwb3Blc2N1LmNvbQpteXJhZGlvLmhrL3BvZGNhc3QKLm15cmVhZGlu\nZ21hbmdhLmluZm8KbXlzaW5hYmxvZy5jb20KLm15c3BhY2UuY29tCiEtLS5ibG9n\ncy5teXNwYWNlLmNvbQohLS18fGJsb2dzLm15c3BhY2UuY29tCiEtLXZpZHMubXlz\ncGFjZS5jb20vaW5kZXguY2ZtP2Z1c2VhY3Rpb249dmlkcy4KIS0tdmlld21vcmVw\naWNzLm15c3BhY2UuY29tCnx8bXlzcGFjZWNkbi5jb20KLm15dGFsa2JveC5jb20K\nLm15dGl6aS5jb20KCiEtLS0tLS0tLS0tLS0tLS0tLS0tLU5OLS0tLS0tLS0tLS0t\nLS0tLS0tLS0tLS0tLQp8fG5hYWNvYWxpdGlvbi5vcmcKb2xkLm5hYmJsZS5jb20K\nfHxuYWl0aWsubmV0Ci5uYWt1ei5jb20vYmJzCnx8bmFsYW5kYWJvZGhpLm9yZwp8\nfG5hbGFuZGF3ZXN0Lm9yZwoubmFtZ3lhbC5vcmcKbmFtZ3lhbG1vbmFzdGVyeS5v\ncmcKfHxuYW1zaXNpLmNvbQoubmFueWFuZy5jb20KfHxuYW55YW5nLmNvbQoubmFu\neWFuZ3Bvc3QuY29tCnx8bmFueWFuZ3Bvc3QuY29tCi5uYW56YW8uY29tCiEtLS5u\nYW56YW8uY29tL3NjL2NoaW5hLzIwMjIzCiEtLS5uYW56YW8uY29tL3NjL2hrLW1h\nY2F1LXR3Cnx8anBsLm5hc2EuZ292Cnx8cGRzLm5hc2EuZ292Cnx8c29sYXJzeXN0\nZW0ubmFzYS5nb3YKLm5ha2lkby5jb20KfHxuYWtpZG8uY29tCi5uYW9sLmNhCi5u\nYW9sLmNjCnVpZ2h1ci5uYXJvZC5ydQoubmF0Lm1vZQp8fG5hdC5tb2UKY3liZXJn\naG9zdC5uYXRhZG8uY29tCnx8bmF0aW9uYWwtbG90dGVyeS5jby51awpuZXdzLm5h\ndGlvbmFsZ2VvZ3JhcGhpYy5jb20vbmV3cy8yMDE0LzA2LzE0MDYwMy10aWFuYW5t\nZW4tc3F1YXJlCi5uYXRpb25zb25saW5lLm9yZy9vbmV3b3JsZC90aWJldAp8fGxp\nbmUubmF2ZXIuanAKfHxuYXZ5ZmFtaWx5Lm5hdnkubWlsCnx8bmF2eXJlc2VydmUu\nbmF2eS5taWwKfHxua28ubmF2eS5taWwKfHx1c25vLm5hdnkubWlsCm5hd2Vla2x5\ndGltZXMuY29tCi5uYnR2cG4uY29tCnxodHRwOi8vbmJ0dnBuLmNvbQpuY2N3YXRj\naC5vcmcudHcKLm5jaC5jb20udHcKLm5jbi5vcmcKfHxuY24ub3JnCnx8ZXRvb2xz\nLm5jb2wuY29tCi5uZGUuZGUKLm5kci5kZQoubmVkLm9yZwp8fG5la29zbG92YWtp\nYS5uZXQKfHxuZXB1c29rdS5jb20KfHxuZXQtZml0cy5wcm8KIS0tYmJzbmV3Lm5l\ndGJpZy5jb20KYmJzLm5ldGJpZy5jb20KLm5ldGJpcmRzLmNvbQpuZXRjb2xvbnku\nY29tCmJvbGluLm5ldGZpcm1zLmNvbQp8fG5ldG1lLmNjCm5ldHNuZWFrLmNvbQou\nbmV0d29yazU0LmNvbQpuZXR3b3JrZWRibG9ncy5jb20KLm5ldHdvcmt0dW5uZWwu\nbmV0Cm5ldmVyZm9yZ2V0ODk2NC5vcmcKbmV3LTNsdW5jaC5uZXQKLm5ldy1ha2li\nYS5jb20KLm5ldzk2LmNhCi5uZXdjZW50dXJ5bWMuY29tCnxodHRwOi8vbmV3Y2Vu\ndHVyeW1jLmNvbQpuZXdjZW50dXJ5bmV3cy5jb20KfHxuZXdjaGVuLmNvbQoubmV3\nY2hlbi5jb20KLm5ld2dyb3VuZHMuY29tCm5ld2lwbm93LmNvbQoubmV3bGFuZG1h\nZ2F6aW5lLmNvbS5hdQoubmV3bmV3cy5jYQpuZXdzMTAwLmNvbS50dwpuZXdzY2hp\nbmFjb21tZW50Lm9yZwoubmV3c2NuLm9yZwp8fG5ld3Njbi5vcmcKbmV3c3BlYWsu\nY2Mvc3RvcnkKLm5ld3NhbmNhaS5jb20KfHxuZXdzYW5jYWkuY29tCi5uZXdzZGV0\nb3guY2EKLm5ld3NkaC5jb20KfHxuZXdzdGFtYWdvLmNvbQp8fG5ld3N0YXBhLm9y\nZwpuZXdzdGFybmV0LmNvbQoubmV3dGFpd2FuLmNvbS50dwpuZXd0YWxrLnR3Cnx8\nbmV3dGFsay50dwpuZXd5b3JrdGltZXMuY29tCnx8bmV4b24uY29tCi5uZXh0MTEu\nY28uanAKLm5leHRtYWcuY29tLnR3CgohLS1oayoubmV4dG1lZGlhLmNvbQohLS10\ndyoubmV4dG1lZGlhLmNvbQohLS1zdGF0aWMqLm5leHRtZWRpYS5jb20KLm5leHRt\nZWRpYS5jb20KCnx8bmV4dG9uLW5ldC5qcApuZXh0dHYuY29tLnR3Ci5uZmp0eWQu\nY29tCnx8Y28ubmcubWlsCnx8bmdhLm1pbApuZ2Vuc2lzLmNvbQoubmhlbnRhaS5u\nZXQKfGh0dHA6Ly9uaGVudGFpLm5ldAoubmhrLW9uZGVtYW5kLmpwCi5uaWNvdmlk\nZW8uanAvd2F0Y2gKIS0tfHxuaWNvdmlkZW8uanAKfHxuaWdob3N0Lm9yZwphdi5u\naWdodGxpZmUxNDEuY29tCm5pbmVjb21tZW50YXJpZXMuY29tCi5uaW5qYWNsb2Fr\nLmNvbQp8fG5pbmphcHJveHkubmluamEKbmludGVuZGl1bS5jb20KdGFpd2FueWVz\nLm5pbmcuY29tCnVzbWd0Y2cubmluZy5jb20vZm9ydW0KfHxuaXVzbmV3cy5jb20K\nfHxuamFjdGIub3JnCm5qdWljZS5jb20KfHxuanVpY2UuY29tCm5sZnJlZXZwbi5j\nb20KCiEtLW5vLWlwLmNvbSNOT0lQCi5kZG5zLm5ldC8KLmdvb2RkbnMuaW5mbwp8\nfGdvdGRucy5jaAoubWFpbGRucy54eXoKLm5vLWlwLm9yZwoub3BlbmRuLnh5egou\nc2VydmVodHRwLmNvbQpzeXRlcy5uZXQKLndob2Rucy54eXoKLnphcHRvLm9yZwp8\naHR0cDovL2R5bnVwZGF0ZS5uby1pcC5jb20vCgp8fG5vYmVsLnNlCiEtLS5ub2Jl\nbHByaXplLm9yZwohLS18aHR0cDovL25vYmVscHJpemUub3JnCm5vYmVscHJpemUu\nb3JnL25vYmVsX3ByaXplcy9wZWFjZS9sYXVyZWF0ZXMvMTk4OQpub2JlbHByaXpl\nLm9yZy9ub2JlbF9wcml6ZXMvcGVhY2UvbGF1cmVhdGVzLzIwMTAKbm9ib2R5Y2Fu\nc3RvcC51cwp8fG5vYm9keWNhbnN0b3AudXMKfHxub2tvZ2lyaS5vcmcKfHxub2tv\nbGEuY29tCm5vb2RsZXZwbi5jb20KLm5vcmJ1bGluZ2thLm9yZwpub3JkdnBuLmNv\nbQp8fG5vcmR2cG4uY29tCnx8bm92ZWxhc2lhLmNvbQoubmV3cy5ub3cuY29tCnxo\ndHRwOi8vbmV3cy5ub3cuY29tCiEtLXxodHRwOi8vbmV3cy5ub3cuY29tL2hvbWUq\nCm5ld3Mubm93LmNvbSUyRmhvbWUKfHxub3duZXdzLmNvbQoubm93dG9ycmVudHMu\nY29tCi5ub3lwZi5jb20KfHxub3lwZi5jb20KfHxucGEuZ28uanAKLm5wbnQubWUK\nfGh0dHA6Ly9ucG50Lm1lCi5ucHMuZ292Ci5ucmFkaW8ubWUKfGh0dHA6Ly9ucmFk\naW8ubWUKLm5yay5ubwp8fG5yay5ubwoubnRkLnR2Cnx8bnRkLnR2CiEhLS1Pcmln\nOm50ZHR2LmNvbQoubnRkdHYuY29tCnx8bnRkdHYuY29tCi5udGR0di5jby5rcgpu\ndGR0di5jYQpudGR0di5vcmcKbnRkdHYucnUKbnRkdHZsYS5jb20KLm50cmZ1bi5j\nb20KfHxjYnMubnR1LmVkdS50dwp8fG1lZGlhLm51Lm5sCi5udWJpbGVzLm5ldAp8\nfG51ZXhwby5jb20KLm51a2lzdHJlYW0uY29tCnx8bnVyZ28tc29mdHdhcmUuY29t\nCnx8bnV0YWt1Lm5ldAoubnV2aWQuY29tCnx8bnZkc3QuY29tCm51emNvbS5jb20K\nLm52cXVhbi5vcmcKLm52dG9uZ3poaXNoZW5nLm9yZwp8aHR0cDovL252dG9uZ3po\naXNoZW5nLm9yZwoubnd0Y2Eub3JnCnxodHRwOi8vbnlhYS5ldQohLS18fG55YWEu\nc2kKLm55ZHVzLmNhCm55bG9uLWFuZ2VsLmNvbQpueWxvbnN0b2NraW5nc29ubGlu\nZS5jb20KIS0tbnlzaW5ndGFvLmNvbQoubnpjaGluZXNlLmNvbQp8fG56Y2hpbmVz\nZS5uZXQubnoKCiEtLS0tLS0tLS0tLS0tLS0tLS0tLU9PLS0tLS0tLS0tLS0tLS0t\nLS0tLS0tLS0tLQpvYnNlcnZlY2hpbmEubmV0Ci5vYnV0dS5jb20Kb2Nhc3Byby5j\nb20Kb2NjdXB5dGlhbmFubWVuLmNvbQpvY2xwLmhrCi5vY3JlYW1waWVzLmNvbQp8\nfG9jdG9iZXItcmV2aWV3Lm9yZwpvZmZiZWF0Y2hpbmEuY29tCm9mZmljZW9mdGli\nZXQuY29tCnxodHRwOi8vb2ZpbGUub3JnCnx8b2dhb2dhLm9yZwp0d3RyMnNyYy5v\nZ2FvZ2Eub3JnCi5vZ2F0ZS5vcmcKfHxvZ2F0ZS5vcmcKd3d3Mi5vaGNoci5vcmcv\nZW5nbGlzaC9ib2RpZXMvY2F0L2RvY3Mvbmdvcy9JSV9DaGluYV80MS5wZGYKLm9p\na29zLmNvbS50dy92NAoub2lrdHYuY29tCm9pem9ibG9nLmNvbQoub2sucnUKfHxv\nay5ydQoub2theWZyZWVkb20uY29tCnx8b2theWZyZWVkb20uY29tCm9ray50dwp8\naHR0cDovL2ZpbG15Lm9sYWJsb2dhLnBsL3BsYXllcgpvbGQtY2F0Lm5ldAp8fG9s\ndW1wby5jb20KLm9seW1waWN3YXRjaC5vcmcKb21naWxpLmNvbQp8fG9tbml0YWxr\nLmNvbQp8fG9tbml0YWxrLm9yZwpjbGluZy5vbXkuc2cKZm9ydW0ub215LnNnCm5l\nd3Mub215LnNnCnNob3diaXoub215LnNnCnx8b24uY2MKfHxvbmVkcml2ZS5saXZl\nLmNvbQp8fG9uaW9uLmNpdHkKLm9ubGluZWNoYS5jb20KfHxvbmxpbmV5b3V0dWJl\nLmNvbQoub25seXR3ZWV0cy5jb20KfGh0dHA6Ly9vbmx5dHdlZXRzLmNvbQpvbm1v\nb24ubmV0Cm9ubW9vbi5jb20KLm9udGhlaHVudC5jb20KfGh0dHA6Ly9vbnRoZWh1\nbnQuY29tCi5vb3BzZm9ydW0uY29tCm9wZW4uY29tLmhrCm9wZW5hbGx3ZWIuY29t\nCm9wZW5kZW1vY3JhY3kubmV0Cnx8b3BlbmRlbW9jcmFjeS5uZXQKLm9wZW5lcnZw\nbi5pbgpvcGVuaWQubmV0Cnx8b3BlbmlkLm5ldAoub3BlbmxlYWtzLm9yZwp8fG9w\nZW5sZWFrcy5vcmcKb3BlbnZwbi5uZXQKfHxvcGVudnBuLm5ldAp8fG9wZW53ZWJz\ndGVyLmNvbQoub3BlbndydC5vcmcuY24KQEB8fG9wZW53cnQub3JnLmNuCm15Lm9w\nZXJhLmNvbS9kYWhlbWEKfHxkZW1vLm9wZXJhLW1pbmkubmV0Ci5vcHVzLWdhbWlu\nZy5jb20KfGh0dHA6Ly9vcHVzLWdhbWluZy5jb20Kd3d3Lm9yY2hpZGJicy5jb20K\nLm9yZ2FuY2FyZS5vcmcudHcKb3JnYW5oYXJ2ZXN0aW52ZXN0aWdhdGlvbi5uZXQK\nLm9yZ2FzbS5jb20KLm9yZ2ZyZWUuY29tCnx8b3JpZW50LWRvbGwuY29tCm9yaWVu\ndGFsZGFpbHkuY29tLm15Cnx8b3JpZW50YWxkYWlseS5jb20ubXkKIS0tb3JpZW50\nYWxkYWlseS5vbi5jYwp8fG9ybi5qcAp0Lm9yemRyZWFtLmNvbQp8fHQub3J6ZHJl\nYW0uY29tCnR1aS5vcnpkcmVhbS5jb20KfHxvcnppc3RpYy5vcmcKfHxvc2Zvb3Jh\nLmNvbQoub3RuZC5vcmcKfHxvdG5kLm9yZwp8fG90dG8uZGUKfHxvdXJkZWFyYW15\nLmNvbQpvdXJzb2dvLmNvbQoub3Vyc3RlcHMuY29tLmF1Cnx8b3Vyc3RlcHMuY29t\nLmF1Ci5vdXJzd2ViLm5ldAp8fG91cnR2LmhrCnhpbnFpbWVuZy5vdmVyLWJsb2cu\nY29tCnx8b3ZlcnBsYXkubmV0CnNoYXJlLm92aS5jb20vbWVkaWEKfGh0dHA6Ly9v\nd2wubGkKfGh0dHA6Ly9odC5seQp8aHR0cDovL2h0bC5saQp8aHR0cDovL21hc2gu\ndG8Kd3d3Lm93aW5kLmNvbQp8aHR0cDovL3d3dy5veGlkLml0Cm95YXguY29tCm95\nZ2hhbi5jb20vd3BzCi5vemNoaW5lc2UuY29tL2Jicwp8fG93Lmx5CmJicy5vemNo\naW5lc2UuY29tCi5venZvaWNlLm9yZwp8fG96dm9pY2Uub3JnCi5venh3LmNvbQou\nb3p5b3lvLmNvbQoKIS0tLS0tLS0tLS0tLS0tLS0tLS0tUFAtLS0tLS0tLS0tLS0t\nLS0tLS0tLS0tLS0tCnx8cGFjaG9zdGluZy5jb20KLnBhY2lmaWNwb2tlci5jb20K\nLnBhY2tldGl4Lm5ldAp8fHBhY29wYWNvbWFtYS5jb20KLnBhZG1hbmV0LmNvbQpw\nYWdlMnJzcy5jb20KfHxwYWdvZGFib3guY29tCi5wYWxhY2Vtb29uLmNvbQpmb3J1\nbS5wYWxtaXNsaWZlLmNvbQp8fGVyaXZlcnNvZnQuY29tCi5wYWxkZW5neWFsLmNv\nbQpwYWxqb3JwdWJsaWNhdGlvbnMuY29tCi5wYWx0YWxrLmNvbQohLS18fHBhbmdj\naS5uZXQKfHxwYW5kYXBvdy5jbwoucGFuZGFwb3cubmV0Ci5wYW5kYXZwbi1qcC5j\nb20KLnBhbmx1YW4ubmV0Cnx8cGFubHVhbi5uZXQKfHxwYW8tcGFvLm5ldApwYXBl\nci5saQpwYXBlcmIudXMKLnBhcmFkaXNlaGlsbC5jYwoucGFyYWRpc2Vwb2tlci5j\nb20KLnBhcnR5Y2FzaW5vLmNvbQoucGFydHlwb2tlci5jb20KLnBhc3Npb24uY29t\nCnx8cGFzc2lvbi5jb20KLnBhc3Npb250aW1lcy5oawpwYXN0ZWJpbi5jb20KLnBh\nc3RpZS5vcmcKfHxwYXN0aWUub3JnCnx8YmxvZy5wYXRodG9zaGFyZXBvaW50LmNv\nbQpwYnMub3JnL3dnYmgvcGFnZXMvZnJvbnRsaW5lL2dhdGUKcGJzLm9yZy93Z2Jo\nL3BhZ2VzL2Zyb250bGluZS90YW5rbWFuCnBicy5vcmcvd2diaC9wYWdlcy9mcm9u\ndGxpbmUvdGliZXQKdmlkZW8ucGJzLm9yZwoKIS0tUGJ3aWtpCnBid2lraS5jb20K\nfHxwYndvcmtzLmNvbQp8fGRldmVsb3BlcnMuYm94Lm5ldAp8fHdpa2kub2F1dGgu\nbmV0Cnx8d2lraS5waG9uZWdhcC5jb20KfHx3aWtpLmpxdWVyeXVpLmNvbQoKfHxw\nYnhlcy5jb20KfHxwYnhlcy5vcmcKcGNkdmQuY29tLnR3Ci5wY2hvbWUuY29tLnR3\nCnxodHRwOi8vcGNpai5vcmcKLnBjc3RvcmUuY29tLnR3Cnx8cGN0Lm9yZy50dwpw\nZGV0YWlscy5jb20KfHxwZHByb3h5LmNvbQp8fHBlYWNlLmNhCnBlYWNlZmlyZS5v\ncmcKcGVhY2VoYWxsLmNvbQp8fHBlYWNlaGFsbC5jb20KfGh0dHA6Ly9wZWFybGhl\nci5vcmcKLnBlZWFzaWFuLmNvbQoucGVraW5nZHVjay5vcmcKfHxwZWtpbmdkdWNr\nLm9yZwoucGVtdWxpaGFuLm9yLmlkCnxodHRwOi8vcGVtdWxpaGFuLm9yLmlkCnx8\ncGVuLmlvCnBlbmNoaW5lc2UuY29tCnx8cGVuY2hpbmVzZS5uZXQKLnBlbmNoaW5l\nc2UubmV0CnBlbmd5dWxvbmcuY29tCnBlbmlzYm90LmNvbQp8fGJsb2cucGVudGFs\nb2dpYy5uZXQKLnBlbnRob3VzZS5jb20KLnBlbnRveS5oay8lRTQlQjglQUQlRTUl\nOUMlOEIKLnBlbnRveS5oay8lRTYlOTklODIlRTQlQkElOEIKLnBlb3BsZWJvb2tj\nYWZlLmNvbQoucGVvcGxlbmV3cy50dwp8fHBlb3BsZW5ld3MudHcKLnBlb3BvLm9y\nZwp8fHBlb3BvLm9yZwoucGVyY3kuaW4KLnBlcmZlY3RnaXJscy5uZXQKcGVyZmVj\ndHZwbi5uZXQKLnBlcnNlY3V0aW9uYmxvZy5jb20KLnBlcnNpYW5raXR0eS5jb20K\ncGZkLm9yZy5oawpwaGFwbHVhbi5vcmcKcGhheXVsLmNvbQpwaGlsYm9yZ2VzLmNv\nbQpwaGlsbHkuY29tCnx8cGhuY2RuLmNvbQp8fHBob3RvZGhhcm1hLm5ldAp8fHBo\nb3RvZm9jdXMuY29tCnx8cGh1cXVvY3NlcnZpY2VzLmNvbQp8fHBpY2Fjb21pY2Nu\nLmNvbQoucGljaWRhZS5uZXQKfHxpbWcqLnBpY3R1cmVkaXAuY29tCnBpY3R1cmVz\nb2NpYWwuY29tCnx8cGluLWNvbmcuY29tCi5waW42LmNvbQp8fHBpbjYuY29tCi5w\naW5nLmZtCnx8cGluZy5mbQp8fHBpbmltZy5jb20KLnBpbmtyb2QuY29tCnx8cGlu\nb3ktbi5jb20KfHxwaW50ZXJlc3QuYXQKfHxwaW50ZXJlc3QuY28ua3IKfHxwaW50\nZXJlc3QuY28udWsKLnBpbnRlcmVzdC5jb20KfHxwaW50ZXJlc3QuY29tCnx8cGlu\ndGVyZXN0LmRlCnx8cGludGVyZXN0LmRrCnx8cGludGVyZXN0LmZyCnx8cGludGVy\nZXN0LmpwCnx8cGludGVyZXN0Lm5sCnx8cGludGVyZXN0LnNlCi5waXBpaS50dgou\ncGlwb3NheS5jb20KcGlyYWF0dGlsYWh0aS5vcmcKLnBpcmluZy5jb20KfHxwaXhl\nbHFpLmNvbQp8fGNzcy5waXhuZXQuaW4KfHxwaXhuZXQubmV0Ci5waXhuZXQubmV0\nCi5way5jb20KfHxwbGFjZW1peC5jb20KIS0tLnBsYW5ldHN1enkub3JnCnxodHRw\nOi8vcGljdHVyZXMucGxheWJveS5jb20KfHxwbGF5Ym95LmNvbQoucGxheWJveXBs\ndXMuY29tCnx8cGxheWJveXBsdXMuY29tCnx8cGxheWVyLmZtCi5wbGF5bm8xLmNv\nbQp8fHBsYXlubzEuY29tCnx8cGxheXBjZXNvci5jb20KcGxheXMuY29tLnR3Cnx8\nbS5wbGl4aS5jb20KcGxtLm9yZy5oawpwbHVuZGVyLmNvbQoucGx1cmsuY29tCnx8\ncGx1cmsuY29tCi5wbHVzMjguY29tCi5wbHVzYmIuY29tCi5wbWF0ZWh1bnRlci5j\nb20KfGh0dHA6Ly9wbWF0ZWh1bnRlci5jb20KLnBtYXRlcy5jb20KfHxwbzJiLmNv\nbQpwb2JpZXJhbXkudG9wCiEtLXx8cG9jb28ub3JnCnx8cG9kaWN0aW9uYXJ5LmNv\nbQoucG9rZXJzdGFycy5jb20KfHxwb2tlcnN0YXJzLmNvbQoucG9rZXJzdGFycy5u\nZXQKemgucG9rZXJzdHJhdGVneS5jb20KcG9saXRpY2FsY2hpbmEub3JnCnBvbGl0\naWNhbGNvbnN1bHRhdGlvbi5vcmcKLnBvbGl0aXNjYWxlcy5uZXQKfHxwb2xvbmll\neC5jb20KLnBvbHltZXJoay5jb20KfGh0dHA6Ly9wb2x5bWVyaGsuY29tCi5wb3Bv\nLnR3CiEtLXx8cG9wdWxhcnBhZ2VzLm5ldAp8fHBvcHZvdGUuaGsKcG9weWFyZC5j\nb20KfHxwb3B5YXJkLm9yZwoucG9ybi5jb20KLnBvcm4yLmNvbQoucG9ybjUuY29t\nCi5wb3JuYmFzZS5vcmcKLnBvcm5lcmJyb3MuY29tCnx8cG9ybmhkLmNvbQoucG9y\nbmhvc3QuY29tCi5wb3JuaHViLmNvbQp8fHBvcm5odWIuY29tCi5wb3JuaHViZGV1\ndHNjaC5uZXQKfGh0dHA6Ly9wb3JuaHViZGV1dHNjaC5uZXQKfHxwb3JubW0ubmV0\nCi5wb3Jub3hvLmNvbQoucG9ybnJhcGlkc2hhcmUuY29tCnx8cG9ybnJhcGlkc2hh\ncmUuY29tCi5wb3Juc2hhcmluZy5jb20KfGh0dHA6Ly9wb3Juc2hhcmluZy5jb20K\nLnBvcm5zb2NrZXQuY29tCi5wb3Juc3RhcmNsdWIuY29tCnx8cG9ybnN0YXJjbHVi\nLmNvbQoucG9ybnR1YmUuY29tCi5wb3JudHViZW5ld3MuY29tCi5wb3JudHZibG9n\nLmNvbQp8fHBvcm50dmJsb2cuY29tCi5wb3JudmlzaXQuY29tCi5wb3J0YWJsZXZw\nbi5ubAp8fHBvc2tvdGFuZXdzLmNvbQoucG9zdDAxLmNvbQoucG9zdDc2LmNvbQp8\nfHBvc3Q3Ni5jb20KLnBvc3Q4NTIuY29tCnBvc3RhZHVsdC5jb20KLnBvc3RpbWcu\nb3JnCnx8cG90dnBuLmNvbQp8fHBvd2VyY3guY29tCi5wb3dlcnBob3RvLm9yZwp8\nfHd3dy5wb3dlcnBvaW50bmluamEuY29tCnx8cHJlc2lkZW50bGVlLnR3Cnx8Y2Ru\nLnByaW50ZnJpZW5kbHkuY29tCi5wcml0dW5sLmNvbQpwcm92cG5hY2NvdW50cy5j\nb20KfHxwcm92cG5hY2NvdW50cy5jb20KLnByb3hmcmVlLmNvbQp8fHByb3hmcmVl\nLmNvbQpwcm94eWFub25pbW8uZXMKLnByb3h5bmV0d29yay5vcmcudWsKfHxwcm94\neW5ldHdvcmsub3JnLnVrCnx8cHRzLm9yZy50dwoucHR0dmFuLm9yZwpwdWJ1LmNv\nbS50dwpwdWZmaW5icm93c2VyLmNvbQpwdXJlaW5zaWdodC5vcmcKLnB1c2hjaGlu\nYXdhbGwuY29tCi5wdXR0eS5vcmcKfHxwdXR0eS5vcmcKCiEtLS0tLS0tLS0tLS0t\nUG9zdGVyb3VzLS0tLS0KfHxjYWxlYmVsc3Rvbi5jb20KfHxibG9nLmZpenppay5j\nb20KfHxuZi5pZC5hdQp8fHNvZ3JhZHkubWUKfHx2YXRuLm9yZwp8fHZlbnR1cmVz\nd2VsbC5jb20KfHx3aGVyZWlzd2VybmVyLmNvbQoKLnBvd2VyLmNvbQp8fHBvd2Vy\nLmNvbQpwb3dlcmFwcGxlLmNvbQp8fHBvd2VyYXBwbGUuY29tCnx8YWJjLnBwLnJ1\nCmhlaXgucHAucnUKfHxwcmF5Zm9yY2hpbmEubmV0Cnx8cHJlbWVmb3J3aW5kb3dz\nNy5jb20KfHxwcmVzZW50YXRpb256ZW4uY29tCnx8cHJlc3RpZ2UtYXYuY29tCnBy\naXNvbmVyLXN0YXRlLXNlY3JldC1qb3VybmFsLXByZW1pZXIKLnByaXNvbmVyYWxl\ncnQuY29tCnx8cHJpdHVubC5jb20KfHxwcml2YWN5Ym94LmRlCi5wcml2YXRlLmNv\nbS9ob21lCnx8cHJpdmF0ZWludGVybmV0YWNjZXNzLmNvbQpwcml2YXRlcGFzdGUu\nY29tCnx8cHJpdmF0ZXBhc3RlLmNvbQpwcml2YXRldHVubmVsLmNvbQp8fHByaXZh\ndGV0dW5uZWwuY29tCnx8cHJpdmF0ZXZwbi5jb20KfHxwcm9jb3B5dGlwcy5jb20K\ncHJvdmlkZW9jb2FsaXRpb24uY29tCnx8cHJvc2liZW4uZGUKcHJveGlmaWVyLmNv\nbQphcGkucHJveGxldC5jb20KfHxwcm94b21pdHJvbi5pbmZvCi5wcm94cG4uY29t\nCnx8cHJveHBuLmNvbQoucHJveHlsaXN0Lm9yZy51awp8fHByb3h5bGlzdC5vcmcu\ndWsKLnByb3h5cHkubmV0Cnx8cHJveHlweS5uZXQKcHJveHlyb2FkLmNvbQoucHJv\neHl0dW5uZWwubmV0CiEtLTQwMyBtYXliZQp8fHByb3llY3RvY2x1YmVzLmNvbQpw\ncm96ei5uZXQKcHNibG9nLm5hbWUKfHxwc2Jsb2cubmFtZQp8fHBzaXBob24uY2EK\nLnBzaXBob24zLmNvbQp8fHBzaXBob24zLmNvbQoucHNpcGhvbnRvZGF5LmNvbQou\ncHR0LmNjCnx8cHR0LmNjCi5wdWZmc3RvcmUuY29tCi5wdXVrby5jb20KfHxwdWxs\nZm9saW8uY29tCi5wdW55dS5jb20vcHVueQp8fHB1cmVjb25jZXB0cy5uZXQKfHxw\ndXJlaW5zaWdodC5vcmcKfHxwdXJlcGRmLmNvbQp8fHB1cmV2cG4uY29tCi5wdXJw\nbGVsb3R1cy5vcmcKLnB1cnN1ZXN0YXIuY29tCnx8cHVyc3Vlc3Rhci5jb20KLnB1\nc3N5c3BhY2UuY29tCi5wdXRpaG9tZS5vcmcKLnB1dGxvY2tlci5jb20vZmlsZQpw\nd25lZC5jb20KcHl0aG9uLmNvbQoucHl0aG9uLmNvbS50dwp8aHR0cDovL3B5dGhv\nbi5jb20udHcKcHl0aG9uaGFja2Vycy5jb20vcApzcy5weXRob25pYy5saWZlLwoK\nIS0tLS0tLS0tLS0tLS0tLS0tLS0tUVEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t\nCi5xYW5vdGUuY29tCnx8cWFub3RlLmNvbQoucWdpcmwuY29tLnR3Cnx8cWlhbmRh\nby50b2RheQoucWktZ29uZy5tZQp8fHFpLWdvbmcubWUKIS0tIzkyMQp8fHFpYW5n\neW91Lm9yZwoucWlkaWFuLmNhCi5xaWVua3Vlbi5vcmcKfHxxaWVua3Vlbi5vcmcK\nfHxxaXdlbi5sdQpxaXhpYW5nbHUuY24KYmJzLnFtemRkLmNvbQoucWtzaGFyZS5j\nb20KcW9vcy5jb20KfHxxb29zLmNvbQpibG9nLnFvb3phLmhrL2RhZmVuZ3FpeGkK\nfHxlZmtzb2Z0LmNvbQp8fHFzdGF0dXMuY29tCnx8cXR3ZWV0ZXIuY29tCnx8cXRy\nYWMuZXUKLnF1YW5uZW5nc2hlbi5vcmcKfGh0dHA6Ly9xdWFubmVuZ3NoZW4ub3Jn\nCnF1YW50dW1ib290ZXIubmV0Cnx8cXVpdGNjcC5uZXQKLnF1aXRjY3AubmV0Cnx8\ncXVpdGNjcC5vcmcKLnF1aXRjY3Aub3JnCi5xdW9yYS5jb20vQ2hpbmFzLUZ1dHVy\nZQoucXVyYW4uY29tCnxodHRwOi8vcXVyYW4uY29tCi5xdXJhbmV4cGxvcmVyLmNv\nbQpxdXNpOC5uZXQKLnF2b2R6eS5vcmcKbmVtZXNpczIucXgubmV0L3BhZ2VzL015\nRW5UdW5uZWwKcXhiYnMub3JnCgohLS0tLS0tLS0tLS0tLS0tLS0tLS1SUi0tLS0t\nLS0tLS0tLS0tLS0tLS0tLS0tLS0KLnJhLmdnCnxodHRwOi8vcmEuZ2cvCi5yYWRp\nY2FscGFydHkub3JnCnx8cmFlbC5vcmcKcmFkaWNhbHBhcnR5Lm9yZwpyYWRpb2F1\nc3RyYWxpYS5uZXQuYXUKLnJhZGlvaGlsaWdodC5uZXQKfHxyYWRpb2hpbGlnaHQu\nbmV0Cm9wbWwucmFkaW90aW1lLmNvbQp8fHJhZGlvdmF0aWNhbmEub3JnCnx8cmFk\naW92bmNyLmNvbQp8fHJhZ2dlZGJhbm5lci5jb20KfHxyYWlkY2FsbC5jb20udHcK\nLnJhaWR0YWxrLmNvbS50dwoucmFpbmJvd3BsYW4ub3JnL2Jicwp8aHR0cHM6Ly9y\nYWluZHJvcC5pby8KLnJhaXpvamkub3IuanAKfGh0dHA6Ly9yYWl6b2ppLm9yLmpw\nCnJhbmd3YW5nLmJpegpyYW5nemVuLmNvbQpyYW5nemVuLm5ldApyYW5nemVuLm9y\nZwp8aHR0cDovL2Jsb2cucmFueGlhbmcuY29tLwpyYW55dW5mZWkuY29tCnx8cmFu\neXVuZmVpLmNvbQoucmFwYnVsbC5uZXQKfGh0dHA6Ly9yYXBpZGdhdG9yLm5ldC8K\nfHxyYXBpZG1vdmllei5jb20KcmFwaWR2cG4uY29tCnx8cmFwaWR2cG4uY29tCi5y\nYXJlbW92aWUuY2MKfGh0dHA6Ly9yYXJlbW92aWUuY2MKLnJhcmVtb3ZpZS5uZXQK\nfGh0dHA6Ly9yYXJlbW92aWUubmV0Cnx8cmF3Z2l0LmNvbQp8fHJhd2dpdGh1Yi5j\nb20KIS0tLnJheWZtZS5jb20vYmJzCnx8cmF6eWJvYXJkLmNvbQpyY2luZXQuY2EK\nLnJlYWQxMDAuY29tCi5yZWFkaW5ndGltZXMuY29tLnR3Cnx8cmVhZGluZ3RpbWVz\nLmNvbS50dwp8fHJlYWRtb28uY29tCi5yZWFkeWRvd24uY29tCnxodHRwOi8vcmVh\nZHlkb3duLmNvbQoucmVhbGNvdXJhZ2Uub3JnCi5yZWFsaXR5a2luZ3MuY29tCnx8\ncmVhbGl0eWtpbmdzLmNvbQoucmVhbHJhcHRhbGsuY29tCi5yZWFsc2V4cGFzcy5j\nb20KLnJlY29yZGhpc3Rvcnkub3JnCi5yZWNvdmVyeS5vcmcudHcKfGh0dHA6Ly9v\nbmxpbmUucmVjb3Zlcnl2ZXJzaW9uLm9yZwp8fHJlY292ZXJ5dmVyc2lvbi5jb20u\ndHcKfHxyZWQtbGFuZy5vcmcKcmVkYmFsbG9vbnNvbGlkYXJpdHkub3JnCi5yZWRj\naGluYWNuLm5ldAp8aHR0cDovL3JlZGNoaW5hY24ubmV0CnJlZGNoaW5hY24ub3Jn\nCnJlZHR1YmUuY29tCnJlZmVyZXIudXMKfHxyZWZlcmVyLnVzCnx8cmVmbGVjdGl2\nZWNvZGUuY29tCnJlbGF4YmJzLmNvbQoucmVsYXkuY29tLnR3Ci5yZWxlYXNlaW50\nZXJuYXRpb25hbC5vcmcKcmVsaWdpb3VzdG9sZXJhbmNlLm9yZwpyZW5taW5iYW8u\nY29tCnx8cmVubWluYmFvLmNvbQoucmVueXVyZW5xdWFuLm9yZwp8fHJlbnl1cmVu\ncXVhbi5vcmcKfGh0dHA6Ly9jZXJ0aWZpY2F0ZS5yZXZvY2F0aW9uY2hlY2suY29t\nCnN1YmFjbWUucmVyb3V0ZWQub3JnCnx8cmVzaWxpby5jb20KLnJldXRlcnMuY29t\nCnx8cmV1dGVycy5jb20KfHxyZXV0ZXJzbWVkaWEubmV0Ci5yZXZsZWZ0LmNvbQpy\nZXR3ZWV0aXN0LmNvbQp8fHJldHdlZXRyYW5rLmNvbQohLS1jb25uZWN0ZWRjaGlu\nYS5yZXV0ZXJzLmNvbQohLS18aHR0cDovL3d3dy5yZXV0ZXJzLmNvbS9uZXdzL3Zp\nZGVvCnJldnZlci5jb20KLnJmYS5vcmcKfHxyZmEub3JnCi5yZmFjaGluYS5jb20K\nLnJmYW1vYmlsZS5vcmcKcmZhd2ViLm9yZwp8fHJmZXJsLm9yZwoucmZpLmZyCnx8\ncmZpLmZyCnxodHRwOi8vcmZpLm15LwohLS0ucmhjbG91ZC5jb20KIS0tRWRnZWNh\nc3QKfGh0dHA6Ly92ZHMucmlnaHRzdGVyLmNvbS8KLnJpZ3BhLm9yZwoucmlsZXln\ndWlkZS5jb20KcmlrdS5tZS8KLnJpdG91a2kuanAKfHxyaXR0ZXIudmcKLnJsd2x3\nLmNvbQp8fHJsd2x3LmNvbQoucm1qZHcuY29tCi5ybWpkdzEzMi5pbmZvCi5yb2Fk\nc2hvdy5oawoucm9ib2ZvcmV4LmNvbQp8fHJvYnVzdG5lc3Npc2tleS5jb20KIS0t\nfHxyb2MtdGFpd2FuLm9yZwp8fHJvY2tldC1pbmMubmV0CnxodHRwOi8vd3d3Mi5y\nb2NrZXRiYnMuY29tLzExL2Jicy5jZ2k/aWQ9NW11cwp8aHR0cDovL3d3dzIucm9j\na2V0YmJzLmNvbS8xMS9iYnMuY2dpP2lkPWZyZWVtZ2wKIS0tfHxyb2NtcC5vcmcK\nfHxyb2pvLmNvbQp8fHJvbmpvbmVzd3JpdGVyLmNvbQp8fHJvbGlhLm5ldAoucm9v\nZG8uY29tCi5yb3NlY2hpbmEubmV0Ci5yb3R0ZW4uY29tCi5yc2Yub3JnCnx8cnNm\nLm9yZwoucnNmLWNoaW5lc2Uub3JnCnx8cnNmLWNoaW5lc2Uub3JnCi5yc2dhbWVu\nLm9yZwp8fHBob3NwaGF0aW9uMTMucnNzaW5nLmNvbQoucnNzbWVtZS5jb20KfHxy\nc3NtZW1lLmNvbQp8fHJ0YWxhYmVsLm9yZwoucnRoay5oawp8aHR0cDovL3J0aGsu\naGsKLnJ0aGsub3JnLmhrCnxodHRwOi8vcnRoay5vcmcuaGsKLnJ0aS5vcmcudHcK\nfHxydGkub3JnLnR3Ci5ydHljbWlubmVzb3RhLm9yZwoucnVhbnlpZmVuZy5jb20v\nYmxvZypzb21lX3dheXNfdG9fYnJlYWtfdGhlX2dyZWF0X2ZpcmV3YWxsCnJ1a29y\nLm9yZwoucnVzaGJlZS5jb20KLnJ1dGVuLmNvbS50dwpydXR1YmUucnUKLnJ1eWlz\nZWVrLmNvbQoucnhoai5uZXQKfGh0dHA6Ly9yeGhqLm5ldAoKIS0tLS0tLS0tLS0t\nLS0tLS0tLS0tU1MtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi5zMXMxczEuY29t\nCnx8cy1jdXRlLmNvbQoucy1kcmFnb24ub3JnCnx8czFoZW5nLmNvbQp8aHR0cDov\nL3d3dy5zNG1pbmlhcmNoaXZlLmNvbQp8fHM4Zm9ydW0uY29tCmNkbjEubHAuc2Fi\nb29tLmNvbQp8fHNhY2tzLmNvbQpzYWNvbS5oawp8fHNhY29tLmhrCnx8c2FkcGFu\nZGEudXMKLnNhZmVydnBuLmNvbQp8fHNhZmVydnBuLmNvbQouc2FpbnR5Y3VsdHVy\nZS5jb20KfGh0dHA6Ly9zYWludHljdWx0dXJlLmNvbQouc2FpcS5tZQp8fHNhaXEu\nbWUKfHxzYWt1cmFsaXZlLmNvbQouc2FreWEub3JnCi5zYWx2YXRpb24ub3JnLmhr\nCnx8c2FsdmF0aW9uLm9yZy5oawouc2FtYWlyLnJ1L3Byb3h5L3R5cGUtMDEKLnNh\nbWJob3RhLm9yZwouY24uc2FuZHNjb3RhaWNlbnRyYWwuY29tCnxodHRwOi8vY24u\nc2FuZHNjb3RhaWNlbnRyYWwuY29tCi5zYW5taW4uY29tLnR3CnNhcGlrYWNodS5u\nZXQKc2F2ZW1lZGlhLmNvbQpzYXZldGliZXQuZGUKc2F2ZXRpYmV0LmZyCnNhdmV0\naWJldC5ubAouc2F2ZXRpYmV0Lm9yZwp8fHNhdmV0aWJldC5vcmcKc2F2ZXRpYmV0\nLnJ1Ci5zYXZldGliZXRzdG9yZS5vcmcKfHxzYXZldGliZXRzdG9yZS5vcmcKc2F2\nZXZpZC5jb20KfHxzYXkyLmluZm8KLnNibWUubWUKfGh0dHA6Ly9zYm1lLm1lCi5z\nYnMuY29tLmF1L3lvdXJsYW5ndWFnZQouc2Nhc2luby5jb20KfGh0dHA6Ly93d3cu\nc2NpZW5jZW1hZy5vcmcvY29udGVudC8zNDQvNjE4Ny85NTMKLnNjaWVuY2VuZXRz\nLmNvbQouc2NtcC5jb20KLnNjbXBjaGluZXNlLmNvbQp8fHNjcmFtYmxlLmlvCi5z\nY3JpYmQuY29tCnx8c2NyaWJkLmNvbQp8fHNjcmlwdHNwb3QuY29tCnNlYXB1ZmYu\nY29tCmRvbWFpbmhlbHAuc2VhcmNoLmNvbQouc2VhcmNodHJ1dGguY29tCnNlY3Jl\ndGNoaW5hLmNvbQp8fHNlY3JldGNoaW5hLmNvbQp8fHNlY3JldGdhcmRlbi5ubwou\nc2VjcmV0c2xpbmUuYml6Cnx8c2VjcmV0c2xpbmUuYml6Cnx8c2VjdXJldHVubmVs\nLmNvbQpzZWN1cml0eWluYWJveC5vcmcKfGh0dHBzOi8vc2VjdXJpdHlpbmFib3gu\nb3JnCi5zZWN1cml0eWtpc3MuY29tCnx8c2VjdXJpdHlraXNzLmNvbQp8fHNlZWQ0\nLm1lCm5ld3Muc2VlaHVhLmNvbQpzZWVzbWljLmNvbQp8fHNlZXZwbi5jb20KfHxz\nZWV6b25lLm5ldApzZWppZS5jb20KLnNlbmRzcGFjZS5jb20KfGh0dHA6Ly90d2Vl\ndHMuc2VyYXBoLm1lLwpzZXNhd2UubmV0Cnx8c2VzYXdlLm5ldAouc2VzYXdlLm9y\nZwp8fHNldGh3a2xlaW4ubmV0Ci5zZXRuLmNvbQouc2V0dHYuY29tLnR3CmZvcnVt\nLnNldHR5LmNvbS50dwouc2V2ZW5sb2FkLmNvbQp8fHNldmVubG9hZC5jb20KLnNl\neC5jb20KLnNleC0xMS5jb20KfHxzZXgzLmNvbQp8fHNleDguY2MKLnNleGFuZHN1\nYm1pc3Npb24uY29tCi5zZXhib3QuY29tCi5zZXhodS5jb20KLnNleGh1YW5nLmNv\nbQpzZXhpbnNleC5uZXQKfHxzZXhpbnNleC5uZXQKLnNleHR2eC5jb20KCiEtLUlQ\nIG9mIFNleEluU2V4CjY3LjIyMC45MS4xNQo2Ny4yMjAuOTEuMTgKNjcuMjIwLjkx\nLjIzCgp8aHR0cDovLyouc2YubmV0Ci5zZmlsZXlkeS5jb20KfHxzZnNoaWJhby5j\nb20KLnNmdGluZGlhLm9yZwouc2Z0dWsub3JnCnx8c2Z0dWsub3JnCnx8c2hhZGV5\nb3V2cG4uY29tCnNoYWRvdy5tYQouc2hhZG93c2t5Lnh5egouc2hhZG93c29ja3Mu\nYXNpYQp8fHd3dy5zaGFkb3dzb2Nrcy5jb20KLnNoYWRvd3NvY2tzLmNvbQp8fHNo\nYWRvd3NvY2tzLmNvbS5oawouc2hhZG93c29ja3Mub3JnCnx8c2hhZG93c29ja3Mu\nb3JnCnx8c2hhZG93c29ja3Mtci5jb20KfGh0dHA6Ly9jbi5zaGFmYXFuYS5jb20K\nLnNoYW1iYWxhcG9zdC5jb20KLnNoYW1iaGFsYXN1bi5jb20KLnNoYW5nZmFuZy5v\ncmcKfHxzaGFuZ2Zhbmcub3JnCnNoYXBlc2VydmljZXMuY29tCi5zaGFyZWJlZS5j\nb20KfHxzaGFyZWNvb2wub3JnCiEtLXx8c2hhcmtkb2xwaGluLmNvbQpzaGFycGRh\naWx5LmNvbS5oawp8fHNoYXJwZGFpbHkuY29tLmhrCi5zaGFycGRhaWx5LmhrCi5z\naGFycGRhaWx5LnR3Ci5zaGF0LXRpYmV0LmNvbQpzaGVpa3llcm1hbWkuY29tCi5z\naGVsbGZpcmUuZGUKfHxzaGVsbGZpcmUuZGUKLnNoZW5zaG91Lm9yZwpzaGVueXVu\nLmNvbQpzaGVueXVucGVyZm9ybWluZ2FydHMub3JnCnx8c2hlbnl1bnBlcmZvcm1p\nbmdhcnRzLm9yZwpzaGVuemhvdWZpbG0uY29tCnx8c2hlbnpob3VmaWxtLmNvbQp8\nfHNoZXJhYmd5YWx0c2VuLmNvbQouc2hpYXR2Lm5ldAouc2hpY2hlbmcub3JnCnNo\naW55Y2hhbi5jb20Kc2hpcGNhbW91ZmxhZ2UuY29tCi5zaGlyZXlpc2h1bmppYW4u\nY29tCi5zaGl0YW90di5vcmcKfHxzaGl4aWFvLm9yZwp8fHNoaXpoYW8ub3JnCnNo\naXpoYW8ub3JnCnNoa3Nwci5tb2JpL2RhYnIKfHxzaG9kYW5ocS5jb20KfHxzaG9v\nc2h0aW1lLmNvbQouc2hvcDIwMDAuY29tLnR3Ci5zaG9wcGluZy5jb20KLnNob3do\nYW90dS5jb20KLnNob3d0aW1lLmpwCi5zaHV0dGVyc3RvY2suY29tCnx8c2h1dHRl\ncnN0b2NrLmNvbQpjaC5zaHZvb25nLmNvbQouc2h3Y2h1cmNoLm9yZwp8fHd3dy5z\naHdjaHVyY2gub3JnCi5zaHdjaHVyY2gzLmNvbQp8aHR0cDovL3Nod2NodXJjaDMu\nY29tCi5zaWRkaGFydGhhc2ludGVudC5vcmcKfHxzaWRlbGluZXNuZXdzLmNvbQou\nc2lkZWxpbmVzc3BvcnRzZWF0ZXJ5LmNvbQouc2lqaWh1aXN1by5jbHViCi5zaWpp\naHVpc3VvLmNvbQouc2lsa2Jvb2suY29tCnx8c2ltYm9sb3N0d2l0dGVyLmNvbQpz\naW1wbGVjZC5vcmcKfHxzaW1wbGVjZC5vcmcKQEB8fHNpbXBsZWNkLm1lCnNpbXBs\nZXByb2R1Y3Rpdml0eWJsb2cuY29tCmJicy5zaW5hLmNvbS8KYmJzLnNpbmEuY29t\nJTJGCmJsb2cuc2luYS5jb20udHcKZGFpbHluZXdzLnNpbmEuY29tLwpkYWlseW5l\nd3Muc2luYS5jb20lMkYKZm9ydW0uc2luYS5jb20uaGsKaG9tZS5zaW5hLmNvbQp8\nfG1hZ2F6aW5lcy5zaW5hLmNvbS50dwpuZXdzLnNpbmEuY29tLmhrCm5ld3Muc2lu\nYS5jb20udHcKbmV3cy5zaW5jaGV3LmNvbS5teQouc2luY2hldy5jb20ubXkvbm9k\nZS8KLnNpbmNoZXcuY29tLm15L3RheG9ub215L3Rlcm0KLnNpbmdhcG9yZXBvb2xz\nLmNvbS5zZwp8fHNpbmdhcG9yZXBvb2xzLmNvbS5zZwouc2luZ2ZvcnRpYmV0LmNv\nbQouc2luZ3Bhby5jb20uaGsKc2luZ3Rhby5jb20KfHxzaW5ndGFvLmNvbQpuZXdz\nLnNpbmd0YW8uY2EKLnNpbmd0YW91c2EuY29tCnx8c2luZ3Rhb3VzYS5jb20KIS0t\nfHxjZHAuc2luaWNhLmVkdS50dwpzaW5vLW1vbnRobHkuY29tCnx8c2lub2Nhc3Qu\nY29tCnNpbm9jaXNtLmNvbQpzaW5vbW9udHJlYWwuY2EKLnNpbm9uZXQuY2EKLnNp\nbm9waXR0LmluZm8KLnNpbm9hbnRzLmNvbQp8fHNpbm9hbnRzLmNvbQouc2lub3F1\nZWJlYy5jb20KLnNpZXJyYWZyaWVuZHNvZnRpYmV0Lm9yZwpzaXMueHh4Cnx8c2lz\nMDAxLmNvbQpzaXMwMDEudXMKLnNpdGUydW5ibG9jay5jb20KfHxzaXRlOTAubmV0\nCi5zaXRlYnJvLnR3Cnx8c2l0ZWtyZWF0b3IuY29tCnx8c2l0ZWtzLnVrLnRvCnx8\nc2l0ZW1hcHMub3JnCi5zanJ0Lm9yZwp8aHR0cDovL3NqcnQub3JnCnx8c2p1bS5j\nbgp8fHNrZXRjaGFwcHNvdXJjZXMuY29tCnx8c2tpbXR1YmUuY29tCnx8c2t5YmV0\nLmNvbQp8aHR0cDovL3VzZXJzLnNreW5ldC5iZS9yZXZlcy90aWJldGhvbWUuaHRt\nbAouc2t5a2luZy5jb20udHcKYmJzLnNreWtpd2kuY29tCnxodHRwOi8vd3d3LnNr\neXBlLmNvbS9pbnRsLwp8aHR0cDovL3d3dy5za3lwZS5jb20vemgtSGFudAp8fHNr\neXZlZ2FzLmNvbQoueHNreXdhbGtlci5jb20KfHx4c2t5d2Fsa2VyLmNvbQp8fHNr\neXh2cG4uY29tCm0uc2xhbmRyLm5ldAouc2xheXRpemxlLmNvbQouc2xlYXp5ZHJl\nYW0uY29tCnx8c2xoZW5nLmNvbQp8fHNsaWRlc2hhcmUubmV0CmZvcnVtLnNsaW1l\nLmNvbS50dwouc2xpbmtzZXQuY29tCnx8c2xpY2t2cG4uY29tCi5zbHV0bG9hZC5j\nb20KfHxzbWFydGRuc3Byb3h5LmNvbQouc21hcnRoaWRlLmNvbQp8fGFwcC5zbWFy\ndG1haWxjbG91ZC5jb20Kc21jaGJvb2tzLmNvbQouc21oLmNvbS5hdS93b3JsZC9k\nZWF0aC1vZi1jaGluZXNlLXBsYXlib3ktbGVhdmVzLWZyZXNoLXNjcmF0Y2hlcy1p\nbi1wYXJ0eS1wYWludHdvcmstMjAxMjA5MDMtMjVhOHYKc21ocmljLm9yZwouc21p\ndGguZWR1L2RhbGFpbGFtYQouc215eHkub3JnCiEtLVRPRE8tbm8taG9tZXBhZ2UK\nfHxzbmFwY2hhdC5jb20KLnNuYXB0dS5jb20KfHxzbmFwdHUuY29tCnx8c25kY2Ru\nLmNvbQpzbmVha21lLm5ldApzbm93bGlvbnB1Yi5jb20KaG9tZS5zby1uZXQubmV0\nLnR3L3lpc2FfdHNhaQp8fHNvYy5taWwKLnNvY2tzY2FwNjQuY29tCnx8c29ja3Ns\naXN0Lm5ldAouc29jcmVjLm9yZwp8aHR0cDovL3NvY3JlYy5vcmcKLnNvZC5jby5q\ncAouc29mdGV0aGVyLm9yZwp8fHNvZnRldGhlci5vcmcKLnNvZnRldGhlci1kb3du\nbG9hZC5jb20KfHxzb2Z0ZXRoZXItZG93bmxvYWQuY29tCnx8Y2RuLnNvZnRsYXll\nci5uZXQKfHxzb2djbHViLmNvbQpzb2hjcmFkaW8uY29tCnx8c29oY3JhZGlvLmNv\nbQouc29rbWlsLmNvbQp8fHNvcnRpbmctYWxnb3JpdGhtcy5jb20KLnNvc3RpYmV0\nLm9yZwouc291bW8uaW5mbwp8fHNvdXAuaW8KQEB8fHN0YXRpYy5zb3VwLmlvCi5z\nb2JlZXMuY29tCnx8c29iZWVzLmNvbQpzb2NpYWx3aGFsZS5jb20KLnNvZnRldGhl\nci5jby5qcAp8fHNvZnR3YXJlYnljaHVjay5jb20KYmxvZy5zb2dvby5vcmcKc29o\nLnR3Cnx8c29oLnR3CnNvaGZyYW5jZS5vcmcKfHxzb2hmcmFuY2Uub3JnCmNoaW5l\nc2Uuc29pZmluZC5jb20Kc29rYW1vbmxpbmUuY29tCi5zb2xpZGFyaXRldGliZXQu\nb3JnCi5zb2xpZGZpbGVzLmNvbQp8fHNvbWVlLmNvbQouc29uZ2ppYW5qdW4uY29t\nCnx8c29uZ2ppYW5qdW4uY29tCi5zb25pY2Jicy5jYwouc29uaWRvZGVsYWVzcGVy\nYW56YS5vcmcKLnNvcGNhc3QuY29tCi5zb3BjYXN0Lm9yZwouc29yYXpvbmUubmV0\nCnx8c29zLm9yZwpiYnMuc291LXRvbmcub3JnCi5zb3Vib3J5LmNvbQp8aHR0cDov\nL3NvdWJvcnkuY29tCi5zb3VsLXBsdXMubmV0Ci5zb3VsY2FsaWJ1cmhlbnRhaS5u\nZXQKfHxzb3VsY2FsaWJ1cmhlbnRhaS5uZXQKfHxzb3VuZGNsb3VkLmNvbQohLS18\naHR0cHM6Ly9zb3VuZGNsb3VkLmNvbS9wdW5rZ29kCi5zb3VuZG9maG9wZS5rcgpz\nb3VuZG9maG9wZS5vcmcKfHxzb3VuZG9maG9wZS5vcmcKfHxzb3Vwb2ZtZWRpYS5j\nb20KIS0tLnNvdXJjZWZvcmdlLm5ldAohLXxodHRwOi8vc291cmNlZm9yZ2UubmV0\nCnxodHRwOi8vc291cmNlZm9yZ2UubmV0L3AqL3NoYWRvd3NvY2tzZ3VpLwouc291\ncmNld2FkaW8uY29tCnNvdXRobmV3cy5jb20udHcKc293ZXJzLm9yZy5oawp8fHds\neC5zb3dpa2kubmV0Cnx8c3BhbmtiYW5nLmNvbQouc3Bhbmtpbmd0dWJlLmNvbQou\nc3Bhbmt3aXJlLmNvbQp8fHNwYi5jb20KfHxzcGVha2VyZGVjay5jb20KfHxzcGVl\nZGlmeS5jb20Kc3BlbS5hdAp8fHNwZW5jZXJ0aXBwaW5nLmNvbQp8fHNwaWNldnBu\nLmNvbQouc3BpZGVyb2FrLmNvbQp8fHNwaWRlcm9hay5jb20KLnNwaWtlLmNvbQou\nc3BvdGZsdXguY29tCnx8c3BvdGZsdXguY29tCi5zcHJpbmc0dS5pbmZvCnxodHRw\nOi8vc3ByaW5nNHUuaW5mbwp8fHNwcm91dGNvcmUuY29tCnx8c3Byb3h5LmluZm8K\nfHxzcm9ja2V0LnVzCi5zcy1saW5rLmNvbQp8fHNzLWxpbmsuY29tCi5zc2dsb2Jh\nbC5jby93cAp8aHR0cDovL3NzZ2xvYmFsLmNvCi5zc2dsb2JhbC5tZQp8fHNzaDkx\nLmNvbQouc3Nwcm8ubWwKfGh0dHA6Ly9zc3Byby5tbAouc3Nyc2hhcmUuY29tCnx8\nc3Nyc2hhcmUuY29tCnx8c3NzLmNhbXAKIS0tfGh0dHA6Ly9jZG4uc3N0YXRpYy5u\nZXQvCnx8c3N0bWx0Lm1vZQpzc3RtbHQubmV0Cnx8c3N0bWx0Lm5ldAp8aHR0cDov\nL3N0YWNrb3ZlcmZsb3cuY29tL3VzZXJzLzg5NTI0NQouc3RhZ2U2NC5oawp8fHN0\nYWdlNjQuaGsKfHxzdGFuZHVwZm9ydGliZXQub3JnCnN0YW5mb3JkLmVkdS9ncm91\ncC9mYWx1bgp1c2luZm8uc3RhdGUuZ292Cnx8c3RhdHVlb2ZkZW1vY3JhY3kub3Jn\nCi5zdGFyZmlzaGZ4LmNvbQouc3RhcnAycC5jb20KfHxzdGFycDJwLmNvbQouc3Rh\ncnRwYWdlLmNvbQp8fHN0YXJ0cGFnZS5jb20KLnN0YXJ0dXBsaXZpbmdjaGluYS5j\nb20KfGh0dHA6Ly9zdGFydHVwbGl2aW5nY2hpbmEuY29tCnx8c3RhdGljLWVjb25v\nbWlzdC5jb20KfHxzdGMuY29tLnNhCnx8c3RlZWwtc3Rvcm0uY29tCi5zdGVnYW5v\ncy5jb20KfHxzdGVnYW5vcy5jb20KLnN0ZWdhbm9zLm5ldAouc3RlcGNoaW5hLmNv\nbQohLS18fHN0ZXBtYW5pYS5jb20Kbnkuc3RnbG9iYWxsaW5rLmNvbQpoZC5zdGhl\nYWRsaW5lLmNvbS9uZXdzL3JlYWx0aW1lCnN0aG9vLmNvbQp8fHN0aG9vLmNvbQou\nc3RpY2thbS5jb20Kc3RpY2tlcmFjdGlvbi5jb20vc2VzYXdlCi5zdGlsZXByb2pl\nY3QuY29tCi5zdG8uY2MKLnN0b3BvcmdhbmhhcnZlc3Rpbmcub3JnCnx8c3RvcmFn\nZW5ld3NsZXR0ZXIuY29tCi5zdG9ybS5tZwp8fHN0b3JtLm1nCi5zdG9wdGliZXRj\ncmlzaXMubmV0Cnx8c3RvcHRpYmV0Y3Jpc2lzLm5ldAp8fHN0b3JpZnkuY29tCi5z\ndG9ybW1lZGlhZ3JvdXAuY29tCnx8c3Rvd2Vib3lkLmNvbQpzdHJhbmFiZy5jb20K\nfHxzdHJhcGxlc3NkaWxkby5jb20KfHxzdHJlYW1pbmd0aGUubmV0CnN0cmVlbWEu\nY29tL3R2L05URFRWX0NoaW5lc2UKY24uc3RyZWV0dm9pY2UuY29tL2FydGljbGUK\nY24uc3RyZWV0dm9pY2UuY29tL2RpYXJ5CmNuMi5zdHJlZXR2b2ljZS5jb20KdHcu\nc3RyZWV0dm9pY2UuY29tCi5zdHJpa2luZ2x5LmNvbQp8fHN0cm9uZ3Zwbi5jb20K\nLnN0cm9uZ3dpbmRwcmVzcy5jb20KLnN0dWRlbnQudHcvZGIKfHxzdHVkZW50c2Zv\ncmFmcmVldGliZXQub3JnCnx8c3R1bWJsZXVwb24uY29tCnN0dXBpZHZpZGVvcy5j\nb20KLnN1Y2Nlc3Nmbi5jb20KcGFuYW1hcGFwZXJzLnN1ZWRkZXV0c2NoZS5kZQou\nc3VnYXJzeW5jLmNvbQp8fHN1Z2Fyc3luYy5jb20KLnN1Z29iYnMuY29tCnx8c3Vn\ndW1pcnUxOC5jb20KfHxzdWlzc2wuY29tCnN1bW1pZnkuY29tCi5zdW1yYW5kby5j\nb20KfHxzdW1yYW5kby5jb20Kc3VuMTkxMS5jb20KLnN1bnBvcm5vLmNvbQp8fHN1\nbm1lZGlhLmNhCnx8c3VucG9ybm8uY29tCi5zdW5za3lmb3J1bS5jb20KLnN1bnRh\nLmNvbS50dwouc3VudnBuLm5ldAouc3VvbHVvLm9yZwouc3VwZXJmcmVldnBuLmNv\nbQouc3VwZXJ2cG4ubmV0Cnx8c3VwZXJ2cG4ubmV0Ci5zdXBlcnpvb2kuY29tCnxo\ndHRwOi8vc3VwZXJ6b29pLmNvbQouc3VwcGlnLm5ldAouc3VwcmVtZW1hc3RlcnR2\nLmNvbQp8aHR0cDovL3N1cHJlbWVtYXN0ZXJ0di5jb20KLnN1cmZlYXN5LmNvbQp8\nfHN1cmZlYXN5LmNvbQouc3VyZmVhc3kuY29tLmF1CnxodHRwOi8vc3VyZmVhc3ku\nY29tLmF1Cnx8c3VycmVuZGVyYXQyMC5uZXQKLnN1eWFuZ2cuY29tCnxodHRwOi8v\nc3V5YW5nZy5jb20KLnN2c2Z4LmNvbQouc3dpc3N2cG4ubmV0Cnx8c3dpc3N2cG4u\nbmV0CnN3aXRjaHZwbi5uZXQKfHxzd2l0Y2h2cG4ubmV0Ci5zeWRuZXl0b2RheS5j\nb20KfHxzeWRuZXl0b2RheS5jb20KLnN5bGZvdW5kYXRpb24ub3JnCnx8c3luY2Jh\nY2suY29tCnN5c3Jlc2NjZC5vcmcKLnN5dGVzLm5ldApibG9nLnN5eDg2LmNvbS8y\nMDA5LzA5L3B1ZmYKYmxvZy5zeXg4Ni5jbi8yMDA5LzA5L3B1ZmYKLnN6YmJzLm5l\ndAouc3pldG93YWgub3JnLmhrCgohLS0tLS0tLS0tLS0tLS0tLS0tLS1UVC0tLS0t\nLS0tLS0tLS0tLS0tLS0tLS0tLS0KfHx0LWcuY29tCi50MzUuY29tCi50NjZ5LmNv\nbQp8fHQ2NnkuY29tCi50YWEtdXNhLm9yZwp8aHR0cDovL3RhYS11c2Eub3JnCi50\nYWF6ZS50dwp8fHRhYXplLnR3CnxodHRwOi8vd3d3LnRhYmxlc2dlbmVyYXRvci5j\nb20vCnRhYnR0ZXIuanAKLnRhY2VtLm9yZwoudGFjb25ldC5jb20udHcKfHx0YWVk\ncC5vcmcudHcKLnRhZm0ub3JnCi50YWd3YS5vcmcuYXUKdGFnd2Fsay5jb20KfHx0\nYWd3YWxrLmNvbQp0YWhyLm9yZy50dwoudGFpcGVpc29jaWV0eS5vcmcKfHx0YWlw\nZWlzb2NpZXR5Lm9yZwoudGFpd2FuYmlibGUuY29tCi50YWl3YW5jb24uY29tCi50\nYWl3YW5kYWlseS5uZXQKfHx0YWl3YW5kYWlseS5uZXQKLnRhaXdhbmRjLm9yZwoh\nLS18fHRhaXdhbmVtYmFzc3kub3JnCi50YWl3YW5qdXN0aWNlLmNvbQp0YWl3YW5r\naXNzLmNvbQp0YWl3YW5uYXRpb24uY29tCnRhaXdhbm5hdGlvbi5jb20udHcKfHx0\nYWl3YW5uY2Yub3JnLnR3Cnx8dGFpd2FubmV3cy5jb20udHcKfGh0dHA6Ly93d3cu\ndGFpd2Fub25saW5lLmNjLwohLS18fHRhaXdhbnRvZGF5LnR3CnRhaXdhbnRwLm5l\ndAp8fHRhaXdhbnR0Lm9yZy50dwp0YWl3YW51cy5uZXQKdGFpd2FueWVzLmNvbQp0\nYWl3YW4tc2V4LmNvbQoudGFsazg1My5jb20KLnRhbGtib3hhcHAuY29tCnx8dGFs\na2JveGFwcC5jb20KLnRhbGtvbmx5Lm5ldAp8fHRhbGtvbmx5Lm5ldAp8fHRhbWlh\nb2RlLnRrCnx8dGFuYy5vcmcKdGFuZ2Jlbi5jb20KLnRhbmdyZW4udXMKLnRhb2lz\nbS5uZXQKfGh0dHA6Ly90YW9pc20ubmV0Ci50YW9sdW4uaW5mbwp8fHRhb2x1bi5p\nbmZvCi50YXBhdGFsay5jb20KfHx0YXBhdGFsay5jb20KYmxvZy50YXJhZ2FuYS5j\nb20KLnRhc2NuLmNvbS5hdQp8fHRhdXAubmV0CnxodHRwOi8vd3d3LnRhdXAub3Jn\nLnR3Ci50YXdlZXQuY29tCnx8dGF3ZWV0LmNvbQoudGJjb2xsZWdlLm9yZwp8fHRi\nY29sbGVnZS5vcmcKLnRiaS5vcmcuaGsKLnRiaWNuLm9yZwoudGJqeXQub3JnCnx8\ndGJwaWMuaW5mbwoudGJyYy5vcmcKdGJzLXJhaW5ib3cub3JnCi50YnNlYy5vcmcK\nfHx0YnNlYy5vcmcKdGJza2tpbmFiYWx1LnBhZ2UudGwKLnRic21hbGF5c2lhLm9y\nZwoudGJzbi5vcmcKfHx0YnNuLm9yZwoudGJzc2VhdHRsZS5vcmcKLnRic3NxaC5v\ncmcKfGh0dHA6Ly90YnNzcWgub3JnCnRic3dkLm9yZwoudGJ0ZW1wbGUub3JnLnVr\nCi50YnRob3VzdG9uLm9yZwoudGNjd29ubGluZS5vcmcKLnRjZXdmLm9yZwp0Y2hy\nZC5vcmcKdGNueW5qLm9yZwp8fHRjcHNwZWVkLmNvCi50Y3BzcGVlZC5jb20KfHx0\nY3BzcGVlZC5jb20KLnRjc29mYmMub3JnCi50Y3Nvdmkub3JnCi50ZG0uY29tLm1v\nCnRlYW1hbWVyaWNhbnkuY29tCiEtLU9WSAp8fHRlY2h2aXoubmV0Cnx8dGVjay5p\nbgoudGVlbmllZnVjay5uZXQKdGVlbnNpbmFzaWEuY29tCi50ZWxlY29tc3BhY2Uu\nY29tCnx8dGVsZWdyYXBoLmNvLnVrCi50ZW5hY3kuY29tCnx8dGVuemlucGFsbW8u\nY29tCi50ZXcub3JnCi50aGFpY24uY29tCnx8dGhlYXRydW0tYmVsbGkuY29tCnRo\nZWJsZW1pc2guY29tCnx8dGhlYmNvbXBsZXguY29tCi50aGVib2JzLmNvbQp8fHRo\nZWJvYnMuY29tCi50aGVjaGluYWJlYXQub3JnCnxodHRwOi8vd3d3LnRoZWNoaW5h\nc3Rvcnkub3JnL3llYXJib29rcy95ZWFyYm9vay0yMDEyLwoudGhlZGFsYWlsYW1h\nbW92aWUuY29tCnxodHRwOi8vdGhlZGFsYWlsYW1hbW92aWUuY29tCnx8dGhlZHcu\ndXMKdGhlZnJvbnRpZXIuaGsvdGYKY24udGhlZ2F5LmNvbQp8aHR0cDovL3RoZWdp\nb2l0aW5ob2Mudm4vCi50aGVnbHkuY29tCi50aGVob3RzLmluZm8KdGhlaG91c2Vu\nZXdzLmNvbQp8fHRoZWh1bi5uZXQKLnRoZWluaXRpdW0uY29tCnx8dGhlaW5pdGl1\nbS5jb20KLnRoZW5ld3NsZW5zLmNvbQp8fHRoZW5ld3NsZW5zLmNvbQoudGhlcGly\nYXRlYmF5Lm9yZwp8fHRoZXBpcmF0ZWJheS5vcmcKIS0tfHx0aGVwaXJhdGViYXku\nc2UKfHx0aGVwb3J0YWx3aWtpLmNvbQp0aGVyZWFsbG92ZS5rcgp0aGVyb2NrLm5l\ndC5uegp0aGVzcGVlZGVyLmNvbQp8fHRoZXN0YW5kbmV3cy5jb20KdGhldGliZXRj\nZW50ZXIub3JnCnRoZXRpYmV0Y29ubmVjdGlvbi5vcmcKLnRoZXRpYmV0bXVzZXVt\nLm9yZwoudGhldGliZXRwb3N0LmNvbQp8fHRoZXRpYmV0cG9zdC5jb20KIS0tVG9y\nCnx8dGhldGluaGF0LmNvbQp0aGV0cm90c2t5bW92aWUuY29tCnRoZXZpdmVrc3Bv\ndC5jb20KfHx0aGV3Z28ub3JnCi50aGV5bmMuY29tCnxodHRwOi8vdGhleW5jLmNv\nbQoudGhpbmtpbmd0YWl3YW4uY29tCi50aGlzYXYuY29tCnxodHRwOi8vdGhpc2F2\nLmNvbQoudGhsaWIub3JnCnx8dGhvbWFzYmVybmhhcmQub3JnCi50aG9uZ2RyZWFt\ncy5jb20KdGhyZWF0Y2hhb3MuY29tCnx8dGhyb3VnaG5pZ2h0c2ZpcmUuY29tCi50\naHVtYnppbGxhLmNvbQp8fHRoeXdvcmRzLmNvbQoudGh5d29yZHMuY29tLnR3CnRp\nYW5hbm1lbm1vdGhlci5vcmcKLnRpYW5hbm1lbmR1aXpoaS5jb20KfHx0aWFuYW5t\nZW5kdWl6aGkuY29tCnx8dGlhbmFubWVudW5pdi5jb20KfHx0aWFuYW5tZW51bml2\nLm5ldAp8fHRpYW5kaXhpbmcub3JnCi50aWFuaHVheXVhbi5jb20KLnRpYW5sYXdv\nZmZpY2UuY29tCnx8dGlhbnRpLmlvCnRpYW50aWJvb2tzLm9yZwp8fHRpYW50aWJv\nb2tzLm9yZwp0aWFueWFudG9uZy5vcmcuY24KLnRpYW56aHUub3JnCi50aWJldC5h\ndAp0aWJldC5jYQoudGliZXQuY29tCnx8dGliZXQuY29tCnRpYmV0LmZyCi50aWJl\ndC5uZXQKfHx0aWJldC5uZXQKdGliZXQubnUKLnRpYmV0Lm9yZwp8fHRpYmV0Lm9y\nZwoudGliZXQuc2sKdGliZXQub3JnLnR3Ci50aWJldC50bwoudGliZXQtZW52b3ku\nZXUKfHx0aWJldC1lbnZveS5ldQoudGliZXQtZm91bmRhdGlvbi5vcmcKLnRpYmV0\nLWhvdXNlLXRydXN0LmNvLnVrCnRpYmV0LWluZm8ubmV0CnRpYmV0LWluaXRpYXRp\ndmUuZGUKfHx0aWJldC1pbml0aWF0aXZlLmRlCi50aWJldC1tdW5pY2guZGUKLnRp\nYmV0M3JkcG9sZS5vcmcKfGh0dHA6Ly90aWJldDNyZHBvbGUub3JnCnRpYmV0YWN0\naW9uLm5ldAp8fHRpYmV0YWN0aW9uLm5ldAoudGliZXRhaWQub3JnCnRpYmV0YWxr\nLmNvbQoudGliZXRhbi5mcgp0aWJldGFuLWFsbGlhbmNlLm9yZwoudGliZXRhbmFy\ndHMub3JnCi50aWJldGFuYnVkZGhpc3RpbnN0aXR1dGUub3JnCnxodHRwOi8vdGli\nZXRhbmJ1ZGRoaXN0aW5zdGl0dXRlLm9yZwp0aWJldGFuY29tbXVuaXR5Lm9yZwou\ndGliZXRhbmpvdXJuYWwuY29tCi50aWJldGFubGFuZ3VhZ2Uub3JnCi50aWJldGFu\nbGliZXJhdGlvbi5vcmcKfHx0aWJldGFubGliZXJhdGlvbi5vcmcKLnRpYmV0Y29s\nbGVjdGlvbi5jb20KLnRpYmV0YW5haWRwcm9qZWN0Lm9yZwoudGliZXRhbmNvbW11\nbml0eXVrLm5ldAp8aHR0cDovL3RpYmV0YW5jb21tdW5pdHl1ay5uZXQKdGliZXRh\nbmN1bHR1cmUub3JnCnRpYmV0YW5mZW1pbmlzdGNvbGxlY3RpdmUub3JnCi50aWJl\ndGFucGFpbnRpbmdzLmNvbQoudGliZXRhbnBob3RvcHJvamVjdC5jb20KLnRpYmV0\nYW5wb2xpdGljYWxyZXZpZXcub3JnCi50aWJldGFucmV2aWV3Lm5ldAp8aHR0cDov\nL3RpYmV0YW5zcG9ydHMub3JnCi50aWJldGFud29tZW4ub3JnCnxodHRwOi8vdGli\nZXRhbndvbWVuLm9yZwoudGliZXRhbnlvdXRoLm9yZwoudGliZXRhbnlvdXRoY29u\nZ3Jlc3Mub3JnCnx8dGliZXRhbnlvdXRoY29uZ3Jlc3Mub3JnCi50aWJldGNoYXJp\ndHkuZGsKdGliZXRjaGFyaXR5LmluCi50aWJldGNoaWxkLm9yZwoudGliZXRjaXR5\nLmNvbQoudGliZXRjb3Jwcy5vcmcKLnRpYmV0ZXhwcmVzcy5uZXQKfGh0dHA6Ly90\naWJldGV4cHJlc3MubmV0CnRpYmV0Zm9jdXMuY29tCnRpYmV0ZnVuZC5vcmcKLnRp\nYmV0Z2VybWFueS5jb20KfHx0aWJldGdlcm1hbnkuZGUKLnRpYmV0aGF1cy5jb20K\nLnRpYmV0aGVyaXRhZ2VmdW5kLm9yZwp0aWJldGhvdXNlLmpwCnRpYmV0aG91c2Uu\nb3JnCnx8dGliZXRob3VzZS51cwoudGliZXRpbmZvbmV0Lm5ldAoudGliZXRqdXN0\naWNlLm9yZwoudGliZXRrb21pdGUuZGsKfGh0dHA6Ly90aWJldG11c2V1bS5vcmcK\ndGliZXRuZXR3b3JrLm9yZwp8fHRpYmV0bmV0d29yay5vcmcKLnRpYmV0b2ZmaWNl\nLmNoCnxodHRwOi8vdGliZXRvZmZpY2UuY2gKdGliZXRvZmZpY2UuZXUKdGliZXRv\nZmZpY2Uub3JnCnRpYmV0b25saW5lLmNvbQp8fHRpYmV0b25saW5lLmNvbQoudGli\nZXRvZmZpY2UuY29tLmF1CnxodHRwOi8vdGliZXRvZmZpY2UuY29tLmF1Cnx8dGli\nZXRvbmxpbmUudHYKLnRpYmV0b25saW5lLnR2Ci50aWJldG9yYWxoaXN0b3J5Lm9y\nZwp8aHR0cDovL3RpYmV0b3JhbGhpc3Rvcnkub3JnCi50aWJldHBvbGljeS5ldQou\ndGliZXRyZWxpZWZmdW5kLmNvLnVrCnRpYmV0c2l0ZXMuY29tCi50aWJldHNvY2ll\ndHkuY29tCnx8dGliZXRzb2NpZXR5LmNvbQoudGliZXRzdW4uY29tCi50aWJldHN1\ncHBvcnRncm91cC5vcmcKfGh0dHA6Ly90aWJldHN1cHBvcnRncm91cC5vcmcKLnRp\nYmV0c3dpc3MuY2gKLnRpYmV0dGVsZWdyYXBoLmNvbQp0aWJldHRpbWVzLm5ldAp8\nfHRpYmV0d3JpdGVzLm9yZwoudGlja2V0LmNvbS50dwoudGlnZXJ2cG4uY29tCnx8\ndGlnZXJ2cG4uY29tCi50aW1kaXIuY29tCnxodHRwOi8vdGltZGlyLmNvbQoudGlt\nZS5jb20KfGh0dHA6Ly90aW1lLmNvbQohLS0udGltZS5jb20vdGltZS90aW1lMTAw\nL2xlYWRlcnMvcHJvZmlsZS9yZWJlbAohLS0udGltZS5jb20vdGltZS9zcGVjaWFs\ncy9wYWNrYWdlcy9hcnRpY2xlLzAsMjg4MDQKIS0tLnRpbWUuY29tL3RpbWUvbWFn\nYXppbmUKLnRpbXNhaC5jb20KfHxibG9nLnRpbmV5LmNvbQp0aW50dWMxMDEuY29t\nCi50aW55LmNjCnxodHRwOi8vdGlueS5jYwp0aW55Y2hhdC5jb20KfHx0aW55cGFz\ndGUuY29tCi50aXN0b3J5LmNvbQp8fHRrY3MtY29sbGlucy5jb20KLnRtYWdhemlu\nZS5jb20KfHx0bWFnYXppbmUuY29tCi50bWRmaXNoLmNvbQp8aHR0cDovL3RtaS5t\nZQoudG1wcC5vcmcKfGh0dHA6Ly90bXBwLm9yZwoudG5hZmxpeC5jb20KfHx0bmFm\nbGl4LmNvbQoudG5ncm5vdy5jb20KLnRuZ3Jub3cubmV0Ci50bnAub3JnCnxodHRw\nOi8vdG5wLm9yZwoudG8tcG9ybm8uY29tCnx8dG8tcG9ybm8uY29tCnRvZ2V0dGVy\nLmNvbQoudG9reW8tMjQ3LmNvbQoudG9reW8taG90LmNvbQp8fHRva3lvLXBvcm4t\ndHViZS5jb20KfHx0b2t5b2NuLmNvbQp0dy50b21vbmV3cy5uZXQKLnRvbmdpbC5v\nci5rcgoudG9uby1va2EuanAKdG9ueXlhbi5uZXQKLnRvb2RvYy5jb20KdG9vbmVs\nLm5ldAp0b3A4MS53cwoudG9wbmV3cy5pbgoudG9wcG9ybnNpdGVzLmNvbQp8aHR0\ncDovL3RvcHBvcm5zaXRlcy5jb20KLnRvcmd1YXJkLm5ldAp8fHRvcmd1YXJkLm5l\ndAp8fHRvcC50dgoudG9wc2hhcmV3YXJlLmNvbQoudG9wc3kuY29tCnx8dG9wc3ku\nY29tCnx8dG9wdGlwLmNhCnRvcmEudG8KLnRvcmNuLmNvbQoudG9ycHJvamVjdC5v\ncmcKfHx0b3Jwcm9qZWN0Lm9yZwp0b3JyZW50cHJpdmFjeS5jb20KfHx0b3JyZW50\ncHJpdmFjeS5jb20KfGh0dHA6Ly90b3JyZW50cHJvamVjdC5zZQp8fHRvcnJlbnR5\nLm9yZwp8fHRvcnJlbnR6LmV1Cnx8dG9ydnBuLmNvbQp8fHRvdGFsdnBuLmNvbQou\ndG91dGlhb2FiYy5jb20KdG93bmdhaW4uY29tCnRveXBhcmsuaW4KdG95dHJhY3Rv\ncnNob3cuY29tCi50cGFyZW50cy5vcmcKLnRwaS5vcmcudHcKfHx0cGkub3JnLnR3\nCnRyYWZmaWNoYXVzLmNvbQp8fHRyYW5zcGFyZW5jeS5vcmcKfHx0cmVlbWFsbC5j\nb20udHcKdHJlbmRzbWFwLmNvbQp8fHRyZW5kc21hcC5jb20KLnRyaWFsb2ZjY3Au\nb3JnCnx8dHJpYWxvZmNjcC5vcmcKLnRyaW1vbmRpLmRlL1NETEUKLnRyb3V3Lm5s\nCnxodHRwOi8vdHJvdXcubmwKLnRydC5uZXQudHIKdHJ0Yy5jb20udHcKLnRydWVi\ndWRkaGEtbWQub3JnCnxodHRwOi8vdHJ1ZWJ1ZGRoYS1tZC5vcmcKdHJ1bHllcmdv\nbm9taWMuY29tCi50cnV0aDEwMS5jby50dgp8aHR0cDovL3RydXRoMTAxLmNvLnR2\nCi50cnV0aG9udG91ci5vcmcKfGh0dHA6Ly90cnV0aG9udG91ci5vcmcKLnRydXZl\nby5jb20KLnRzY3R2Lm5ldAoudHNlbXR1bGt1LmNvbQp0c3F1YXJlLnR2Ci50c3Uu\nb3JnLnR3CnRzdW5hZ2FydW1vbi5jb20KIS0tfGh0dHA6Ly93d3cudHN1cnUtYmly\nZC5uZXQvCi50c2N0di5uZXQKfHx0dC1yc3Mub3JnCnx8dHQxMDY5LmNvbQoudHR0\nYW4uY29tCnx8dHR0YW4uY29tCmJiLnR0di5jb20udHcvYmIKdHU4OTY0LmNvbQou\ndHViYWhvbGljLmNvbQoudHViZS5jb20KdHViZTguY29tCnx8dHViZTguY29tCi50\ndWJlOTExLmNvbQp8fHR1YmU5MTEuY29tCi50dWJlY3VwLmNvbQoudHViZWdhbHMu\nY29tCi50dWJlaXNsYW0uY29tCnxodHRwOi8vdHViZWlzbGFtLmNvbQoudHViZXN0\nYWNrLmNvbQp8fHR1YmV3b2xmLmNvbQoudHVpYmVpdHUubmV0CnR1aWRhbmcubmV0\nCi50dWlkYW5nLm9yZwp8fHR1aWRhbmcub3JnCi50dWlkYW5nLnNlCmJicy50dWl0\ndWkuaW5mbwoudHVtdXRhbnppLmNvbQp8aHR0cDovL3R1bXV0YW56aS5jb20KfHx0\ndW12aWV3LmNvbQoudHVuZWluLmNvbQp8aHR0cDovL3R1bmVpbi5jb20KfHx0dW5u\nZWxiZWFyLmNvbQoudHVubmVsci5jb20KfHx0dW5uZWxyLmNvbQoudHVvOC5ibHVl\nCnx8dHVvOC5ibHVlCi50dW84LmNjCi50dW84LmNsdWIKfHx0dW84LmNsdWIKLnR1\nbzguZml0Ci50dW84LmhrCi50dW84LmluCi50dW84Lm5pbmphCi50dW84Lm9yZwp8\nfHR1bzguZml0Cnx8dHVvOC5vcmcKLnR1bzgucHcKfGh0dHA6Ly90dW84LnB3Cnx8\ndHVvOC5yZWQKLnR1bzguc3BhY2UKdHVpdHdpdC5jb20KLnR1cmFuc2FtLm9yZwou\ndHVyYm9iaXQubmV0CnxodHRwOi8vdHVyYm9iaXQubmV0Ci50dXJib2hpZGUuY29t\nCnx8dHVyYm9oaWRlLmNvbQoudHVzaHljYXNoLmNvbQp8aHR0cDovL3R1c2h5Y2Fz\naC5jb20KfHxhcHAudHV0YW5vdGEuY29tCi50dXZwbi5jb20KfHx0dXZwbi5jb20K\nfGh0dHA6Ly90dXphaWppZGkuY29tCnxodHRwOi8vKi50dXphaWppZGkuY29tCi50\ndzAxLm9yZwp8aHR0cDovL3R3MDEub3JnCgohLS0tVHVtYmxyLS0tCi50dW1ibHIu\nY29tCnx8dHVtYmxyLmNvbQohLS1AQHx8YXNzZXRzLnR1bWJsci5jb20KIS0tQEB8\nfGRhdGEudHVtYmxyLmNvbQohLS1AQHx8bWVkaWEudHVtYmxyLmNvbQohLS1AQHx8\nc3RhdGljLnR1bWJsci5jb20KIS0tQEB8fHd3dy50dW1ibHIuY29tCnx8bGVjbG91\nZC5uZXQKfGh0dHA6Ly9jb3NtaWMubW9uYXIuY2gKfHxzbHV0bW9vbmJlYW0uY29t\nCnxodHRwOi8vYmxvZy5zb3lsZW50LmNvbQoKLnR2LmNvbQp8aHR0cDovL3R2LmNv\nbQp0dmFudHMuY29tCmZvcnVtLnR2Yi5jb20KbmV3cy50dmIuY29tL2xpc3Qvd29y\nbGQKbmV3cy50dmIuY29tL2xvY2FsCm5ld3MudHZicy5jb20udHcKLnR2Ym94bm93\nLmNvbQp8aHR0cDovL3R2Ym94bm93LmNvbS8KdHZpZGVyLmNvbQoudHZtb3N0LmNv\nbS5oawoudHZwbGF5dmlkZW9zLmNvbQp8fHR2dW5ldHdvcmtzLmNvbQoudHctYmxv\nZy5jb20KfGh0dHBzOi8vdHctYmxvZy5jb20KLnR3LW5wby5vcmcKLnR3YWl0dGVy\nLmNvbQp0d2FwcGVya2VlcGVyLmNvbQp8fHR3YXBwZXJrZWVwZXIuY29tCnx8dHdh\ndWQuaW8KLnR3YXVkLmlvCi50d2F2aS5jb20KLnR3YmJzLm5ldC50dwp0d2Jicy5v\ncmcKdHdiYnMudHcKfHx0d2Jsb2dnZXIuY29tCnR3ZWVwbWFnLmNvbQoudHdlZXBt\nbC5vcmcKfHx0d2VlcG1sLm9yZwoudHdlZXRiYWNrdXAuY29tCnx8dHdlZXRiYWNr\ndXAuY29tCnR3ZWV0Ym9hcmQuY29tCnx8dHdlZXRib2FyZC5jb20KLnR3ZWV0Ym9u\nZXIuYml6Cnx8dHdlZXRib25lci5iaXoKLnR3ZWV0Y3MuY29tCnxodHRwOi8vdHdl\nZXRjcy5jb20KfGh0dHA6Ly9kZWNrLmx5CiEtLSBPcGVyYXRpb24gZGlzY29udGlu\ndWVkCiEtLXx8dHdlZXRlLm5ldAohLS1tLnR3ZWV0ZS5uZXQKfHxtdHcudGwKfHx0\nd2VldGVkdGltZXMuY29tCiEtLSBPcGVyYXRpb24gZGlzY29udGludWVkCiEtLXR3\nZWV0bWVtZS5jb20KfHx0d2VldG15bGFzdC5mbQp0d2VldHBob3RvLmNvbQp8fHR3\nZWV0cGhvdG8uY29tCnx8dHdlZXRyYW5zLmNvbQp0d2VldHJlZS5jb20KfHx0d2Vl\ndHJlZS5jb20KLnR3ZWV0dHVubmVsLmNvbQp8fHR3ZWV0dHVubmVsLmNvbQp8fHR3\nZWV0d2FsbHkuY29tCnR3ZWV0eW1haWwuY29tCnx8dHdlbHZlLnRvZGF5Ci50d2Vl\nei5uZXQKfGh0dHA6Ly90d2Vlei5uZXQKfHx0d2Z0cC5vcmcKfHx0d2dyZWF0ZGFp\nbHkuY29tCnR3aWJhc2UuY29tCi50d2liYmxlLmRlCnx8dHdpYmJsZS5kZQp0d2li\nYm9uLmNvbQp8fHR3aWJzLmNvbQoudHdpY291bnRyeS5vcmcKfGh0dHA6Ly90d2lj\nb3VudHJ5Lm9yZwp0d2ljc3kuY29tCi50d2llbmRzLmNvbQp8aHR0cDovL3R3aWVu\nZHMuY29tCi50d2lmYW4uY29tCnxodHRwOi8vdHdpZmFuLmNvbQp0d2lmZm8uY29t\nCnx8dHdpZmZvLmNvbQoudHdpbGlnaHRzZXguY29tCnR3aWxvZy5vcmcKdHdpbWJv\ndy5jb20KfHx0d2luZGV4eC5jb20KdHdpcHBsZS5qcAp8fHR3aXBwbGUuanAKfHx0\nd2lwLm1lCnR3aXNob3J0LmNvbQp8fHR3aXNob3J0LmNvbQp0d2lzdGFyLmNjCnx8\ndHdpc3Rlci5uZXQuY28KfHx0d2lzdGVyaW8uY29tCnR3aXN0ZXJub3cuY29tCnR3\naXN0b3J5Lm5ldAp0d2l0YnJvd3Nlci5uZXQKfHx0d2l0Y2F1c2UuY29tCnx8dHdp\ndGdldGhlci5jb20KfHx0d2lnZ2l0Lm9yZwp0d2l0Z29vLmNvbQp0d2l0aXEuY29t\nCnx8dHdpdGlxLmNvbQoudHdpdGxvbmdlci5jb20KfHx0d2l0bG9uZ2VyLmNvbQp8\naHR0cDovL3RsLmdkLwp0d2l0bWFuaWEuY29tCnR3aXRvYXN0ZXIuY29tCnx8dHdp\ndG9hc3Rlci5jb20KfHx0d2l0b25tc24uY29tCiEtLVNhbWUgSVAKLnR3aXQyZC5j\nb20KfHx0d2l0MmQuY29tCi50d2l0c3RhdC5jb20KfHx0d2l0c3RhdC5jb20KfHxm\naXJzdGZpdmVmb2xsb3dlcnMuY29tCnx8cmV0d2VldGVmZmVjdC5jb20KfHx0d2Vl\ncGxpa2UubWUKfHx0d2VlcGd1aWRlLmNvbQp8fHR1cmJvdHdpdHRlci5jb20KLnR3\naXR2aWQuY29tCnx8dHdpdHZpZC5jb20KfGh0dHA6Ly90d3QudGwKdHdpdHRib3Qu\nbmV0Cnx8YWRzLXR3aXR0ZXIuY29tCnx8dHd0dHIuY29tCnx8dHdpdHRlcjRqLm9y\nZwoudHdpdHRlcmNvdW50ZXIuY29tCnx8dHdpdHRlcmNvdW50ZXIuY29tCnR3aXR0\nZXJmZWVkLmNvbQoudHdpdHRlcmdhZGdldC5jb20KfHx0d2l0dGVyZ2FkZ2V0LmNv\nbQoudHdpdHRlcmtyLmNvbQp8fHR3aXR0ZXJrci5jb20KfHx0d2l0dGVybWFpbC5j\nb20KfHx0d2l0dGVycmlmaWMuY29tCnR3aXR0ZXJ0aW0uZXMKfHx0d2l0dGVydGlt\nLmVzCnR3aXR0aGF0LmNvbQp8fHR3aXR0dXJrLmNvbQoudHdpdHR1cmx5LmNvbQp8\nfHR3aXR0dXJseS5jb20KLnR3aXR6YXAuY29tCnR3aXlpYS5jb20KfHx0d3N0YXIu\nbmV0Ci50d3Rrci5jb20KfGh0dHA6Ly90d3Rrci5jb20KLnR3bm9ydGgub3JnLnR3\nCnR3c2t5cGUuY29tCnR3dHJsYW5kLmNvbQp0d3VybC5ubAoudHd5YWMub3JnCnx8\ndHd5YWMub3JnCi50eHh4LmNvbQoudHljb29sLmNvbQp8fHR5Y29vbC5jb20KCiEt\nLXR5cGVwYWQKfHx0eXBlcGFkLmNvbQpAQHx8d3d3LnR5cGVwYWQuY29tCkBAfHxz\ndGF0aWMudHlwZXBhZC5jb20KfHxibG9nLmV4cG9mdXR1cmVzLmNvbQp8fGxlZ2Fs\ndGVjaC5sYXcuY29tCnx8YmxvZ3MudGFtcGFiYXkuY29tCnx8Y29udGVzdHMudHdp\nbGlvLmNvbQohLWxhd3Byb2Zlc3NvcnMudHlwZXBhZC5jb20vY2hpbmFfbGF3X3By\nb2YKCiEtLS0tLS0tLS0tLS0tVHdpdGVzZS0tLS0tCi5lbWJyLmluCnx8ZW1ici5p\nbgoKIS0tLS0tLS0tLS0tLS0tLS0tLS0tVVUtLS0tLS0tLS0tLS0tLS0tLS0tLS0t\nLS0tCi51OXVuLmNvbQp8fHU5dW4uY29tCi51YmRkbnMub3JnCnxodHRwOi8vdWJk\nZG5zLm9yZwp8fHViZXJwcm94eS5uZXQKLnVjLWphcGFuLm9yZwp8fHVjLWphcGFu\nLm9yZwouc3JjZi51Y2FtLm9yZy9zYWxvbi8KfGh0dHA6Ly9jaGluYS51Y2FuZXdz\nLmNvbS8KfHx1Y2RjMTk5OC5vcmcKfGh0dHA6Ly9odW0qLnVjaGljYWdvLmVkdS9m\nYWN1bHR5L3l3YW5nL2hpc3RvcnkKfHx1ZGVyem8uaXQKLnVkbi5jb20KfHx1ZG4u\nY29tCnx8dWRuLmNvbS50dwp1ZG5ia2suY29tL2Jicwp8fHVmb3JhZGlvLmNvbS50\ndwp1ZnJlZXZwbi5jb20KLnVnby5jb20KIS0tZ2hzCnx8dWhkd2FsbHBhcGVycy5v\ncmcKfHx1aHJwLm9yZwoudWlnaHVyLm5sCnx8dWlnaHVyLm5sCnVpZ2h1cmJpei5u\nZXQKLnVsaWtlLm5ldAp1a2NkcC5jby51awp1a2xpZmVyYWRpby5jby51awp8fHVr\nbGlmZXJhZGlvLmNvLnVrCnVsdHJhdnBuLmZyCnx8dWx0cmF2cG4uZnIKdWx0cmF4\ncy5jb20KdW1pY2guZWR1L35mYWx1bgp8fHVuYmxvY2suY24uY29tCi51bmJsb2Nr\nZXIueXQKdW5ibG9jay11cy5jb20KfHx1bmJsb2NrLXVzLmNvbQoudW5ibG9ja2Rt\nbS5jb20KfGh0dHA6Ly91bmJsb2NrZG1tLmNvbQp8fHVuYmxvY2tzaXQuZXMKdW5j\neWNsb21lZGlhLm9yZwoudW5jeWNsb3BlZGlhLmhrL3dpa2kKfGh0dHA6Ly91bmN5\nY2xvcGVkaWEuaGsKIS0tdW5jeWNsb3BlZGlhLmluZm8KfGh0dHA6Ly91bmN5Y2xv\ncGVkaWEudHcKdW5kZXJ3b29kYW1tby5jb20KfHx1bmRlcndvb2RhbW1vLmNvbQp8\nfHVuaG9seWtuaWdodC5jb20KLnVuaS5jYwp8fGNsZHIudW5pY29kZS5vcmcKLnVu\naWZpY2F0aW9uLm5ldAoudW5pZmljYXRpb24ub3JnLnR3Cnx8dW5pcnVsZS5jbG91\nZAoudW5pdGVkc29jaWFscHJlc3MuY29tCi51bml4MTAwLmNvbQp8fHVua25vd25z\ncGFjZS5vcmcKLnVub2RlZG9zLmNvbQp1bnBvLm9yZwoudW50cmFjZWFibGUudXMK\nfGh0dHA6Ly91bnRyYWNlYWJsZS51cwp8fHVvY24ub3JnCnRvci51cGRhdGVzdGFy\nLmNvbQoudXBob2xkanVzdGljZS5vcmcKLnVwbG9hZDR1LmluZm8KdXBsb2FkZWQu\nbmV0L2ZpbGUKfGh0dHA6Ly91cGxvYWRlZC5uZXQvZmlsZQp8aHR0cDovL3VwbG9h\nZGVkLnRvL2ZpbGUKLnVwbG9hZHN0YXRpb24uY29tL2ZpbGUKLnVwbWVkaWEubWcK\nLnVwb3JuaWEuY29tCnxodHRwOi8vdXBvcm5pYS5jb20KfHx1cHJveHkub3JnCnxo\ndHRwOi8vdG9yLmNuLnVwdG9kb3duLmNvbS8KLnVwd2lsbC5vcmcKdXI3cy5jb20K\nfHx1cmJhbnN1cnZpdmFsLmNvbQpteXNoYXJlLnVybC5jb20udHcvCnx8dXJsYm9y\nZy5jb20KfHx1cmxwYXJzZXIuY29tCnVzLnRvCnx8dXNhY24uY29tCi51c2FpcC5l\ndQp8fHVzYWlwLmV1CmRhbGFpbGFtYS51c2MuZWR1CmlpcGRpZ2l0YWwudXNlbWJh\nc3N5Lmdvdgp8fHVzZmsubWlsCnx8dXNtYS5lZHUKfHx1c21jLm1pbAoudXNvY2N0\nbi5jb20KfGh0dHA6Ly90YXJyLnVzcHRvLmdvdi8KfHx0c2RyLnVzcHRvLmdvdgou\ndXN0cmVhbS50dgp8fHVzdHJlYW0udHYKIS0tfHx1c3R3cmFwLmluZm8KLnVzdW5p\ndGVkbmV3cy5jb20KfGh0dHA6Ly91c3VuaXRlZG5ld3MuY29tCnVzdXMuY2MKLnV0\nb3BpYW5wYWwuY29tCnx8dXRvcGlhbnBhbC5jb20KLnV1LWdnLmNvbQoudXZ3eHl6\nLnh5egp8fHV2d3h5ei54eXoKLnV3YW50cy5jb20KLnV3YW50cy5uZXQKdXlnaHVy\nLmNvLnVrCnxodHRwOi8vdXlnaHVyLWoub3JnCnx8dXlnaHVyYW1lcmljYW4ub3Jn\nCi51eWdodXJjYW5hZGlhbnNvY2lldHkub3JnCi51eWdodXJlbnNlbWJsZS5jby51\nawp8fHV5Z2h1cmNvbmdyZXNzLm9yZwoudXlnaHVycGVuLm9yZwoudXlnaHVycHJl\nc3MuY29tCi51eWdodXJzdHVkaWVzLm9yZwp8aHR0cDovL3V5Z2h1cnN0dWRpZXMu\nb3JnCnV5Z3VyLm9yZwp8aHR0cDovL3V5bWFhcmlwLmNvbS8KCiEtLS0tLS0tLS0t\nLS0tLS0tLS0tLVZWLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoudjJyYXkuY29t\nCnxodHRwOi8vdjJyYXkuY29tCi52YW4wMDEuY29tCi52YW42OTguY29tCi52YW5l\nbXUuY24KLnZhbmlsbGEtanAuY29tCi52YW5wZW9wbGUuY29tCnZhbnNreS5jb20K\nfHx2Y2Ytb25saW5lLm9yZwp8fHZjZmJ1aWxkZXIub3JnCi52ZWdhc3JlZC5jb20K\nLnZlbGthZXBvY2hhLnNrCi52ZW5iYnMuY29tCi52ZW5jaGluYS5jb20KLnZlbmV0\naWFubWFjYW8uY29tCnx8dmVuZXRpYW5tYWNhby5jb20KdmVvaC5jb20KbXlzaXRl\nLnZlcml6b24ubmV0CnZlcm1vbnR0aWJldC5vcmcKLnZlcnNhdnBuLmNvbQp8fHZl\ncnNhdnBuLmNvbQp8fHZlcnlicy5jb20KLnZmdC5jb20udHcKLnZpYmVyLmNvbQp8\nfHZpYmVyLmNvbQoudmljYS5pbmZvCi52aWN0aW1zb2Zjb21tdW5pc20ub3JnCnxo\ndHRwOi8vdmljdGltc29mY29tbXVuaXNtLm9yZwp8fHZpZC5tZQp8fHZpZGJsZS5j\nb20KdmlkZW9iYW0uY29tCnx8dmlkZW9iYW0uY29tCi52aWRlb2RldGVjdGl2ZS5j\nb20KLnZpZGVvbWVnYS50dgp8fHZpZGVvbWVnYS50dgoudmlkZW9tby5jb20Kdmlk\nZW9wZWRpYXdvcmxkLmNvbQoudmlkZW9wcmVzcy5jb20KLnZpZGluZm8ub3JnL3Zp\nZGVvCnZpZXRkYWlreW5ndXllbi5jb20KLnZpamF5YXRlbXBsZS5vcmcKdmltZW8u\nY29tCnx8dmltZW8uY29tCnx8dmltcGVyYXRvci5vcmcKfHx2aW5jbmQuY29tCnx8\ndmlubmlldi5jb20KfGh0dHA6Ly93d3cubGliLnZpcmdpbmlhLmVkdS9hcmVhLXN0\ndWRpZXMvVGliZXQvdGliZXQuaHRtbAoudmlydHVhbHJlYWxwb3JuLmNvbQp8fHZp\ncnR1YWxyZWFscG9ybi5jb20KdmlzaWJsZXR3ZWV0cy5jb20KfGh0dHA6Ly9ueS52\naXNpb250aW1lcy5jb20KLnZpdGFsMjQ3Lm9yZwp8fHZpdS5jb20KLnZpdmFoZW50\nYWk0dS5uZXQKLnZpdmF0dWJlLmNvbQoudml2dGhvbWFzLmNvbQp8fHZpdnRob21h\ncy5jb20KLnZqYXYuY29tCnx8dmphdi5jb20KLnZqbWVkaWEuY29tLmhrCi52bGxj\ncy5vcmcKfGh0dHA6Ly92bGxjcy5vcmcKfHx2bWl4Y29yZS5jb20KfHx2bmV0Lmxp\nbmsKY24udm9hLm1vYmkKdHcudm9hLm1vYmkKLnZvYWNoaW5lc2VibG9nLmNvbQp8\nfHZvYWNoaW5lc2VibG9nLmNvbQp2b2FnZC5jb20KLnZvYWNhbnRvbmVzZS5jb20K\nfHx2b2FjYW50b25lc2UuY29tCnZvYWNoaW5lc2UuY29tCnx8dm9hY2hpbmVzZS5j\nb20KLnZvYW5ld3MuY29tCnx8dm9hbmV3cy5jb20Kdm9hdGliZXRhbi5jb20KfHx2\nb2F0aWJldGFuLmNvbQoudm9hdGliZXRhbmVuZ2xpc2guY29tCnx8dm9hdGliZXRh\nbmVuZ2xpc2guY29tCi52b2NhdGl2LmNvbQp2b2NuLnR2Ci52b3Qub3JnCnx8dm90\nLm9yZwoudm92bzIwMDAuY29tCnxodHRwOi8vdm92bzIwMDAuY29tCi52b3hlci5j\nb20KfHx2b3hlci5jb20KLnZveS5jb20KfHx2cG4uYWMKLnZwbjRhbGwuY29tCnx8\ndnBuNGFsbC5jb20KLnZwbmFjY291bnQub3JnCnxodHRwOi8vdnBuYWNjb3VudC5v\ncmcKLnZwbmFjY291bnRzLmNvbQp8fHZwbmFjY291bnRzLmNvbQoudnBuY29tcGFy\naXNvbi5vcmcKLnZwbmN1cC5jb20KfHx2cG5jdXAuY29tCnZwbmJvb2suY29tCi52\ncG5jb3Vwb25zLmNvbQp8aHR0cDovL3ZwbmNvdXBvbnMuY29tCi52cG5kYWRhLmNv\nbQp8fHZwbmRhZGEuY29tCi52cG5mYW4uY29tCnZwbmZpcmUuY29tCi52cG5maXJl\ncy5iaXoKLnZwbmZvcmdhbWUubmV0Cnx8dnBuZm9yZ2FtZS5uZXQKfHx2cG5nYXRl\nLmpwCi52cG5nYXRlLm5ldAp8fHZwbmdhdGUubmV0Ci52cG5ncmF0aXMubmV0CnZw\nbmhxLmNvbQoudnBubWFzdGVyLmNvbQp8fHZwbm1hc3Rlci5jb20KLnZwbm1lbnRv\nci5jb20KfHx2cG5tZW50b3IuY29tCi52cG5pbmphLm5ldAp8fHZwbmluamEubmV0\nCi52cG5pbnRvdWNoLmNvbQp8fHZwbmludG91Y2gubmV0CnZwbmphY2suY29tCnx8\ndnBuamFjay5jb20KLnZwbnBpY2suY29tCnx8dnBucGljay5jb20KfHx2cG5wb3Au\nY29tCnx8dnBucHJvbmV0LmNvbQoudnBucmVhY3Rvci5jb20KfHx2cG5yZWFjdG9y\nLmNvbQp8fHZwbnJldmlld3ouY29tCi52cG5zZWN1cmUubWUKfHx2cG5zZWN1cmUu\nbWUKLnZwbnNoYXphbS5jb20KfHx2cG5zaGF6YW0uY29tCi52cG5zaGllbGRhcHAu\nY29tCnx8dnBuc2hpZWxkYXBwLmNvbQoudnBuc3AuY29tCi52cG50cmFmZmljLmNv\nbQoudnBudHVubmVsLmNvbQp8fHZwbnR1bm5lbC5jb20KLnZwbnVrLmluZm8KfHx2\ncG51ay5pbmZvCnx8dnBudW5saW1pdGVkYXBwLmNvbQoudnBudmlwLmNvbQp8fHZw\nbnZpcC5jb20KLnZwbndvcmxkd2lkZS5jb20KLnZwb3JuLmNvbQp8fHZwb3JuLmNv\nbQoudnBzZXIubmV0CkBAfHx2cHNlci5uZXQKdnJhaWVzYWdlc3NlLm5ldAoudnJt\ndHIuY29tCnx8dnR1bm5lbC5jb20KfHx2dWt1LmNjCgohLS0tLS0tLS0tLS0tLS0t\nLS0tLS1XVy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KbGlzdHMudzMub3JnL2Fy\nY2hpdmVzL3B1YmxpYwp8fHczc2Nob29scy5jb20KfHx3YWZmbGUxOTk5LmNvbQou\nd2FoYXMuY29tCi53YWlnYW9idS5jb20Kd2Fpa2V1bmcub3JnL3BocF93aW5kCi53\nYWlsYWlrZS5uZXQKLndhaXdhaWVyLmNvbQp8aHR0cDovL3dhaXdhaWVyLmNvbQp8\nfHdhbGxtYW1hLmNvbQp3YWxsb3Jub3Qub3JnCnx8d2FsbHBhcGVyY2FzYS5jb20K\nLndhbGxwcm94eS5jb20KQEB8fHdhbGxwcm94eS5jb20uY24KfHx3YWx0ZXJtYXJ0\naW4uY29tCnx8d2FsdGVybWFydGluLm9yZwp8fHd3dy53YW4tcHJlc3Mub3JnCnx8\nd2FuZGVyaW5naG9yc2UubmV0Cnx8d2FuZ2FmdS5uZXQKfHx3YW5namluYm8ub3Jn\nCi53YW5namluYm8ub3JnCndhbmdsaXhpb25nLmNvbQoud2FuZ28ub3JnCnx8d2Fu\nZ28ub3JnCndhbmdydW9zaHVpLm5ldAp3d3cud2FuZ3J1b3dhbmcub3JnCndhbnQt\nZGFpbHkuY29tCndhcGVkaWEubW9iaS96aHNpbXAKfHx3YXNlbHByby5jb20KLndh\ndGNoaW5lc2UuY29tCi53YXR0cGFkLmNvbQp8fHdhdHRwYWQuY29tCi5tYWt6aG91\nLndhcmVob3VzZTMzMy5jb20Kd2FzaGVuZy5uZXQKLndhdGNoOHguY29tCnx8d2F0\nY2hteWdmLm5ldAp8fHdhdi50dgoud2RmNS5jb20KLndlYXJlaGFpcnkuY29tCi53\nZWFybi5jb20KfHx3ZWFybi5jb20KfGh0dHA6Ly9oa2NvYy53ZWF0aGVyLmNvbS5o\nawp8fGh1ZGF0b3JpcS53ZWIuaWQKfHx3ZWIycHJvamVjdC5uZXQKd2ViYmFuZy5u\nZXQKLndlYmV2YWRlci5vcmcKLndlYmZyZWVyLmNvbQp3ZWJsYWd1LmNvbQoud2Vi\namIub3JnCi53ZWJydXNoLm5ldAp3ZWJzLXR2Lm5ldAoud2Vic2l0ZXB1bHNlLmNv\nbS9oZWxwL3Rlc3R0b29scy5jaGluYS10ZXN0CnxodHRwOi8vd3d3LndlYnNuYXBy\nLmNvbQoud2Vid2FycGVyLm5ldAp8aHR0cDovL3dlYndhcnBlci5uZXQKd2Vid29y\na2VyZGFpbHkuY29tCi53ZWVrbWFnLmluZm8KfHx3ZWZpZ2h0Y2Vuc29yc2hpcC5v\ncmcKLndlZm9uZy5jb20Kd2VpYm9sZWFrLmNvbQoud2VpaHVvLm9yZwp3ZWlqaW5n\nc2hlbmcub3JnCi53ZWltaW5nLmluZm8KfHx3ZWltaW5nLmluZm8Kd2VpcXVhbndh\nbmcub3JnCnxodHRwOi8vd2Vpc3VvLndzCi53ZWxvdmVjb2NrLmNvbQoud2VtaWdy\nYXRlLm9yZwp8aHR0cDovL3dlbWlncmF0ZS5vcmcKd2VuZ2V3YW5nLmNvbQp8fHdl\nbmdld2FuZy5vcmcKLndlbmh1aS5jaAp8aHR0cDovL3RyYW5zLndlbndlaXBvLmNv\nbS9nYi8KLndlbnh1ZWNpdHkuY29tCnx8d2VueHVlY2l0eS5jb20KLndlbnl1bmNo\nYW8uY29tCnx8d2VueXVuY2hhby5jb20KLndlc3RjYS5jb20KfHx3ZXN0Y2EuY29t\nCnx8d2VzdGVybndvbHZlcy5jb20KLndlc3RraXQubmV0Cnx8d2VzdHBvaW50LmVk\ndQoud2VzdGVybnNodWdkZW5zb2NpZXR5Lm9yZwp3ZXRwdXNzeWdhbWVzLmNvbQou\nd2V0cGxhY2UuY29tCndleGlhb2JvLm9yZwp8fHdleGlhb2JvLm9yZwp3ZXpoaXlv\nbmcub3JnCnx8d2V6b25lLm5ldAoud2ZvcnVtLmNvbQp8fHdmb3J1bS5jb20vCi53\naGF0YmxvY2tlZC5jb20KfHx3aGF0YmxvY2tlZC5jb20KLndoZWF0c2VlZHMub3Jn\nCnx8d2hlZWxvY2tzbGF0aW4uY29tCi53aGlwcGVkYXNzLmNvbQohLS18aHR0cDov\nL3doby5pcy8KLndob2VyLm5ldAp8fHdob2VyLm5ldAp3aG90YWxraW5nLmNvbQp3\naHlsb3Zlci5jb20KfHx3aHl4Lm9yZwp8aHR0cDovL3poLmVjZG0ud2lraWEuY29t\nCnxodHRwOi8vZXZjaGsud2lraWEuY29tCmZxLndpa2lhLmNvbQpjbi51bmN5Y2xv\ncGVkaWEud2lraWEuY29tCnpoLnVuY3ljbG9wZWRpYS53aWtpYS5jb20KfHx3aWtp\nbGVha3MuY2gKfHx3aWtpbGVha3MuY29tCnx8d2lraWxlYWtzLmRlCnx8d2lraWxl\nYWtzLmV1Cnx8d2lraWxlYWtzLmx1Ci53aWtpbGVha3Mub3JnCnx8d2lraWxlYWtz\nLm9yZwp8fHdpa2lsZWFrcy5wbAoud2lraWxlYWtzLWZvcnVtLmNvbQp3aWxkYW1t\nby5jb20KLndpbGxpYW1oaWxsLmNvbQp8fGNvbGxhdGVyYWxtdXJkZXIuY29tCnx8\nY29sbGF0ZXJhbG11cmRlci5vcmcKd2lraWxpdnJlcy5pbmZvL3dpa2kvJUU5JTlC\nJUI2JUU1JTg1JUFCJUU1JUFFJUFBJUU3JUFCJUEwCnx8d2lraW1hcGlhLm9yZwoK\nIS0tLS0tLS0tLS0tLS1XaWtpcGVkaWEgUmVsYXRlZC0tLS0tLS0tLS0tLS0KISFF\nbWVyZ2VuY3kgbmVlZCBvbmx5KElQL1BvcnQgYmxvY2sgdXNhZ2UpISEKIS0tLS0t\nLTAtLS0tLS0KIS0tfHxtZWRpYXdpa2kub3JnCiEtLUBAfHxtLm1lZGlhd2lraS5v\ncmcKIS0tLS0tLTEtLS0tLS0KIS0tfHx3aWtpZGF0YS5vcmcKIS0tQEB8fG0ud2lr\naWRhdGEub3JnCiEtLS0tLS0yLS0tLS0tCiEtLXx8d2lraW1lZGlhLm9yZwohLS1A\nQHx8bGlzdHMud2lraW1lZGlhLm9yZwohLS1AQHx8bS53aWtpbWVkaWEub3JnCiEt\nLUBAfHxwaGFicmljYXRvci53aWtpbWVkaWEub3JnCiEtLUBAfHx1cGxvYWQud2lr\naW1lZGlhLm9yZwohLS1AQHx8d2lraXRlY2gud2lraW1lZGlhLm9yZwohLS0tLS0t\nMy0tLS0tLQohLS18fHdpa2lib29rcy5vcmcKIS0tQEB8fG0ud2lraWJvb2tzLm9y\nZwohLS0tLS0tNC0tLS0tLQohLS18fHdpa2l2ZXJzaXR5Lm9yZwohLS1AQHx8bS53\naWtpdmVyc2l0eS5vcmcKIS0tLS0tLTUtLS0tLS0KIS0tfHx3aWtpc291cmNlLm9y\nZwohLS1AQHx8bS53aWtpc291cmNlLm9yZwp8aHR0cDovL3poLndpa2lzb3VyY2Uu\nb3JnCiEtLS0tLS02LS0tLS0tCiEtLXx8d2lraXF1b3RlLm9yZwohLS1AQHx8bS53\naWtpcXVvdGUub3JnCiEtLS0tLS03LS0tLS0tCiEtLXx8d2lraW5ld3Mub3JnCiEt\nLUBAfHxtLndpa2luZXdzLm9yZwp8fHpoLndpa2luZXdzLm9yZwohLS0tLS0tOC0t\nLS0tLQohLS18fHdpa2l2b3lhZ2Uub3JnCiEtLUBAfHxtLndpa2l2b3lhZ2Uub3Jn\nCiEtLXxodHRwOi8vemgud2lraXZveWFnZS5vcmcKIS0tLS0tLTktLS0tLS0KIS0t\nfHx3aWt0aW9uYXJ5Lm9yZwohLS1AQHx8bS53aWt0aW9uYXJ5Lm9yZwohLS18aHR0\ncDovL3poLndpa3Rpb25hcnkub3JnCiEtLS0tLTEwLS0tLS0tCiEtLXx8d2lraW1l\nZGlhZm91bmRhdGlvbi5vcmcKIS0tQEB8fG0ud2lraW1lZGlhZm91bmRhdGlvbi5v\ncmcKIS0tLS1NYWluLS0tLS0KIS0tfHx3aWtpcGVkaWEub3JnCnx8amEud2lraXBl\nZGlhLm9yZwp6aC53aWtpcGVkaWEub3JnCiEtLXx8emgud2lraXBlZGlhLm9yZwp6\naC5tLndpa2lwZWRpYS5vcmcKfGh0dHBzOi8vemgubS53aWtpcGVkaWEub3JnCiEt\nLUBAfHxtLndpa2lwZWRpYS5vcmcKfGh0dHBzOi8vemgud2lraXBlZGlhLm9yZwoh\nLS1PdGhlciBMYW5ndWFnZXMgb2YgV2lraXBlZGlhCnd1dS53aWtpcGVkaWEub3Jn\nCnxodHRwczovL3d1dS53aWtpcGVkaWEub3JnCnpoLXl1ZS53aWtpcGVkaWEub3Jn\nCnxodHRwczovL3poLXl1ZS53aWtpcGVkaWEub3JnCgp8fHdpa2l3aWtpLmpwCnx8\nY2FzaW5vLndpbGxpYW1oaWxsLmNvbQp8fHNwb3J0cy53aWxsaWFtaGlsbC5jb20K\nfHx2ZWdhcy53aWxsaWFtaGlsbC5jb20KfHx3aWxsdy5uZXQKfHx3aW5kb3dzcGhv\nbmVtZS5jb20KLndpbmRzY3JpYmUuY29tCnx8d2luZHNjcmliZS5jb20KfHxjb21t\ndW5pdHkud2luZHkuY29tCnx8d2luZ3kuc2l0ZQp3aW5uaW5nMTEuY29tCndpbndo\naXNwZXJzLmluZm8KfHx3aXJlZGJ5dGVzLmNvbQp8fHdpcmVkcGVuLmNvbQohLS18\nfHdpcmVzaGFyay5vcmcKLndpc2RvbXB1YnMub3JnCi53aXNldmlkLmNvbQp8fHdp\nc2V2aWQuY29tCi53aXRuZXNzbGVldGVhY2hpbmcuY29tCi53aXRvcGlhLm5ldAou\nd2piay5vcmcKfHx3amJrLm9yZwp8aHR0cDovL3duLmNvbQoud25hY2cuY29tCi53\nbmFjZy5vcmcKLndvLnRjCnx8d29lc2VyLmNvbQp8aHR0cDovL3dvZXNlcm1pZGRs\nZS13YXkubmV0Lwoud29rYXIub3JnCnxodHRwOi8vd29rYXIub3JnCndvbGZheC5j\nb20KfHx3b2xmYXguY29tCnx8d29vbHlzcy5jb20Kd29vcGllLmpwCnx8d29vcGll\nLmpwCndvb3BpZS50dgp8fHdvb3BpZS50dgp8fHdvcmthdHJ1bmEuY29tCi53b3Jr\nZXJkZW1vLm9yZy5oawp8fHdvcmtlcnN0aGViaWcubmV0Ci53b3JsZGNhdC5vcmcK\nd29ybGRqb3VybmFsLmNvbQoud29ybGR2cG4ubmV0Cnx8d29ybGR2cG4ubmV0Cgp8\nfHZpZGVvcHJlc3MuY29tCi53b3JkcHJlc3MuY29tCnxodHRwOi8vKi53b3JkcHJl\nc3MuY29tCnx8Y2hlbnNoYW4yMDA0MjAwNS53b3JkcHJlc3MuY29tCnx8Y2hpbmF2\naWV3LndvcmRwcmVzcy5jb20KfHxjbmJibmV3cy53b3JkcHJlc3MuY29tCnx8ZnJl\nZWRvbWluZm9uZXR3ZWIud29yZHByZXNzLmNvbQp8fGhrYTg5NjQud29yZHByZXNz\nLmNvbQp8fGhrYW5ld3Mud29yZHByZXNzLmNvbQp8fGhxc2JuZXQud29yZHByZXNz\nLmNvbQp8fGhxc2JvbmxpbmUud29yZHByZXNzLmNvbQp8fGludmVzdGlnYXRpbmcu\nd29yZHByZXNzLmNvbQp8fGpvYm5ld2VyYS53b3JkcHJlc3MuY29tCnx8bWluZ2h1\naXl3LndvcmRwcmVzcy5jb20KfHx3bzN0dHQud29yZHByZXNzLmNvbQp8fHN1amlh\ndHVuLndvcmRwcmVzcy5jb20KfHx4aWppZS53b3JkcHJlc3MuY29tCnx8d3AuY29t\nCgohLXx8d29ybXNjdWxwdG9yLmNvbQoud293LmNvbQoud293LWxpZmUubmV0Cnx8\nd293bGVnYWN5Lm1sCnx8d293cG9ybi5jb20KfHx3b3dnaXJscy5jb20KLndvd3Jr\nLmNvbQp3b3hpbmdodWlndW8uY29tCi53b3lhb2xpYW4ub3JnCnxodHRwOi8vd295\nYW9saWFuLm9yZwoud3BvZm9ydW0uY29tCnx8d3BvZm9ydW0uY29tCi53cXlkLm9y\nZwp8fHdxeWQub3JnCndyY2hpbmEub3JnCndyZXRjaC5jYwohLWNuLndzai5jb20v\nZ2IvMjAxMzAyMTUvdGVjMTEzODUzLmFzcAoud3NqLmNvbQp8fHdzai5jb20KLndz\nai5uZXQKfHx3c2oubmV0Ci53c2poay5jb20KLnd0Ym4ub3JnCi53dGZwZW9wbGUu\nY29tCnd1ZXJrYWl4aS5jb20KfHx3dWZhZmFuZ3dlbi5jb20Kd3VmaS5vcmcudHcK\nfHx3dWd1b2d1YW5nLmNvbQp3dWppZS5uZXQKd3VqaWVsaXVsYW4uY29tCnx8d3Vq\naWVsaXVsYW4uY29tCnd1a2FuZ3J1aS5uZXQKfHx3dXcucmVkCnx8d3V5YW5ibG9n\nLmNvbQoud3dpdHYuY29tCnx8d3dpdHYuY29tCnd6eWJveS5pbS9wb3N0LzE2MAoK\nIS0tLS0tLS0tLS0tLS0tLS0tLS0tWFgtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t\nCi54LWJlcnJ5LmNvbQp8fHgtYmVycnkuY29tCnx8eC1hcnQuY29tCnx8eC13YWxs\nLm9yZwp4MTk0OXguY29tCngzNjV4LmNvbQp4YW5nYS5jb20KfHx4YmFiZS5jb20K\nLnhib29rY24uY29tCnx8eGJvb2tjbi5jb20KfHx4Y2FmZS5pbgp8fHhjaXR5Lmpw\nCi54Y3JpdGljLmNvbQp8aHR0cDovL2NkbioueGRhLWRldmVsb3BlcnMuY29tCi54\nZXJvdGljYS5jb20KZGVzdGlueS54ZmlsZXMudG8vdWJidGhyZWFkcwoueGZtLnBw\nLnJ1Ci54Z215ZC5jb20KfHx4Z215ZC5jb20KeGhhbXN0ZXIuY29tCnx8eGhhbXN0\nZXIuY29tCi54aWFuYmEubmV0Ci54aWFuY2hhd2FuZy5uZXQKLnhpYW5qaWFuLnR3\nCnxodHRwOi8veGlhbmppYW4udHcKLnhpYW5xaWFvLm5ldAoueGlhb2JhaXd1LmNv\nbQoueGlhb2NodW5jbmpwLmNvbQoueGlhb2QuaW4KLnhpYW9oZXhpZS5jb20KfHx4\naWFvbGFuLm1lCnx8eGlhb21hLm9yZwp8fHhpYW9oZXhpZS5jb20KeGllemh1YS5j\nb20KLnhpaHVhLmVzCmZvcnVtLnhpbmJhby5kZS9mb3J1bQoueGluZy5jb20KfGh0\ndHA6Ly94aW5nLmNvbQoueGlubWlhby5jb20uaGsKfHx4aW5taWFvLmNvbS5oawp4\naW5zaGVuZy5uZXQKeGluc2hpanVlLmNvbQp4aW5odWFuZXQub3JnCnxodHRwOi8v\neGlueXViYnMubmV0Ci54aW9uZ3BpYW4uY29tCi54aXVyZW4ub3JnCnhpemFuZy16\naGl5ZS5vcmcKeGpwLmNjCnx8eGpwLmNjCnx8eGp0cmF2ZWxndWlkZS5jb20KeGxm\nbXRhbGsuY29tCnx8eGxmbXd6LmluZm8KfHx4bWwtdHJhaW5pbmctZ3VpZGUuY29t\nCnhtb3ZpZXMuY29tCnx8eG54eC5jb20KeHBkby5uZXQKfHx4cHVkLm9yZwoueHJl\nbnRkdmQuY29tCi54c2t5d2Fsa2VyLm5ldAp8fHh0dWJlLmNvbQpibG9nLnh1aXRl\nLm5ldAp2bG9nLnh1aXRlLm5ldAp4dXpoaXlvbmcubmV0Cnx8eHVjaGFvLm9yZwp4\ndWNoYW8ubmV0Cnx8eHVjaGFvLm5ldAp4dmlkZW8uY2MKLnh2aWRlb3MuY29tCnx8\neHZpZGVvcy5jb20KfHx4dmlkZW9zLmVzCi54a2l3aS50ay8KLnh4YmJ4LmNvbQou\neHhsbW92aWVzLmNvbQp8fHh4eC5jb20KLnh4eC54eHgKfGh0dHA6Ly94eHgueHh4\nCi54eHhmdWNrbW9tLmNvbQp8fHh4eHguY29tLmF1Ci54eHh5bW92aWVzLmNvbQp8\naHR0cDovL3h4eHltb3ZpZXMuY29tCnh5cy5vcmcKeHlzYmxvZ3Mub3JnCnh5eTY5\nLmNvbQp4eXk2OS5pbmZvCgohLS0tLS0tLS0tLS0tLS0tLS0tLS1ZWS0tLS0tLS0t\nLS0tLS0tLS0tLS0tLS0tLS0KfHx5YWtidXR0ZXJibHVlcy5jb20KeWFtLmNvbQp8\nfHlhbS5jb20KfHx5YW0ub3JnLnR3Ci55YW5naGVuZ2p1bi5jb20KeWFuZ2ppYW5s\naS5jb20KLnlhc25pLmNvLnVrCnx8eWFzbmkuY28udWsKIS0tfHx5YXN1a3VuaS5v\nci5qcAoueWF5YWJheS5jb20vZm9ydW0KLnlkeS5jb20KLnllYWh0ZWVudHViZS5j\nb20KfHx5ZWFodGVlbnR1YmUuY29tCnx8eWVjbC5uZXQKfHx5ZWVsb3UuY29tCnll\nZXlpLmNvbQp5ZWdsZS5uZXQKfHx5ZWdsZS5uZXQKLnllcy54eHgKfHx5ZXMxMjMu\nY29tLnR3Cnx8eWVzYXNpYS5jb20KfHx5ZXNhc2lhLmNvbS5oawoueWVzLW5ld3Mu\nY29tCnxodHRwOi8veWVzLW5ld3MuY29tCi55ZXNwb3JucGxlYXNlLmNvbQp8fHll\nc3Bvcm5wbGVhc2UuY29tCnxodHRwOi8veWV5ZWNsdWIuY29tCiEtLXlmcm9nLmNv\nbQp8fHloY3cubmV0Ci55aWJhZGEuY29tCi55aWJhb2NoaW5hLmNvbQoueWlkaW8u\nY29tCnx8eWlkaW8uY29tCnlpbHViYnMuY29tCnhhLnlpbWcuY29tCi55aW5nc3Vv\nc3MuY29tCi55aXB1Yi5jb20KfHx5aXB1Yi5jb20KeWlubGVpLm9yZy9tdAoueWl6\naGlob25neGluZy5jb20KLnlvYnQuY29tCi55b2J0LnR2Cnx8eW9idC50dgoueW9n\naWNoZW4ub3JnCnx8eW9naWNoZW4ub3JnCi55b2xhc2l0ZS5jb20KLnlvbWl1cmku\nY28uanAKeW9uZy5odQoueW9ya2Jicy5jYQp8fHlvdXh1LmluZm8KLnlvdWppenou\nY29tCnx8eW91aml6ei5jb20KLnlvdW1ha2VyLmNvbQp8fHlvdW1ha2VyLmNvbQou\neW91bmdwb3JudmlkZW9zLmNvbQp5b3VuZ3NwaXJhdGlvbi5oawoueW91cGFpLm9y\nZwp8fHlvdXBhaS5vcmcKLnlvdXItZnJlZWRvbS5uZXQKfHx5b3VyZXBlYXQuY29t\nCi55b3VycHJpdmF0ZXZwbi5jb20KfHx5b3VycHJpdmF0ZXZwbi5jb20KLnlvdXNl\nbmRpdC5jb20KfHx5b3VzZW5kaXQuY29tCi55b3V0aG5ldHJhZGlvLm9yZy90bWl0\nL2ZvcnVtCmJsb2cueW91dGh3YW50LmNvbS50dwptZS55b3V0aHdhbnQuY29tLnR3\nCnNoYXJlLnlvdXRod2FudC5jb20udHcKdG9waWMueW91dGh3YW50LmNvbS50dwou\neW91cG9ybi5jb20KfHx5b3Vwb3JuLmNvbQoueW91cG9ybmdheS5jb20KfHx5b3Vw\nb3JuZ2F5LmNvbQoueW91cmxpc3Rlbi5jb20KfGh0dHA6Ly95b3VybGlzdGVuLmNv\nbQoueW91cmx1c3QuY29tCnxodHRwOi8veW91cmx1c3QuY29tCnlvdXNodW4xMi5j\nb20KLnlvdXR1YmVjbi5jb20KeW91dmVyc2lvbi5jb20KfHx5b3V2ZXJzaW9uLmNv\nbQpibG9nLnlvdXh1LmluZm8vMjAxMC8wMy8xNC93ZXN0LWNoYW1iZXIKeXRodC5u\nZXQKeXVhbm1pbmcubmV0Ci55dWFuemhlbmd0YW5nLm9yZwoueXVsZ2h1bi5jb20K\nfHx5dW5jaGFvLm5ldAp8fHl1bnRpcHViLmNvbQoueXV2dXR1LmNvbQp8fHl2ZXNn\nZWxleW4uY29tCi55d3B3LmNvbS9mb3J1bXMvaGlzdG9yeS9wb3N0L0EwL3AwL2h0\nbWwvMjI3Cnl4NTEubmV0Ci55eWlpLm9yZwp8fHl5aWkub3JnCi55enprLmNvbQp8\naHR0cDovL3l6emsuY29tCgohLS0tLS0tLS0tLS0tLS0tLS0tLS1aWi0tLS0tLS0t\nLS0tLS0tLS0tLS0tLS0tLS0KemFjZWJvb2suY29tCi56YWxtb3MuY29tCnx8emFs\nbW9zLmNvbQp8fHphbm5lbC5jb20KLnphb2Jhby5jb20KfHx6YW9iYW8uY29tCnxo\ndHRwOi8vemFvYmFvLmNvbS5zZwp8fHphb2Jhby5jb20uc2cKLnphb3pvbi5jb20K\nfHx6ZG5ldC5jb20udHcKLnplbGxvLmNvbQp8fHplbGxvLmNvbQouemVuZ2ppbnlh\nbi5vcmcKLnplbm1hdGUuY29tCnx8emVubWF0ZS5jb20KfHx6ZW5tYXRlLmNvbS5y\ndQp8fHplcm9uZXQuaW8KfHx6ZXV0Y2guY29tCiEtLXd3dy56ZnJlZXQuY29tL3Bv\nc3QvdXNlanVtcC1icm93bnMuaHRtbAouemZyZWV0LmNvbQouemdzZGRoLmNvbQp6\nZ3pjamoubmV0Ci56aGFuYmluLm5ldAp8fHpoYW5iaW4ubmV0Ci56aGFuZ2JvbGku\nbmV0Cnx8emhhbmd0aWFubGlhbmcuY29tCnx8emhhbmx2ZS5vcmcKemhlbmdodWku\nb3JnCi56aGVuZ2ppYW4ub3JnCnx8emhlbmdqaWFuLm9yZwp6aGVuZ3d1bmV0Lm9y\nZwp6aGVubGlidS5pbmZvCnx8emhlbmxpYnUuaW5mbwouemhlbmxpYnUxOTg0LmNv\nbQp8fHpoZW5saWJ1MTk4NC5jb20KfGh0dHA6Ly96aGVueGlhbmcuYml6Ci56aGlu\nZW5nbHV5b3UuY29tCnpob25nZ3VvLmNhCnxodHRwOi8vemhvbmdndW9yZW5xdWFu\nLm9yZwp6aG9uZ2d1b3Rlc2UubmV0Cnx8emhvbmdndW90ZXNlLm5ldAp8fHpob25n\nbWVuZy5vcmcKLnpob3VzaHVndWFuZy5jb20KfHx6aHJlYWRlci5jb20KLnpodWFu\nZ2JpLm1lCnx8emh1YW5nYmkubWUKLnpodWFueGluZy5jbgp8fHpodWF0aWViYS5j\nb20Kemh1aWNoYWd1b2ppLm9yZwp8fHpodWljaGFndW9qaS5vcmcKfGh0dHA6Ly9i\nb29rLnppNS5tZQouemlkZHUuY29tL2Rvd25sb2FkCnx8emlsbGlvbmsuY29tCi56\naW5pby5jb20KfHx6aW5pby5jb20KLnppcG9ybi5jb20KLnppcHB5c2hhcmUuY29t\nCi56a2FpcC5jb20KfHx6a2FpcC5jb20KcmVhbGZvcnVtLnpraXouY29tCiEtLXx8\nemxpYi5uZXQKfHx6bXcuY24KLnpvZGdhbWUudXMKem9tb2JvLm5ldAouem9uYWV1\ncm9wYS5jb20KfHx6b25hZXVyb3BhLmNvbQp8fHpvbmdoZXhpbndlbi5jb20KLnpv\nbmdoZXhpbndlbi5uZXQKfHx6b29ndnBuLmNvbQp8fHpvb3Rvb2wuY29tCi56b296\nbGUubmV0CndyaXRlci56b2hvLmNvbQp8fHpvcnJvdnBuLmNvbQp8fHpwbi5pbQp8\nfHpzcGVlZGVyLm1lCi56c3JoYW8uY29tCi56dW8ubGEKfHx6dW8ubGEKfHx6dW9i\naWFvLm1lCi56dW9sYS5jb20KfHx6dW9sYS5jb20KfHx6dmVyZWZmLmNvbQouenlu\nYWltYS5jb20Kenl6YzkuY29tCi56emNhcnRvb24uY29tCiEjIyMjIyMjIyMjIyMj\nI0dlbmVyYWwgTGlzdCBFbmQjIyMjIyMjIyMjIyMjIyMjIwoKISMjIyMjIyMjIyMj\nU3VwcGxlbWVudGFsIExpc3QgU3RhcnQjIyMjIyMjIyMjIyMjCiEtLS0tLS0tLS0t\nLS0tLS0tLVVSTCBLZXl3b3Jkcy0tLS0tLS0tLS0tLS0tLS0tLQo2NG1lbW8KYUhS\nMGNITTZMeTk1WldOc0xtNWxkQQpmcmVlbmV0Ci5nb29nbGUuKi9mYWx1bgpwaG9i\nb3MuYXBwbGUuY29tKi92aWRlbwpxPWZyZWVkb20KcSUzRGZyZWVkb20KcmVtZW1i\nZXJpbmdfdGlhbmFubWVuXzIwX3llYXJzCnNlYXJjaCpzYWZld2ViCnE9dHJpYW5n\nbGUKcSUzRFRyaWFuZ2xlCnVsdHJhcmVhY2gKdWx0cmFzdXJmCiEjIyMjIyMjIyMj\nIyMjU3VwcGxlbWVudGFsIExpc3QgRW5kIyMjIyMjIyMjIyMjIwoKISMjIyMjIyMj\nIyMjIyMjIyNXaGl0ZWxpc3QgU3RhcnQjIyMjIyMjIyMjIyMjIyMjCkBAfHxhbGl5\ndW4uY29tCkBAfHxiYWlkdS5jb20KIS0tQEB8fGJpbmcuY29tCkBAfHxjaGluYXNv\nLmNvbQpAQHx8Y2hpbmF6LmNvbQpAQHxodHRwOi8vbnJjaC5jdWx0dXJlLnR3Lwoh\nLS1JU1AgY2FjaGUgd29ya3Mgc29tZXRpbWVzLCB2ZXJpZmllZCBhdCBkcnBlbmcg\nKyBnZWh1YS4KQEB8fGRsLmdvb2dsZS5jb20KQEB8fGtoLmdvb2dsZS5jb20KQEB8\nfGtobS5nb29nbGUuY29tCkBAfHxraG0wLmdvb2dsZS5jb20KQEB8fGtobTEuZ29v\nZ2xlLmNvbQpAQHx8a2htMi5nb29nbGUuY29tCkBAfHxraG0zLmdvb2dsZS5jb20K\nQEB8fGtobWRiLmdvb2dsZS5jb20KQEB8fHRvb2xzLmdvb2dsZS5jb20KQEB8fGNs\naWVudHNlcnZpY2VzLmdvb2dsZWFwaXMuY29tCkBAfHxmb250cy5nb29nbGVhcGlz\nLmNvbQpAQHx8a2htLmdvb2dsZWFwaXMuY29tCkBAfHxraG0wLmdvb2dsZWFwaXMu\nY29tCkBAfHxraG0xLmdvb2dsZWFwaXMuY29tCkBAfHxraG0yLmdvb2dsZWFwaXMu\nY29tCkBAfHxraG0zLmdvb2dsZWFwaXMuY29tCkBAfHxraG1kYi5nb29nbGVhcGlz\nLmNvbQpAQHx8c3RvcmFnZS5nb29nbGVhcGlzLmNvbQpAQHx8dHJhbnNsYXRlLmdv\nb2dsZWFwaXMuY29tCkBAfHx1cGRhdGUuZ29vZ2xlYXBpcy5jb20KQEB8fHNhZmVi\ncm93c2luZy5nb29nbGVhcGlzLmNvbQpAQHx8Y24uZ3JhdmF0YXIuY29tCkBAfHxj\nb25uZWN0aXZpdHljaGVjay5nc3RhdGljLmNvbQpAQHx8Y3NpLmdzdGF0aWMuY29t\nCkBAfHxmb250cy5nc3RhdGljLmNvbQpAQHx8c3NsLmdzdGF0aWMuY29tCkBAfHxo\nYW9zb3UuY29tCkBAfHxpcC5jbgpAQHx8amlrZS5jb20KQEB8aHR0cDovL3RyYW5z\nbGF0ZS5nb29nbGUuY24KQEB8aHR0cDovL3d3dy5nb29nbGUuY24vbWFwcwpAQHx8\naHR0cDIuZ29sYW5nLm9yZwpAQHx8Z292LmNuCkBAfHxxcS5jb20KQEB8fHNpbmEu\nY24KQEB8fHNpbmEuY29tLmNuCkBAfHxzb2dvdS5jb20KQEB8fHNvLmNvbQpAQHx8\nc29zby5jb20KQEB8fHVsdWFpLmNvbS5jbgpAQHx8d2VpYm8uY29tCkBAfHx5YWhv\nby5jbgpAQHx8eW91ZGFvLmNvbQpAQHx8emhvbmdzb3UuY29tCkBAfGh0dHA6Ly9p\nbWUuYmFpZHUuanAKISMjIyMjIyMjIyMjIyMjIyNXaGl0ZWxpc3QgRW5kIyMjIyMj\nIyMjIyMjIyMjIyMjCiEtLS0tLS0tLS0tLS0tLS0tLS0tLS1FT0YtLS0tLS0tLS0t\nLS0tLS0tLS0tLS0tLQo=\n"
  },
  {
    "path": "Trojan/File/user-rule.txt",
    "content": "! Put user rules line by line in this file.\n! See https://adblockplus.org/en/filter-cheatsheet\n"
  },
  {
    "path": "Trojan/File/whiteiplist.pac",
    "content": "var wall_proxy = \"SOCKS5 127.0.0.1:1080;\";\nvar nowall_proxy = \"DIRECT;\";\nvar direct = \"DIRECT;\";\nvar ip_proxy = \"DIRECT;\";\n\n/*\n * Copyright (C) 2014 breakwa11\n * https://github.com/breakwa11/gfw_whitelist\n */\n\nvar cnIpRange = [\n{},{0x10001:1,0x10002:1,0x10003:1,0x10008:4,0x1000c:4,0x10020:16,0x10030:16,0x10100:1,0x10102:1,0x10103:1,0x10104:4,0x10108:4,0x1010c:4,0x10110:16,0x10120:16,0x10130:16,0x10200:1,0x10201:1,0x10202:1,0x10204:1,0x10205:1,0x10206:1,0x10207:1,0x10208:1,0x10209:1,0x1020a:1,0x1020b:1,0x1020c:4,0x10210:16,0x10220:16,0x10230:16,0x10240:64,0x10300:256,0x10401:1,0x10402:1,0x10403:1,0x10404:1,0x10405:1,0x10406:1,0x10407:1,0x10408:4,0x1040c:4,0x10410:16,0x10420:16,0x10430:16,0x10440:64,0x10800:256,0x10a00:4,0x10a04:4,0x10a08:1,0x10a09:1,0x10a0b:1,0x10a0c:4,0x10a10:16,0x10a20:16,0x10a30:16,0x10a40:64,0x10c00:1024,0x11800:1024,0x11c00:1024,0x12d00:256,0x13000:256,0x13100:256,0x13200:256,0x13300:256,0x13800:1024,0x13c00:1024,0x14400:1024,0x15000:1024,0x15400:1024,0x15800:1024,0x15c00:256,0x15d00:256,0x15e00:256,0x15f00:256,0x17400:1024,0x1b400:1024,0x1b800:256,0x1b900:256,0x1bc00:1024,0x1c000:1024,0x1c400:1024,0x1ca00:256,0x1cb00:256,0x1cc00:1024},{},{},{},{},{},{},{},{},{},{},{},{},{0xe0000:4,0xe0004:4,0xe000c:4,0xe0100:4,0xe0118:4,0xe0160:4,0xe016c:4,0xe1000:1024,0xe1400:1024,0xe1800:1024,0xe1c00:1024,0xe6680:4,0xe669c:4,0xe66b4:4,0xe6700:256,0xe6800:1024,0xe6c00:1024,0xe7000:1024,0xe7400:1024,0xe7800:1024,0xe7c00:1024,0xe8200:256,0xe8300:256,0xe8600:256,0xe8700:256,0xe9000:1024,0xe9400:1024,0xe9800:1024,0xe9c00:1024,0xec004:4,0xec03c:4,0xec04c:4,0xec400:256,0xec500:256,0xecc00:256,0xecd00:256,0xed000:1024,0xed400:1024,0xed800:1024,0xedc00:1024},{},{},{},{},{},{},{},{},{},{},{},{},{0x1b0080:4,0x1b0084:4,0x1b00a0:4,0x1b00a4:4,0x1b00bc:4,0x1b00cc:4,0x1b00d0:4,0x1b00d4:4,0x1b0800:1024,0x1b0c00:1024,0x1b1000:1024,0x1b1400:1024,0x1b1800:1024,0x1b1c00:1024,0x1b22e8:4,0x1b22ec:4,0x1b2400:1024,0x1b2800:1024,0x1b2c00:1024,0x1b3228:4,0x1b322c:4,0x1b3280:64,0x1b32c0:64,0x1b3648:4,0x1b364c:4,0x1b3698:4,0x1b369c:4,0x1b36c0:64,0x1b62d0:16,0x1b62e0:16,0x1b62f0:16,0x1b6380:64,0x1b63c0:64,0x1b6700:256,0x1b6a80:64,0x1b6acc:4,0x1b6d20:16,0x1b6d30:16,0x1b6d7c:4,0x1b7000:64,0x1b7050:16,0x1b7070:4,0x1b7074:4,0x1b7180:64,0x1b7300:64,0x1b7340:64,0x1b742c:4,0x1b7948:4,0x1b794c:4,0x1b7978:4,0x1b797c:4,0x1b8000:256,0x1b8100:256,0x1b83dc:4,0x1b9000:256,0x1b9400:1024,0x1b9800:1024,0x1b9c00:1024,0x1bb800:1024,0x1bbc00:1024,0x1bc000:1024,0x1bc400:1024,0x1bc800:1024,0x1bcc00:1024,0x1bd000:1024,0x1bd400:1024,0x1bd800:1024,0x1bdc00:1024,0x1be000:1024},{},{},{},{},{},{},{},{},{0x240000:4,0x240008:4,0x24000c:4,0x240010:16,0x240020:16,0x240030:16,0x240040:64,0x240080:64,0x2400c0:64,0x240100:256,0x240400:1024,0x241000:1024,0x241400:1024,0x241800:1024,0x241c00:1024,0x242000:1024,0x242400:256,0x242500:16,0x242510:16,0x242524:1,0x242525:1,0x242527:1,0x242528:4,0x24252c:4,0x242530:16,0x242800:1024,0x242c00:1024,0x243000:256,0x243100:256,0x243300:256,0x243800:1024,0x243c00:1024,0x246000:1024,0x246400:1024,0x246800:1024,0x246c00:1024,0x247000:1024,0x247400:1024,0x247800:1024,0x247c00:1024,0x248000:1024,0x248400:1024,0x248800:1024,0x248c00:1024,0x249000:1024,0x249400:1024,0x249800:1024,0x249c00:1024,0x24a000:1024,0x24a400:1024,0x24a800:1024,0x24ac00:1024,0x24b000:1024,0x24b400:1024,0x24b800:1024,0x24bc00:1024,0x24c000:1024,0x24c400:1024,0x24c800:1024,0x24cc00:1024,0x24d000:1024,0x24d400:1024,0x24d800:1024,0x24dc00:1024,0x24f800:1024,0x24fe00:256,0x24ff74:4,0x24ff80:4,0x24ffa4:4,0x24ffac:4,0x24ffb0:4,0x24ffc0:4},{},{},{0x270000:1,0x270002:1,0x270003:1,0x270004:4,0x270008:4,0x27000c:4,0x270010:16,0x270020:16,0x270030:16,0x270040:64,0x270080:64,0x2700c0:64,0x274000:1024,0x274400:1024,0x274800:1024,0x274c00:1024,0x275000:1024,0x275400:1024,0x275800:1024,0x275c00:1024,0x276000:1024,0x276400:1024,0x276800:1024,0x276c00:256,0x278000:1024,0x278400:1024,0x278800:1024,0x278c00:1024,0x279000:1024,0x279400:1024,0x279800:1024,0x279c00:1024,0x27a000:1024,0x27a400:1024,0x27a800:1024,0x27ac00:1024,0x27b000:1024,0x27b400:1024,0x27b800:1024,0x27bc00:1024},{0x284800:256,0x284900:256,0x287d80:64,0x287dc0:64,0x287e40:64},{},{0x2a0000:4,0x2a0008:4,0x2a000c:4,0x2a0010:4,0x2a0014:4,0x2a0018:4,0x2a0020:16,0x2a0030:16,0x2a0080:64,0x2a00c0:64,0x2a0100:16,0x2a0110:16,0x2a0120:16,0x2a0130:4,0x2a0134:4,0x2a0138:4,0x2a0180:64,0x2a01c0:64,0x2a0400:1024,0x2a3000:256,0x2a3100:256,0x2a3200:256,0x2a3300:256,0x2a3400:1024,0x2a3800:1024,0x2a3e00:64,0x2a3e40:64,0x2a3e80:16,0x2a3e90:16,0x2a3ea0:16,0x2a3eb4:4,0x2a3eb8:4,0x2a3ebc:4,0x2a3f00:256,0x2a5000:256,0x2a5100:256,0x2a5340:16,0x2a5350:4,0x2a5358:4,0x2a535c:4,0x2a5360:16,0x2a5370:16,0x2a5380:64,0x2a53c0:64,0x2a5400:1024,0x2a5800:1024,0x2a5c00:1024,0x2a6040:16,0x2a6050:16,0x2a6060:4,0x2a6064:4,0x2a606c:4,0x2a6070:16,0x2a6080:64,0x2a60c0:64,0x2a6100:256,0x2a6300:64,0x2a6340:16,0x2a6350:16,0x2a6360:16,0x2a6370:4,0x2a6378:4,0x2a637c:4,0x2a6400:1024,0x2a7800:256,0x2a7900:256,0x2a7a00:256,0x2a7b00:16,0x2a7b10:16,0x2a7b24:4,0x2a7b28:4,0x2a7b2c:4,0x2a7b30:16,0x2a7b40:64,0x2a7b80:64,0x2a7bc0:64,0x2a8000:1024,0x2a8400:1024,0x2a8800:1024,0x2a8c00:1024,0x2a9c00:16,0x2a9c10:16,0x2a9c24:4,0x2a9c28:4,0x2a9c2c:4,0x2a9c30:16,0x2a9c40:64,0x2a9c80:64,0x2a9cc0:64,0x2a9d00:256,0x2a9e00:256,0x2a9f00:256,0x2aa000:1024,0x2aa400:1024,0x2aa800:1024,0x2aac00:1024,0x2ab000:1024,0x2ab400:1024,0x2ab800:256,0x2ab900:256,0x2aba00:256,0x2abb00:64,0x2abb40:16,0x2abb50:16,0x2abb60:16,0x2abb70:4,0x2abb74:4,0x2abb78:4,0x2abb80:64,0x2abbc0:64,0x2ac000:256,0x2ac100:256,0x2ac200:4,0x2ac204:4,0x2ac208:4,0x2ac20c:4,0x2ac210:16,0x2ac220:16,0x2ac230:16,0x2ac240:64,0x2ac280:64,0x2ac2c0:64,0x2ac300:256,0x2ac400:1024,0x2ac900:64,0x2ac940:64,0x2aca00:256,0x2acb00:256,0x2acc00:1024,0x2ad000:1024,0x2ad400:1024,0x2ad800:1024,0x2adc00:1024,0x2ae000:1024,0x2ae400:1024,0x2ae800:1024,0x2aec00:1024,0x2af000:64,0x2af040:64,0x2af080:64,0x2af0c0:64,0x2af200:256,0x2af300:256,0x2af400:1024,0x2af800:1024,0x2afc00:1024},{0x2be00c:4,0x2be018:4,0x2be02c:4,0x2be034:4,0x2be038:4,0x2be040:4,0x2be044:4,0x2be048:4,0x2be050:4,0x2be064:4,0x2be090:4,0x2be0a0:4,0x2be0b0:4,0x2be0b8:4,0x2be0c8:4,0x2be0cc:4,0x2be0d0:4,0x2be0d4:4,0x2be0d8:4,0x2be0e0:4,0x2be0f0:4,0x2be14c:4,0x2be154:4,0x2be178:4,0x2be17c:4,0x2be18c:4,0x2be1ac:4,0x2be1b4:4,0x2be1d0:4,0x2be1d8:4,0x2be1dc:4,0x2be1e0:4,0x2be1e4:4,0x2be1e8:4,0x2be1ec:4,0x2be1f0:4,0x2be1f4:4,0x2be1fc:4,0x2be220:4,0x2be224:4,0x2be228:4,0x2be22c:4,0x2be230:4,0x2be234:4,0x2be238:4,0x2be23c:4,0x2be240:4,0x2be244:4,0x2be248:4,0x2be24c:4,0x2be250:4,0x2be254:4,0x2be258:4,0x2be25c:4,0x2be260:4,0x2be264:4,0x2be268:4,0x2be26c:4,0x2be270:4,0x2be274:4,0x2be278:4,0x2be280:4,0x2be284:4,0x2be288:4,0x2be28c:4,0x2be290:4,0x2be294:4,0x2be298:4,0x2be29c:4,0x2be2a0:4,0x2be2a4:4,0x2be2a8:4,0x2be2ac:4,0x2be2b0:4,0x2be2b4:4,0x2be2b8:4,0x2be2bc:4,0x2be2c0:4,0x2be2c4:4,0x2be2c8:4,0x2be2cc:4,0x2be2d0:4,0x2be2d4:4,0x2be2ec:4,0x2be2f0:4,0x2be2f4:4,0x2be2f8:4,0x2be2fc:4,0x2be300:4,0x2be304:4,0x2be308:4,0x2be31c:4,0x2be320:4,0x2be324:4,0x2be328:4,0x2be32c:4,0x2be330:4,0x2be334:4,0x2be338:4,0x2be33c:4,0x2be340:4,0x2be344:4,0x2be348:4,0x2be34c:4,0x2be350:4,0x2be354:4,0x2be358:4,0x2be35c:4,0x2be360:4,0x2be364:4,0x2be368:4,0x2be388:4,0x2be38c:4,0x2be390:4,0x2be398:4,0x2be39c:4,0x2be3a0:4,0x2be3a4:4,0x2be3a8:4,0x2be3ac:4,0x2be3b0:4,0x2be3b4:4,0x2be3bc:4,0x2be3c0:4,0x2be3c4:4,0x2be3c8:4,0x2be3cc:4,0x2be3d0:4,0x2be3d4:4,0x2be3d8:4,0x2be3dc:4,0x2be3e8:4,0x2be3f8:4,0x2be3fc:4,0x2be400:4,0x2be404:4,0x2be408:4,0x2be40c:4,0x2be410:4,0x2be414:4,0x2be418:4,0x2be41c:4,0x2be420:4,0x2be424:4,0x2be428:4,0x2be42c:4,0x2be430:4,0x2be434:4,0x2be438:4,0x2be43c:4,0x2be440:4,0x2be444:4,0x2be44c:4,0x2be464:4,0x2be474:4,0x2be478:4,0x2be484:4,0x2be488:4,0x2be494:4,0x2be498:4,0x2be4b4:4,0x2be4bc:4,0x2be4cc:4,0x2be4f0:4,0x2be510:4,0x2be528:4,0x2be530:4,0x2be538:4,0x2be560:4,0x2be56c:4,0x2be578:4,0x2be588:4,0x2be58c:4,0x2be590:4,0x2be5a8:4,0x2be5ac:4,0x2be5b0:4,0x2be5b4:4,0x2be5b8:4,0x2be5bc:4,0x2be5c0:4,0x2be5c4:4,0x2be5d8:4,0x2be5dc:4,0x2be5e8:4,0x2be5ec:4,0x2be614:4,0x2be620:4,0x2be644:4,0x2be648:4,0x2be654:4,0x2be67c:4,0x2be688:4,0x2be6a8:4,0x2be6dc:4,0x2be6e0:4,0x2be6e4:4,0x2be6e8:4,0x2be6ec:4,0x2be6f0:4,0x2be6f4:4,0x2be6f8:4,0x2be6fc:4,0x2be720:4,0x2be724:4,0x2be728:4,0x2be72c:4,0x2be750:4,0x2be754:4,0x2be758:4,0x2be75c:4,0x2be760:4,0x2be764:4,0x2be768:4,0x2be76c:4,0x2be788:4,0x2be78c:4,0x2be790:4,0x2be794:4,0x2be798:4,0x2be79c:4,0x2be7a0:4,0x2be7a4:4,0x2be7a8:4,0x2be7ac:4,0x2be7b0:4,0x2be7b4:4,0x2bec00:4,0x2bec04:4,0x2bec08:4,0x2bec0c:4,0x2bec10:4,0x2bec14:4,0x2bec18:4,0x2bec1c:4,0x2bec20:4,0x2bec24:4,0x2bec28:4,0x2bec2c:4,0x2bec30:4,0x2bec34:4,0x2bec38:4,0x2bec3c:4,0x2bec40:4,0x2bec44:4,0x2bec48:4,0x2bec4c:4,0x2bec50:4,0x2bec54:4,0x2bec58:4,0x2bec5c:4,0x2bec60:4,0x2bec64:4,0x2bec68:4,0x2bec6c:4,0x2bec70:4,0x2bec74:4,0x2bec78:4,0x2bec7c:4,0x2bec80:4,0x2bec84:4,0x2bec88:4,0x2bec8c:4,0x2bec90:4,0x2bec94:4,0x2bec98:4,0x2bec9c:4,0x2beca0:4,0x2beca4:4,0x2beca8:4,0x2becac:4,0x2becb0:4,0x2becb4:4,0x2becb8:4,0x2becbc:4,0x2becc0:4,0x2becc4:4,0x2becc8:4,0x2beccc:4,0x2becd0:4,0x2becd4:4,0x2becd8:4,0x2becdc:4,0x2bece0:4,0x2bece4:4,0x2bece8:4,0x2becec:4,0x2becf0:4,0x2becf4:4,0x2becf8:4,0x2becfc:4,0x2bed00:4,0x2bed04:4,0x2bed08:4,0x2bed0c:4,0x2bed10:4,0x2bed14:4,0x2bed18:4,0x2bed1c:4,0x2bed20:4,0x2bed24:4,0x2bed28:4,0x2bed2c:4,0x2bed30:4,0x2bed34:4,0x2bed38:4,0x2bed3c:4,0x2bed40:4,0x2bed44:4,0x2bed48:4,0x2bed4c:4,0x2bed50:4,0x2bed54:4,0x2bed58:4,0x2bed5c:4,0x2bed60:4,0x2bed64:4,0x2bed68:4,0x2bed6c:4,0x2bed70:4,0x2bed74:4,0x2bed78:4,0x2bed7c:4,0x2bed80:4,0x2bed84:4,0x2bed88:4,0x2bed8c:4,0x2bed90:4,0x2bed94:4,0x2bed98:4,0x2bed9c:4,0x2beda0:4,0x2beda4:4,0x2beda8:4,0x2bedac:4,0x2bedb0:4,0x2bedb4:4,0x2bedb8:4,0x2bedbc:4,0x2bedc0:4,0x2bedc4:4,0x2bedc8:4,0x2bedcc:4,0x2bedd0:4,0x2bedd4:4,0x2bedd8:4,0x2beddc:4,0x2bede0:4,0x2bede4:4,0x2bede8:4,0x2bedec:4,0x2bedf0:4,0x2bedf4:4,0x2bedf8:4,0x2bedfc:4,0x2bee00:4,0x2bee04:4,0x2bee08:4,0x2bee0c:4,0x2bee10:4,0x2bee14:4,0x2bee18:4,0x2bee1c:4,0x2bee20:4,0x2bee24:4,0x2bee28:4,0x2bee2c:4,0x2bee30:4,0x2bee34:4,0x2bee38:4,0x2bee3c:4,0x2bee40:4,0x2bee44:4,0x2bee48:4,0x2bee4c:4,0x2bee50:4,0x2bee54:4,0x2bee58:4,0x2bee5c:4,0x2bee60:4,0x2bee64:4,0x2bee68:4,0x2bee6c:4,0x2bee70:4,0x2bee74:4,0x2bee78:4,0x2bee7c:4,0x2bee80:4,0x2bee84:4,0x2bee88:4,0x2bee8c:4,0x2bee90:4,0x2bee94:4,0x2bee98:4,0x2bee9c:4,0x2beea0:4,0x2beea4:4,0x2beea8:4,0x2beeac:4,0x2beeb0:4,0x2beeb4:4,0x2beeb8:4,0x2beebc:4,0x2beec0:4,0x2beec4:4,0x2beec8:4,0x2beecc:4,0x2beed0:4,0x2beed4:4,0x2beed8:4,0x2beedc:4,0x2beee0:4,0x2beee4:4,0x2beee8:4,0x2beeec:4,0x2beef0:4,0x2beef4:4,0x2beef8:4,0x2beefc:4,0x2bef00:4,0x2bef04:4,0x2bef08:4,0x2bef0c:4,0x2bef10:4,0x2bef14:4,0x2bef18:4,0x2bef1c:4,0x2bef20:4,0x2bef24:4,0x2bef28:4,0x2bef2c:4,0x2bef30:4,0x2bef74:4,0x2bef78:4,0x2befac:4,0x2befb0:4,0x2bf000:4,0x2bf030:4,0x2bf038:4,0x2bf03c:4,0x2bf044:4,0x2bf048:4,0x2bf04c:4,0x2bf054:4,0x2bf07c:4,0x2bf080:4,0x2bf084:4,0x2bf088:4,0x2bf09c:4,0x2bf0a0:4,0x2bf0a4:4,0x2bf0a8:4,0x2bf0ac:4,0x2bf0b0:4,0x2bf0b4:4,0x2bf0b8:4,0x2bf0bc:4,0x2bf0c0:4,0x2bf0c4:4,0x2bf0c8:4,0x2bf0cc:4,0x2bf0d0:4,0x2bf0d4:4,0x2bf0d8:4,0x2bf0dc:4,0x2bf0ec:4,0x2bf0f0:4,0x2bf0f4:4,0x2bf0f8:4,0x2bf0fc:4,0x2bf100:4,0x2bf104:4,0x2bf108:4,0x2bf10c:4,0x2bf110:4,0x2bf114:4,0x2bf130:4,0x2bf14c:4,0x2bf150:4,0x2bf154:4,0x2bf158:4,0x2bf15c:4,0x2bf170:4,0x2bf1a8:4,0x2bf1ac:4,0x2bf1b0:4,0x2bf1b4:4,0x2bf1b8:4,0x2bf1c4:4,0x2bf1d0:4,0x2bf1d4:4,0x2bf1d8:4,0x2bf1dc:4,0x2bf1e0:4,0x2bf1e4:4,0x2bf1e8:4,0x2bf1ec:4,0x2bf1f0:4,0x2bf1f8:4,0x2bf1fc:4,0x2bf208:4,0x2bf20c:4,0x2bf210:4,0x2bf214:4,0x2bf218:4,0x2bf21c:4,0x2bf22c:4,0x2bf230:4,0x2bf234:4,0x2bf238:4,0x2bf23c:4,0x2bf240:4,0x2bf248:4,0x2bf24c:4,0x2bf250:4,0x2bf254:4,0x2bf258:4,0x2bf25c:4,0x2bf260:4,0x2bf290:4,0x2bf294:4,0x2bf298:4,0x2bf29c:4,0x2bf2a0:4,0x2bf2a4:4,0x2bf2a8:4,0x2bf2b4:4,0x2bf2bc:4,0x2bf2c0:4,0x2bf2c4:4,0x2bf2cc:4,0x2bf2d8:4,0x2bf2dc:4,0x2bf2fc:4,0x2bf304:4,0x2bf308:4,0x2bf30c:4,0x2bf310:4,0x2bf318:4,0x2bf358:4,0x2bf380:4,0x2bf388:4,0x2bf390:4,0x2bf394:4,0x2bf39c:4,0x2bf3a8:4,0x2bf3b4:4,0x2bf3bc:4,0x2bf3e4:4,0x2bf3e8:4,0x2bf3f4:4,0x2bf600:4,0x2bf604:4,0x2bf608:4,0x2bf60c:4,0x2bf610:4,0x2bf614:4,0x2bf618:4,0x2bf61c:4,0x2bf620:4,0x2bf624:4,0x2bf628:4,0x2bf62c:4,0x2bf630:4,0x2bf634:4,0x2bf638:4,0x2bf63c:4,0x2bf640:4,0x2bf644:4,0x2bf648:4,0x2bf64c:4,0x2bf650:4,0x2bf654:4,0x2bf658:4,0x2bf65c:4,0x2bf660:4,0x2bf6d4:4,0x2bf6e4:4,0x2bf704:4,0x2bf708:4,0x2bf72c:4,0x2bf730:4,0x2bf744:4,0x2bf74c:4,0x2bf754:4,0x2bf758:4,0x2bf75c:4,0x2bf760:4,0x2bf764:4,0x2bf76c:4,0x2bf770:4,0x2bf794:4,0x2bf798:4,0x2bf7b0:4,0x2bf7b4:4,0x2bf7b8:4,0x2bf7bc:4,0x2bf7c4:4,0x2bf7c8:4,0x2bf7cc:4,0x2bf7d0:4,0x2bf7d4:4,0x2bf7d8:4,0x2bf7dc:4,0x2bf7e0:4,0x2bf7e4:4,0x2bf7e8:4,0x2bf7ec:4,0x2bf7f0:4,0x2bf7f4:4,0x2bf7f8:4,0x2bf7fc:4,0x2bf800:4,0x2bf804:4,0x2bf814:4,0x2bf81c:4,0x2bf830:4,0x2bf84c:4,0x2bf850:4,0x2bf854:4,0x2bf858:4,0x2bf85c:4,0x2bf860:4,0x2bf864:4,0x2bf868:4,0x2bf86c:4,0x2bf870:4,0x2bf874:4,0x2bf878:4,0x2bf87c:4,0x2bf880:4,0x2bf884:4,0x2bf888:4,0x2bf88c:4,0x2bf890:4,0x2bf894:4,0x2bf8b0:4,0x2bf8b4:4,0x2bf8b8:4,0x2bf8bc:4,0x2bf8c0:4,0x2bf8c4:4,0x2bf8c8:4,0x2bf8cc:4,0x2bf8d0:4,0x2bf8e4:4,0x2bf8e8:4,0x2bf8f4:4,0x2bf900:4,0x2bf904:4,0x2bf908:4,0x2bf918:4,0x2bf978:4,0x2bf984:4,0x2bf988:4,0x2bf990:4,0x2bf994:4,0x2bf998:4,0x2bf99c:4,0x2bf9a0:4,0x2bf9a4:4,0x2bf9a8:4,0x2bf9c0:4,0x2bf9ec:4,0x2bfa04:4,0x2bfa0c:4,0x2bfa10:4,0x2bfa14:4,0x2bfa1c:4,0x2bfa20:4,0x2bfa24:4,0x2bfa48:4,0x2bfa60:4,0x2bfa64:4,0x2bfa68:4,0x2bfa6c:4,0x2bfa70:4,0x2bfa74:4,0x2bfa80:4,0x2bfa90:4,0x2bfa94:4,0x2bfaa0:4,0x2bfaa8:4,0x2bfaac:4,0x2bfab0:4,0x2bfac8:4,0x2bfad4:4,0x2bfad8:4,0x2bfadc:4,0x2bfaec:4,0x2bfaf4:4,0x2bfb04:4,0x2bfb08:4,0x2bfb0c:4,0x2bfb24:4,0x2bfb74:4,0x2bfbc0:4,0x2bfbe8:4,0x2bfbec:4,0x2bfbf4:4,0x2bfc28:4,0x2bfc30:4,0x2bfc38:4,0x2bfce0:4,0x2bfe00:4,0x2bfe04:4,0x2bfe08:4,0x2bfe18:4,0x2bfe24:4,0x2bfe2c:4,0x2bfe34:4,0x2bfe40:4,0x2bfe48:4,0x2bfe54:4,0x2bfe58:4,0x2bfe5c:4,0x2bfe64:4,0x2bfe68:4,0x2bfe70:4,0x2bfe74:4,0x2bfe80:4,0x2bfe88:4,0x2bfe8c:4,0x2bfe90:4,0x2bfe94:4,0x2bfe98:4,0x2bfe9c:4,0x2bfea8:4,0x2bfeac:4,0x2bfeb4:4,0x2bfeb8:4,0x2bfebc:4,0x2bfec0:4,0x2bfec4:4,0x2bfec8:4,0x2bfed0:4,0x2bfedc:4,0x2bfee0:4,0x2bfee4:4,0x2bfee8:4,0x2bfeec:4,0x2bfef0:4,0x2bfef8:4,0x2bfefc:4,0x2bff00:4,0x2bff04:4,0x2bff08:4,0x2bff10:4,0x2bff30:4,0x2bff3c:4,0x2bff40:4,0x2bff44:4,0x2bff48:4,0x2bff4c:4,0x2bff54:4,0x2bff60:4,0x2bff6c:4,0x2bff90:4,0x2bffa8:4,0x2bffb0:4,0x2bffb8:4,0x2bffc0:4,0x2bffc8:4,0x2bffcc:4,0x2bffd0:4,0x2bffd4:4,0x2bffe0:4,0x2bffe4:4,0x2bffe8:4,0x2bfff4:4},{},{0x2d4110:4,0x2d4114:4,0x2d4118:4,0x2d411c:4,0x2d7084:4,0x2d70bc:4,0x2d70d0:4,0x2d70d4:4,0x2d70d8:4,0x2d70dc:4,0x2d70e4:4,0x2d70e8:4,0x2d70ec:4,0x2d710c:4,0x2d7110:4,0x2d7114:4,0x2d7118:4,0x2d711c:4,0x2d7128:4,0x2d7134:4,0x2d7138:4,0x2d7148:4,0x2d716c:4,0x2d7190:4,0x2d7194:4,0x2d71a8:4,0x2d71b0:4,0x2d71b8:4,0x2d71c8:4,0x2d71cc:4,0x2d71d0:4,0x2d71d4:4,0x2d71d8:4,0x2d71dc:4,0x2d71e4:4,0x2d71f0:4,0x2d71fc:4,0x2d7200:4,0x2d720c:4,0x2d7220:4,0x2d7228:4,0x2d7234:4,0x2d7260:4,0x2d7268:4,0x2d7288:4,0x2d72c4:4,0x2d72c8:4,0x2d72e4:4,0x2d72ec:4,0x2d72fc:4,0x2d732c:4,0x2d7364:4,0x2d7378:4,0x2d7384:4,0x2d7390:4,0x2d739c:4,0x2d73a4:4,0x2d73c8:4,0x2d73d4:4,0x2d73d8:4,0x2d73e4:4,0x2d73ec:4,0x2d73f4:4,0x2d73f8:4,0x2d740c:4,0x2d7410:4,0x2d7414:4,0x2d7418:4,0x2d7420:4,0x2d7424:4,0x2d7434:4,0x2d743c:4,0x2d7440:4,0x2d7460:4,0x2d7464:4,0x2d748c:4,0x2d7498:4,0x2d74d0:4,0x2d7508:4,0x2d7514:4,0x2d7528:4,0x2d7544:4,0x2d757c:4,0x2d75fc:4,0x2d7734:4,0x2d773c:4,0x2d7740:4,0x2d7744:4,0x2d7748:4,0x2d7768:4,0x2d7774:4,0x2d77a0:4,0x2d77e8:4,0x2d7864:4,0x2d788c:4,0x2d789c:4,0x2d78a4:4,0x2d78dc:4,0x2d78f0:4,0x2d7914:4,0x2d7934:4,0x2d7940:4,0x2d7944:4,0x2d7948:4,0x2d795c:4,0x2d7960:4,0x2d7968:4,0x2d79ac:4,0x2d79b0:4,0x2d79d4:4,0x2d79f0:4,0x2d79f4:4,0x2d79f8:4,0x2d79fc:4,0x2d7a00:4,0x2d7a04:4,0x2d7a08:4,0x2d7a0c:4,0x2d7a10:4,0x2d7a14:4,0x2d7a18:4,0x2d7a1c:4,0x2d7a20:4,0x2d7a24:4,0x2d7a28:4,0x2d7a3c:4,0x2d7a40:4,0x2d7a44:4,0x2d7a48:4,0x2d7a4c:4,0x2d7a50:4,0x2d7a54:4,0x2d7a58:4,0x2d7a5c:4,0x2d7a60:4,0x2d7a64:4,0x2d7a68:4,0x2d7a6c:4,0x2d7a70:4,0x2d7a74:4,0x2d7aa0:4,0x2d7aa4:4,0x2d7aa8:4,0x2d7aac:4,0x2d7ab0:4,0x2d7ab4:4,0x2d7ab8:4,0x2d7abc:4,0x2d7ac0:4,0x2d7ac4:4,0x2d7ac8:4,0x2d7acc:4,0x2d7ad0:4,0x2d7ad4:4,0x2d7ad8:4,0x2d7b1c:4,0x2d7b20:4,0x2d7b24:4,0x2d7b2c:4,0x2d7b30:4,0x2d7b34:4,0x2d7b38:4,0x2d7b3c:4,0x2d7b40:4,0x2d7b44:4,0x2d7b48:4,0x2d7b4c:4,0x2d7b50:4,0x2d7b54:4,0x2d7b58:4,0x2d7b78:4,0x2d7b80:4,0x2d7b84:4,0x2d7b88:4,0x2d7b94:4,0x2d7b98:4,0x2d7b9c:4,0x2d7ba4:4,0x2d7ba8:4,0x2d7bac:4,0x2d7bb0:4,0x2d7bb4:4,0x2d7bb8:4,0x2d7bcc:4,0x2d7bd4:4,0x2d7be0:4,0x2d7be4:4,0x2d7be8:4,0x2d7bec:4,0x2d7bf0:4,0x2d7bf4:4,0x2d7bf8:4,0x2d7bfc:4,0x2d7c00:4,0x2d7c14:4,0x2d7c1c:4,0x2d7c20:4,0x2d7c24:4,0x2d7c2c:4,0x2d7c44:4,0x2d7c4c:4,0x2d7c50:4,0x2d7c64:4,0x2d7c7c:4,0x2d7cac:4,0x2d7cb0:4,0x2d7cd0:4,0x2d7cf8:4,0x2d7cfc:4,0x2d7d0c:4,0x2d7d10:4,0x2d7d18:4,0x2d7d1c:4,0x2d7d20:4,0x2d7d2c:4,0x2d7d34:4,0x2d7d38:4,0x2d7d4c:4,0x2d7d50:4,0x2d7d54:4,0x2d7d58:4,0x2d7d5c:4,0x2d7d60:4,0x2d7d64:4,0x2d7d68:4,0x2d7d88:4,0x2d7e30:4,0x2d7e34:4,0x2d7e64:4,0x2d7e6c:4,0x2d7e70:4,0x2d7e74:4,0x2d7e78:4,0x2d7ed4:4,0x2d7edc:4,0x2d7f08:4,0x2d7f0c:4,0x2d7f24:4,0x2d7f60:4,0x2d7f74:4,0x2d7f7c:4,0x2d7f80:4,0x2d7f90:4,0x2d7f94:4,0x2d7f9c:4,0x2d7fd8:4},{},{0x2f5c00:1024,0x2f6000:1024,0x2f6400:1024,0x2f6800:1024,0x2f6c00:1024,0x2f7000:1024,0x2f7400:1024,0x2f7800:1024,0x2f7c00:1024},{},{0x310400:1024,0x313300:256,0x313400:1024,0x314000:1024,0x314400:1024,0x314800:1024,0x314c00:1024,0x315000:1024,0x315400:1024,0x315800:1024,0x315c00:1024,0x317000:1024,0x317400:1024,0x317800:1024,0x318000:1,0x318002:1,0x318003:1,0x318004:4,0x318c00:256,0x318d00:256,0x319800:1024,0x31d000:256,0x31d100:256,0x31d200:256,0x31d300:256,0x31dc00:1024,0x31e800:1024,0x31ef00:64,0x31efc0:64,0x31f6e0:16,0x31f6f0:16},{},{},{0x345000:1024},{},{0x36de00:256,0x36df00:256},{},{},{},{0x3a0e00:256,0x3a0f00:256,0x3a1000:256,0x3a1100:64,0x3a1140:64,0x3a1180:64,0x3a11c0:64,0x3a1200:256,0x3a1300:256,0x3a1400:256,0x3a1500:256,0x3a1600:256,0x3a1700:256,0x3a1800:256,0x3a1900:256,0x3a1e00:256,0x3a1f00:256,0x3a2000:1024,0x3a2400:1024,0x3a2800:256,0x3a2900:256,0x3a2a00:256,0x3a2b00:256,0x3a2c00:1024,0x3a3000:1024,0x3a3400:1024,0x3a3800:256,0x3a3900:256,0x3a3a00:256,0x3a3b00:64,0x3a3b40:64,0x3a3b80:64,0x3a3bc0:64,0x3a3c00:1024,0x3a41e8:4,0x3a41ec:4,0x3a4200:256,0x3a4300:256,0x3a4480:64,0x3a44c0:64,0x3a5200:64,0x3a5240:64,0x3a5300:64,0x3a5340:64,0x3a5380:64,0x3a53c0:64,0x3a5740:64,0x3a6380:64,0x3a63c0:64,0x3a6400:256,0x3a6500:256,0x3a7400:1024,0x3a8000:1024,0x3a8400:1024,0x3a9000:256,0x3a9a00:256,0x3a9b00:256,0x3ac000:256,0x3ac100:256,0x3ac200:256,0x3ac300:256,0x3ac400:256,0x3ac500:256,0x3ac600:256,0x3ac700:256,0x3ac800:1024,0x3acc00:1024,0x3ad000:1024,0x3ad400:1024,0x3ad800:1024,0x3adc00:1024,0x3af000:256,0x3af100:256,0x3af200:256,0x3af300:256,0x3af400:256,0x3af500:256,0x3af600:256,0x3af700:256,0x3af800:1024,0x3afc00:1024},{0x3b2000:1024,0x3b2400:1024,0x3b2800:256,0x3b2900:256,0x3b2a00:256,0x3b2b00:256,0x3b2c00:1024,0x3b3000:256,0x3b3100:64,0x3b3140:64,0x3b3180:64,0x3b31c0:64,0x3b3200:256,0x3b3300:64,0x3b3340:64,0x3b3380:64,0x3b33c0:64,0x3b3400:1024,0x3b3800:1024,0x3b3c00:256,0x3b3d00:256,0x3b3e00:256,0x3b3f00:256,0x3b4000:1024,0x3b4400:1024,0x3b4800:256,0x3b4900:256,0x3b4a00:256,0x3b4b00:256,0x3b4c00:256,0x3b4d00:256,0x3b4e00:256,0x3b4f00:256,0x3b5000:256,0x3b5100:256,0x3b5200:256,0x3b5300:256,0x3b6b00:64,0x3b6b40:64,0x3b6b80:64,0x3b6bc0:64,0x3b6c00:256,0x3b6d00:256,0x3b6e00:256,0x3b6f00:256,0x3b9700:64,0x3b9740:64,0x3b9810:4,0x3b9814:4,0x3b9818:4,0x3b981c:4,0x3b9820:4,0x3b9824:4,0x3b9840:4,0x3b9844:4,0x3b9848:4,0x3b984c:4,0x3b9870:4,0x3b9874:4,0x3b9904:4,0x3b9920:4,0x3b993c:4,0x3b9940:4,0x3b9944:4,0x3b9948:4,0x3b995c:4,0x3b9974:4,0x3b9988:4,0x3b9998:4,0x3b999c:4,0x3b99a4:4,0x3b99a8:4,0x3b99ac:4,0x3b99b0:4,0x3b99b4:4,0x3b99b8:4,0x3b99bc:4,0x3b99c0:4,0x3b9b00:256,0x3bac00:256,0x3bad00:256,0x3bae00:256,0x3baf00:256,0x3bbf00:64,0x3bbf40:64,0x3bbff0:16,0x3bc000:1024,0x3bc400:1024,0x3bc800:1024,0x3bcc00:1024,0x3bd000:1024,0x3bd400:1024,0x3bd800:1024,0x3bdc00:1024,0x3be000:1024,0x3be400:1024,0x3be800:1024,0x3bec00:1024,0x3bf000:1024,0x3bf400:1024,0x3bf800:1024,0x3bfc00:1024},{0x3c0000:1024,0x3c0400:1024,0x3c0800:256,0x3c0900:256,0x3c0a00:256,0x3c0b00:256,0x3c0c00:256,0x3c0d00:64,0x3c0d40:64,0x3c0d80:64,0x3c0dc0:64,0x3c0e00:256,0x3c0f00:256,0x3c1000:1024,0x3c1400:1024,0x3c1800:1024,0x3c1c00:256,0x3c1d00:256,0x3c1e00:256,0x3c1f00:256,0x3c3700:256,0x3c3f00:256,0x3ca000:256,0x3ca100:256,0x3ca200:256,0x3ca300:256,0x3ca400:256,0x3ca500:256,0x3ca600:256,0x3ca700:256,0x3ca800:1024,0x3cac00:1024,0x3cb000:1024,0x3cb400:1024,0x3cb800:1024,0x3cbc00:1024,0x3cc200:256,0x3cc300:256,0x3cc800:1024,0x3ccc00:256,0x3ccd00:256,0x3cce00:256,0x3ccf00:256,0x3cd000:1024,0x3cd400:1024,0x3cd800:256,0x3cd900:256,0x3cda00:256,0x3cdb00:256,0x3cdc00:1024,0x3ce800:256,0x3ce900:256,0x3ceb00:256,0x3cf580:64,0x3cf5c0:64,0x3cf700:256,0x3cfc00:256,0x3cfd80:64,0x3cfdc0:64,0x3cff00:256},{0x3d0450:4,0x3d0454:4,0x3d0458:4,0x3d045c:4,0x3d04b0:16,0x3d08a0:16,0x3d0ed4:4,0x3d0ed8:4,0x3d0edc:4,0x3d0ef0:4,0x3d0ef4:4,0x3d1c00:16,0x3d1c10:16,0x3d1c20:16,0x3d1c30:16,0x3d1c40:64,0x3d1d80:64,0x3d1dc0:16,0x3d1dd0:16,0x3d1de0:16,0x3d1df0:16,0x3d2d80:64,0x3d2de0:16,0x3d2f80:64,0x3d3000:1024,0x3d3400:256,0x3d3500:256,0x3d3600:256,0x3d3700:256,0x3d57c0:64,0x3d8000:256,0x3d8100:256,0x3d8200:256,0x3d8300:256,0x3d8400:256,0x3d8500:64,0x3d8540:64,0x3d8580:64,0x3d85c0:64,0x3d8600:64,0x3d8640:16,0x3d8650:16,0x3d8660:16,0x3d8670:16,0x3d8680:64,0x3d86c0:64,0x3d8700:256,0x3d8800:64,0x3d8840:64,0x3d8880:64,0x3d88c0:64,0x3d8900:64,0x3d8940:64,0x3d8980:64,0x3d89c0:64,0x3d8a00:64,0x3d8a40:64,0x3d8a80:64,0x3d8ac0:64,0x3d8b00:64,0x3d8b40:64,0x3d8b80:64,0x3d8bc0:64,0x3d8c00:1024,0x3d9000:1024,0x3d9400:256,0x3d9500:256,0x3d9600:256,0x3d9700:256,0x3d9800:256,0x3d9900:256,0x3d9a00:256,0x3d9b00:256,0x3d9c00:256,0x3d9d00:256,0x3d9e00:64,0x3d9e40:64,0x3d9e80:64,0x3d9ec0:64,0x3d9f00:64,0x3d9f40:64,0x3d9f80:64,0x3d9fc0:64,0x3da000:256,0x3da100:64,0x3da140:64,0x3da180:64,0x3da1c0:64,0x3da200:256,0x3da300:256,0x3da400:256,0x3da500:256,0x3da600:256,0x3da700:256,0x3da800:256,0x3da900:256,0x3daa00:256,0x3dab00:256,0x3dac00:1024,0x3db000:256,0x3db100:256,0x3db200:256,0x3db300:256,0x3db400:64,0x3db440:64,0x3db480:64,0x3db4c0:64,0x3db500:256,0x3db600:256,0x3db700:256,0x3db800:1024,0x3dbc00:256,0x3dbd00:64,0x3dbd40:64,0x3dbd80:64,0x3dbdc0:64,0x3dbe00:256,0x3dbf00:256,0x3de800:1024,0x3dec00:256,0x3ded00:256,0x3df000:1024},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{0x650000:4,0x650100:4,0x6502ac:4,0x650400:1024,0x651000:1024,0x651400:1024,0x651800:1024,0x651c00:1024,0x652000:1024,0x652400:256,0x652500:256,0x652600:256,0x652700:256,0x652800:1024,0x652c00:1024,0x653000:256,0x653100:256,0x653208:4,0x65320c:4,0x653238:4,0x653400:256,0x653564:4,0x653600:256,0x6537e0:4,0x6537e4:4,0x654000:1024,0x654400:1024,0x654800:1024,0x654c00:256,0x654d00:256,0x654e00:4,0x654e20:16,0x654e30:16,0x655000:1024,0x655400:1024,0x655800:1024,0x655c00:1024,0x656000:4,0x656004:4,0x656008:4,0x656010:16,0x656080:64,0x6560c0:64,0x656360:16,0x656370:16,0x656540:16,0x656550:16,0x656564:1,0x656566:1,0x656567:1,0x656568:4,0x65656c:4,0x656570:16,0x656640:16,0x656650:16,0x656664:1,0x656665:1,0x656666:1,0x656668:4,0x65666c:4,0x656670:16,0x656800:1024,0x656e40:16,0x656e50:16,0x656e60:16,0x656e74:4,0x656e78:4,0x656e7c:4,0x657800:1024,0x657c00:256,0x657d00:256,0x657e00:256,0x658000:4,0x658008:4,0x65800c:4,0x658010:16,0x658020:16,0x658030:16,0x658100:256,0x658200:256,0x658300:256,0x658400:1024,0x659000:1024,0x659400:1024,0x659800:1024,0x659c00:1024,0x65c000:1024,0x65c400:1024,0x65c800:256,0x65c900:256,0x65cb80:16,0x65cb90:16,0x65cba0:4,0x65cba4:4,0x65cbac:4,0x65cbb0:16,0x65cc00:1024,0x65e000:1024,0x65e400:1024,0x65e800:256,0x65e900:256,0x65ea40:4,0x65ea44:4,0x65ea4c:4,0x65ea50:16,0x65ea60:16,0x65ea70:16,0x65ec00:1024,0x65f000:1024,0x65f400:1024,0x65f800:256,0x65f900:256,0x65fb00:4,0x65fb08:4,0x65fb0c:4,0x65fb10:16,0x65fb20:16,0x65fb30:16,0x65fb40:64,0x65fb80:64,0x65fbc0:64,0x65fc00:256,0x65fd00:256,0x65fe00:256},{},{0x670108:4,0x670114:4,0x670118:4,0x670148:4,0x670158:4,0x6701a8:4,0x67026c:4,0x67029c:4,0x6702a4:4,0x6702c8:4,0x6702cc:4,0x6702d0:4,0x6702d4:4,0x670354:4,0x670358:4,0x67035c:4,0x670360:4,0x670364:4,0x670368:4,0x67036c:4,0x670370:4,0x670374:4,0x670378:4,0x67037c:4,0x670380:4,0x670384:4,0x670388:4,0x67038c:4,0x670394:4,0x670398:4,0x67039c:4,0x670438:4,0x6704a8:4,0x6704b8:4,0x6704e0:4,0x670524:4,0x670534:4,0x670538:4,0x670598:4,0x6705a8:4,0x6705c0:4,0x6705fc:4,0x67064c:4,0x67066c:4,0x6706dc:4,0x6706e4:4,0x670704:4,0x67071c:4,0x67078c:4,0x6707d4:4,0x6707d8:4,0x6707dc:4,0x670804:4,0x670808:4,0x670820:4,0x670834:4,0x670844:4,0x67086c:4,0x67089c:4,0x6708c8:4,0x6708cc:4,0x6708dc:4,0x670908:4,0x670918:4,0x67096c:4,0x670998:4,0x6709f8:4,0x6709fc:4,0x670a00:4,0x670a10:4,0x670a54:4,0x670a8c:4,0x670ba8:4,0x670bb4:4,0x670c20:4,0x670c44:4,0x670c5c:4,0x670c88:4,0x670cb8:4,0x670ce8:4,0x670d0c:4,0x670d48:1,0x670d49:1,0x670d7c:4,0x670d90:4,0x670dc4:4,0x670ddc:4,0x670df4:4,0x670e54:4,0x670e64:4,0x670e70:4,0x670e84:4,0x670e88:4,0x670e9c:4,0x670ef0:4,0x670f04:4,0x670f08:4,0x670f10:4,0x670f60:4,0x670fc8:4,0x671034:4,0x671050:4,0x671054:4,0x671058:4,0x67106c:4,0x67107c:4,0x671128:4,0x671178:4,0x671188:4,0x6711a0:4,0x6711cc:4,0x6711e4:4,0x6712c0:4,0x6712d0:4,0x6712d4:4,0x6712e0:4,0x671300:4,0x67130c:4,0x671328:4,0x67132c:4,0x671340:4,0x671344:4,0x671348:4,0x6713e8:4,0x67140c:4,0x671420:4,0x67142c:4,0x671444:4,0x671470:4,0x671480:4,0x6714a0:4,0x6714f8:4,0x671570:4,0x671574:4,0x671588:4,0x67158c:4,0x6715b0:4,0x6715d0:4,0x6715f0:4,0x671600:4,0x671604:4,0x671608:4,0x67160c:4,0x671610:4,0x671614:4,0x671618:4,0x67161c:4,0x671620:4,0x671624:4,0x671628:4,0x67162c:4,0x671630:4,0x671634:4,0x671638:4,0x67163c:4,0x671640:4,0x671644:4,0x671648:4,0x67164c:4,0x671650:4,0x671654:4,0x671658:4,0x67165c:4,0x671664:4,0x671668:4,0x67166c:4,0x671670:4,0x671674:4,0x671678:4,0x67167c:4,0x6716bc:4,0x6716e4:4,0x6716fc:4,0x671708:4,0x671738:4,0x6717a0:4,0x6717a4:4,0x6717b0:4,0x6717e4:4,0x671874:4,0x671880:4,0x671890:4,0x6718b0:4,0x6718b8:4,0x6718dc:4,0x6718e4:4,0x6718f8:4,0x6718fc:4,0x671908:1,0x671909:1,0x671914:4,0x671918:4,0x67191c:4,0x671920:4,0x671924:4,0x671928:4,0x671930:4,0x671940:4,0x671944:4,0x671994:4,0x67199c:4,0x6719d8:4,0x671a00:4,0x671a40:4,0x671a4c:4,0x671a74:4,0x671a84:4,0x671a9c:4,0x671aa0:4,0x671ae4:4,0x671af0:4,0x671b04:4,0x671b0c:4,0x671b18:4,0x671b38:4,0x671b60:4,0x671bd0:4,0x671bf0:4,0x671c04:4,0x671c08:4,0x671ccc:4,0x671cd4:4,0x671d10:4,0x671d80:4,0x671d84:4,0x671d88:4,0x671e14:4,0x671e60:4,0x671e94:4,0x671ec8:4,0x671ee4:4,0x671eec:4,0x671f00:4,0x671f30:4,0x671f34:4,0x671f38:4,0x671f3c:4,0x671f40:4,0x671f44:4,0x671f94:4,0x671fa0:4,0x671fa8:4,0x671fc8:4,0x671fec:4,0x672000:4,0x672004:4,0x672008:4,0x67200c:4,0x672010:4,0x672014:4,0x672018:4,0x67201c:4,0x672020:4,0x672024:4,0x672028:4,0x67202c:4,0x672030:4,0x672034:4,0x672038:4,0x67203c:4,0x672040:4,0x672044:4,0x672048:4,0x67204c:4,0x672050:4,0x672054:4,0x672058:4,0x67205c:4,0x672060:4,0x672064:4,0x672068:4,0x67206c:4,0x672070:4,0x672074:4,0x672078:4,0x67207c:4,0x672080:4,0x672084:4,0x672088:4,0x67208c:4,0x672090:4,0x672094:4,0x672098:4,0x67209c:4,0x6720a0:4,0x6720a4:4,0x6720a8:4,0x6720ac:4,0x6720b0:4,0x6720b4:4,0x6720b8:4,0x6720bc:4,0x6720c0:4,0x6720c4:4,0x6720c8:4,0x6720cc:4,0x6720d0:4,0x6720d4:4,0x6720d8:4,0x6720dc:4,0x6720e0:4,0x6720e4:4,0x6720e8:4,0x6720ec:4,0x6720f0:4,0x6720f4:4,0x6720f8:4,0x6720fc:4,0x672100:4,0x672104:4,0x672108:4,0x67210c:4,0x672110:4,0x672114:4,0x672118:4,0x67211c:4,0x672120:4,0x672124:4,0x672128:4,0x67212c:4,0x672130:4,0x672134:4,0x672138:4,0x67213c:4,0x672140:4,0x672144:4,0x672148:4,0x67214c:4,0x672150:4,0x672154:4,0x672158:4,0x67215c:4,0x672160:4,0x672164:4,0x672168:4,0x67216c:4,0x672170:4,0x672174:4,0x672178:4,0x67217c:4,0x672180:4,0x672184:4,0x672188:4,0x67218c:4,0x672190:4,0x672194:4,0x672198:4,0x67219c:4,0x6721a0:4,0x6721a4:4,0x6721a8:4,0x6721ac:4,0x6721b0:4,0x6721b4:4,0x6721b8:4,0x6721bc:4,0x6721c0:4,0x6721c4:4,0x6721c8:4,0x6721cc:4,0x6721d0:4,0x6721d4:4,0x6721d8:4,0x6721dc:4,0x6721e0:4,0x6721e4:4,0x6721e8:4,0x6721ec:4,0x6721f0:4,0x6721f4:4,0x6721f8:4,0x6721fc:4,0x672200:4,0x672204:4,0x672208:4,0x67220c:4,0x672210:4,0x672214:4,0x672218:4,0x67221c:4,0x672220:4,0x672224:4,0x672228:4,0x67222c:4,0x672230:4,0x672234:4,0x672238:4,0x67223c:4,0x672240:4,0x672244:4,0x672248:4,0x67224c:4,0x672250:4,0x672254:4,0x672258:4,0x67225c:4,0x672260:4,0x672264:4,0x672268:4,0x67226c:4,0x672270:4,0x672274:4,0x672278:4,0x67227c:4,0x672280:4,0x672284:4,0x672288:4,0x67228c:4,0x672290:4,0x672294:4,0x672298:4,0x67229c:4,0x6722a0:4,0x6722a4:4,0x6722a8:4,0x6722ac:4,0x6722b0:4,0x6722b4:4,0x6722b8:4,0x6722bc:4,0x6722c0:4,0x6722c4:4,0x6722c8:4,0x6722cc:4,0x6722d0:4,0x6722d4:4,0x6722d8:4,0x6722dc:4,0x6722e0:4,0x6722e4:4,0x6722e8:4,0x6722ec:4,0x6722f0:4,0x6722f4:4,0x6722f8:4,0x6722fc:4,0x672300:4,0x672304:4,0x672308:4,0x67230c:4,0x672310:4,0x672314:4,0x672318:4,0x67231c:4,0x672320:4,0x672324:4,0x672328:4,0x67232c:4,0x672330:4,0x672368:4,0x672374:4,0x6723c8:4,0x6723dc:4,0x672414:4,0x67241c:4,0x672424:4,0x672438:4,0x67243c:4,0x672440:4,0x672448:4,0x672460:4,0x672484:4,0x672488:4,0x6724a0:4,0x6724a4:4,0x6724a8:4,0x6724ac:4,0x6724b0:4,0x6724b4:4,0x6724b8:4,0x6724bc:4,0x6724c0:4,0x6724c4:4,0x6724c8:4,0x6724cc:4,0x6724d0:4,0x6724d4:4,0x6724d8:4,0x6724dc:4,0x6724e0:4,0x6724e4:4,0x6724e8:4,0x6724ec:4,0x6724f0:4,0x6724f4:4,0x672500:4,0x67250c:4,0x672510:4,0x672518:4,0x67252c:4,0x672534:4,0x672538:4,0x672548:4,0x672564:4,0x672568:4,0x67257c:4,0x672588:4,0x67258c:4,0x672590:4,0x672594:4,0x672598:4,0x67259c:4,0x6725a0:4,0x6725a4:4,0x6725ac:4,0x6725b0:4,0x6725d0:4,0x6725d4:4,0x6725d8:4,0x6725dc:4,0x6725f8:4,0x6725fc:4,0x672600:4,0x672620:4,0x672628:4,0x67262c:4,0x672638:4,0x67264c:4,0x672654:4,0x67265c:4,0x672660:4,0x672674:4,0x672684:4,0x67268c:4,0x6726dc:4,0x6726e0:4,0x6726e4:4,0x6726e8:4,0x6726fc:4,0x672710:4,0x672740:4,0x672758:4,0x672764:4,0x672768:4,0x67276c:4,0x6727a0:4,0x6727a4:4,0x6727a8:4,0x6727ac:4,0x6727b0:4,0x6727b4:4,0x6727b8:4,0x6727bc:4,0x6727c8:4,0x6727cc:4,0x6727d0:4,0x6727d4:4,0x6727d8:4,0x6727dc:4,0x6727e0:4,0x6727e4:4,0x6727e8:4,0x67280c:4,0x672810:4,0x672814:4,0x672818:4,0x67281c:4,0x672820:4,0x672824:4,0x672828:4,0x67282c:4,0x672858:4,0x672864:4,0x672870:4,0x6728c0:4,0x6728d4:4,0x6728dc:4,0x6728e4:4,0x6728e8:4,0x6728ec:4,0x6728f0:4,0x6728f4:4,0x6728f8:4,0x6728fc:4,0x672900:4,0x672910:4,0x672934:4,0x672974:4,0x67298c:4,0x672994:4,0x672998:4,0x6729a0:4,0x6729a4:4,0x6729dc:4,0x6729e0:4,0x6729e4:4,0x6729e8:4,0x672a08:4,0x672a18:4,0x672a1c:4,0x672a20:4,0x672a40:4,0x672a44:4,0x672a4c:4,0x672a68:4,0x672ab4:4,0x672ae8:4,0x672b10:4,0x672b54:4,0x672b60:4,0x672b64:4,0x672b68:4,0x672b7c:4,0x672b84:4,0x672bb8:4,0x672bc0:4,0x672bc4:4,0x672bd0:4,0x672bdc:4,0x672be0:4,0x672be8:4,0x672bf0:4,0x672c38:4,0x672c50:4,0x672c58:4,0x672c78:4,0x672c7c:4,0x672c84:4,0x672c90:4,0x672ca8:4,0x672cb0:4,0x672cb4:4,0x672cb8:4,0x672cbc:4,0x672cc0:4,0x672cc4:4,0x672cc8:4,0x672ccc:4,0x672ce0:4,0x672cec:4,0x672cf0:4,0x672cf4:4,0x672cf8:4,0x672cfc:4,0x672d00:4,0x672d04:4,0x672d08:4,0x672d0c:4,0x672d10:4,0x672d14:4,0x672d18:4,0x672d1c:4,0x672d20:4,0x672d24:4,0x672d28:4,0x672d2c:4,0x672d30:4,0x672d34:4,0x672d38:4,0x672d3c:4,0x672d48:4,0x672d4c:4,0x672d50:4,0x672d54:4,0x672d58:4,0x672d5c:4,0x672d60:4,0x672d64:4,0x672d68:4,0x672d6c:4,0x672d70:4,0x672d74:4,0x672d78:4,0x672d7c:4,0x672d80:4,0x672d84:4,0x672d88:4,0x672d8c:4,0x672d90:4,0x672d94:4,0x672d98:4,0x672d9c:4,0x672da0:4,0x672da4:4,0x672da8:4,0x672dac:4,0x672db0:4,0x672db4:4,0x672db8:4,0x672dbc:4,0x672dc0:4,0x672dc4:4,0x672dc8:4,0x672dcc:4,0x672dd0:4,0x672dd4:4,0x672dd8:4,0x672ddc:4,0x672de0:4,0x672df8:4,0x672e00:4,0x672e0c:4,0x672e10:4,0x672e14:4,0x672e18:4,0x672e1c:4,0x672e20:4,0x672e24:4,0x672e28:4,0x672e2c:4,0x672e30:4,0x672e34:4,0x672e38:4,0x672e3c:4,0x672e40:4,0x672e44:4,0x672e48:4,0x672e4c:4,0x672e50:4,0x672e54:4,0x672e58:4,0x672e5c:4,0x672e60:4,0x672e64:4,0x672e68:4,0x672e6c:4,0x672e70:4,0x672e74:4,0x672e78:4,0x672e7c:4,0x672e80:4,0x672e84:4,0x672e88:4,0x672e98:4,0x672e9c:4,0x672ea0:4,0x672ea4:4,0x672ea8:4,0x672eac:4,0x672eb0:4,0x672eb4:4,0x672ef4:4,0x672ef8:4,0x672f04:4,0x672f14:4,0x672f24:4,0x672f28:4,0x672f30:4,0x672f50:4,0x672f60:4,0x672f6c:4,0x672f74:4,0x672f78:4,0x672f88:4,0x672f8c:4,0x672fc8:4,0x672fd4:4,0x672fdc:4,0x672ff8:4,0x673014:4,0x673034:4,0x67305c:4,0x673090:4,0x673094:4,0x673098:4,0x67309c:4,0x6730ca:1,0x6730cb:1,0x6730d8:4,0x6730dc:4,0x6730e0:4,0x6730e4:4,0x6730e8:4,0x6730ec:4,0x6730f0:4,0x6730f4:4,0x67310c:4,0x673114:4,0x673148:4,0x67314c:4,0x67315c:4,0x673160:4,0x67316c:4,0x673180:4,0x6731b0:4,0x6731b4:4,0x6731c4:4,0x6731f8:4,0x673224:4,0x67322c:4,0x673230:4,0x673234:4,0x673238:4,0x67323c:4,0x673240:4,0x673244:4,0x673248:4,0x67326c:4,0x673270:4,0x673274:4,0x673278:4,0x67327c:4,0x673284:4,0x673288:4,0x67328c:4,0x6732ac:4,0x6732b0:4,0x6732b4:4,0x6732b8:4,0x6732bc:4,0x6732c0:4,0x6732c4:4,0x6732c8:4,0x6732dc:4,0x6732e0:4,0x6732e4:4,0x6732e8:4,0x6732ec:4,0x6732f0:4,0x6732f4:4,0x6732f8:4,0x673428:4,0x673448:4,0x67344c:4,0x673450:4,0x673454:4,0x673460:4,0x673464:4,0x673468:4,0x6734a0:4,0x6734a4:4,0x6734ac:4,0x6734b0:4,0x6734b8:4,0x6734c4:4,0x673504:4,0x673540:4,0x673544:4,0x67355c:4,0x673564:4,0x67357c:4,0x673580:4,0x673584:4,0x673588:4,0x67358c:4,0x673590:4,0x6735a0:4,0x6735b4:4,0x6735cc:4,0x6735d0:4,0x6735d8:4,0x6735ec:4,0x6735f8:4,0x673608:4,0x673630:4,0x67363c:4,0x6736a0:4,0x6736a4:4,0x6736d4:4,0x6736e4:4,0x6736f0:4,0x673718:4,0x673750:4,0x673778:4,0x673798:4,0x6737ac:4,0x6737cc:4,0x6737d0:4,0x6737e4:4,0x6737ec:4,0x6737f0:4,0x673808:4,0x673810:4,0x673814:4,0x673820:4,0x673834:4,0x673838:4,0x67383c:4,0x673848:4,0x67384c:4,0x673864:4,0x673868:4,0x67388c:4,0x673898:4,0x6738b8:4,0x6738c8:4,0x6738d8:4,0x67390c:4,0x673934:4,0x673938:4,0x67394c:4,0x67396c:4,0x673988:4,0x6739c4:4,0x673a18:4,0x673ab6:1,0x673ab7:1,0x673b4c:4,0x673b64:4,0x673b70:4,0x673b74:4,0x673b78:4,0x673b7c:4,0x673b80:4,0x673b94:4,0x673ba4:4,0x673bd8:4,0x673c20:4,0x673c2c:4,0x673ca4:4,0x673ce4:4,0x673cec:4,0x673d3c:4,0x673d68:4,0x673d8c:4,0x673d98:4,0x673d9c:4,0x673da0:4,0x673dac:4,0x673db0:4,0x673db8:4,0x673dbc:4,0x673e18:4,0x673e34:4,0x673e48:4,0x673e4c:4,0x673e50:4,0x673e54:4,0x673e58:4,0x673e60:4,0x673e64:4,0x673e68:4,0x673e6c:4,0x673e70:4,0x673e74:4,0x673e78:4,0x673e7c:4,0x673e80:4,0x673e84:4,0x673e9c:4,0x673ea0:4,0x673ea4:4,0x673ea8:4,0x673eac:4,0x673eb0:4,0x673eb4:4,0x673eb8:4,0x673ebc:4,0x673ec0:4,0x673ecc:4,0x673ed0:4,0x673ed4:4,0x673ed8:4,0x673edc:4,0x673ee0:4,0x673f20:4,0x673f24:4,0x673f28:4,0x673f2c:4,0x673f30:4,0x673f34:4,0x673f38:4,0x673f3c:4,0x673f40:4,0x673f44:4,0x673f48:4,0x673f4c:4,0x673f50:4,0x673f54:4,0x673f58:4,0x673f8c:4,0x673f90:4,0x673f98:4,0x673fa0:4,0x673fa4:4,0x673fa8:4,0x673fac:4,0x673fb0:4,0x673fb4:4,0x673fb8:4,0x673fc0:4,0x673fc4:4,0x673fc8:4,0x673fcc:4,0x673fd0:4,0x673ff0:4,0x673ff4:4,0x673ff8:4,0x673ffc:4,0x67c000:4,0x67c004:4,0x67c008:4,0x67c00c:4,0x67c010:4,0x67c014:4,0x67c018:4,0x67c01c:4,0x67c030:4,0x67c034:4,0x67c038:4,0x67c054:4,0x67c058:4,0x67c05c:4,0x67c060:4,0x67c064:4,0x67c068:4,0x67c06c:4,0x67c070:4,0x67c080:4,0x67c084:4,0x67c088:4,0x67c08c:4,0x67c090:4,0x67c0a4:4,0x67c0bc:4,0x67c0d0:4,0x67c0d4:4,0x67c0d8:4,0x67c0fc:4,0x67c128:4,0x67c12c:4,0x67c178:4,0x67c17c:4,0x67c18c:4,0x67c190:4,0x67c194:4,0x67c1a0:4,0x67c1bc:4,0x67c1c0:4,0x67c1d4:4,0x67c1d8:4,0x67c1dc:4,0x67c1e0:4,0x67c1e4:4,0x67c1e8:4,0x67c1ec:4,0x67c1f0:4,0x67c210:4,0x67c2e6:1,0x67c2e7:1,0x67c368:4,0x67c370:4,0x67c388:4,0x67c394:4,0x67c398:4,0x67c3a0:4,0x67c3c0:4,0x67c43c:4,0x67c440:4,0x67c448:4,0x67c458:4,0x67c45c:4,0x67c460:4,0x67c4a8:4,0x67c4b8:4,0x67c4cc:4,0x67c5b4:4,0x67c5e4:4,0x67c5fc:4,0x67c614:4,0x67c63c:4,0x67c640:4,0x67c648:4,0x67c67c:4,0x67c69c:4,0x67c6b4:4,0x67c6c4:4,0x67c6c8:4,0x67c6d8:4,0x67c6dc:4,0x67c6e0:4,0x67c6e4:4,0x67c6e8:4,0x67c6ec:4,0x67c6f0:4,0x67c6f4:4,0x67c7a4:4,0x67c7c4:4,0x67c7e4:4,0x67c7f8:4,0x67c7fc:4,0x67c81c:4,0x67c820:4,0x67c834:4,0x67c840:4,0x67c844:4,0x67c888:4,0x67c88c:4,0x67c890:4,0x67c894:4,0x67c898:4,0x67c89c:4,0x67c8a0:4,0x67c8a4:4,0x67c8a8:4,0x67c8ac:4,0x67c8b0:4,0x67c8b4:4,0x67c8b8:4,0x67c8bc:4,0x67c8c0:4,0x67c8dc:4,0x67c8e0:4,0x67c8e4:4,0x67c8e8:4,0x67c8ec:4,0x67c8f0:4,0x67c8f4:4,0x67c8f8:4,0x67c8fc:4,0x67c900:4,0x67c904:4,0x67c908:4,0x67c90c:4,0x67c910:4,0x67c914:4,0x67c91c:4,0x67c920:4,0x67c924:4,0x67c928:4,0x67c92c:4,0x67c930:4,0x67c934:4,0x67c938:4,0x67c93c:4,0x67c940:4,0x67c94c:4,0x67c950:4,0x67c954:4,0x67c958:4,0x67c95c:4,0x67c960:4,0x67c964:4,0x67c968:4,0x67c96c:4,0x67c970:4,0x67c974:4,0x67c978:4,0x67c998:4,0x67c99c:4,0x67c9a0:4,0x67c9a4:4,0x67c9a8:4,0x67c9ac:4,0x67c9b0:4,0x67c9b4:4,0x67c9b8:4,0x67c9bc:4,0x67c9c0:4,0x67c9c4:4,0x67c9c8:4,0x67c9cc:4,0x67c9d0:4,0x67c9d4:4,0x67c9d8:4,0x67c9dc:4,0x67c9e0:4,0x67c9e4:4,0x67c9e8:4,0x67c9ec:4,0x67c9f0:4,0x67c9f4:4,0x67c9f8:4,0x67c9fc:4,0x67ca00:4,0x67ca04:4,0x67ca08:4,0x67ca0c:4,0x67ca10:4,0x67ca14:4,0x67ca18:4,0x67ca1c:4,0x67ca20:4,0x67ca24:4,0x67ca28:4,0x67ca2c:4,0x67ca38:4,0x67ca3c:4,0x67ca40:4,0x67ca44:4,0x67ca48:4,0x67ca4c:4,0x67ca50:4,0x67ca54:4,0x67ca58:4,0x67ca5c:4,0x67ca60:4,0x67ca64:4,0x67ca68:4,0x67ca6c:4,0x67ca70:4,0x67ca74:4,0x67ca78:4,0x67ca7c:4,0x67ca80:4,0x67ca84:4,0x67ca88:4,0x67ca8c:4,0x67ca90:4,0x67ca98:4,0x67ca9c:4,0x67caa0:4,0x67caa4:4,0x67caa8:4,0x67caac:4,0x67cab0:4,0x67cab4:4,0x67cab8:4,0x67cabc:4,0x67cac0:4,0x67cac4:4,0x67cac8:4,0x67cacc:4,0x67cad4:4,0x67cae4:4,0x67caec:4,0x67caf0:4,0x67caf4:4,0x67caf8:4,0x67cafc:4,0x67cb00:4,0x67cb04:4,0x67cb08:4,0x67cb0c:4,0x67cb10:4,0x67cb14:4,0x67cb18:4,0x67cb1c:4,0x67cb20:4,0x67cb34:4,0x67cb38:4,0x67cb60:4,0x67cb64:4,0x67cb68:4,0x67cb6c:4,0x67cb70:4,0x67cb74:4,0x67cb78:4,0x67cb7c:4,0x67cb80:4,0x67cb8c:4,0x67cba4:4,0x67cba8:4,0x67cbc0:4,0x67cbc8:4,0x67cbd4:4,0x67cbd8:4,0x67cc18:4,0x67cc48:4,0x67cc58:4,0x67cc70:4,0x67cc88:4,0x67cc8c:4,0x67cc90:4,0x67cc94:4,0x67cc98:4,0x67ccc4:4,0x67cce8:4,0x67ccec:4,0x67cd04:4,0x67cd08:4,0x67cd28:4,0x67cd2c:4,0x67cd34:4,0x67cd6c:4,0x67cd74:4,0x67cd78:4,0x67cd88:4,0x67cda2:1,0x67cdbc:4,0x67cdc0:4,0x67cdc4:4,0x67cdc8:4,0x67cdec:4,0x67cdf8:4,0x67cdfc:4,0x67ce00:4,0x67ce2c:4,0x67ce6c:4,0x67ce94:4,0x67cf30:4,0x67cf68:4,0x67cfa4:4,0x67cfb8:4,0x67cfbc:4,0x67cfc0:4,0x67cfc4:4,0x67cfc8:4,0x67cfcc:4,0x67cfd0:4,0x67cfd4:4,0x67cfdc:4,0x67cfe4:4,0x67cfe8:4,0x67d00c:4,0x67d010:4,0x67d01c:4,0x67d028:4,0x67d02c:4,0x67d030:4,0x67d094:4,0x67d170:4,0x67d188:4,0x67d1c8:4,0x67d1d0:4,0x67d1d8:4,0x67d1e8:4,0x67d200:4,0x67d260:4,0x67d29c:4,0x67d2a0:4,0x67d2a4:4,0x67d2a8:4,0x67d2ac:4,0x67d2b0:4,0x67d2b4:4,0x67d2b8:4,0x67d2bc:4,0x67d2d8:4,0x67d32c:4,0x67d360:4,0x67d364:4,0x67d39c:4,0x67d3a4:4,0x67d3a8:4,0x67d3c0:4,0x67d3dc:4,0x67d3e0:4,0x67d3e4:4,0x67e010:4,0x67e028:4,0x67e02c:4,0x67e03c:4,0x67e050:4,0x67e0dc:4,0x67e0e0:4,0x67e0e4:4,0x67e0e8:4,0x67e154:4,0x67e210:4,0x67e228:4,0x67e238:4,0x67e23c:4,0x67e250:4,0x67e274:4,0x67e284:4,0x67e29c:4,0x67e2b4:4,0x67e2c4:4,0x67e330:4,0x67e348:4,0x67e34c:4,0x67e350:4,0x67e364:4,0x67e378:4,0x67e384:4,0x67e388:4,0x67e3c4:4,0x67e3cc:4,0x67e3d4:4,0x67e3e4:4,0x67e40c:4,0x67e41c:4,0x67e444:4,0x67e458:4,0x67e480:4,0x67e4a0:4,0x67e4b0:4,0x67e4cc:4,0x67e4d0:4,0x67e4e4:4,0x67e4e8:4,0x67e514:4,0x67e588:4,0x67e594:4,0x67e5ac:4,0x67e5d4:4,0x67e5d8:4,0x67e5dc:4,0x67e5e4:4,0x67e5ec:4,0x67e5f0:4,0x67e600:4,0x67e61c:4,0x67e628:4,0x67e62c:4,0x67e660:4,0x67e6c4:4,0x67e6c8:4,0x67e6cc:4,0x67e6d4:4,0x67e6ec:4,0x67e710:4,0x67e714:4,0x67e740:4,0x67e744:4,0x67e790:4,0x67e7b4:4,0x67e7b8:4,0x67e7f4:4,0x67e804:4,0x67e890:4,0x67e8d4:4,0x67e904:4,0x67e92c:4,0x67e934:4,0x67e968:4,0x67e980:4,0x67e988:4,0x67e9e4:4,0x67ea00:4,0x67ea14:4,0x67ea38:4,0x67ea7c:4,0x67ea80:4,0x67eaac:4,0x67eab4:4,0x67eaf4:4,0x67eb10:4,0x67eb30:4,0x67eb38:4,0x67eb3c:4,0x67eb50:4,0x67eb54:4,0x67eb80:4,0x67eb84:4,0x67eb88:4,0x67eb8c:4,0x67eb90:4,0x67eb94:4,0x67ebb8:4,0x67ebc0:4,0x67ebc8:4,0x67ebdc:4,0x67ebe0:4,0x67ebe4:4,0x67ebe8:4,0x67ebec:4,0x67ebf0:4,0x67ebf4:4,0x67ebf8:4,0x67ebfc:4,0x67ec00:4,0x67ec04:4,0x67ec08:4,0x67ec0c:4,0x67ec10:4,0x67ec14:4,0x67ec18:4,0x67ec1c:4,0x67ec20:4,0x67ec24:4,0x67ec28:4,0x67ec2c:4,0x67ec30:4,0x67ec34:4,0x67ec38:4,0x67ec3c:4,0x67ec40:4,0x67ec44:4,0x67ec48:4,0x67ec4c:4,0x67ec50:4,0x67ec54:4,0x67ec58:4,0x67ec5c:4,0x67ec60:4,0x67ec78:4,0x67ecb8:4,0x67ecdc:4,0x67ece8:4,0x67ecf0:4,0x67ecf4:4,0x67ecf8:4,0x67ecfc:4,0x67ed00:4,0x67ed04:4,0x67ed08:4,0x67ed0c:4,0x67ed18:4,0x67ed1c:4,0x67ed44:4,0x67ed58:4,0x67ed98:4,0x67edb0:4,0x67edb4:4,0x67edb8:4,0x67edbc:4,0x67edc0:4,0x67edc4:4,0x67edc8:4,0x67edcc:4,0x67edd0:4,0x67edd4:4,0x67edd8:4,0x67eddc:4,0x67ede0:4,0x67ede4:4,0x67ede8:4,0x67edec:4,0x67edf0:4,0x67edf4:4,0x67edf8:4,0x67edfc:4,0x67ee00:4,0x67ee04:4,0x67ee10:4,0x67ee14:4,0x67ee18:4,0x67ee1c:4,0x67ee20:4,0x67ee24:4,0x67ee28:4,0x67ee2c:4,0x67ee30:4,0x67ee34:4,0x67ee38:4,0x67ee58:4,0x67ee5c:4,0x67ee60:4,0x67ee84:4,0x67ee8c:4,0x67ee90:4,0x67eea0:4,0x67eea4:4,0x67eea8:4,0x67eeac:4,0x67eeb0:4,0x67eeb4:4,0x67eeb8:4,0x67eebc:4,0x67eec4:4,0x67eecc:4,0x67eefc:4,0x67ef00:4,0x67ef28:4,0x67ef2c:4,0x67ef44:4,0x67ef60:4,0x67ef98:4,0x67ef9c:4,0x67efb0:4,0x67efb4:4,0x67efb8:4,0x67efc0:4,0x67efc4:4,0x67efcc:4,0x67efd0:4,0x67efe0:4,0x67eff4:4,0x67f010:4,0x67f024:4,0x67f048:4,0x67f054:4,0x67f07c:4,0x67f09c:4,0x67f0ac:4,0x67f0f4:4,0x67f10c:4,0x67f148:4,0x67f15c:4,0x67f160:4,0x67f1a0:4,0x67f1b8:4,0x67f1bc:4,0x67f1dc:4,0x67f208:4,0x67f240:4,0x67f280:4,0x67f284:4,0x67f2a0:4,0x67f2a8:4,0x67f2ac:4,0x67f2b0:4,0x67f2c8:4,0x67f2d4:4,0x67f2dc:4,0x67f2f0:4,0x67f388:4,0x67f3fc:4,0x67f410:4,0x67f43a:1,0x67f43b:1,0x67f43c:4,0x67f440:4,0x67f444:4,0x67f448:4,0x67f44c:4,0x67f450:4,0x67f454:4,0x67f474:4,0x67f4a4:4,0x67f4e8:4,0x67f4fc:4,0x67f517:1,0x67f534:4,0x67f53c:4,0x67f550:4,0x67f57c:4,0x67f580:4,0x67f608:4,0x67f60c:4,0x67f678:4,0x67f67c:4,0x67f684:4,0x67f698:4,0x67f69c:4,0x67f7a8:4,0x67f7ac:4,0x67f7b0:4,0x67f7c8:4,0x67f7d4:4,0x67f800:1,0x67f801:1,0x67f840:4,0x67f864:4,0x67f87c:4,0x67f898:4,0x67f8a8:4,0x67f8c0:4,0x67f8d4:4,0x67f8dc:4,0x67f8e0:4,0x67f8e4:4,0x67f908:4,0x67f90c:4,0x67f934:4,0x67f968:4,0x67f980:4,0x67f988:4,0x67f990:4,0x67f9a4:4,0x67f9a8:4,0x67f9ac:4,0x67f9b0:4,0x67f9bc:4,0x67f9c0:4,0x67f9f4:4,0x67f9fc:4,0x67fa20:4,0x67fa68:4,0x67fa7c:4,0x67fab4:4,0x67fac0:4,0x67fad8:4,0x67fae0:4,0x67faec:4,0x67faf8:4,0x67fafc:4,0x67fb20:4,0x67fb54:4,0x67fb60:4,0x67fb7c:4,0x67fb80:4,0x67fba0:4,0x67fbc0:4,0x67fbcc:4,0x67fbec:4,0x67fbf0:4,0x67fc1c:4,0x67fc24:4,0x67fc40:4,0x67fc68:4,0x67fcac:4,0x67fccc:4,0x67fcd0:4,0x67fce8:4,0x67fcf8:4,0x67fd04:4,0x67fd3c:4,0x67fdcc:4,0x67fddc:4,0x67fde0:4,0x67fde8:4,0x67fe08:4,0x67fe14:4,0x67fe40:4,0x67fe44:4,0x67fe48:4,0x67fe4c:4,0x67fe70:4,0x67feb0:4,0x67febc:4,0x67fec4:1,0x67fedc:4,0x67ff44:4,0x67ff58:4,0x67ff5c:4,0x67ff88:4,0x67ff8c:4,0x67ffb8:4,0x67ffc8:4,0x67ffd0:4,0x67ffd4:4,0x67ffe4:4},{},{},{0x6a0000:1,0x6a0002:1,0x6a0003:1,0x6a0004:4,0x6a0008:4,0x6a000c:4,0x6a0010:16,0x6a002c:4,0x6a0040:64,0x6a0200:256,0x6a0300:256,0x6a0400:1024,0x6a0800:256,0x6a0900:256,0x6a0b00:256,0x6a0c00:1024,0x6a1000:1024,0x6a1400:1024,0x6a1800:1024,0x6a1c00:1024,0x6a2000:1024,0x6a2400:1024,0x6a2800:1024,0x6a2c00:1024,0x6a3000:256,0x6a3100:256,0x6a3200:256,0x6a3400:1024,0x6a3800:1024,0x6a3c00:1024,0x6a4a00:256,0x6a4b00:256,0x6a5000:1024,0x6a5400:1024,0x6a5800:1024,0x6a5c00:1024,0x6a6c00:1024,0x6a7000:1024,0x6a7400:1024,0x6a7800:1024,0x6a7c00:1024,0x6ae000:1024,0x6ae400:1024,0x6ae800:1024,0x6aec00:1024},{},{},{},{0x6e0600:256,0x6e0700:256,0x6e1000:1024,0x6e2228:4,0x6e222c:4,0x6e2800:1024,0x6e2c0c:4,0x6e2c90:16,0x6e3000:256,0x6e3300:256,0x6e3400:256,0x6e3500:256,0x6e3800:1024,0x6e3c00:1024,0x6e4000:256,0x6e4100:256,0x6e4800:256,0x6e4900:256,0x6e4b00:64,0x6e4b40:64,0x6e4b80:16,0x6e4b90:16,0x6e4ba0:16,0x6e4bb0:16,0x6e4bc0:64,0x6e4c00:16,0x6e4c10:16,0x6e4c20:16,0x6e4c30:16,0x6e4c84:4,0x6e4c9c:4,0x6e4cb8:4,0x6e4cc0:64,0x6e4d00:64,0x6e4d40:64,0x6e5000:1024,0x6e5400:1024,0x6e5800:1024,0x6e5c44:4,0x6e5d20:16,0x6e5d30:16,0x6e5e00:256,0x6e5f00:256,0x6e6000:1024,0x6e6400:1024,0x6e6800:1024,0x6e6c00:1024,0x6e7000:1024,0x6e7400:1024,0x6e7800:1024,0x6e7c00:1024,0x6e9800:1024,0x6e9c00:256,0x6e9d00:256,0x6ea520:16,0x6ea530:16,0x6ea600:256,0x6ea700:256,0x6eacc0:64,0x6ead00:16,0x6ead10:16,0x6ead20:16,0x6ead40:16,0x6ead50:16,0x6ead60:16,0x6ead70:16,0x6eadc0:16,0x6eadd0:16,0x6eb000:1024,0x6eb400:1024,0x6eb800:1024,0x6ebc00:1024,0x6ec000:1024,0x6ec400:1024,0x6ec800:1024,0x6ecc00:1024,0x6ed000:1024,0x6ed400:1024,0x6ed800:1024,0x6edc00:1024,0x6ee400:1024,0x6ee820:16,0x6ee830:16,0x6eec00:256,0x6eed00:256,0x6ef000:1024,0x6ef400:1024,0x6ef800:1024,0x6efc00:1024},{0x6f0000:1024,0x6f0400:1024,0x6f0800:1024,0x6f0c00:1024,0x6f1000:1024,0x6f1400:1024,0x6f1800:1024,0x6f1c00:1024,0x6f2000:1024,0x6f2400:1024,0x6f2800:1024,0x6f2c00:1024,0x6f3000:1024,0x6f3400:1024,0x6f3800:1024,0x6f3c00:1024,0x6f4200:256,0x6f43c0:16,0x6f4440:16,0x6f4450:16,0x6f4800:1024,0x6f4c00:1024,0x6f5500:256,0x6f5bc0:16,0x6f5bd0:16,0x6f5cf8:4,0x6f5cfc:4,0x6f7000:256,0x6f7100:256,0x6f7200:256,0x6f7300:256,0x6f7400:256,0x6f7500:256,0x6f76c8:4,0x6f76cc:4,0x6f7740:64,0x6f7780:16,0x6f7790:16,0x6f7800:1024,0x6f7c00:256,0x6f7e00:256,0x6f7f00:256,0x6f8000:1024,0x6f8400:1024,0x6f8800:1024,0x6f8c00:1024,0x6f9000:1024,0x6f9400:1024,0x6f9800:1024,0x6f9c00:1024,0x6fa000:1024,0x6fa400:1024,0x6faa00:256,0x6fac00:1024,0x6fb000:1024,0x6fb400:1024,0x6fba00:256,0x6fbb00:256,0x6fc000:1024,0x6fc400:1024,0x6fc800:1024,0x6fcc00:1024,0x6fd000:1024,0x6fd400:1024,0x6fdd1c:1,0x6fdd80:64,0x6fddc0:64,0x6fde00:256,0x6fdf04:4,0x6fdf08:4,0x6fdf0c:4,0x6fdf10:4,0x6fdff0:4,0x6fdff8:4,0x6fe000:1024,0x6fe400:1024,0x6feb60:16,0x6feb70:16,0x6feb9c:4,0x6feba0:16,0x6febb0:16},{0x700000:1024,0x700400:1024,0x700800:1024,0x700c00:1024,0x701000:1024,0x701400:1024,0x701800:1024,0x701c00:1024,0x702000:1024,0x702400:1024,0x702800:1024,0x702c00:1024,0x703000:1024,0x703400:1024,0x703800:1024,0x703c00:1024,0x704000:256,0x704100:256,0x704200:256,0x704300:256,0x704900:256,0x704a00:256,0x704b00:256,0x705000:1024,0x705400:1024,0x705800:1024,0x705c00:1024,0x706000:256,0x706100:256,0x706200:256,0x706300:256,0x706400:1024,0x706d80:64,0x706dc0:64,0x706f00:256,0x707000:1024,0x707400:256,0x707500:256,0x707a00:256,0x707b00:256,0x707c00:1024,0x708000:1024,0x708400:256,0x708930:4,0x708934:4,0x70c000:1024,0x70e000:1024,0x70e400:1024,0x70e800:1024,0x70ec00:1024,0x70f000:1024,0x70f400:1024,0x70f800:1024,0x70fc00:1024},{0x710000:1024,0x710400:1024,0x710800:256,0x710900:256,0x710bc0:16,0x710bd0:16,0x710c00:1024,0x711000:256,0x711100:256,0x711200:256,0x7115e8:4,0x7115ec:4,0x711800:1024,0x711f00:256,0x712c00:1024,0x713000:1024,0x7134a0:16,0x7134b0:16,0x7134e4:4,0x713600:256,0x713700:256,0x713800:256,0x713900:256,0x713a00:256,0x713b00:64,0x713b40:64,0x713be0:4,0x713e00:256,0x713f00:256,0x714000:1024,0x714400:1024,0x714800:1024,0x714c00:1024,0x715000:1024,0x715400:1024,0x715800:1024,0x715c00:1024,0x716000:1024,0x716400:1024,0x716800:1024,0x716c00:1024,0x717000:1024,0x717400:1024,0x717800:1024,0x717c00:1024,0x718000:256,0x718100:256,0x718260:16,0x718270:4,0x718274:4,0x718400:1024,0x718800:1024,0x718c00:1024,0x71c200:256,0x71c300:256,0x71c564:4,0x71c800:256,0x71c900:256,0x71ca00:256,0x71cc00:1024,0x71d060:16,0x71d070:16,0x71d080:64,0x71d0c0:64,0x71d100:256,0x71d400:64,0x71d464:4,0x71d4b8:4,0x71d4bc:4,0x71d500:64,0x71d540:64,0x71d600:256,0x71d700:256,0x71da00:256,0x71db00:256,0x71dc00:1024,0x71e000:1024,0x71e400:1024,0x71e800:1024,0x71ec00:1024,0x71f000:1024,0x71f400:1024,0x71f800:1024},{0x721c00:256,0x721f40:4,0x721f44:4,0x723600:256,0x723700:256,0x723c00:1024,0x724000:1024,0x724400:256,0x724f40:64,0x725000:1024,0x725400:1024,0x725800:1024,0x725c00:1024,0x726000:1024,0x726400:1024,0x726800:1024,0x726e00:16,0x726e40:64,0x726f00:16,0x726f10:16,0x726fa0:16,0x726fb0:16,0x727000:1024,0x727400:256,0x727500:256,0x727600:256,0x727700:64,0x727740:64,0x727780:64,0x7277c0:4,0x7277c4:4,0x7277c8:4,0x7277cc:4,0x7277d0:16,0x7277e0:16,0x7277f0:16,0x728400:256,0x728700:256,0x728a00:256,0x728b00:256,0x728d40:4,0x728d44:4,0x728d50:4,0x728d54:4,0x728d80:64,0x72c400:256,0x72c500:256,0x72c6f8:4,0x72c6fc:4,0x72d000:1024,0x72d400:256,0x72d500:256,0x72d600:256,0x72d700:256,0x72d800:1024,0x72dc00:1024,0x72e000:1024,0x72e400:1024,0x72e800:1024,0x72ec00:1024,0x72f000:1024,0x72f400:1024,0x72f800:1024,0x72fc00:1024},{0x731800:1024,0x731c00:256,0x731d00:256,0x731f40:4,0x731f44:4,0x731f48:4,0x731f4c:4,0x732000:1024,0x732a38:4,0x732c00:256,0x732d00:256,0x732e00:256,0x732f00:256,0x733000:1024,0x733400:1024,0x733800:1024,0x733c00:1024,0x734540:16,0x735400:64,0x7354c0:16,0x7354d0:16,0x7355c0:64,0x736400:1024,0x736800:1024,0x737800:1024,0x737c10:16,0x739400:1024,0x739800:256,0x739900:256,0x739a00:256,0x739b00:256,0x739c00:256,0x739d00:256,0x739e00:256,0x739f00:256,0x73a640:16,0x73a650:16,0x73a800:1024,0x73ac00:1024,0x73b400:1024,0x73bb00:4,0x73bb04:4,0x73bb08:4,0x73bb0c:4,0x73be00:256,0x73bf00:256,0x73c000:1024,0x73c400:1024,0x73c800:1024,0x73cc00:1024,0x73d000:1024,0x73d400:1024,0x73d800:1024,0x73dc00:1024,0x73e000:1024,0x73e400:1024,0x73e800:1024,0x73ec00:1024},{0x740008:4,0x74000c:4,0x740018:4,0x74001c:4,0x740100:256,0x740200:256,0x740300:256,0x740400:1024,0x740800:1024,0x740d00:256,0x741000:1024,0x741400:1024,0x741800:1024,0x741c00:1024,0x743200:16,0x743400:1024,0x743800:256,0x743900:256,0x743a80:16,0x743ad0:16,0x743c00:1024,0x744200:64,0x744240:64,0x744488:4,0x74448c:4,0x7444b0:4,0x7444b4:4,0x744500:256,0x744600:64,0x744640:64,0x744c00:256,0x744d00:256,0x744e00:256,0x744f00:256,0x745500:256,0x745990:16,0x745a50:16,0x745ab8:4,0x745abc:4,0x745f00:256,0x747000:1024,0x747400:256,0x747500:256,0x748000:1024,0x748400:1024,0x748800:1024,0x748c00:1024,0x749000:1024,0x749400:1024,0x749800:1024,0x749c00:1024,0x74a000:1024,0x74a400:1024,0x74a800:1024,0x74ac00:1024,0x74b000:1024,0x74b400:1024,0x74b800:1024,0x74bc00:1024,0x74c000:256,0x74c110:16,0x74c120:16,0x74c130:16,0x74c198:4,0x74c1a4:4,0x74c1b0:4,0x74c1b4:4,0x74c200:256,0x74c300:256,0x74c400:256,0x74c5a0:4,0x74c5a4:4,0x74c600:256,0x74c700:64,0x74c740:64,0x74c780:16,0x74c790:16,0x74cc00:256,0x74cd00:256,0x74cf00:256,0x74d000:1024,0x74d4a0:16,0x74d528:4,0x74d52c:4,0x74d540:64,0x74d580:64,0x74d5c0:64,0x74d620:16,0x74d630:16,0x74d640:16,0x74d680:64,0x74d6c0:64,0x74d700:256,0x74d800:1024,0x74e000:1024,0x74e400:1024,0x74e800:1024,0x74ec00:1024,0x74f200:256,0x74f300:256,0x74f400:256,0x74f500:256,0x74f600:256,0x74f700:256,0x74f800:256,0x74f900:256,0x74fb40:64,0x74fc00:256,0x74fd00:256,0x74fe68:4,0x74fe6c:4,0x74fe80:64,0x74fec0:64,0x74ff80:64,0x74ffc0:64},{0x750800:1024,0x750c00:1024,0x751500:256,0x751600:256,0x751700:256,0x751800:1024,0x751c00:1024,0x752000:1024,0x752400:1024,0x752800:1024,0x752c00:256,0x752d00:256,0x753000:1024,0x753530:16,0x7535b0:16,0x753900:256,0x753a00:64,0x753a40:64,0x753b00:256,0x753c00:1024,0x754000:1024,0x754400:1024,0x754800:256,0x754900:256,0x754a40:16,0x754a50:16,0x754a80:64,0x754ac0:64,0x754b00:256,0x754c00:1024,0x755000:1024,0x755400:1024,0x755800:1024,0x755c00:1024,0x756400:256,0x756500:256,0x756710:16,0x756728:4,0x75672c:4,0x756748:4,0x75674c:4,0x756780:16,0x7568a8:4,0x7568ac:4,0x756a00:256,0x756b00:256,0x757000:1024,0x757400:1024,0x757840:64,0x757880:64,0x7578c0:64,0x757900:64,0x757940:64,0x757980:64,0x7579c0:4,0x7579c4:4,0x757a80:64,0x757ac0:64,0x757c00:1024,0x758000:1024,0x758400:1024,0x758800:1024,0x758c00:1024,0x759000:1024,0x759400:1024,0x759800:1024,0x759c00:1024,0x75a000:1024,0x75a400:1024,0x75a800:1024,0x75ac00:1024,0x75b000:1024,0x75b400:1024,0x75b800:1024,0x75bc00:1024},{0x761800:256,0x761900:256,0x761a00:256,0x761c00:256,0x761d00:256,0x761e00:256,0x761f00:256,0x764000:256,0x764100:256,0x764200:256,0x764370:16,0x764800:1024,0x764c00:1024,0x765000:256,0x765100:256,0x765400:256,0x765500:256,0x765820:16,0x765830:16,0x765840:64,0x765880:64,0x7658c0:64,0x765900:256,0x765bf0:16,0x766610:16,0x766620:4,0x766624:4,0x7667a4:4,0x7667a8:4,0x7667ac:4,0x7667b0:4,0x767000:1024,0x767400:1024,0x767800:1024,0x767c00:256,0x767d00:256,0x767e00:256,0x767f80:16,0x767f90:16,0x768400:1024,0x769000:1024,0x76b200:256,0x76b400:1024,0x76b800:64,0x76b840:64,0x76b880:64,0x76b8c0:64,0x76ba00:256,0x76bb00:256,0x76bc00:256,0x76be00:256,0x76bf00:256,0x76c000:256,0x76c100:16,0x76c120:16,0x76c130:16,0x76c140:16,0x76c160:16,0x76c170:16,0x76c180:64,0x76c1c0:64,0x76c200:64,0x76c240:64,0x76c280:64,0x76c2c0:64,0x76c300:64,0x76c340:64,0x76c380:64,0x76c3c0:64,0x76c400:1024,0x76ca00:256,0x76cb00:256,0x76cc00:1024,0x76d400:256,0x76d500:256,0x76e000:1024,0x76e400:256,0x76e500:256,0x76e600:256,0x76ef00:256,0x76f200:256,0x76f400:1024,0x76f800:1024,0x76fc00:1024},{0x770000:256,0x770100:256,0x770200:16,0x770210:16,0x770280:64,0x7702c0:64,0x770300:256,0x770400:1024,0x770800:256,0x770a00:64,0x770a40:64,0x770f88:4,0x770f8c:4,0x771000:256,0x7712c0:16,0x7712d0:4,0x7712d4:4,0x7712e0:16,0x7712f0:16,0x771300:256,0x771400:1024,0x771b40:64,0x771b80:16,0x771b90:16,0x771ba0:16,0x771bb0:16,0x771bc0:64,0x771c00:256,0x771d00:256,0x771e30:16,0x771fc0:16,0x771fd0:16,0x772000:1024,0x772400:256,0x772500:64,0x772540:64,0x772580:64,0x7725c0:64,0x772600:64,0x772640:64,0x772680:64,0x7726c0:16,0x7726d0:16,0x7726e0:16,0x7726f0:16,0x772700:256,0x772800:64,0x772840:16,0x772880:64,0x7728c0:64,0x772900:256,0x772a00:16,0x772a10:16,0x772a80:4,0x772a84:4,0x772a88:4,0x772a8c:4,0x772ae0:16,0x772af0:16,0x772c00:256,0x772d00:256,0x773000:1024,0x773400:1024,0x773900:256,0x773a00:256,0x773b80:64,0x773bc0:64,0x773c00:256,0x773d00:256,0x773e00:256,0x773f20:16,0x773f30:16,0x774bd0:16,0x774e00:256,0x774f00:256,0x775000:256,0x7752d0:16,0x775400:1024,0x775800:1024,0x776000:1024,0x776400:1024,0x776c00:256,0x776d00:256,0x777000:1024,0x777400:1024,0x777800:1024,0x777c00:1024,0x778000:1024,0x778400:1024,0x778800:1024,0x778c00:1024,0x779000:1024,0x7794a0:16,0x7794b0:16,0x7797c0:64,0x77a0c8:4,0x77a0cc:4,0x77a178:4,0x77a17c:4,0x77a180:64,0x77a1c0:64,0x77a200:256,0x77a300:256,0x77a400:1024,0x77b000:1024,0x77b400:1024,0x77b800:1024,0x77bc00:1024,0x77e800:256,0x77e900:256,0x77eb80:64,0x77f800:1024,0x77fc60:4,0x77fc64:4,0x77fcf0:16,0x77fd00:256,0x77fe00:256,0x77ff00:256},{0x780000:1024,0x780400:1024,0x780800:1024,0x780c00:1024,0x781800:1024,0x781e00:256,0x781f00:256,0x782000:1024,0x782400:1024,0x782800:1024,0x782c00:1024,0x783000:256,0x783100:256,0x783400:256,0x783500:256,0x783600:256,0x783700:256,0x784000:1024,0x784400:1024,0x784820:16,0x784830:16,0x784880:64,0x7848c0:64,0x784c00:1024,0x785000:1024,0x785400:1024,0x785808:4,0x78580c:4,0x785a00:256,0x785b00:256,0x785c00:256,0x785e00:256,0x785f00:256,0x788000:1024,0x788400:64,0x788440:64,0x788480:64,0x7884c0:64,0x788500:256,0x788600:256,0x788700:256,0x788810:4,0x788814:4,0x788880:64,0x788900:64,0x788940:64,0x788f80:16,0x788f90:16,0x78c000:1024,0x78c400:1024,0x78c800:1024,0x78cc00:1024,0x78d000:1024,0x78d400:1024,0x78d800:1024,0x78dc00:1024,0x78e000:1024,0x78e400:1024,0x78e800:1024,0x78ec00:1024,0x78f000:1024,0x78f400:1024,0x78f800:1024,0x78fc00:1024},{0x790008:4,0x79000c:4,0x790010:16,0x790400:256,0x790500:256,0x790800:1024,0x790c00:1024,0x791000:1024,0x791400:1024,0x791800:1024,0x791c00:256,0x791d00:256,0x791e00:256,0x791f00:256,0x792000:1024,0x792400:256,0x792500:256,0x792600:256,0x792700:256,0x792800:1024,0x792e00:64,0x792e4c:4,0x792e80:64,0x792ec0:64,0x792f00:256,0x793000:256,0x793100:256,0x793208:4,0x79320c:4,0x793300:256,0x7934a0:16,0x7934b0:16,0x7934d0:16,0x7934e0:16,0x7934f0:16,0x7936b0:4,0x7936b4:4,0x793700:64,0x793800:256,0x793900:256,0x793a00:64,0x793a40:64,0x793a88:4,0x793a8c:4,0x793a90:16,0x793aa0:4,0x793aa4:4,0x793b00:256,0x793c00:1024,0x794400:1024,0x794c00:256,0x794d00:256,0x794f80:64,0x795900:256,0x796480:64,0x7964c0:64,0x796500:64,0x7965d0:16,0x79c000:256,0x79c100:256,0x79c200:256,0x79c300:256,0x79c400:1024,0x79c8c0:4,0x79c8c4:4,0x79c900:256,0x79cc00:1024,0x79e000:1024,0x79e400:1024,0x79e800:1024,0x79ec00:1024,0x79f800:1024,0x79ff00:256},{0x7a0040:64,0x7a0080:64,0x7a00c0:64,0x7a0400:1024,0x7a0800:256,0x7a0900:256,0x7a0a00:64,0x7a0a40:64,0x7a0a80:4,0x7a0a84:1,0x7a0a85:1,0x7a0a86:1,0x7a0a87:1,0x7a0a88:1,0x7a0a89:1,0x7a0a8a:1,0x7a0a8b:1,0x7a0a8c:4,0x7a0a90:16,0x7a0aa0:16,0x7a0ab0:16,0x7a0ac0:64,0x7a0b00:64,0x7a0b40:64,0x7a0c00:256,0x7a0d00:256,0x7a0e00:256,0x7a3000:256,0x7a3100:64,0x7a3300:256,0x7a4000:1024,0x7a4400:1024,0x7a4800:1024,0x7a4c00:1024,0x7a5000:1024,0x7a5400:1024,0x7a5800:1024,0x7a5c00:1024,0x7a6000:256,0x7a6100:256,0x7a6600:16,0x7a6640:16,0x7a6650:16,0x7a7000:1024,0x7a7700:256,0x7a8064:4,0x7a8078:4,0x7a807c:4,0x7a8800:1024,0x7a8c00:1024,0x7a9080:64,0x7a90c0:64,0x7a98c0:64,0x7a9c00:1024,0x7abc00:1024,0x7ac000:1024,0x7ac600:256,0x7ac828:4,0x7ac82c:4,0x7ac840:64,0x7ac930:16,0x7acc00:1024,0x7ae000:1024,0x7ae400:1024,0x7ae800:1024,0x7aec00:1024,0x7af000:1024,0x7af400:1024,0x7af818:4,0x7af81c:4,0x7af830:16,0x7aff40:4,0x7aff44:4},{0x7b0080:64,0x7b0400:1024,0x7b0800:1024,0x7b0c00:1024,0x7b3180:64,0x7b31c0:64,0x7b32a0:16,0x7b32b0:16,0x7b3400:1024,0x7b3800:256,0x7b3900:256,0x7b3a00:64,0x7b3a40:64,0x7b3a80:64,0x7b3ac0:16,0x7b3ad0:16,0x7b3ae0:16,0x7b3af0:16,0x7b3b00:256,0x7b3c00:256,0x7b3d00:256,0x7b3e00:256,0x7b4000:1024,0x7b4400:1024,0x7b4800:1024,0x7b4c00:1024,0x7b5000:1024,0x7b5400:1024,0x7b5800:1024,0x7b5c00:1024,0x7b6000:256,0x7b6100:256,0x7b6200:64,0x7b6240:64,0x7b6380:64,0x7b63c0:64,0x7b6400:16,0x7b6410:16,0x7b6500:256,0x7b6700:64,0x7b6740:64,0x7b6c80:16,0x7b6cd0:16,0x7b7000:1024,0x7b7400:1024,0x7b7800:1024,0x7b7c00:1024,0x7b8000:1024,0x7b8400:1024,0x7b8850:16,0x7b8900:256,0x7b8a00:256,0x7b8b00:256,0x7b9000:1024,0x7b9400:256,0x7b9500:256,0x7b9600:256,0x7b9700:256,0x7b9800:1024,0x7b9c00:1024,0x7ba000:1024,0x7ba400:1024,0x7ba800:1024,0x7bac00:256,0x7bad00:256,0x7bae00:256,0x7baf00:256,0x7bb03c:4,0x7bb050:16,0x7bb100:256,0x7bb200:256,0x7bb300:256,0x7bb400:1024,0x7bb800:1024,0x7bbc00:1024,0x7bc400:256,0x7bc500:256,0x7bc780:64,0x7bc7c0:64,0x7bce00:256,0x7bcf00:256,0x7be800:1024,0x7bf200:64,0x7bf240:64,0x7bf2c0:4,0x7bf2c4:4,0x7bf400:1024,0x7bf900:256,0x7bfd00:256,0x7bfe60:4,0x7bfe64:4},{0x7c0640:64,0x7c0e00:256,0x7c0f00:256,0x7c1000:256,0x7c1100:256,0x7c1400:256,0x7c1500:16,0x7c1510:16,0x7c1520:16,0x7c1530:16,0x7c1540:64,0x7c1580:64,0x7c15c0:64,0x7c1600:256,0x7c1700:256,0x7c1cc0:64,0x7c1d00:64,0x7c1d40:64,0x7c1f00:256,0x7c2870:16,0x7c2880:64,0x7c28c0:16,0x7c28d0:16,0x7c28f0:4,0x7c2a00:64,0x7c2a40:64,0x7c2a80:64,0x7c2ac0:64,0x7c2f00:64,0x7c4000:256,0x7c4100:256,0x7c4200:64,0x7c4240:64,0x7c4300:256,0x7c4400:1024,0x7c4800:256,0x7c4900:256,0x7c4a00:256,0x7c4b00:256,0x7c4c00:1024,0x7c5800:256,0x7c5900:64,0x7c5940:64,0x7c5980:64,0x7c59c0:64,0x7c5a00:256,0x7c5b00:256,0x7c5c00:1024,0x7c6c08:4,0x7c6c0c:4,0x7c6c28:4,0x7c6c2c:4,0x7c6d60:4,0x7c6d64:4,0x7c7000:256,0x7c7100:256,0x7c7200:256,0x7c7300:256,0x7c7400:256,0x7c7500:256,0x7c7600:256,0x7c7700:256,0x7c7e00:256,0x7c7f00:256,0x7c8000:1024,0x7c8400:1024,0x7c9380:64,0x7c93c0:64,0x7c9700:256,0x7c9800:256,0x7c9c00:256,0x7ca000:256,0x7ca100:256,0x7ca200:256,0x7ca300:256,0x7ca400:1024,0x7cac00:256,0x7cad00:256,0x7cae00:256,0x7caf00:256,0x7cc000:256,0x7cc100:256,0x7cc400:256,0x7cc800:1024,0x7ccc00:1024,0x7cdc00:1024,0x7ce000:256,0x7ce100:256,0x7ce200:256,0x7ce300:256,0x7ce400:1024,0x7ce800:256,0x7ce900:256,0x7cea00:256,0x7ceb00:256,0x7cec00:1024,0x7cf000:64,0x7cf040:64,0x7cf080:64,0x7cf200:256,0x7cf3c0:64,0x7cf800:64,0x7cf840:64,0x7cf900:256,0x7cfa00:256,0x7cfb00:256,0x7cfe00:64},{0x7d1fc0:64,0x7d2000:256,0x7d2100:256,0x7d2200:256,0x7d2300:64,0x7d2340:64,0x7d2380:64,0x7d23c0:64,0x7d2400:1024,0x7d2800:1024,0x7d2c00:1024,0x7d3a80:64,0x7d3ac0:64,0x7d3d80:64,0x7d3dc0:64,0x7d3e00:64,0x7d4000:1024,0x7d4400:1024,0x7d4800:256,0x7d4900:256,0x7d4a00:256,0x7d4b00:256,0x7d4c00:64,0x7d4c40:64,0x7d4c80:64,0x7d4cc0:64,0x7d4d00:256,0x7d4e00:256,0x7d4f00:256,0x7d5000:1024,0x7d5400:1024,0x7d5800:1024,0x7d5c00:1024,0x7d6000:256,0x7d6100:256,0x7d6200:256,0x7d6800:1024,0x7d6c00:1024,0x7d7000:1024,0x7d7400:1024,0x7d7800:1024,0x7d7c00:1024,0x7da900:256,0x7dab00:256,0x7dd000:64,0x7dd200:256,0x7dd300:256,0x7dd500:64,0x7dd540:64,0x7dd660:16,0x7dd670:16,0x7dd700:64,0x7dd800:256,0x7dd900:256,0x7dda00:256,0x7ddb00:256,0x7ddc00:256,0x7ddd00:256,0x7dde00:256,0x7ddf00:256,0x7dfe80:64,0x7dfec0:64},{},{},{},{},{},{},{},{},{},{},{},{0x893b58:4},{},{0x8b0538:4,0x8b053c:4,0x8b0550:4,0x8b055c:4,0x8b056c:4,0x8b0900:256,0x8b8100:256,0x8b9400:256,0x8b9b00:256,0x8b9f00:256,0x8baa00:256,0x8bb000:256,0x8bb700:256,0x8bba00:256,0x8bbd00:256,0x8bc400:1024,0x8bc800:1024,0x8bcc00:1024,0x8bd000:1024,0x8bd400:1024,0x8bd900:256,0x8bdb00:256,0x8bdc00:256,0x8bdd00:256,0x8be000:256,0x8be200:256,0x8be300:256},{0x8c4b00:256,0x8c8f00:256,0x8ccd00:256,0x8cce00:256,0x8ccf00:256,0x8cd200:256,0x8ce000:256,0x8ced00:256,0x8cf000:256,0x8cf300:256,0x8cf600:256,0x8cf900:256,0x8cfa00:256,0x8cff00:256},{},{},{},{0x900000:256,0x900700:256,0x900c00:256,0x903400:256,0x907b00:256,0x90ff00:256},{},{0x92c438:4,0x92c444:4,0x92c448:4,0x92c44c:4},{},{},{},{0x960000:256,0x967300:256,0x967900:256,0x967a00:256,0x968188:4,0x968198:4,0x9681c0:4,0x9681d8:4,0x9681fc:4,0x968a00:256,0x968b00:256,0x96df00:256,0x96f200:4,0x96f204:4,0x96f208:4,0x96f21c:4,0x96f22c:4,0x96f230:4,0x96f234:4,0x96f238:4,0x96f24c:4,0x96f250:4,0x96f25c:4,0x96f260:4,0x96f270:4,0x96f274:4,0x96f278:4,0x96f298:4,0x96f29c:4,0x96f2a0:4,0x96f2a4:4,0x96f2a8:4,0x96f2b8:4,0x96f2bc:4,0x96f2c0:4,0x96f2d4:4,0x96f2e0:4,0x96f2e8:4,0x96f2ec:4,0x96f2f0:4,0x96f2f4:4,0x96f2f8:4,0x96ff00:256},{},{0x986880:64,0x9868c0:64},{0x990000:256,0x990300:256,0x992200:256,0x992300:256,0x992400:256,0x992500:256,0x996300:256,0x996500:256,0x997600:256,0x997700:256},{},{},{},{0x9d0000:256,0x9d1200:256,0x9d3d00:256,0x9d7a00:256,0x9d9400:256,0x9d9c00:256,0x9dff00:256},{},{0x9fe200:256},{0xa013d0:4,0xa013d4:4,0xa013d8:4,0xa01430:4,0xa0ca3c:4,0xa0ee40:4},{0xa1cf00:256},{0xa26900:256},{0xa30000:256,0xa32f04:4,0xa33500:4,0xa33504:4,0xa33508:4,0xa3350c:4,0xa33524:4,0xa33528:4,0xa3352c:4,0xa33530:4,0xa33534:4,0xa33538:4,0xa3353c:4,0xa33540:4,0xa33558:4,0xa3355c:4,0xa33560:4,0xa33564:4,0xa33568:4,0xa3356c:4,0xa33570:4,0xa33574:4,0xa33578:4,0xa3357c:4,0xa33580:4,0xa33584:4,0xa33588:4,0xa335a0:4,0xa335a4:4,0xa335a8:4,0xa335ac:4,0xa335bc:4,0xa335dc:4,0xa335f0:4,0xa37d00:256,0xa38e00:256,0xa3b100:256,0xa3b300:256,0xa3cc00:256},{},{},{0xa66f00:256},{0xa78b00:256,0xa7bd00:256,0xa7dcf4:4},{0xa8a000:256},{},{0xaab300:256},{0xab0800:1024,0xab0c00:1024,0xab2200:256,0xab2300:256,0xab2400:1024,0xab2800:1024,0xab2c00:1024,0xab5000:1024,0xab5400:1024,0xab5800:1024,0xab5c00:1024,0xab6800:1024,0xab6c00:1024,0xab7000:1024,0xab7400:1024,0xab7800:1024,0xab7c00:1024,0xabd000:1024,0xabd400:1024,0xabd800:1024,0xabdc00:1024},{},{},{},{0xaf0000:1024,0xaf0400:1024,0xaf0800:1024,0xaf0c00:1024,0xaf1000:1024,0xaf1400:1024,0xaf1800:1024,0xaf1e00:256,0xaf1f00:256,0xaf2a00:256,0xaf2b00:256,0xaf2c00:256,0xaf2e00:256,0xaf2f00:256,0xaf3000:1024,0xaf3400:1024,0xaf3800:1024,0xaf3c00:1024,0xaf4000:1024,0xaf4400:1024,0xaf4800:1024,0xaf4c00:1024,0xaf5000:1024,0xaf5400:1024,0xaf5800:1024,0xaf5c00:1024,0xaf6600:256,0xaf6a80:64,0xaf6ac0:64,0xaf6f6c:4,0xaf6f90:4,0xaf6f94:4,0xaf6f98:4,0xaf6f9c:4,0xaf6fa0:4,0xaf6fa4:4,0xaf6fa8:4,0xaf6fac:4,0xaf6fb8:4,0xaf9200:256,0xaf9300:256,0xaf9400:1024,0xaf9800:1024,0xaf9e60:4,0xafa000:1024,0xafa400:1024,0xafa800:1024,0xafac00:1024,0xafb09c:4,0xafb0b0:4,0xafb0bc:4,0xafb200:256,0xafb880:64,0xafb900:256,0xafba00:256,0xafbb00:256,0xafbc00:1024},{},{},{},{},{0xb44c00:256,0xb44d00:256,0xb44e00:256,0xb44f00:256,0xb45400:256,0xb45500:256,0xb45600:256,0xb45800:1024,0xb45e38:4,0xb45e3c:4,0xb45e60:16,0xb45e78:4,0xb45e7c:4,0xb45f80:64,0xb45fc0:64,0xb46000:1024,0xb46400:1024,0xb46800:1024,0xb46c00:1024,0xb47000:1024,0xb47400:1024,0xb47800:1024,0xb47c00:1024,0xb48180:64,0xb481c0:64,0xb48200:256,0xb48800:1024,0xb48c00:1024,0xb49410:4,0xb49414:4,0xb49498:4,0xb4949c:4,0xb494d8:4,0xb494dc:4,0xb494e0:16,0xb494f0:16,0xb49580:16,0xb49590:16,0xb496a0:16,0xb496b0:16,0xb49800:1024,0xb49c00:1024,0xb4a000:1024,0xb4a400:1024,0xb4a800:1024,0xb4ac00:1024,0xb4b270:4,0xb4b274:4,0xb4b2c0:64,0xb4b800:1024,0xb4bc00:64,0xb4bc40:64,0xb4bd94:4,0xb4c8fc:4,0xb4c900:256,0xb4ca00:256,0xb4cb00:256,0xb4d000:256,0xb4d100:256,0xb4d2d4:4,0xb4d2e0:16,0xb4d2f0:16,0xb4d400:256,0xb4d500:256,0xb4dee0:16,0xb4def0:16,0xb4df00:256,0xb4e900:64,0xb4e940:16,0xb4e950:16,0xb4e990:4,0xb4eb40:16,0xb4eb50:16,0xb4eb70:4,0xb4eb88:4},{},{0xb61090:4,0xb61094:4,0xb610c0:16,0xb610d0:16,0xb61200:64,0xb61240:64,0xb617b8:4,0xb617bc:4,0xb617c8:4,0xb617cc:4,0xb62000:1024,0xb62400:1024,0xb62800:1024,0xb62c00:1024,0xb63060:16,0xb63070:16,0xb63100:256,0xb63200:16,0xb63270:16,0xb63300:256,0xb63600:64,0xb63640:64,0xb636f4:4,0xb63d00:256,0xb65000:1024,0xb65400:1024,0xb65800:1024,0xb65c00:256,0xb66000:1024,0xb66400:1024,0xb66800:1024,0xb66c00:1024,0xb67000:1024,0xb67400:1024,0xb67800:1024,0xb67c00:1024,0xb68000:1024,0xb68400:1024,0xb68800:1024,0xb68c00:1024,0xb69000:1024,0xb69400:1024,0xb69d00:256,0xb6a040:16,0xb6a050:16,0xb6ae00:256,0xb6af00:256,0xb6c800:1024,0xb6cc00:1024,0xb6ec80:64,0xb6ecc0:64,0xb6ed18:4,0xb6ed1c:4,0xb6ee00:256,0xb6ef00:16,0xb6ef10:16,0xb6f000:1024,0xb6f400:1024,0xb6fe00:256},{0xb70000:1024,0xb70400:1024,0xb70800:1024,0xb70c00:1024,0xb71000:1024,0xb71400:1024,0xb71800:1024,0xb71c00:1024,0xb72000:1024,0xb72400:1024,0xb72800:1024,0xb72c00:1024,0xb73000:1024,0xb73400:1024,0xb73800:1024,0xb73c00:1024,0xb74000:1024,0xb74400:1024,0xb74ea0:4,0xb74ea4:4,0xb74eb4:4,0xb751ac:4,0xb751b4:4,0xb75400:256,0xb75500:256,0xb75b80:4,0xb75b88:4,0xb75b8c:4,0xb75b90:16,0xb75c00:1024,0xb78000:1024,0xb78400:1024,0xb78800:1024,0xb78c00:1024,0xb79000:1024,0xb79400:1024,0xb79800:1024,0xb79c00:1024,0xb7a000:1024,0xb7a400:1024,0xb7a800:256,0xb7a900:256,0xb7aa00:256,0xb7ac00:1024,0xb7b600:16,0xb7b610:16,0xb7b800:1024,0xb7bc00:1024,0xb7c000:1024,0xb7c400:1024,0xb7c800:1024,0xb7cc00:1024,0xb7d000:1024,0xb7d400:1024,0xb7d800:1024,0xb7dc00:1024,0xb7e000:1024,0xb7e400:1024,0xb7e800:1024,0xb7ec00:1024,0xb7f000:1024,0xb7f400:1024,0xb7f800:1024,0xb7fc00:1024},{},{},{},{},{},{},{},{},{0xc07c9a:1,0xc0bcaa:1},{},{},{},{},{},{},{},{},{},{0xca0064:1,0xca0065:1,0xca007a:1,0xca007b:1,0xca00b0:4,0xca0380:1,0xca0381:1,0xca0480:16,0xca0490:16,0xca04fc:4,0xca05d0:4,0xca05d4:4,0xca05d8:4,0xca0606:1,0xca0607:1,0xca0642:1,0xca0643:1,0xca0648:1,0xca0649:1,0xca0657:1,0xca0658:1,0xca0659:1,0xca065c:1,0xca065d:1,0xca0667:1,0xca066c:1,0xca066e:1,0xca066f:1,0xca0672:1,0xca06b0:16,0xca0800:1,0xca0802:1,0xca0803:1,0xca0804:1,0xca0805:1,0xca080c:1,0xca0818:1,0xca084d:1,0xca0880:16,0xca0890:16,0xca08c0:16,0xca0920:1,0xca0922:1,0xca0923:1,0xca0930:1,0xca0931:1,0xca0933:1,0xca0934:1,0xca0935:1,0xca0936:1,0xca0939:1,0xca093a:1,0xca093b:1,0xca0a40:16,0xca0a70:4,0xca0a74:4,0xca0a78:4,0xca0a7c:4,0xca0c01:1,0xca0c02:1,0xca0c11:1,0xca0c12:1,0xca0c13:1,0xca0c48:1,0xca0c54:1,0xca0c55:1,0xca0c60:1,0xca0c62:1,0xca0c63:1,0xca0c6a:1,0xca0c6f:1,0xca0c74:1,0xca0e40:1,0xca0e41:1,0xca0e45:1,0xca0e49:1,0xca0e4a:1,0xca0e4b:1,0xca0e4c:1,0xca0e4e:1,0xca0e4f:1,0xca0e58:1,0xca0e61:1,0xca0e68:1,0xca0e69:1,0xca0e6c:1,0xca0e6d:1,0xca0e6f:1,0xca0e72:1,0xca0e73:1,0xca0e76:1,0xca0e77:1,0xca0e7c:1,0xca0e7d:1,0xca0e7f:1,0xca0e81:1,0xca0e87:1,0xca0e88:1,0xca0e95:1,0xca0e97:1,0xca0e9d:1,0xca0e9e:1,0xca0e9f:1,0xca0ea9:1,0xca0eaa:1,0xca0eab:1,0xca0eac:4,0xca0eb0:1,0xca0eb8:1,0xca0eb9:1,0xca0ed0:1,0xca0ed1:1,0xca0ed5:1,0xca0edb:1,0xca0edc:1,0xca0ede:1,0xca0edf:1,0xca0ee1:1,0xca0ee2:1,0xca0ee3:1,0xca0ee7:1,0xca0eeb:1,0xca0eec:1,0xca0eed:1,0xca0eee:1,0xca0eef:1,0xca0ef6:1,0xca0efb:1,0xca1442:1,0xca144f:1,0xca1457:1,0xca1458:1,0xca1459:1,0xca145a:1,0xca145e:1,0xca145f:1,0xca1472:1,0xca1475:1,0xca1478:1,0xca147d:1,0xca147f:1,0xca1530:4,0xca1534:4,0xca1538:4,0xca153c:4,0xca1583:1,0xca1584:1,0xca158d:1,0xca158e:1,0xca1593:1,0xca1594:1,0xca1596:1,0xca1597:1,0xca1598:1,0xca1599:1,0xca159a:1,0xca159c:1,0xca16f8:4,0xca16fc:4,0xca1b88:1,0xca1b89:1,0xca2600:1,0xca2601:1,0xca2602:1,0xca2603:1,0xca2608:4,0xca260c:4,0xca2630:16,0xca2640:16,0xca2650:16,0xca2660:16,0xca2670:16,0xca2680:1,0xca2681:1,0xca2682:1,0xca2683:1,0xca2684:1,0xca2685:1,0xca2686:1,0xca2687:1,0xca2688:1,0xca2689:1,0xca268a:1,0xca268c:1,0xca268d:1,0xca268e:1,0xca268f:1,0xca2692:1,0xca2693:1,0xca2695:1,0xca2696:1,0xca2697:1,0xca2698:1,0xca2699:1,0xca269a:1,0xca269b:1,0xca269c:1,0xca269e:1,0xca269f:1,0xca26a0:1,0xca26a1:1,0xca26a4:4,0xca26a8:1,0xca26a9:1,0xca26aa:1,0xca26ab:1,0xca26b0:1,0xca26b1:1,0xca26b8:4,0xca26bc:4,0xca26c0:64,0xca2804:1,0xca2805:1,0xca2807:1,0xca280f:1,0xca2887:1,0xca2888:1,0xca288c:1,0xca288f:1,0xca2890:1,0xca2891:1,0xca2896:1,0xca289b:1,0xca289c:1,0xca289e:1,0xca289f:1,0xca28a2:1,0xca2908:1,0xca2909:1,0xca290b:1,0xca290c:1,0xca290d:1,0xca2980:1,0xca2982:1,0xca2983:1,0xca2998:4,0xca299c:4,0xca29c0:1,0xca29c4:4,0xca29c8:4,0xca29f0:16,0xca2b4c:4,0xca2b90:16,0xca2c10:16,0xca2c30:4,0xca2c43:1,0xca2c4a:1,0xca2c81:1,0xca2c84:1,0xca2c85:1,0xca2c92:1,0xca2c93:1,0xca2d00:1,0xca2d01:1,0xca2d02:1,0xca2d0f:1,0xca2d10:16,0xca2e10:1,0xca2e11:1,0xca2e12:1,0xca2e14:1,0xca2e15:1,0xca2e20:16,0xca2e30:16,0xca2e80:1,0xca2ee0:16,0xca2f52:1,0xca2f53:1,0xca2f60:4,0xca2f64:4,0xca2f68:4,0xca2f6c:4,0xca2f7e:1,0xca2f80:1,0xca2f82:1,0xca2f83:1,0xca39c0:4,0xca39c4:4,0xca39c8:4,0xca39cc:4,0xca39d4:4,0xca39d8:4,0xca39f0:16,0xca3a00:1,0xca3a68:4,0xca3a70:4,0xca3b00:1,0xca3bd4:4,0xca3be8:1,0xca3be9:1,0xca3bec:1,0xca3c30:4,0xca3c34:4,0xca3c60:4,0xca3c64:4,0xca3c70:16,0xca3c84:4,0xca3c88:4,0xca3c8c:4,0xca3c90:16,0xca3d44:4,0xca3d4c:4,0xca3d58:4,0xca3e70:4,0xca3ef8:4,0xca3efc:1,0xca3eff:1,0xca3f51:1,0xca3f52:1,0xca3f53:1,0xca3f54:4,0xca3f58:4,0xca3f5c:4,0xca3fa0:16,0xca3fb0:16,0xca3ff8:4,0xca4100:4,0xca4104:4,0xca4108:1,0xca4109:1,0xca4160:4,0xca4164:4,0xca4168:4,0xca416c:4,0xca42a8:4,0xca4300:4,0xca4504:4,0xca4510:16,0xca4600:16,0xca4610:16,0xca4660:16,0xca46c0:16,0xca4720:4,0xca4724:4,0xca4728:4,0xca472c:4,0xca4828:4,0xca482c:4,0xca4850:16,0xca4870:4,0xca4874:4,0xca4878:4,0xca487c:4,0xca4980:4,0xca49f0:4,0xca49f4:4,0xca49f8:4,0xca49fc:4,0xca4a08:4,0xca4a0c:4,0xca4a50:16,0xca4ae8:4,0xca4afe:1,0xca4aff:1,0xca4bd0:16,0xca4bfc:4,0xca4cfc:4,0xca4d50:4,0xca4d54:4,0xca4d5c:4,0xca4e08:4,0xca4e0c:4,0xca4fe0:4,0xca4fe4:4,0xca4ff8:4,0xca50c0:4,0xca50c4:4,0xca50c8:4,0xca50cc:4,0xca5100:4,0xca51b0:4,0xca51b4:4,0xca51b8:4,0xca51bc:4,0xca53fc:4,0xca5400:4,0xca5404:4,0xca5408:4,0xca540c:4,0xca5410:1,0xca5411:1,0xca5418:4,0xca541c:4,0xca55d0:16,0xca56f9:1,0xca56fc:4,0xca5750:16,0xca5820:4,0xca5908:4,0xca590c:4,0xca5960:4,0xca596c:4,0xca59e8:4,0xca59ec:4,0xca5a00:4,0xca5a10:4,0xca5a14:4,0xca5a18:4,0xca5a1c:4,0xca5a60:4,0xca5a64:4,0xca5a68:4,0xca5a6c:4,0xca5a70:16,0xca5ac4:1,0xca5ae0:16,0xca5b00:4,0xca5b60:16,0xca5b80:4,0xca5bb0:16,0xca5be0:16,0xca5bf0:16,0xca5c00:4,0xca5c08:4,0xca5c0c:4,0xca5c30:16,0xca5cfc:4,0xca5d00:4,0xca5dfc:4,0xca5e5c:4,0xca5f00:4,0xca5f04:4,0xca5f08:4,0xca5f0c:4,0xca5f10:16,0xca5ff0:4,0xca5ff4:4,0xca5ffc:4,0xca6000:64,0xca6040:4,0xca6044:4,0xca6048:4,0xca604c:4,0xca6050:16,0xca6060:4,0xca6064:4,0xca6068:4,0xca606c:4,0xca6070:16,0xca6080:4,0xca6084:4,0xca6088:4,0xca608c:4,0xca6090:16,0xca60a0:4,0xca60a4:4,0xca60a8:4,0xca60ac:4,0xca60b0:16,0xca60c0:4,0xca60c4:4,0xca60c8:4,0xca60cc:4,0xca60d0:16,0xca60e0:4,0xca60e4:4,0xca60e8:4,0xca60ec:4,0xca60f0:16,0xca6100:4,0xca6104:4,0xca6108:4,0xca610c:4,0xca6110:16,0xca6120:16,0xca6130:16,0xca6140:16,0xca6150:16,0xca6160:16,0xca6170:16,0xca6180:64,0xca61c0:16,0xca61d0:16,0xca61e0:4,0xca61e4:4,0xca61e8:4,0xca61ec:4,0xca61f0:16,0xca6200:4,0xca6204:4,0xca6208:4,0xca620c:4,0xca6210:16,0xca6220:4,0xca6224:4,0xca6228:4,0xca622c:4,0xca6230:16,0xca6240:16,0xca6250:16,0xca6260:4,0xca6264:4,0xca6268:4,0xca626c:4,0xca6270:16,0xca6280:16,0xca6290:16,0xca62a0:4,0xca62a4:4,0xca62a8:4,0xca62ac:4,0xca62b0:16,0xca62c0:4,0xca62c4:4,0xca62c8:4,0xca62cc:4,0xca62d0:16,0xca62e0:4,0xca62e4:4,0xca62e8:4,0xca62ec:4,0xca62f0:16,0xca6300:64,0xca6340:16,0xca6350:16,0xca6360:4,0xca6364:4,0xca6368:4,0xca636c:4,0xca6370:16,0xca6380:16,0xca6390:16,0xca63a0:4,0xca63a4:4,0xca63a8:4,0xca63ac:4,0xca63b0:16,0xca63c0:4,0xca63c4:4,0xca63c8:4,0xca63cc:4,0xca63d0:16,0xca63e0:4,0xca63e4:4,0xca63e8:4,0xca63ec:4,0xca63f0:16,0xca6400:4,0xca6404:4,0xca6408:4,0xca640c:4,0xca6410:16,0xca6420:16,0xca6430:16,0xca6440:4,0xca6444:4,0xca6448:4,0xca644c:4,0xca6450:16,0xca6460:4,0xca6464:4,0xca6468:4,0xca646c:4,0xca6470:16,0xca6480:4,0xca6484:4,0xca6488:4,0xca648c:4,0xca6490:16,0xca64a0:4,0xca64a4:4,0xca64a8:4,0xca64ac:4,0xca64b0:16,0xca64c0:4,0xca64c4:4,0xca64c8:4,0xca64cc:4,0xca64d0:16,0xca64e0:16,0xca64f0:16,0xca6500:64,0xca6540:16,0xca6550:16,0xca6560:16,0xca6570:16,0xca6580:64,0xca65c0:16,0xca65d0:16,0xca65e0:4,0xca65e4:4,0xca65e8:4,0xca65ec:4,0xca65f0:16,0xca6600:16,0xca6610:16,0xca6620:16,0xca6630:16,0xca6640:64,0xca6680:4,0xca6684:4,0xca6688:4,0xca668c:4,0xca6690:16,0xca66a0:16,0xca66b0:16,0xca66c0:4,0xca66c4:4,0xca66c8:4,0xca66cc:4,0xca66d0:16,0xca66e0:4,0xca66e4:4,0xca66e8:4,0xca66ec:4,0xca66f0:16,0xca6700:4,0xca6704:4,0xca6708:4,0xca670c:4,0xca6710:16,0xca6720:16,0xca6730:16,0xca6740:16,0xca6750:16,0xca6760:4,0xca6764:4,0xca6768:4,0xca676c:4,0xca6770:16,0xca6780:64,0xca67c0:16,0xca67d0:16,0xca67e0:4,0xca67e4:4,0xca67e8:4,0xca67ec:4,0xca67f0:16,0xca6800:256,0xca6900:256,0xca6a00:256,0xca6b00:64,0xca6b40:64,0xca6b80:64,0xca6bc0:64,0xca6c00:256,0xca6d00:256,0xca6e00:64,0xca6e40:64,0xca6e80:64,0xca6ec0:64,0xca6f00:64,0xca6f40:64,0xca6f80:16,0xca6f90:16,0xca6fa0:16,0xca6fb0:16,0xca6fc0:64,0xca7000:256,0xca7100:16,0xca7110:16,0xca7120:16,0xca7130:16,0xca7140:64,0xca7180:64,0xca71c0:16,0xca71d0:16,0xca71e0:16,0xca71f0:16,0xca7200:16,0xca7210:16,0xca7220:16,0xca7230:16,0xca7240:64,0xca7280:64,0xca72c0:64,0xca7300:16,0xca7310:16,0xca7320:16,0xca7330:16,0xca7340:64,0xca7380:64,0xca73c0:64,0xca7400:16,0xca7410:16,0xca7420:16,0xca7430:16,0xca7440:16,0xca7450:16,0xca7460:16,0xca7470:16,0xca7480:64,0xca74c0:64,0xca7500:64,0xca7540:64,0xca7580:64,0xca75c0:64,0xca7600:16,0xca7610:16,0xca7620:16,0xca7630:16,0xca7640:64,0xca7680:64,0xca76c0:64,0xca7700:16,0xca7710:16,0xca7720:16,0xca7730:16,0xca7740:16,0xca7750:16,0xca7760:16,0xca7770:16,0xca7780:64,0xca77c0:64,0xca7800:64,0xca7840:64,0xca7880:64,0xca78c0:64,0xca7900:256,0xca7a00:4,0xca7a04:4,0xca7a20:4,0xca7a24:4,0xca7a40:16,0xca7a50:16,0xca7a70:4,0xca7a74:4,0xca7a78:4,0xca7a7c:4,0xca7a80:1,0xca7a84:1,0xca7b60:16,0xca7b74:4,0xca7b78:4,0xca7c10:4,0xca7c14:4,0xca7c18:4,0xca7d70:16,0xca7db0:16,0xca7f00:1,0xca7f01:1,0xca7f02:1,0xca7f03:1,0xca7f04:1,0xca7f05:1,0xca7f06:1,0xca7f07:1,0xca7f0c:4,0xca7f10:16,0xca7f28:4,0xca7f2c:4,0xca7f30:16,0xca7f70:16,0xca7f80:16,0xca7f90:16,0xca7fa0:4,0xca7fa4:4,0xca7fc0:1,0xca7fc1:1,0xca7fc2:1,0xca7fc3:1,0xca7fc4:4,0xca7fc8:4,0xca7fcc:4,0xca7fd0:1,0xca7fd1:1,0xca7fd4:4,0xca7fd8:4,0xca7fdc:4,0xca7fe0:16,0xca7ff0:16,0xca8200:16,0xca8210:16,0xca82e0:16,0xca82f0:16,0xca8310:4,0xca8314:4,0xca8330:16,0xca83d0:16,0xca8520:16,0xca863a:1,0xca8680:16,0xca86d0:4,0xca86d4:4,0xca86d8:4,0xca86dc:4,0xca8830:16,0xca88d0:16,0xca88e0:16,0xca88f8:4,0xca89e7:1,0xca8c8c:4,0xca8c90:4,0xca8c94:4,0xca8c98:4,0xca8c9c:4,0xca8da0:16,0xca8db0:16,0xca8e10:16,0xca8f04:4,0xca8f10:16,0xca8f20:16,0xca8f38:4,0xca8f3c:4,0xca8f64:4,0xca8f68:4,0xca92a0:16,0xca92bc:4,0xca92c4:4,0xca92c8:4,0xca92cc:4,0xca9390:16,0xca9420:16,0xca9440:16,0xca9450:16,0xca9460:16,0xca9470:16,0xca9520:16,0xca9530:16,0xca95a0:16,0xca95b0:16,0xca95e0:16,0xca95f0:16,0xca9610:16,0xca9620:16,0xca9638:4,0xca96c0:16,0xca96e0:16,0xca96f0:16,0xca9700:4,0xca9780:16,0xca9790:16,0xca98b0:16,0xca9900:4,0xca9930:16,0xca9dc0:16,0xca9dd0:16,0xca9ea0:16,0xca9eb0:16,0xcaa08c:4,0xcaa09c:4,0xcaa0b0:16,0xcaa243:1,0xcaa24b:1,0xcaa400:16,0xcaa460:16,0xcaa470:16,0xcaa560:16,0xcaa5b0:16,0xcaa5d0:16,0xcaa5ef:1,0xcaa5f0:1,0xcaa5f1:1,0xcaa5f3:1,0xcaa5f5:1,0xcaa5fb:1,0xcaa5fc:4,0xcaa6e0:16,0xcaa6f0:16,0xcaa850:4,0xcaa880:4,0xcaa884:4,0xcaa888:4,0xcaa88c:4,0xcaa8a0:16,0xcaa8b0:16,0xcaaa80:16,0xcaaa90:16,0xcaaad8:4,0xcaaadc:4,0xcaaae0:16,0xcaaaf0:16,0xcaabd8:4,0xcaabdc:4,0xcaabeb:1,0xcaac00:4,0xcaad00:4,0xcaad08:4,0xcaad0c:4,0xcaad70:4,0xcaad78:4,0xcaade0:16,0xcaadf0:16,0xcaae40:16,0xcaae7c:4,0xcab0e0:16,0xcab0f0:16,0xcab3a0:4,0xcab3a4:4,0xcab3a8:4,0xcab3ac:4,0xcab3f0:16,0xcab480:16,0xcab490:16,0xcab4d0:4,0xcab4d4:4,0xcab508:4,0xcab51c:4,0xcab570:16,0xcab620:16,0xcab6c0:16,0xcab6d0:16,0xcabd00:64,0xcabd50:16,0xcabdb8:4,0xcabdbc:4,0xcabf00:1,0xcabf44:4,0xcabf48:4,0xcabf4c:4,0xcabf50:16,0xcac000:1024,0xcac400:1024,0xcac800:1024,0xcacc00:1024},{0xcb0004:4,0xcb000a:1,0xcb000b:1,0xcb0012:1,0xcb0018:1,0xcb002a:1,0xcb002b:1,0xcb002d:1,0xcb002e:1,0xcb002f:1,0xcb0051:1,0xcb0052:1,0xcb0053:1,0xcb005a:1,0xcb005b:1,0xcb0060:1,0xcb0061:1,0xcb0068:4,0xcb006c:4,0xcb0072:1,0xcb0073:1,0xcb007a:1,0xcb0080:1,0xcb0082:1,0xcb0083:1,0xcb0084:4,0xcb0089:1,0xcb008e:1,0xcb0090:1,0xcb0092:1,0xcb0094:1,0xcb0096:1,0xcb0097:1,0xcb0098:1,0xcb00b1:1,0xcb00e0:1,0xcb0104:4,0xcb0112:1,0xcb011a:1,0xcb011b:1,0xcb0141:1,0xcb0142:1,0xcb0143:1,0xcb0146:1,0xcb0147:1,0xcb014c:1,0xcb014d:1,0xcb015a:1,0xcb0161:1,0xcb0162:1,0xcb0163:1,0xcb0164:4,0xcb016c:1,0xcb01fd:1,0xcb01fe:1,0xcb0240:4,0xcb0244:4,0xcb0249:1,0xcb0270:4,0xcb0274:4,0xcb027e:1,0xcb027f:1,0xcb028c:1,0xcb0296:1,0xcb0298:4,0xcb029c:1,0xcb029d:1,0xcb02a0:4,0xcb02a4:4,0xcb02b4:1,0xcb02b5:1,0xcb02c4:1,0xcb02c5:1,0xcb02d1:1,0xcb02d6:1,0xcb02d7:1,0xcb02e2:1,0xcb02e3:1,0xcb02e5:1,0xcb02ec:1,0xcb02ed:1,0xcb0344:1,0xcb0348:1,0xcb0349:1,0xcb034b:1,0xcb0350:4,0xcb0354:4,0xcb0360:4,0xcb0369:1,0xcb0370:4,0xcb0374:4,0xcb0378:1,0xcb037b:1,0xcb0387:1,0xcb038b:1,0xcb038f:1,0xcb0484:1,0xcb0485:1,0xcb0486:1,0xcb0497:1,0xcb0498:4,0xcb04ae:1,0xcb04af:1,0xcb04b4:1,0xcb04ba:1,0xcb04cd:1,0xcb04d0:4,0xcb04e3:1,0xcb04e6:1,0xcb04e7:1,0xcb0504:1,0xcb0505:1,0xcb0507:1,0xcb0508:1,0xcb0509:1,0xcb050b:1,0xcb0515:1,0xcb0516:1,0xcb052c:1,0xcb052e:1,0xcb052f:1,0xcb0534:4,0xcb0538:1,0xcb0539:1,0xcb053c:1,0xcb053d:1,0xcb0572:1,0xcb0573:1,0xcb0576:1,0xcb0578:1,0xcb05ac:1,0xcb05b4:1,0xcb05b5:1,0xcb05b6:1,0xcb05b9:1,0xcb05ba:1,0xcb05bc:1,0xcb05bd:1,0xcb05be:1,0xcb05c3:1,0xcb05d6:1,0xcb05d7:1,0xcb05da:1,0xcb05db:1,0xcb0683:1,0xcb0688:1,0xcb068a:1,0xcb068b:1,0xcb068e:1,0xcb0696:1,0xcb0697:1,0xcb069d:1,0xcb069f:1,0xcb06e0:16,0xcb06f8:1,0xcb06f9:1,0xcb0781:1,0xcb078a:1,0xcb078b:1,0xcb0793:1,0xcb0796:1,0xcb0797:1,0xcb079e:1,0xcb07c0:1,0xcb07c1:1,0xcb07c8:1,0xcb0800:1,0xcb0808:1,0xcb0817:1,0xcb0818:4,0xcb081c:4,0xcb0846:1,0xcb0852:1,0xcb0856:1,0xcb0857:1,0xcb085b:1,0xcb086e:1,0xcb086f:1,0xcb0873:1,0xcb08a6:1,0xcb08a7:1,0xcb08a9:1,0xcb08ad:1,0xcb08b8:1,0xcb08ba:1,0xcb08bb:1,0xcb08be:1,0xcb08bf:1,0xcb08c0:1,0xcb08c5:1,0xcb08c6:1,0xcb08c7:1,0xcb08cb:1,0xcb08d1:1,0xcb08d2:1,0xcb08d3:1,0xcb08d4:4,0xcb08d9:1,0xcb08dc:1,0xcb0920:1,0xcb0924:1,0xcb0925:1,0xcb0939:1,0xcb093f:1,0xcb0941:1,0xcb0946:1,0xcb0947:1,0xcb0948:1,0xcb094b:1,0xcb094c:1,0xcb094d:1,0xcb0960:4,0xcb0964:1,0xcb0965:1,0xcb096c:1,0xcb099e:1,0xcb0a22:1,0xcb0a38:1,0xcb0a4a:1,0xcb0a4b:1,0xcb0a54:4,0xcb0a58:1,0xcb0a5f:1,0xcb0a7d:1,0xcb0b46:1,0xcb0b4c:4,0xcb0b52:1,0xcb0b54:4,0xcb0b64:4,0xcb0b6d:1,0xcb0b75:1,0xcb0b7a:1,0xcb0b7e:1,0xcb0b88:4,0xcb0b8d:1,0xcb0b8e:1,0xcb0b8f:1,0xcb0bb4:4,0xcb0bd0:4,0xcb0c10:1,0xcb0c13:1,0xcb0c18:1,0xcb0c39:1,0xcb0c41:1,0xcb0c42:1,0xcb0c46:1,0xcb0c47:1,0xcb0c57:1,0xcb0c58:4,0xcb0c5c:4,0xcb0c64:1,0xcb0c65:1,0xcb0c67:1,0xcb0c72:1,0xcb0c76:1,0xcb0c82:1,0xcb0c89:1,0xcb0cc4:4,0xcb0cc8:4,0xcb0ccc:4,0xcb0cd3:1,0xcb0cdb:1,0xcb0ce2:1,0xcb0cf0:4,0xcb0d12:1,0xcb0d18:1,0xcb0d2c:1,0xcb0d2d:1,0xcb0d50:4,0xcb0d54:4,0xcb0d58:1,0xcb0d59:1,0xcb0d5c:4,0xcb0dad:1,0xcb0de0:1,0xcb0de1:1,0xcb0de3:1,0xcb0de9:1,0xcb0e18:4,0xcb0e21:1,0xcb0e38:1,0xcb0e3d:1,0xcb0e3e:1,0xcb0e68:1,0xcb0e72:1,0xcb0e73:1,0xcb0e76:1,0xcb0ea2:1,0xcb0eb8:4,0xcb0ebc:4,0xcb0ec0:1,0xcb0ec2:1,0xcb0ec3:1,0xcb0ed6:1,0xcb0ee7:1,0xcb0ef6:1,0xcb0f00:16,0xcb0f14:1,0xcb0f15:1,0xcb0f16:1,0xcb0f57:1,0xcb0f58:1,0xcb0f59:1,0xcb0f69:1,0xcb0f70:4,0xcb0f74:4,0xcb0f82:1,0xcb0f83:1,0xcb0f95:1,0xcb0f97:1,0xcb0f9c:4,0xcb0fae:1,0xcb0fe3:1,0xcb0fe8:4,0xcb0fec:4,0xcb0ff0:1,0xcb0ff1:1,0xcb0ff6:1,0xcb100a:1,0xcb100c:1,0xcb100d:1,0xcb1010:4,0xcb1014:4,0xcb101b:1,0xcb1026:1,0xcb1031:1,0xcb1032:1,0xcb1033:1,0xcb103a:1,0xcb1085:1,0xcb10a1:1,0xcb10a2:1,0xcb10ba:1,0xcb10bb:1,0xcb10e4:1,0xcb10ee:1,0xcb10f0:1,0xcb10f5:1,0xcb1102:1,0xcb1112:1,0xcb111c:1,0xcb1127:1,0xcb1138:1,0xcb114a:1,0xcb114b:1,0xcb1158:1,0xcb1159:1,0xcb1188:1,0xcb11a4:1,0xcb11bb:1,0xcb11be:1,0xcb11bf:1,0xcb11e7:1,0xcb11e9:1,0xcb11f8:1,0xcb11ff:1,0xcb1202:1,0xcb1203:1,0xcb1204:1,0xcb1207:1,0xcb121f:1,0xcb1225:1,0xcb1230:1,0xcb1231:1,0xcb1234:1,0xcb1248:4,0xcb1250:1,0xcb1251:1,0xcb1257:1,0xcb1264:1,0xcb1265:1,0xcb1269:1,0xcb126b:1,0xcb126e:1,0xcb1281:1,0xcb1283:1,0xcb1284:1,0xcb1285:1,0xcb1290:1,0xcb1299:1,0xcb12c7:1,0xcb12d0:1,0xcb12d3:1,0xcb12d7:1,0xcb1312:1,0xcb1318:1,0xcb131e:1,0xcb1320:4,0xcb1324:4,0xcb1329:1,0xcb132c:1,0xcb132d:1,0xcb132e:1,0xcb133a:1,0xcb133c:1,0xcb133d:1,0xcb1340:1,0xcb1344:1,0xcb1348:1,0xcb1365:1,0xcb136f:1,0xcb1383:1,0xcb1385:1,0xcb1390:1,0xcb1395:1,0xcb139c:1,0xcb13b0:1,0xcb13b2:1,0xcb13b3:1,0xcb13d0:1,0xcb13e4:4,0xcb13e9:1,0xcb13f2:1,0xcb13f8:1,0xcb13f9:1,0xcb13ff:1,0xcb1411:1,0xcb1428:1,0xcb1429:1,0xcb1430:1,0xcb143d:1,0xcb1441:1,0xcb1454:1,0xcb1455:1,0xcb1459:1,0xcb146a:1,0xcb146b:1,0xcb1473:1,0xcb1475:1,0xcb1476:1,0xcb1477:1,0xcb147a:1,0xcb147e:1,0xcb147f:1,0xcb1487:1,0xcb1488:4,0xcb148c:4,0xcb1496:1,0xcb14e6:1,0xcb14e8:1,0xcb14ec:1,0xcb1500:1,0xcb1501:1,0xcb1502:1,0xcb1508:1,0xcb150a:1,0xcb1512:1,0xcb1521:1,0xcb1522:1,0xcb1529:1,0xcb152c:1,0xcb1544:1,0xcb1552:1,0xcb1560:4,0xcb157c:1,0xcb1588:1,0xcb1589:1,0xcb1591:1,0xcb15ce:1,0xcb1618:1,0xcb161c:1,0xcb161d:1,0xcb161f:1,0xcb1644:1,0xcb164c:1,0xcb164e:1,0xcb1654:1,0xcb1657:1,0xcb165c:4,0xcb1663:1,0xcb166a:1,0xcb167a:1,0xcb167b:1,0xcb1683:1,0xcb16a3:1,0xcb16a6:1,0xcb16aa:1,0xcb16b0:4,0xcb16b4:4,0xcb16c2:1,0xcb16f2:1,0xcb16f3:1,0xcb16f5:1,0xcb16f6:1,0xcb16fc:1,0xcb16fd:1,0xcb1700:1,0xcb172f:1,0xcb173d:1,0xcb173e:1,0xcb173f:1,0xcb1749:1,0xcb1755:1,0xcb175c:4,0xcb1762:1,0xcb176b:1,0xcb1770:1,0xcb1782:1,0xcb178c:1,0xcb178d:1,0xcb17ac:1,0xcb17b6:1,0xcb17ba:1,0xcb17bb:1,0xcb17c0:1,0xcb17c5:1,0xcb17c6:1,0xcb17cc:4,0xcb17e0:1,0xcb17e2:1,0xcb17e3:1,0xcb17e4:4,0xcb17f9:1,0xcb17fb:1,0xcb180d:1,0xcb1812:1,0xcb181b:1,0xcb182b:1,0xcb1838:1,0xcb183a:1,0xcb1843:1,0xcb184a:1,0xcb184f:1,0xcb1850:1,0xcb1851:1,0xcb1854:1,0xcb1855:1,0xcb1856:1,0xcb185a:1,0xcb186f:1,0xcb1870:1,0xcb1874:1,0xcb187a:1,0xcb187b:1,0xcb1891:1,0xcb1898:1,0xcb1899:1,0xcb189d:1,0xcb18a1:1,0xcb18a7:1,0xcb18ba:1,0xcb18bb:1,0xcb18c7:1,0xcb18ca:1,0xcb18d4:1,0xcb18d5:1,0xcb18d9:1,0xcb18db:1,0xcb18f4:1,0xcb1913:1,0xcb1914:1,0xcb1915:1,0xcb192e:1,0xcb1930:4,0xcb1934:4,0xcb1940:1,0xcb1941:1,0xcb195b:1,0xcb1963:1,0xcb1964:1,0xcb196a:1,0xcb1983:1,0xcb1987:1,0xcb198a:1,0xcb1993:1,0xcb1999:1,0xcb199a:1,0xcb199b:1,0xcb19a4:1,0xcb19a6:1,0xcb19ae:1,0xcb19af:1,0xcb19b4:1,0xcb19b6:1,0xcb19bf:1,0xcb19c7:1,0xcb19c8:1,0xcb19ca:1,0xcb19cb:1,0xcb19d0:16,0xcb19e5:1,0xcb19eb:1,0xcb19ec:1,0xcb19f2:1,0xcb1a0c:1,0xcb1a22:1,0xcb1a31:1,0xcb1a32:1,0xcb1a37:1,0xcb1a38:1,0xcb1a39:1,0xcb1a3c:1,0xcb1a41:1,0xcb1a44:1,0xcb1a4c:1,0xcb1a50:1,0xcb1a54:1,0xcb1a61:1,0xcb1a66:1,0xcb1a67:1,0xcb1a73:1,0xcb1a74:1,0xcb1a81:1,0xcb1a8f:1,0xcb1a90:1,0xcb1a94:1,0xcb1a95:1,0xcb1a9a:1,0xcb1a9e:1,0xcb1a9f:1,0xcb1aaa:1,0xcb1aad:1,0xcb1ab0:1,0xcb1ab9:1,0xcb1aca:1,0xcb1acb:1,0xcb1ad2:1,0xcb1ad6:1,0xcb1ade:1,0xcb1ae0:1,0xcb1ae4:1,0xcb1ae8:1,0xcb1b00:1,0xcb1b0a:1,0xcb1b0f:1,0xcb1b10:1,0xcb1b14:1,0xcb1b16:1,0xcb1b17:1,0xcb1b28:1,0xcb1b2d:1,0xcb1b35:1,0xcb1b41:1,0xcb1b42:1,0xcb1b51:1,0xcb1b58:1,0xcb1b66:1,0xcb1b6d:1,0xcb1b75:1,0xcb1b79:1,0xcb1b7a:1,0xcb1b7b:1,0xcb1b7d:1,0xcb1bc8:1,0xcb1bca:1,0xcb1be9:1,0xcb1bf1:1,0xcb1bfa:1,0xcb1c0a:1,0xcb1c0c:1,0xcb1c21:1,0xcb1c22:1,0xcb1c23:1,0xcb1c2b:1,0xcb1c2c:1,0xcb1c36:1,0xcb1c38:1,0xcb1c49:1,0xcb1c4a:1,0xcb1c4c:1,0xcb1c56:1,0xcb1c58:1,0xcb1c70:1,0xcb1c83:1,0xcb1c88:1,0xcb1c8c:1,0xcb1c91:1,0xcb1ca5:1,0xcb1ca9:1,0xcb1caa:1,0xcb1cb2:1,0xcb1cb3:1,0xcb1cb9:1,0xcb1cbb:1,0xcb1cc4:1,0xcb1ce2:1,0xcb1ce3:1,0xcb1cef:1,0xcb1d02:1,0xcb1d08:1,0xcb1d09:1,0xcb1d0d:1,0xcb1d0e:1,0xcb1d1c:1,0xcb1d2e:1,0xcb1d39:1,0xcb1d3d:1,0xcb1d3f:1,0xcb1d45:1,0xcb1d49:1,0xcb1d51:1,0xcb1d5a:1,0xcb1d5f:1,0xcb1d64:1,0xcb1d67:1,0xcb1d70:1,0xcb1d78:4,0xcb1db6:1,0xcb1db7:1,0xcb1dbb:1,0xcb1dbd:1,0xcb1dbe:1,0xcb1dcd:1,0xcb1dd2:1,0xcb1dd9:1,0xcb1de3:1,0xcb1de7:1,0xcb1de9:1,0xcb1dea:1,0xcb1df8:1,0xcb1dfe:1,0xcb1dff:1,0xcb1e10:1,0xcb1e11:1,0xcb1e19:1,0xcb1e1b:1,0xcb1e1d:1,0xcb1e42:1,0xcb1e51:1,0xcb1e57:1,0xcb1e6f:1,0xcb1e79:1,0xcb1e7b:1,0xcb1e98:1,0xcb1e9c:1,0xcb1ea2:1,0xcb1ead:1,0xcb1eaf:1,0xcb1ebb:1,0xcb1ec2:1,0xcb1ed9:1,0xcb1edc:1,0xcb1ede:1,0xcb1ee8:1,0xcb1ee9:1,0xcb1eeb:1,0xcb1ef0:1,0xcb1ef1:1,0xcb1ef6:1,0xcb1efa:1,0xcb1efb:1,0xcb1f2d:1,0xcb1f2e:1,0xcb1f31:1,0xcb1f33:1,0xcb1f36:1,0xcb1f37:1,0xcb1f45:1,0xcb1f48:1,0xcb1f50:1,0xcb1f55:1,0xcb1f61:1,0xcb1f69:1,0xcb1f6a:1,0xcb1f6c:1,0xcb1f6d:1,0xcb1f7c:1,0xcb1fa2:1,0xcb1fae:1,0xcb1fb1:1,0xcb1fb5:1,0xcb1fbb:1,0xcb1fbd:1,0xcb1fcc:1,0xcb1fdc:1,0xcb1fde:1,0xcb1fdf:1,0xcb1fe1:1,0xcb1fe5:1,0xcb1ff8:1,0xcb1ff9:1,0xcb1ffd:1,0xcb2014:1,0xcb2030:1,0xcb2031:1,0xcb2038:1,0xcb203c:1,0xcb203e:1,0xcb2044:1,0xcb2045:1,0xcb204c:1,0xcb2051:1,0xcb2054:1,0xcb2055:1,0xcb205f:1,0xcb2066:1,0xcb2069:1,0xcb2082:1,0xcb2085:1,0xcb208c:1,0xcb2098:1,0xcb20ba:1,0xcb20bb:1,0xcb20c0:1,0xcb20c4:1,0xcb20cb:1,0xcb20cc:1,0xcb20cd:1,0xcb20d4:1,0xcb2104:1,0xcb2107:1,0xcb2108:4,0xcb210c:4,0xcb2115:1,0xcb211a:1,0xcb2120:1,0xcb213f:1,0xcb2140:1,0xcb2143:1,0xcb2144:1,0xcb2149:1,0xcb214f:1,0xcb2164:1,0xcb217a:1,0xcb2181:1,0xcb2183:1,0xcb2191:1,0xcb219c:1,0xcb219e:1,0xcb219f:1,0xcb21ae:1,0xcb21b9:1,0xcb21c8:1,0xcb21ca:1,0xcb21cb:1,0xcb21cc:1,0xcb21ce:1,0xcb21cf:1,0xcb21d6:1,0xcb21d7:1,0xcb21e0:1,0xcb21e1:1,0xcb21e2:1,0xcb21e9:1,0xcb21f3:1,0xcb21fa:1,0xcb2204:1,0xcb2215:1,0xcb221b:1,0xcb2227:1,0xcb2230:1,0xcb2231:1,0xcb2236:1,0xcb2238:1,0xcb2239:1,0xcb2243:1,0xcb2245:1,0xcb224c:1,0xcb225c:1,0xcb226a:1,0xcb2271:1,0xcb2293:1,0xcb2296:1,0xcb2298:1,0xcb2299:1,0xcb22a1:1,0xcb22a2:1,0xcb22bb:1,0xcb22c0:4,0xcb22c4:4,0xcb22cc:4,0xcb22e8:1,0xcb22f0:1,0xcb22f2:1,0xcb22f5:1,0xcb22fb:1,0xcb3702:1,0xcb3703:1,0xcb3704:1,0xcb370a:1,0xcb370d:1,0xcb3716:1,0xcb371e:1,0xcb375d:1,0xcb3765:1,0xcb376d:1,0xcb376e:1,0xcb3774:1,0xcb3775:1,0xcb3777:1,0xcb3780:1,0xcb3781:1,0xcb3792:1,0xcb3793:1,0xcb37c0:1,0xcb37c4:1,0xcb37da:1,0xcb37db:1,0xcb37dd:1,0xcb37e0:1,0xcb3801:1,0xcb3804:1,0xcb380c:1,0xcb3818:1,0xcb3826:1,0xcb3828:1,0xcb382e:1,0xcb3830:4,0xcb3834:4,0xcb3844:1,0xcb3845:1,0xcb3852:1,0xcb3853:1,0xcb3854:1,0xcb3855:1,0xcb385f:1,0xcb386e:1,0xcb3879:1,0xcb38a1:1,0xcb38a9:1,0xcb38ac:1,0xcb38ad:1,0xcb38af:1,0xcb38b7:1,0xcb38b9:1,0xcb38bb:1,0xcb38c0:1,0xcb38c6:1,0xcb38c9:1,0xcb38d0:1,0xcb38d1:1,0xcb38d2:1,0xcb38d6:1,0xcb38d8:1,0xcb38e3:1,0xcb38e4:1,0xcb38e8:1,0xcb38f0:1,0xcb38fc:1,0xcb38fe:1,0xcb3905:1,0xcb3906:1,0xcb390c:1,0xcb390d:1,0xcb391c:1,0xcb3927:1,0xcb392e:1,0xcb393a:1,0xcb393d:1,0xcb3942:1,0xcb3945:1,0xcb3946:1,0xcb3947:1,0xcb3949:1,0xcb395a:1,0xcb3965:1,0xcb396d:1,0xcb397b:1,0xcb399d:1,0xcb39c8:1,0xcb39ca:1,0xcb39ce:1,0xcb39de:1,0xcb39e0:16,0xcb39f6:1,0xcb39f7:1,0xcb39f9:1,0xcb39fd:1,0xcb39fe:1,0xcb39ff:1,0xcb3e02:1,0xcb3e83:1,0xcb3e8b:1,0xcb3ea1:1,0xcb3ec5:1,0xcb3ee4:4,0xcb3eea:1,0xcb3ef6:1,0xcb4ca0:4,0xcb4ca8:4,0xcb4cd0:4,0xcb4cd4:4,0xcb4cd8:4,0xcb4cf0:4,0xcb4cf4:4,0xcb4db4:4,0xcb4e30:16,0xcb4e9c:4,0xcb4f00:16,0xcb4f20:16,0xcb5004:1,0xcb5005:1,0xcb5020:16,0xcb5039:1,0xcb5084:4,0xcb5088:4,0xcb508c:4,0xcb5090:16,0xcb5100:4,0xcb5104:4,0xcb5110:16,0xcb51f4:4,0xcb5200:1,0xcb5201:1,0xcb5210:4,0xcb5214:4,0xcb5270:4,0xcb5274:4,0xcb5278:4,0xcb527c:4,0xcb52e0:4,0xcb52e4:4,0xcb52e8:4,0xcb52ec:4,0xcb5300:4,0xcb5308:4,0xcb530c:4,0xcb5338:4,0xcb533c:4,0xcb53e0:16,0xcb5600:16,0xcb5610:16,0xcb5620:16,0xcb5630:16,0xcb5640:16,0xcb5650:16,0xcb5660:16,0xcb5670:16,0xcb56fe:1,0xcb56ff:1,0xcb5820:16,0xcb5830:16,0xcb58c0:16,0xcb58d0:16,0xcb5900:4,0xcb5908:4,0xcb590c:4,0xcb5988:4,0xcb5a00:4,0xcb5a08:4,0xcb5a0c:4,0xcb5a80:16,0xcb5a90:16,0xcb5aa0:16,0xcb5ab0:16,0xcb5ac0:16,0xcb5ad0:16,0xcb5b20:16,0xcb5b30:16,0xcb5b60:16,0xcb5b78:4,0xcb5b7c:4,0xcb5c00:4,0xcb5ca0:16,0xcb5cb0:16,0xcb5d00:4,0xcb5d04:4,0xcb5d08:1,0xcb5d09:1,0xcb5d0a:1,0xcb5d0b:1,0xcb5d0c:4,0xcb5d10:16,0xcb5d20:16,0xcb5d30:16,0xcb5d40:64,0xcb5d80:4,0xcb5d84:4,0xcb5d88:4,0xcb5d8c:1,0xcb5d8d:1,0xcb5d8e:1,0xcb5d8f:1,0xcb5d90:16,0xcb5da0:16,0xcb5db0:16,0xcb5dc0:64,0xcb5e00:4,0xcb5e04:4,0xcb5e08:4,0xcb5e0c:4,0xcb5e10:16,0xcb5f00:4,0xcb5f04:4,0xcb5f60:16,0xcb5f70:16,0xcb5f80:64,0xcb5fc8:4,0xcb5fcc:4,0xcb5fd0:4,0xcb5fe0:16,0xcb5ff0:16,0xcb6308:4,0xcb630c:4,0xcb6310:16,0xcb6350:16,0xcb6420:16,0xcb6430:4,0xcb6434:4,0xcb643f:1,0xcb6450:16,0xcb6460:16,0xcb6470:16,0xcb64c0:16,0xcb6820:16,0xcb6960:16,0xcb6970:16,0xcb6980:16,0xcb6990:16,0xcb6b00:64,0xcb6b40:64,0xcb6ea0:16,0xcb6eb0:16,0xcb6ed0:16,0xcb6ee8:1,0xcb6ee9:1,0xcb6eea:1,0xcb7250:4,0xcb7254:4,0xcb7258:4,0xcb725c:4,0xcb72f4:4,0xcb76c0:16,0xcb76d0:16,0xcb76f1:1,0xcb76f8:4,0xcb7718:4,0xcb771c:4,0xcb7720:4,0xcb7750:4,0xcb7755:1,0xcb7771:1,0xcb7772:1,0xcb7773:1,0xcb7774:4,0xcb7778:4,0xcb777c:4,0xcb7780:64,0xcb77c0:64,0xcb8020:16,0xcb8030:16,0xcb8060:16,0xcb8070:16,0xcb80e0:4,0xcb80e4:4,0xcb8108:4,0xcb810c:4,0xcb8220:16,0xcb8230:16,0xcb8420:16,0xcb8430:16,0xcb86f0:4,0xcb86f4:4,0xcb8760:16,0xcb8770:16,0xcb87a0:16,0xcb8ee0:16,0xcb8ef0:16,0xcb9060:16,0xcb9070:16,0xcb9100:16,0xcb9110:16,0xcb9400:64,0xcb9440:16,0xcb9450:4,0xcb9456:1,0xcb9457:1,0xcb955c:4,0xcb9840:16,0xcb9850:16,0xcb9880:16,0xcb9890:16,0xcb9900:4,0xcb9cc0:64,0xcb9e10:4,0xcb9e14:4,0xcba068:4,0xcba06c:4,0xcba081:1,0xcba0c0:16,0xcba0d0:16,0xcba100:4,0xcba1b4:1,0xcba1c0:16,0xcba1d0:16,0xcba6a0:16,0xcba6b0:16,0xcba71c:4,0xcba800:16,0xcba810:16,0xcbaa3a:1,0xcbaa3b:1,0xcbab00:4,0xcbabe0:16,0xcbae04:1,0xcbae07:1,0xcbae60:16,0xcbae70:16,0xcbaf80:16,0xcbaf90:16,0xcbafc0:64,0xcbb000:64,0xcbb040:16,0xcbb050:16,0xcbb0a8:4,0xcbb0ac:4,0xcbb850:16,0xcbbba0:16,0xcbbbb0:16,0xcbbd00:1,0xcbbd01:1,0xcbbd06:1,0xcbbd07:1,0xcbbd70:4,0xcbbdc0:16,0xcbbdd0:16,0xcbbde8:4,0xcbbdec:4,0xcbbdf0:4,0xcbbe60:16,0xcbbef9:1,0xcbbf00:1,0xcbbf01:1,0xcbbf10:16,0xcbbf40:64,0xcbbf90:4,0xcbbf94:4,0xcbbf98:4,0xcbbf9c:4,0xcbc000:16,0xcbc010:16,0xcbc1e0:16,0xcbc1f0:16,0xcbc278:4,0xcbc27c:4,0xcbc340:16,0xcbc350:16,0xcbc370:4,0xcbc374:4,0xcbc380:64,0xcbc3c0:64,0xcbc400:4,0xcbc404:4,0xcbc408:4,0xcbc40c:4,0xcbc41c:4,0xcbcaec:4,0xcbcd40:16,0xcbcd50:16,0xcbcd80:64,0xcbcdc0:64,0xcbcf40:64,0xcbcf80:64,0xcbcfc0:64,0xcbd000:16,0xcbd010:4,0xcbd020:16,0xcbd030:16,0xcbd1e0:16,0xcbd1f0:16,0xcbd400:16,0xcbd450:16,0xcbd7e8:4,0xcbd7ec:4,0xcbd9a4:4,0xcbdec0:16,0xcbdf00:16,0xcbdf10:4,0xcbdf14:4},{},{},{},{},{},{},{0xd20200:16,0xd20210:16,0xd20500:16,0xd20510:16,0xd20538:4,0xd2053c:4,0xd20580:16,0xd20590:16,0xd20738:4,0xd2073c:4,0xd20c00:64,0xd20c40:64,0xd20c80:64,0xd20cc0:64,0xd20d00:64,0xd20d40:64,0xd20d80:64,0xd20dc0:64,0xd20e40:16,0xd20e50:16,0xd20e70:16,0xd20e80:16,0xd20e90:16,0xd20ea0:16,0xd20eb0:16,0xd20ec0:16,0xd20ed0:16,0xd20ee0:16,0xd20ef0:16,0xd20f00:16,0xd20f10:16,0xd20f20:16,0xd20f30:16,0xd20f40:16,0xd20f50:16,0xd20f60:16,0xd20f70:16,0xd20f80:64,0xd21068:4,0xd21080:64,0xd21500:64,0xd21540:64,0xd21580:64,0xd215c0:64,0xd21600:256,0xd21720:16,0xd21730:16,0xd21900:256,0xd21a00:256,0xd21b00:256,0xd21c00:1024,0xd22000:1024,0xd22400:1024,0xd22800:1024,0xd22c00:1024,0xd23300:256,0xd23400:64,0xd23440:64,0xd23480:64,0xd234c0:64,0xd23500:64,0xd23540:64,0xd23580:64,0xd235c0:64,0xd238c0:16,0xd238d0:16,0xd24800:64,0xd24840:64,0xd24880:16,0xd24890:16,0xd248a0:16,0xd248b0:16,0xd248c0:64,0xd24900:16,0xd24910:16,0xd24920:16,0xd24930:16,0xd24940:64,0xd24980:64,0xd249c0:64,0xd24a00:16,0xd24a10:16,0xd24a20:16,0xd24a30:16,0xd24a40:16,0xd24a50:16,0xd24a60:16,0xd24a70:16,0xd24a80:16,0xd24a90:16,0xd24aa0:16,0xd24ab0:16,0xd24ac0:64,0xd24b00:256,0xd24c00:16,0xd24c10:16,0xd24c20:16,0xd24c30:16,0xd24c40:64,0xd24c80:64,0xd24cc0:64,0xd24d00:256,0xd24e00:16,0xd24e10:16,0xd24e20:16,0xd24e30:16,0xd24e40:64,0xd24e80:16,0xd24e90:16,0xd24ea0:16,0xd24eb0:16,0xd24ec0:64,0xd24f40:64,0xd24fe0:16,0xd24ff0:16,0xd25200:256,0xd25300:256,0xd25780:16,0xd25790:16,0xd257a0:16,0xd257b0:16,0xd2b9c0:64,0xd2c060:16,0xd2c070:16},{0xd34000:1024,0xd34400:256,0xd34500:256,0xd34600:256,0xd34700:256,0xd35000:256,0xd35100:256,0xd35200:256,0xd35300:256,0xd35400:256,0xd35500:256,0xd35600:256,0xd35700:256,0xd35800:256,0xd35900:256,0xd35a00:256,0xd35b00:256,0xd35c00:256,0xd35d00:256,0xd35e00:256,0xd35f00:256,0xd36000:256,0xd36100:256,0xd36200:256,0xd36300:64,0xd36340:16,0xd36350:16,0xd36360:16,0xd36370:16,0xd36380:64,0xd363c0:64,0xd36400:256,0xd36500:64,0xd36540:64,0xd36580:64,0xd365c0:64,0xd36600:256,0xd36700:64,0xd36740:64,0xd36780:64,0xd367c0:64,0xd38800:1024,0xd38c00:256,0xd38d00:256,0xd38e00:64,0xd38e40:64,0xd38e80:64,0xd38ec0:64,0xd38f00:256,0xd39000:256,0xd39100:256,0xd39200:256,0xd39300:256,0xd39400:1024,0xd39800:256,0xd39900:256,0xd39a00:256,0xd39b00:64,0xd39b40:16,0xd39b50:16,0xd39b60:16,0xd39b70:16,0xd39b80:64,0xd39bc0:64,0xd39c00:1024,0xd3a000:1024,0xd3a400:1024},{},{},{},{},{},{},{0xda0000:256,0xda0100:256,0xda0200:256,0xda0300:256,0xda0400:256,0xda0500:256,0xda0600:256,0xda0700:256,0xda0800:256,0xda0900:256,0xda0a00:256,0xda0b00:256,0xda0c00:256,0xda0d00:256,0xda0e00:256,0xda0f00:256,0xda1000:1024,0xda1400:256,0xda1500:64,0xda1540:64,0xda1580:64,0xda15c0:64,0xda1600:256,0xda1700:256,0xda1800:256,0xda1900:256,0xda1a00:256,0xda1b00:256,0xda1c00:256,0xda1d00:256,0xda1e00:256,0xda1f00:256,0xda3800:1024,0xda3c00:256,0xda3d00:256,0xda3e00:64,0xda3e40:64,0xda3e80:64,0xda3ec0:64,0xda3f00:256,0xda4000:256,0xda4100:256,0xda4200:256,0xda4300:64,0xda4340:64,0xda4380:64,0xda43c0:64,0xda4400:256,0xda4500:256,0xda4600:256,0xda4700:256,0xda4800:1024,0xda4c00:256,0xda4d00:256,0xda4e00:256,0xda4f00:256,0xda5000:1024,0xda5400:1024,0xda5800:1024,0xda5c00:1024,0xda6000:256,0xda6100:256,0xda6200:64,0xda6240:64,0xda6280:64,0xda62c0:16,0xda62d0:16,0xda62e0:16,0xda62f0:16,0xda6300:256,0xda6458:4,0xda645c:4,0xda6460:16,0xda6470:16,0xda6480:64,0xda64c0:64,0xda6800:64,0xda6840:64,0xda6880:16,0xda6890:16,0xda68a0:16,0xda68b0:16,0xda68c0:4,0xda68c4:4,0xda68c8:4,0xda68cc:4,0xda68d0:16,0xda68e0:16,0xda68f0:16,0xda6900:256,0xda6a00:256,0xda6b00:256,0xda6c00:256,0xda6d00:256,0xdab9c0:16,0xdab9d0:16,0xdab9f0:4,0xdab9f4:4,0xdac000:256,0xdac100:256,0xdac200:256,0xdac300:256,0xdac400:1024,0xdac800:1024,0xdacc00:256,0xdacd00:256,0xdace00:256,0xdacf00:256,0xdaf000:1024,0xdaf400:256,0xdaf500:256,0xdaf600:256,0xdaf700:256,0xdaf900:256},{0xdb4800:256,0xdb5200:256,0xdb5380:64,0xdb53c0:64,0xdb5a44:4,0xdb5a48:4,0xdb5a4c:4,0xdb8000:1024,0xdb8400:1024,0xdb8800:1024,0xdb8c00:1024,0xdb9000:1024,0xdb9400:256,0xdb9500:64,0xdb9540:64,0xdb9580:64,0xdb95c0:64,0xdb9600:16,0xdb9610:16,0xdb9620:16,0xdb9630:16,0xdb9640:16,0xdb9650:16,0xdb9660:16,0xdb9670:16,0xdb9680:64,0xdb96c0:64,0xdb9700:16,0xdb9710:16,0xdb9720:16,0xdb9730:16,0xdb9740:64,0xdb9780:64,0xdb97c0:64,0xdb9800:256,0xdb9900:256,0xdb9a00:256,0xdb9b00:256,0xdb9c00:256,0xdb9d00:256,0xdb9e00:64,0xdb9e40:64,0xdb9e80:64,0xdb9ec0:64,0xdb9f00:64,0xdb9f40:64,0xdb9f80:64,0xdb9fc0:64,0xdbd800:256,0xdbd900:256,0xdbda00:256,0xdbdb00:256,0xdbdc00:256,0xdbdd00:256,0xdbde00:256,0xdbdf00:256,0xdbe000:256,0xdbe100:256,0xdbe200:256,0xdbe300:256,0xdbe400:256,0xdbe500:256,0xdbe600:256,0xdbe700:256,0xdbe800:1024,0xdbec00:256,0xdbed00:256,0xdbee00:256,0xdbef00:256,0xdbf200:256,0xdbf300:256,0xdbf400:1024},{0xdc65c0:64,0xdc7000:1024,0xdc9880:64,0xdc98c0:64,0xdc9a00:256,0xdc9b00:256,0xdc9ef0:4,0xdca000:1024,0xdca400:1024,0xdca800:1024,0xdcac00:1024,0xdcb000:1024,0xdcb400:1024,0xdcb800:1024,0xdcbc00:1024,0xdcc000:256,0xdcc100:256,0xdcc200:256,0xdcc300:256,0xdcc400:1024,0xdcc800:1024,0xdccc00:1024,0xdce700:64,0xdce780:64,0xdce7c0:64,0xdce840:64,0xdcea00:256,0xdcf200:256,0xdcf300:256,0xdcf788:4,0xdcf78c:4,0xdcf800:1024,0xdcfc00:256},{0xdd0000:256,0xdd0100:256,0xdd0200:256,0xdd0300:64,0xdd0340:64,0xdd0380:64,0xdd03c0:64,0xdd0400:256,0xdd0500:64,0xdd0540:64,0xdd0580:64,0xdd05c0:64,0xdd0600:256,0xdd0700:16,0xdd0710:16,0xdd0720:16,0xdd0730:16,0xdd0740:16,0xdd0750:16,0xdd0760:16,0xdd0770:16,0xdd0780:64,0xdd07c0:64,0xdd0800:256,0xdd0900:256,0xdd0a00:256,0xdd0b00:64,0xdd0b40:64,0xdd0b80:64,0xdd0bc0:16,0xdd0bd0:16,0xdd0be0:16,0xdd0bf0:16,0xdd0c00:64,0xdd0c40:64,0xdd0c80:64,0xdd0d00:64,0xdd0d40:16,0xdd0d50:16,0xdd0d60:16,0xdd0d70:16,0xdd0d80:64,0xdd0dc0:64,0xdd0e00:256,0xdd0f00:256,0xdd7a00:256,0xdd7b00:256,0xdd8080:64,0xdd80c0:64,0xdd8100:256,0xdd8200:256,0xdd8300:256,0xdd85e0:16,0xdd85f0:16,0xdd8800:256,0xdd8900:256,0xddac00:1024,0xddb000:1024,0xddb400:1024,0xddc000:256,0xddc100:256,0xddc200:256,0xddc300:256,0xddc400:256,0xddc500:256,0xddc600:256,0xddc700:16,0xddc710:16,0xddc720:16,0xddc730:16,0xddc740:64,0xddc780:64,0xddc7c0:16,0xddc7e0:16,0xddc7f0:16,0xddc800:1024,0xddcc00:256,0xddcd00:256,0xddce00:256,0xddcf00:64,0xddcf40:64,0xddcf80:64,0xddcfc0:64,0xddd000:1024,0xddd400:256,0xddd500:256,0xddd600:256,0xddd700:256,0xddd800:1024,0xdddc00:1024,0xdde000:1024,0xdde400:1024,0xdde800:1024,0xddec00:256,0xdded00:256,0xddee00:256,0xddef00:64,0xddef40:64,0xddef80:64,0xddefc0:64},{0xde1000:256,0xde1100:256,0xde1200:256,0xde1300:256,0xde1400:256,0xde1500:256,0xde1600:256,0xde1700:256,0xde1800:256,0xde1900:256,0xde1a00:256,0xde1b00:256,0xde1c00:1024,0xde2000:1024,0xde2400:1024,0xde2800:1024,0xde2c00:1024,0xde3000:1024,0xde3400:1024,0xde3800:1024,0xde3c00:1024,0xde4000:1024,0xde4400:1024,0xde4800:256,0xde4900:256,0xde4a00:256,0xde4b00:256,0xde4c00:1024,0xde5000:256,0xde5100:256,0xde5200:256,0xde5300:64,0xde5340:64,0xde5380:64,0xde53c0:64,0xde5400:256,0xde5500:64,0xde5540:64,0xde5580:64,0xde55c0:64,0xde5600:256,0xde5700:256,0xde5800:256,0xde5900:256,0xde5a00:256,0xde5b00:256,0xde5c00:1024,0xde7d00:256,0xde7e80:64,0xde7ec0:64,0xde8000:1024,0xde8400:1024,0xde8800:1024,0xde8c00:1024,0xdea000:256,0xdea100:256,0xdea200:256,0xdea300:16,0xdea310:16,0xdea320:16,0xdea330:16,0xdea340:64,0xdea380:64,0xdea3c0:64,0xdea800:256,0xdea900:256,0xdeaa00:256,0xdeab00:256,0xdeac00:64,0xdeac40:64,0xdeac80:64,0xdeacc0:64,0xdead00:256,0xdeae00:256,0xdeaf00:256,0xdeb000:1024,0xdeb400:1024,0xdeb800:1024,0xdebc00:1024,0xdec000:1024,0xdec400:256,0xdec500:256,0xdec600:256,0xdec700:256,0xdec800:1024,0xdecc00:256,0xdecd00:256,0xdece00:256,0xdecf00:256,0xded000:1024,0xded400:1024,0xded800:256,0xded900:256,0xdeda00:256,0xdedb00:256,0xdedc00:256,0xdedd00:256,0xdede00:256,0xdedf00:256,0xdef000:1024,0xdef400:1024,0xdef800:256,0xdef900:64,0xdef940:64,0xdef980:16,0xdef990:16,0xdef9a0:16,0xdef9b0:16,0xdef9c0:64},{0xdf0000:256,0xdf0100:256,0xdf0200:256,0xdf0300:256,0xdf0400:1024,0xdf0800:1024,0xdf0c00:1024,0xdf1400:256,0xdf1500:256,0xdf1bb8:4,0xdf1dd0:4,0xdf1dfc:4,0xdf4000:1024,0xdf4400:1024,0xdf4800:1024,0xdf4c00:1024,0xdf5000:1024,0xdf5400:1024,0xdf5800:1024,0xdf5c00:1024,0xdf6000:1024,0xdf6400:1024,0xdf6800:1024,0xdf6c00:1024,0xdf7000:1024,0xdf7400:256,0xdf7500:256,0xdf7800:1024,0xdf7c00:1024,0xdf8000:256,0xdf8100:256,0xdf8208:4,0xdf9000:1024,0xdf9400:1024,0xdf9800:1024,0xdf9c00:1024,0xdfa000:1024,0xdfa600:256,0xdfa700:256,0xdfc000:256,0xdfc100:256,0xdfc600:256,0xdfc700:256,0xdfc900:256,0xdfca00:256,0xdfcb00:256,0xdfd000:1024,0xdfd400:256,0xdfd500:256,0xdfd600:256,0xdfd700:256,0xdfdc00:256,0xdfdd00:256,0xdfdfb0:16,0xdfdfc0:16,0xdff000:1024,0xdff400:1024,0xdff800:1024,0xdffc80:64,0xdffcc0:64,0xdffe00:256,0xdfff00:64,0xdfff40:64,0xdfffec:4,0xdffffc:2}\n];\nvar cnIp16Range = {\n0x400:1,0x404:1,0x408:1,0x410:1,0x428:1,0x3800:1,0x3804:1,0x3805:1,0x399a:1,0x3b00:1,0x3b01:1,0x6c02:1,0x6c03:1,0x6c8b:1,0x6cc8:1,0x6cd9:1,0x6cda:1,0x6d8b:1,0x6dab:1,0x6db4:1,0x6db5:1,0x6dc1:1,0x6dd0:1,0x6de5:1,0x6e0f:1,0x9000:1,0x9094:1,0x93fd:1,0x93fe:1,0x93ff:1,0x9c00:1,0xa800:1,0xa804:1,0xa8fa:1,0xa94d:1,0xa981:1,0xa98d:1,0xa9ec:1,0xaa70:1,0xaaed:1,0xab08:1,0xaf80:1,0xaf81:1,0xaf82:1,0xaf83:1,0xaf85:1,0xaf86:1,0xaf87:1,0xaf88:1,0xaf89:1,0xaf8a:1,0xaf8b:1,0xaf8c:1,0xaf8d:1,0xaf8e:1,0xaf8f:1,0xaf90:1,0xaf91:1,0xaf92:1,0xaf93:1,0xaf94:1,0xaf95:1,0xaf96:1,0xaf97:1,0xaf98:1,0xaf99:1,0xaf9a:1,0xaf9b:1,0xaf9c:1,0xaf9d:1,0xaf9e:1,0xafb0:1,0xafb1:1,0xafb2:1,0xafb3:1,0xafb4:1,0xafb5:1,0xafb6:1,0xafb7:1,0xafb8:1,0xafb9:1,0xafba:1,0xafbb:1,0xafbc:1,0xafbd:1,0xafbe:1,0xafc0:1,0xafc1:1,0xafc2:1,0xafc3:1,0xafc4:1,0xafc5:1,0xafc6:1,0xafc7:1,0xafc8:1,0xafc9:1,0xafca:1,0xafcb:1,0xafcc:1,0xafcd:1,0xafce:1,0xafcf:1,0xafd8:1,0xafd9:1,0xafdb:1,0xafdc:1,0xafdd:1,0xafde:1,0xafdf:1,0xafe0:1,0xafe1:1,0xafe2:1,0xafe3:1,0xafe4:1,0xafe5:1,0xafe6:1,0xafe7:1,0xafe8:1,0xafe9:1,0xafea:1,0xafeb:1,0xafec:1,0xafed:1,0xafef:1,0xaff0:1,0xaff3:1,0xaff8:1,0xaff9:1,0xaffa:1,0xaffb:1,0xaffc:1,0xaffd:1,0xaffe:1,0xafff:1,0xb504:1,0xb5c2:1,0xb5c3:1,0xb5c4:1,0xb5c5:1,0xb5c6:1,0xb5c7:1,0xb5c8:1,0xb5c9:1,0xb5ca:1,0xb5cb:1,0xb5cc:1,0xb5cd:1,0xb5ce:1,0xb5cf:1,0xb5d0:1,0xb5d1:1,0xb5d2:1,0xb5d3:1,0xb5d4:1,0xb5d5:1,0xb5d7:1,0xb5dc:1,0xb5dd:1,0xb5de:1,0xb5df:1,0xb5e1:1,0xb5e2:1,0xb5e3:1,0xb5e4:1,0xb5e5:1,0xb5e6:1,0xb5e7:1,0xb5e8:1,0xb5e9:1,0xb5ea:1,0xb5eb:1,0xb5ec:1,0xb5ed:1,0xb5ee:1,0xb5ef:1,0xb5f0:1,0xb5f1:1,0xb5f2:1,0xb5f3:1,0xb5f4:1,0xb5f5:1,0xb5f6:1,0xb5f8:1,0xb5f9:1,0xb5fb:1,0xb5fc:1,0xb5fd:1,0xb5fe:1,0xb5ff:1,0xc600:1,0xc7db:1,0xe907:1,0xee60:1,0xee61:1,0xee64:1,0xee65:1,0xee66:1,0xee67:1,0xeeff:1,0xf411:1,0xf412:1,0xf422:1,0xf43b:1,0xf470:1,0xf477:1,0xf4b7:1,0xf619:1,0x19400:1,0x19404:1,0x1940a:1,0x194c8:1,0x194d5:1,0x194df:1,0x19538:1,0x19580:1,0x1958d:1,0x19595:1,0x19599:1,0x195b9:1,0x19600:1,0x1972e:1,0x197a9:1,0x197ec:1,0x19c04:1,0x19c05:1,0x19c06:1,0x19c09:1,0x19c0a:1,0x19c0b:1,0x19c0d:1,0x19c0e:1,0x19c10:1,0x19c12:1,0x19c13:1,0x19c14:1,0x19c16:1,0x19c17:1,0x19c19:1,0x19c1b:1,0x19c1c:1,0x19c1e:1,0x19c1f:1,0x19c20:1,0x19c21:1,0x19c22:1,0x19c23:1,0x19c24:1,0x19c25:1,0x19c26:1,0x19c27:1,0x19c28:1,0x19c29:1,0x19c2a:1,0x19c2e:1,0x19c30:1,0x19c31:1,0x19c32:1,0x19c33:1,0x19c34:1,0x19c35:1,0x19c36:1,0x19c37:1,0x19c39:1,0x19c3a:1,0x19c3b:1,0x19c3c:1,0x19c3d:1,0x19c3f:1,0x19c40:1,0x19c41:1,0x19c44:1,0x19c45:1,0x19c46:1,0x19c47:1,0x19c4b:1,0x19c4c:1,0x19c4d:1,0x19c4f:1,0x19c50:1,0x19c51:1,0x19c52:1,0x19c53:1,0x19c55:1,0x19c56:1,0x19c57:1,0x19c58:1,0x19c59:1,0x19c5a:1,0x19c5b:1,0x19c5c:1,0x19c5e:1,0x19c5f:1,0x19c61:1,0x19c62:1,0x19c63:1,0x19c64:1,0x19c65:1,0x19c66:1,0x19c67:1,0x19c68:1,0x19c69:1,0x19c6a:1,0x19c6b:1,0x19c6c:1,0x19c6d:1,0x19c6f:1,0x19c70:1,0x19c73:1,0x19c74:1,0x19c76:1,0x19c78:1,0x19c79:1,0x19c7a:1,0x19c7b:1,0x19c7c:1,0x19c7d:1,0x19c7e:1,0x19c7f:1,0x19c80:1,0x19c81:1,0x19c82:1,0x19c83:1,0x19c84:1,0x19c85:1,0x19c86:1,0x19c87:1,0x19c88:1,0x19c89:1,0x19c8a:1,0x19c8b:1,0x19c8c:1,0x19c8d:1,0x19c8f:1,0x19c90:1,0x19c91:1,0x19c92:1,0x19c93:1,0x19c94:1,0x19c95:1,0x19c96:1,0x19c97:1,0x19c98:1,0x19c99:1,0x19c9a:1,0x19c9b:1,0x19c9c:1,0x19c9d:1,0x19c9e:1,0x19c9f:1,0x19ca0:1,0x19ca1:1,0x19ca3:1,0x19ca4:1,0x19ca5:1,0x19ca6:1,0x19ca7:1,0x19ca8:1,0x19ca9:1,0x19caa:1,0x19cab:1,0x19cac:1,0x19cad:1,0x19cae:1,0x19caf:1,0x19cb0:1,0x19cb1:1,0x19cb2:1,0x19cb3:1,0x19cb4:1,0x19cb5:1,0x19cb6:1,0x19cb7:1,0x19cb8:1,0x19cb9:1,0x19cba:1,0x19cbb:1,0x19cbc:1,0x19cbd:1,0x19cbe:1,0x19cbf:1,0x19cc0:1,0x19cc1:1,0x19cc2:1,0x19cc3:1,0x19cc4:1,0x19cc5:1,0x19cc6:1,0x19cc7:1,0x19cc8:1,0x19cc9:1,0x19cca:1,0x19ccb:1,0x19cd0:1,0x19cd1:1,0x19cd2:1,0x19cd3:1,0x19cd4:1,0x19cd5:1,0x19cd6:1,0x19cd7:1,0x19cd8:1,0x19cda:1,0x19cdb:1,0x19cdc:1,0x19cdd:1,0x19cde:1,0x19cdf:1,0x19ce0:1,0x19ce1:1,0x19ce2:1,0x19ce3:1,0x19ce4:1,0x19ce5:1,0x19ce6:1,0x19ce7:1,0x19ce8:1,0x19cea:1,0x19ced:1,0x19cee:1,0x19cef:1,0x19cf0:1,0x19cf2:1,0x19cf3:1,0x19cf4:1,0x19cf5:1,0x19cf6:1,0x19cf8:1,0x19cf9:1,0x19cfa:1,0x19cfb:1,0x19cfc:1,0x19cfd:1,0x19cfe:1,0x19cff:1,0x19f00:1,0x19f01:1,0x19f02:1,0x19f03:1,0x19f04:1,0x19f05:1,0x19f06:1,0x19f07:1,0x19f08:1,0x19f0b:1,0x19f0d:1,0x19f0e:1,0x19f0f:1,0x19f10:1,0x19f11:1,0x19f12:1,0x19f13:1,0x19f16:1,0x19f17:1,0x19f18:1,0x19f19:1,0x19f1a:1,0x19f1b:1,0x19f1e:1,0x19f1f:1,0x19f20:1,0x19f21:1,0x19f22:1,0x19f23:1,0x19f24:1,0x19f25:1,0x19f26:1,0x19f27:1,0x19f28:1,0x19f29:1,0x19f2a:1,0x19f2b:1,0x19f2c:1,0x19f2d:1,0x19f2e:1,0x19f2f:1,0x19f30:1,0x19f31:1,0x19f32:1,0x19f33:1,0x19f34:1,0x19f35:1,0x19f36:1,0x19f37:1,0x19f38:1,0x19f39:1,0x19f3a:1,0x19f3c:1,0x19f3d:1,0x19f3e:1,0x19f3f:1,0x19f40:1,0x19f42:1,0x19f45:1,0x19f46:1,0x19f47:1,0x19f48:1,0x19f49:1,0x19f4a:1,0x19f4b:1,0x19f4c:1,0x19f4d:1,0x19f4e:1,0x19f4f:1,0x19f80:1,0x19f81:1,0x19f83:1,0x19f85:1,0x19f88:1,0x19f89:1,0x19f8a:1,0x19f8b:1,0x19f8c:1,0x19f8d:1,0x19f8e:1,0x19f8f:1,0x19f90:1,0x19f91:1,0x19f92:1,0x19f93:1,0x19f94:1,0x19f96:1,0x19f97:1,0x19f98:1,0x19f99:1,0x19f9b:1,0x19f9c:1,0x19f9d:1,0x19f9e:1,0x19f9f:1,0x19fa0:1,0x19fa2:1,0x19fa3:1,0x19fa4:1,0x19fa5:1,0x19fa6:1,0x19fa7:1,0x19fa8:1,0x19fa9:1,0x19faa:1,0x19fab:1,0x19fac:1,0x19fad:1,0x19fae:1,0x19faf:1,0x19fb0:1,0x19fb1:1,0x19fb2:1,0x19fb3:1,0x19fb4:1,0x19fb5:1,0x19fb6:1,0x19fb7:1,0x19fb8:1,0x19fb9:1,0x19fba:1,0x19fbb:1,0x19fbc:1,0x19fbd:1,0x19fbe:1,0x19fbf:1,0x19fc0:1,0x19fc1:1,0x19fc2:1,0x19fc3:1,0x19fc4:1,0x19fc5:1,0x19fc6:1,0x19fc7:1,0x19fc8:1,0x19fc9:1,0x19fca:1,0x19fcb:1,0x19fce:1,0x19fcf:1,0x19fd0:1,0x19fd1:1,0x19fd2:1,0x19fd3:1,0x19fd4:1,0x19fd5:1,0x19fd6:1,0x19fd8:1,0x19fd9:1,0x19fda:1,0x19fde:1,0x19fdf:1,0x19fe0:1,0x19fe1:1,0x19fe2:1,0x19fe3:1,0x19fe4:1,0x19fe5:1,0x19fe6:1,0x19fe7:1,0x19fe8:1,0x19fe9:1,0x19fea:1,0x19feb:1,0x19fec:1,0x19fed:1,0x19fee:1,0x19fef:1,0x19ff0:1,0x19ff1:1,0x19ff2:1,0x19ff3:1,0x19ff4:1,0x19ff7:1,0x19ff8:1,0x19ff9:1,0x19ffa:1,0x19ffb:1,0x19ffd:1,0x19ffe:1,0x19fff:1,0x1a800:1,0x1b888:1,0x1b8b0:1,0x1b8b2:1,0x1b92e:1,0x1b930:1,0x1b932:1,0x1b971:1,0x1b974:1,0x1ba94:1,0x1bab4:1,0x1bab5:1,0x1bab7:1,0x1bba0:1,0x1bd0f:1,0x1bd11:1,0x1bd6f:1,0x1bd73:1,0x1bddb:1,0x1bdde:1,0x1bf74:1,0x1bf7c:1,0x1bf7f:1,0x1bfad:1,0x1bfae:1,0x1c224:1,0x1c42f:1,0x1c457:1,0x1c4d2:1,0x1c4d3:1,0x1c4ef:1,0x1c609:1,0x1c715:1,0x1c741:1,0x1c751:1,0x1c752:1,0x1c87d:1,0x1c9b8:1,0x1c9bc:1,0x1c9be:1,0x1c9df:1,0x1ca35:1,0x1cb1b:1,0x1cc7d:1,0x1cca8:1,0x1cd15:1,0x1cd53:1,0x1cdf0:1,0x1ce99:1,0x1ceec:1,0x1d000:1,0x1d0c8:1,0x1d0ea:1,0x1d0eb:1,0x1d112:1,0x1d166:1,0x1d169:1,0x1d16a:1,0x1d304:1,0x1d306:1,0x1d316:1,0x1d31e:1,0x1d352:1,0x1d354:1,0x1d358:1,0x1d359:1,0x1d3f9:1,0x1d4d4:1,0x1d4d6:1,0x1d529:1,0x1d59c:1,0x1d59d:1,0x1d59e:1,0x1d5a2:1,0x1d5e7:1,0x1d90d:1,0x1d960:1,0x1d96f:1,0x1d998:1,0x1d99e:1,0x1d9fe:1,0x1db04:1,0x1db05:1,0x1dc08:1,0x1dc3e:1,0x1dc4b:1,0x1dc6e:1,0x1dc78:1,0x1dc7f:1,0x1dc9b:1,0x1dca1:1,0x1dca8:1,0x1dcaa:1,0x1dcab:1,0x1dcfc:1,0x1dd2f:1,0x1dd4b:1,0x1de52:1,0x1de83:1,0x1de85:1,0x1dff1:1,0x1dff3:1,0x1e120:1,0x1e160:1,0x1e220:1,0x1e23e:1,0x1e400:1,0x1e4b9:1,0x1e4c8:1,0x1e4d2:1,0x1e4d3:1,0x1e4da:1,0x1e4ea:1,0x1e597:1,0x1e723:1,0x1e82a:1,0x1e998:1,0x1e999:1,0x1ea01:1,0x1eb20:1,0x1eb24:1,0x1ebe0:1,0x1ebfd:1,0x1ecca:1,0x1eceb:1,0x1ed90:1,0x1edb2:1,0x1edb3:1,0x1ee21:1,0x1eec0:1,0x1eec1:1,0x1efcb:1,0x1eff9:1,0x1f054:1,0x1f0a1:1,0x1f0a3:1,0x1f1b0:1,0x1f1b5:1,0x1f759:1,0x224ed:1,0x22c14:1,0x22c15:1,0x24b10:1,0x24b11:1,0x25a06:1,0x25a07:1,0x25bc8:1,0x25bc9:1,0x25bca:1,0x25bcb:1,0x2804f:1,0x28050:1,0x28328:1,0x283b9:1,0x28cbc:1,0x28cd4:1,0x28cd5:1,0x28cd6:1,0x28cd7:1,0x29f73:1,0x2bdbd:1,0x2bdbe:1,0x2be79:1,0x2bec2:1,0x2d178:1,0x2d179:1,0x2d250:1,0x2d252:1,0x2d253:1,0x2d256:1,0x2d25a:1,0x2d2c9:1,0x2d2f6:1,0x2d323:1,0x2d34b:1,0x2d37b:1,0x2d3a5:1,0x2d3a6:1,0x2d3ad:1,0x2d3ae:1,0x2d842:1,0x2d843:1,0x2d85e:1,0x2d85f:1,0x2d8c1:1,0x2d8c8:1,0x2d8c9:1,0x2d8db:1,0x2da81:1,0x2dbb4:1,0x2dbbc:1,0x2dd3a:1,0x2dd46:1,0x2dd6e:1,0x2ded8:1,0x301f2:1,0x302f2:1,0x32801:1,0x32802:1,0x3280e:1,0x32812:1,0x32813:1,0x32817:1,0x32818:1,0x32819:1,0x3281a:1,0x32820:1,0x32821:1,0x32822:1,0x32823:1,0x32824:1,0x32829:1,0x32830:1,0x32831:1,0x32839:1,0x3283a:1,0x3283b:1,0x32851:1,0x32854:1,0x32856:1,0x3285b:1,0x3286e:1,0x32898:1,0x32899:1,0x3289a:1,0x328a0:1,0x328a2:1,0x328a4:1,0x328a6:1,0x328a7:1,0x328ad:1,0x328ae:1,0x328b0:1,0x328b1:1,0x328b2:1,0x328b4:1,0x328b8:1,0x328ba:1,0x328bb:1,0x328bd:1,0x328be:1,0x328e7:1,0x328e8:1,0x328e9:1,0x328ec:1,0x328ef:1,0x328f0:1,0x328f1:1,0x328f2:1,0x328f5:1,0x328f9:1,0x328fb:1,0x328fd:1,0x328fe:1,0x328ff:1,0x32904:1,0x32905:1,0x3290a:1,0x3290c:1,0x32914:1,0x32918:1,0x32919:1,0x3291b:1,0x3291c:1,0x32920:1,0x32921:1,0x32926:1,0x32927:1,0x32928:1,0x32929:1,0x3292b:1,0x3292f:1,0x32933:1,0x32935:1,0x32938:1,0x3293f:1,0x32943:1,0x32944:1,0x32946:1,0x3294f:1,0x32950:1,0x32957:1,0x3295b:1,0x3295d:1,0x32960:1,0x32964:1,0x32965:1,0x32967:1,0x32968:1,0x32969:1,0x3296b:1,0x3296c:1,0x3296d:1,0x3296e:1,0x3296f:1,0x32970:1,0x32973:1,0x32974:1,0x32977:1,0x32979:1,0x3297c:1,0x3297f:1,0x32981:1,0x32982:1,0x32983:1,0x32984:1,0x32985:1,0x32987:1,0x32988:1,0x32989:1,0x3298a:1,0x3298b:1,0x3298d:1,0x3298e:1,0x3298f:1,0x32990:1,0x32991:1,0x32992:1,0x32993:1,0x32995:1,0x32997:1,0x32998:1,0x3299a:1,0x3299b:1,0x3299c:1,0x3299d:1,0x3299f:1,0x329be:1,0x329c4:1,0x329c7:1,0x329c8:1,0x329cc:1,0x329d0:1,0x329d1:1,0x329d8:1,0x329dc:1,0x329dd:1,0x329e8:1,0x329e9:1,0x329ea:1,0x329ed:1,0x329f0:1,0x329f5:1,0x329f6:1,0x329fc:1,0x329fd:1,0x329fe:1,0x329ff:1,0x32a08:1,0x32a0b:1,0x32a0c:1,0x32a0f:1,0x32a14:1,0x32a18:1,0x32a1a:1,0x32a1b:1,0x32a20:1,0x32a23:1,0x32a27:1,0x32a32:1,0x32a36:1,0x32a38:1,0x32a3c:1,0x32a3d:1,0x32a4a:1,0x32a4b:1,0x32a4e:1,0x32a50:1,0x32a51:1,0x32a54:1,0x32a56:1,0x32a57:1,0x32a58:1,0x32a5b:1,0x32a5c:1,0x32a5e:1,0x32a62:1,0x32a64:1,0x32a77:1,0x32a7a:1,0x32a82:1,0x32a89:1,0x32a90:1,0x32a91:1,0x32a95:1,0x32a96:1,0x32a97:1,0x32a9b:1,0x32aa1:1,0x32aa2:1,0x32aaa:1,0x32aab:1,0x32aaf:1,0x32ab0:1,0x32ab4:1,0x32ab5:1,0x32ab7:1,0x32ab9:1,0x32ac3:1,0x32ace:1,0x32acf:1,0x32ad2:1,0x32ad3:1,0x32ad4:1,0x32ad5:1,0x32ad8:1,0x32adb:1,0x32af5:1,0x32af6:1,0x32afc:1,0x32afd:1,0x32c00:1,0x32c01:1,0x32c02:1,0x32c03:1,0x32c04:1,0x32c05:1,0x32c07:1,0x32c09:1,0x32c0a:1,0x32c0b:1,0x32c0d:1,0x32c0e:1,0x32c12:1,0x32c13:1,0x32c14:1,0x32c15:1,0x32c16:1,0x32c17:1,0x32c1a:1,0x32c1b:1,0x32c1e:1,0x32c1f:1,0x32c20:1,0x32c21:1,0x32c22:1,0x32c23:1,0x32c24:1,0x32c25:1,0x32c26:1,0x32c28:1,0x32c29:1,0x32c2d:1,0x32c2e:1,0x32c2f:1,0x32c30:1,0x32c31:1,0x32c32:1,0x32c33:1,0x32c34:1,0x32c35:1,0x32c36:1,0x32c37:1,0x32c38:1,0x32c39:1,0x32c3a:1,0x32c3b:1,0x32c3c:1,0x32c3d:1,0x32c3e:1,0x32c3f:1,0x32c40:1,0x32c42:1,0x32c43:1,0x32c44:1,0x32c45:1,0x32c46:1,0x32c47:1,0x32c48:1,0x32c49:1,0x32c4a:1,0x32c4b:1,0x32c4c:1,0x32c4d:1,0x32c4e:1,0x32c4f:1,0x32c50:1,0x32c51:1,0x32c52:1,0x32c53:1,0x32c54:1,0x32c55:1,0x32c56:1,0x32c57:1,0x32c58:1,0x32c59:1,0x32c5a:1,0x32c5b:1,0x32c5c:1,0x32c5d:1,0x32c5e:1,0x32c5f:1,0x32c60:1,0x32c61:1,0x32c62:1,0x32c63:1,0x32c64:1,0x32c65:1,0x32c66:1,0x32c67:1,0x32c68:1,0x32c69:1,0x32c6a:1,0x32c6b:1,0x32c6c:1,0x32c6d:1,0x32c6f:1,0x32c70:1,0x32c71:1,0x32c72:1,0x32c73:1,0x32c74:1,0x32c75:1,0x32c76:1,0x32c77:1,0x32c78:1,0x32c79:1,0x32c7a:1,0x32c7b:1,0x32c7c:1,0x32c7d:1,0x32c7e:1,0x32c7f:1,0x32c80:1,0x32c81:1,0x32c82:1,0x32c83:1,0x32c84:1,0x32c85:1,0x32c86:1,0x32c87:1,0x32c88:1,0x32c89:1,0x32c8a:1,0x32c8b:1,0x32cdc:1,0x32cdd:1,0x32cde:1,0x32cdf:1,0x32ce0:1,0x32ce1:1,0x32ce2:1,0x32ce3:1,0x32ce4:1,0x32ce5:1,0x32ce6:1,0x32ce7:1,0x32cf8:1,0x32cfa:1,0x32cfb:1,0x32d32:1,0x32d33:1,0x32d36:1,0x32d38:1,0x32d3a:1,0x32d3c:1,0x32d40:1,0x32d42:1,0x32d44:1,0x32d47:1,0x32d48:1,0x32d49:1,0x32d4b:1,0x32d4c:1,0x32d4f:1,0x32d58:1,0x32d59:1,0x32d5b:1,0x32d60:1,0x32d63:1,0x32d64:1,0x32d66:1,0x32d68:1,0x32d6a:1,0x32d6b:1,0x32d6c:1,0x32d6d:1,0x32d70:1,0x32d72:1,0x32d74:1,0x32d76:1,0x32d78:1,0x32d7c:1,0x32d7d:1,0x32d7f:1,0x32d8c:1,0x32d8d:1,0x32d90:1,0x32d91:1,0x32d93:1,0x32da0:1,0x32da5:1,0x32da6:1,0x32dba:1,0x32dbb:1,0x32dc9:1,0x32dcb:1,0x32ddb:1,0x32ddc:1,0x32ddd:1,0x32e00:1,0x32e01:1,0x32e03:1,0x32e04:1,0x32e08:1,0x32e10:1,0x32e1b:1,0x32e1d:1,0x32e1e:1,0x32e3b:1,0x32e41:1,0x32e44:1,0x32e51:1,0x32e55:1,0x32e61:1,0x32e62:1,0x32e64:1,0x32e78:1,0x32e81:1,0x32e82:1,0x32e83:1,0x32e84:1,0x32e86:1,0x32e87:1,0x32e9a:1,0x32e9c:1,0x32ea0:1,0x32ea8:1,0x32eac:1,0x32eaf:1,0x32eb8:1,0x32eb9:1,0x32ebe:1,0x32ec1:1,0x32ec2:1,0x32ee1:1,0x32eee:1,0x32ef4:1,0x32ef5:1,0x32ef7:1,0x32ef9:1,0x32efb:1,0x32efc:1,0x32efe:1,0x32f00:1,0x32f07:1,0x32f09:1,0x32f0d:1,0x32f10:1,0x32f2b:1,0x32f35:1,0x32f40:1,0x32f47:1,0x32f50:1,0x32f51:1,0x32f5f:1,0x32f66:1,0x32f7b:1,0x32f7c:1,0x34808:1,0x34814:1,0x34816:1,0x3481c:1,0x34839:1,0x3483a:1,0x3483b:1,0x3483c:1,0x3483d:1,0x34841:1,0x3485c:1,0x348e3:1,0x34922:1,0x34924:1,0x34928:1,0x34929:1,0x3492a:1,0x34930:1,0x34938:1,0x3493a:1,0x3493f:1,0x3495e:1,0x34b01:1,0x34d8d:1,0x34e6d:1,0x3698b:1,0x36991:1,0x369a2:1,0x369a3:1,0x36ae7:1,0x36d69:1,0x36e58:1,0x36e59:1,0x36e5c:1,0x3727b:1,0x373de:1,0x3741c:1,0x3741d:1,0x3742f:1,0x37435:1,0x37617:1,0x3771c:1,0x3771f:1,0x37a8c:1,0x37be6:1,0x37c6e:1,0x37c77:1,0x37e08:1,0x37f7e:1,0x37f7f:1,0x37fff:1\n};\n\nvar subnetIpRangeList = [\n0,1,\n167772160,184549376,\t//10.0.0.0/8\n2886729728,2887778304,\t//172.16.0.0/12\n3232235520,3232301056,\t//192.168.0.0/16\n2130706432,2130706688\t//127.0.0.0/24\n];\n\nvar hasOwnProperty = Object.hasOwnProperty;\n\nfunction check_ipv4(host) {\n\tvar re_ipv4 = /^\\d+\\.\\d+\\.\\d+\\.\\d+$/g;\n\tif (re_ipv4.test(host)) {\n\t\treturn true;\n\t}\n}\nfunction convertAddress(ipchars) {\n\tvar bytes = ipchars.split('.');\n\tvar result = (bytes[0] << 24) |\n\t(bytes[1] << 16) |\n\t(bytes[2] << 8) |\n\t(bytes[3]);\n\treturn result >>> 0;\n}\nfunction getProxyFromDirectIP(strIp) {\n\tvar intIp = convertAddress(strIp);\n\tif ( isInSubnetRange(subnetIpRangeList, intIp) ) {\n\t\treturn direct;\n\t}\n\treturn ip_proxy;\n}\nfunction isInSingleRange(ipRange, intIp) {\n\tif ( hasOwnProperty.call(cnIp16Range, intIp >>> 6) ) {\n\t\tfor ( var range = 1; range < 64; range*=4 ) {\n\t\t\tvar master = intIp & ~(range-1);\n\t\t\tif ( hasOwnProperty.call(ipRange, master) )\n\t\t\t\treturn intIp - master < ipRange[master];\n\t\t}\n\t} else {\n\t\tfor ( var range = 64; range <= 1024; range*=4 ) {\n\t\t\tvar master = intIp & ~(range-1);\n\t\t\tif ( hasOwnProperty.call(ipRange, master) )\n\t\t\t\treturn intIp - master < ipRange[master];\n\t\t}\n\t}\n}\nfunction isInSubnetRange(ipRange, intIp) {\n\tfor ( var i = 0; i < 10; i += 2 ) {\n\t\tif ( ipRange[i] <= intIp && intIp < ipRange[i+1] )\n\t\t\treturn true;\n\t}\n}\nfunction getProxyFromIP(strIp) {\n\tvar intIp = convertAddress(strIp);\n\tif ( isInSubnetRange(subnetIpRangeList, intIp) ) {\n\t\treturn direct;\n\t}\n\tvar index = (intIp >>> 24) & 0xff;\n\tif ( isInSingleRange(cnIpRange[index], intIp >>> 8) ) {\n\t\treturn nowall_proxy;\n\t}\n\treturn wall_proxy;\n}\nfunction FindProxyForURL(url, host) {\n\tif ( isPlainHostName(host) === true ) {\n\t\treturn direct;\n\t}\n\tif ( check_ipv4(host) === true ) {\n\t\treturn getProxyFromDirectIP(host);\n\t}\n\n\tvar strIp = dnsResolve(host);\n\tif (!strIp) {\n\t\treturn wall_proxy;\n\t}\n\t\n\treturn getProxyFromIP(strIp);\n}\n\n"
  },
  {
    "path": "Trojan/File/whitelist.pac",
    "content": "var wall_proxy = \"SOCKS5 127.0.0.1:1080; SOCKS 127.0.0.1:1080;\";\nvar nowall_proxy = \"DIRECT;\";\nvar direct = \"DIRECT;\";\nvar ip_proxy = \"DIRECT;\";\n\n/*\n * Copyright (C) 2014 breakwa11\n * https://github.com/breakwa11/gfw_whitelist\n */\n\nvar white_domains = {\"am\":{\n\"126\":1,\n\"51\":1\n},\"biz\":{\n\"7daysinn\":1,\n\"baozhuang\":1,\n\"bengfa\":1,\n\"changan\":1,\n\"chinafastener\":1,\n\"chongchuang\":1,\n\"dahuoji\":1,\n\"diandongche\":1,\n\"diaoding\":1,\n\"fishings\":1,\n\"hanjie\":1,\n\"intil\":1,\n\"kuangchan\":1,\n\"menchuang\":1,\n\"qianyan\":1,\n\"rohlan\":1,\n\"runhuayou\":1,\n\"shiyongjun\":1,\n\"shoutao\":1,\n\"tongye\":1,\n\"yuanyi\":1,\n\"zhaoming\":1\n},\"cc\":{\n\"0316\":1,\n\"0738\":1,\n\"163k\":1,\n\"1news\":1,\n\"21cp\":1,\n\"2che\":1,\n\"2ic\":1,\n\"3456\":1,\n\"365bh\":1,\n\"509\":1,\n\"55\":1,\n\"55g\":1,\n\"5648\":1,\n\"592wg\":1,\n\"6wang\":1,\n\"7190\":1,\n\"77wan\":1,\n\"7mo\":1,\n\"8682\":1,\n\"9844\":1,\n\"ahtc\":1,\n\"ahyx\":1,\n\"air\":1,\n\"anhui\":1,\n\"anqiu\":1,\n\"aoyou\":1,\n\"atax\":1,\n\"baise\":1,\n\"bamaol\":1,\n\"bczx\":1,\n\"bendiw\":1,\n\"bjjf\":1,\n\"byr\":1,\n\"cccity\":1,\n\"cctw\":1,\n\"chengche\":1,\n\"chinatimes\":1,\n\"chuban\":1,\n\"civilaviation\":1,\n\"comac\":1,\n\"cqnc\":1,\n\"d17\":1,\n\"denglu\":1,\n\"dker\":1,\n\"donglingying\":1,\n\"dqccc\":1,\n\"dyj\":1,\n\"ejiaju\":1,\n\"en\":1,\n\"eqz\":1,\n\"ewt\":1,\n\"fengfeng\":1,\n\"fm93\":1,\n\"gczx\":1,\n\"gf\":1,\n\"globalbuy\":1,\n\"gmtv\":1,\n\"gqw\":1,\n\"haitou\":1,\n\"hao315\":1,\n\"hb114\":1,\n\"hefei\":1,\n\"heyang\":1,\n\"heze\":1,\n\"hezerencai\":1,\n\"hongmen\":1,\n\"hty\":1,\n\"huaer\":1,\n\"huoshan\":1,\n\"huxi\":1,\n\"icoat\":1,\n\"jiangxia\":1,\n\"jinnong\":1,\n\"jinxian\":1,\n\"jinxun\":1,\n\"jz\":1,\n\"kjw\":1,\n\"kuge\":1,\n\"lbx\":1,\n\"ldz\":1,\n\"liaoba\":1,\n\"liulin\":1,\n\"longyu\":1,\n\"loyo\":1,\n\"lrd\":1,\n\"lyrc\":1,\n\"miit\":1,\n\"moko\":1,\n\"mzsky\":1,\n\"n21\":1,\n\"nandagang\":1,\n\"pingyin\":1,\n\"pinjie\":1,\n\"pp\":1,\n\"pp6\":1,\n\"pubone\":1,\n\"pyedu\":1,\n\"qcr\":1,\n\"qqzl\":1,\n\"qxw\":1,\n\"rc\":1,\n\"ruixing\":1,\n\"seeyoo\":1,\n\"sg8\":1,\n\"sgnet\":1,\n\"sh021\":1,\n\"shanhe\":1,\n\"shiyan\":1,\n\"shuichan\":1,\n\"sjhl\":1,\n\"sjz\":1,\n\"souge\":1,\n\"souyi\":1,\n\"starbaby\":1,\n\"suzhou\":1,\n\"suzo\":1,\n\"tcnews\":1,\n\"tcxw\":1,\n\"teambuy\":1,\n\"tkw\":1,\n\"tuku\":1,\n\"tyn\":1,\n\"ujian\":1,\n\"utt\":1,\n\"uu\":1,\n\"uyan\":1,\n\"vfe\":1,\n\"wandu\":1,\n\"webportal\":1,\n\"weishan\":1,\n\"wuqing\":1,\n\"wutongxiang\":1,\n\"wzcn\":1,\n\"xgz\":1,\n\"xialingying\":1,\n\"xidian\":1,\n\"xinzheng\":1,\n\"xszp\":1,\n\"yahui\":1,\n\"yc\":1,\n\"yl114\":1,\n\"ytrc\":1,\n\"ytx\":1,\n\"yutian\":1,\n\"yxi\":1,\n\"yzw\":1,\n\"zg5\":1,\n\"zhibo8\":1,\n\"zhuwang\":1,\n\"zmsc\":1,\n\"zyqc\":1\n},\"cm\":{\n\"4\":1,\n\"60\":1,\n\"bearing\":1,\n\"hebei\":1,\n\"yinshua\":1\n},\"co\":{\n\"425300\":1,\n\"banzhu\":1,\n\"hongfeng\":1,\n\"huas\":1,\n\"lixin\":1,\n\"xiaomayi\":1,\n\"xiapu\":1,\n\"ychdzx\":1\n},\"com\":{\n\"0-6\":1,\n\"0001688\":1,\n\"001cndc\":1,\n\"001en\":1,\n\"001jm\":1,\n\"001job\":1,\n\"001pp\":1,\n\"001sxy\":1,\n\"001uk\":1,\n\"001xin\":1,\n\"007swz\":1,\n\"00817\":1,\n\"0086gd\":1,\n\"01-123\":1,\n\"010lf\":1,\n\"01dai\":1,\n\"01dianzi\":1,\n\"01hr\":1,\n\"01w\":1,\n\"01wed\":1,\n\"020\":1,\n\"020h\":1,\n\"020job\":1,\n\"0214\":1,\n\"022china\":1,\n\"022net\":1,\n\"022s\":1,\n\"022v\":1,\n\"0231230\":1,\n\"023zp\":1,\n\"024zxw\":1,\n\"025ct\":1,\n\"025syedu\":1,\n\"025xl\":1,\n\"025zp\":1,\n\"027art\":1,\n\"029k\":1,\n\"0312mc\":1,\n\"0352fang\":1,\n\"0356f\":1,\n\"0357hz\":1,\n\"0371gaokao\":1,\n\"0371job\":1,\n\"0377auto\":1,\n\"0379city\":1,\n\"0384\":1,\n\"0396e\":1,\n\"03th\":1,\n\"0411hd\":1,\n\"04168\":1,\n\"0418fc\":1,\n\"0427\":1,\n\"0427qcw\":1,\n\"0430\":1,\n\"0437\":1,\n\"0460\":1,\n\"0470a\":1,\n\"0471fcw\":1,\n\"0510syedu\":1,\n\"0512zp\":1,\n\"0514\":1,\n\"0514rj\":1,\n\"051591\":1,\n\"0517cw\":1,\n\"0517w\":1,\n\"051jk\":1,\n\"0523zp\":1,\n\"05273\":1,\n\"0531\":1,\n\"0533\":1,\n\"0535-0411\":1,\n\"0537tt\":1,\n\"0537zp\":1,\n\"0538fc\":1,\n\"0543hr\":1,\n\"0546fdc\":1,\n\"0550\":1,\n\"055178\":1,\n\"0551fangchan\":1,\n\"0552jie\":1,\n\"0556zx\":1,\n\"0558\":1,\n\"0558t\":1,\n\"0559fc\":1,\n\"0561house\":1,\n\"0563job\":1,\n\"0564luan\":1,\n\"0566fc\":1,\n\"0566job\":1,\n\"0567\":1,\n\"0570fc\":1,\n\"057191\":1,\n\"0571car\":1,\n\"0573ren\":1,\n\"0575360\":1,\n\"0575bbs\":1,\n\"0575life\":1,\n\"057650\":1,\n\"0577cnw\":1,\n\"0577hr\":1,\n\"0577job\":1,\n\"0578rencai\":1,\n\"0578zhaopin\":1,\n\"0579com\":1,\n\"0591job\":1,\n\"05927\":1,\n\"0594\":1,\n\"0595job\":1,\n\"0595rc\":1,\n\"0596fc\":1,\n\"0598job\":1,\n\"0598rc\":1,\n\"059iu\":1,\n\"05info\":1,\n\"05sun\":1,\n\"060s\":1,\n\"0634\":1,\n\"0663job\":1,\n\"06abc\":1,\n\"07073\":1,\n\"07073sy\":1,\n\"0710go\":1,\n\"0712fang\":1,\n\"0715rc\":1,\n\"0715zp\":1,\n\"07177\":1,\n\"0719house\":1,\n\"0722fc\":1,\n\"0728f\":1,\n\"0730188\":1,\n\"0730news\":1,\n\"0731fdc\":1,\n\"0731jiaju\":1,\n\"0731job\":1,\n\"0734\":1,\n\"0734zpw\":1,\n\"0735\":1,\n\"07358\":1,\n\"0735jz\":1,\n\"0735zx\":1,\n\"0736fdc\":1,\n\"0739tt\":1,\n\"073yx\":1,\n\"0743063\":1,\n\"07430743\":1,\n\"0746news\":1,\n\"0750rc\":1,\n\"0752qc\":1,\n\"0755888\":1,\n\"0755caibao\":1,\n\"0755car\":1,\n\"0755rc\":1,\n\"0756home\":1,\n\"0756tong\":1,\n\"0757fc\":1,\n\"0757rc\":1,\n\"0760\":1,\n\"0760rc\":1,\n\"076299\":1,\n\"076650\":1,\n\"0769che\":1,\n\"0771rc\":1,\n\"0771td\":1,\n\"0772fang\":1,\n\"0772job\":1,\n\"0775fcw\":1,\n\"0775jzw\":1,\n\"0791look\":1,\n\"0791quanquan\":1,\n\"0797rs\":1,\n\"07jm\":1,\n\"07ka\":1,\n\"08115\":1,\n\"0818work\":1,\n\"0831che\":1,\n\"0832mh\":1,\n\"0835\":1,\n\"0838\":1,\n\"0838live\":1,\n\"0852diaoyu\":1,\n\"0852job\":1,\n\"0853rc\":1,\n\"0854job\":1,\n\"0855job\":1,\n\"0856job\":1,\n\"0857job\":1,\n\"0859job\":1,\n\"0890\":1,\n\"0891zp\":1,\n\"0898100\":1,\n\"0898dichan\":1,\n\"08cms\":1,\n\"08px\":1,\n\"0902rc\":1,\n\"0914cn\":1,\n\"0917\":1,\n\"0919123\":1,\n\"0921\":1,\n\"0931lanzhou\":1,\n\"0935\":1,\n\"09451\":1,\n\"0951job\":1,\n\"09635\":1,\n\"0991dj\":1,\n\"099sky\":1,\n\"09jz\":1,\n\"100\":1,\n\"100-tong\":1,\n\"10000fang\":1,\n\"10000job\":1,\n\"10000link\":1,\n\"10000tc\":1,\n\"1000tuan\":1,\n\"10010\":1,\n\"100580\":1,\n\"100afrc\":1,\n\"100ayrc\":1,\n\"100bt\":1,\n\"100cyrc\":1,\n\"100dnrc\":1,\n\"100dyrc\":1,\n\"100gcrc\":1,\n\"100gxrc\":1,\n\"100hcrc\":1,\n\"100jgsrc\":1,\n\"100jsrc\":1,\n\"100lcrc\":1,\n\"100lnrc\":1,\n\"100ndrc\":1,\n\"100njz\":1,\n\"100nkrc\":1,\n\"100ppi\":1,\n\"100qnrc\":1,\n\"100rjrc\":1,\n\"100scrc\":1,\n\"100t\":1,\n\"100thrc\":1,\n\"100warc\":1,\n\"100xfrc\":1,\n\"100xgrc\":1,\n\"100xiao\":1,\n\"100xuexi\":1,\n\"100xwrc\":1,\n\"100ydrc\":1,\n\"100ye\":1,\n\"100yfrc\":1,\n\"100yiyao\":1,\n\"100yxrc\":1,\n\"100zhuang\":1,\n\"101\":1,\n\"1010jz\":1,\n\"10155\":1,\n\"101jiajiao\":1,\n\"1024sj\":1,\n\"10339\":1,\n\"1039soft\":1,\n\"1065m\":1,\n\"108sq\":1,\n\"10fang\":1,\n\"10huan\":1,\n\"10s1\":1,\n\"10yan\":1,\n\"110\":1,\n\"1111\":1,\n\"111jz\":1,\n\"111ttt\":1,\n\"11315\":1,\n\"114160\":1,\n\"11464\":1,\n\"11467\":1,\n\"114best\":1,\n\"114chn\":1,\n\"114hrb\":1,\n\"114huoche\":1,\n\"114ic\":1,\n\"114jc\":1,\n\"114jcw\":1,\n\"114la\":1,\n\"114max\":1,\n\"114piaowu\":1,\n\"114px\":1,\n\"114qy\":1,\n\"114study\":1,\n\"115\":1,\n\"115800\":1,\n\"115img\":1,\n\"115kf\":1,\n\"1166\":1,\n\"11773\":1,\n\"117800\":1,\n\"1188\":1,\n\"118rc\":1,\n\"11919\":1,\n\"119g\":1,\n\"11chuangye\":1,\n\"11jk\":1,\n\"120-job\":1,\n\"120ask\":1,\n\"120askimages\":1,\n\"12114job\":1,\n\"12114rc\":1,\n\"121314\":1,\n\"122park\":1,\n\"12333sb\":1,\n\"1234wu\":1,\n\"12365auto\":1,\n\"123cha\":1,\n\"123fj\":1,\n\"123lvxing\":1,\n\"123xun\":1,\n\"123youhuo\":1,\n\"12530\":1,\n\"125job\":1,\n\"126\":1,\n\"128qd\":1,\n\"128uu\":1,\n\"12999\":1,\n\"12yao\":1,\n\"131cc\":1,\n\"133jz\":1,\n\"135edu\":1,\n\"1360\":1,\n\"136hr\":1,\n\"1377\":1,\n\"137home\":1,\n\"138edu\":1,\n\"138jm\":1,\n\"138job\":1,\n\"138mr\":1,\n\"139\":1,\n\"139life\":1,\n\"139shop\":1,\n\"13ejob\":1,\n\"13pr\":1,\n\"148-law\":1,\n\"1488\":1,\n\"15153\":1,\n\"1518\":1,\n\"1545ts\":1,\n\"155\":1,\n\"156580\":1,\n\"15666\":1,\n\"15880\":1,\n\"159\":1,\n\"15hr\":1,\n\"15sjw\":1,\n\"15w\":1,\n\"160\":1,\n\"161gg\":1,\n\"163\":1,\n\"163disk\":1,\n\"163k\":1,\n\"163yu\":1,\n\"164580\":1,\n\"1666\":1,\n\"1688\":1,\n\"16886000\":1,\n\"16888\":1,\n\"1688wan\":1,\n\"168dc\":1,\n\"168hm\":1,\n\"168hs\":1,\n\"168job\":1,\n\"168rc\":1,\n\"168tea\":1,\n\"168tex\":1,\n\"168xiezi\":1,\n\"16999\":1,\n\"16njl\":1,\n\"16sucai\":1,\n\"16tz\":1,\n\"17\":1,\n\"17173\":1,\n\"17173cdn\":1,\n\"1717518\":1,\n\"1717kf\":1,\n\"1717pk\":1,\n\"1718001\":1,\n\"1718china\":1,\n\"1718world\":1,\n\"172xiaoyuan\":1,\n\"173\":1,\n\"1732\":1,\n\"173daxue\":1,\n\"173eg\":1,\n\"173py\":1,\n\"173zy\":1,\n\"175game\":1,\n\"175kh\":1,\n\"176\":1,\n\"17611\":1,\n\"17673\":1,\n\"178\":1,\n\"17888\":1,\n\"178good\":1,\n\"178zmy\":1,\n\"179179\":1,\n\"1797wan\":1,\n\"17baba\":1,\n\"17dm\":1,\n\"17game\":1,\n\"17heli\":1,\n\"17house\":1,\n\"17k\":1,\n\"17liansuo\":1,\n\"17oh\":1,\n\"17ok\":1,\n\"17pr\":1,\n\"17sucai\":1,\n\"17u\":1,\n\"17ugo\":1,\n\"17yy\":1,\n\"17zwd\":1,\n\"18183\":1,\n\"1818hm\":1,\n\"188\":1,\n\"188cyw\":1,\n\"189house\":1,\n\"189rc\":1,\n\"189store\":1,\n\"18dao\":1,\n\"18ph\":1,\n\"18qiang\":1,\n\"18touch\":1,\n\"18yl\":1,\n\"1905\":1,\n\"197c\":1,\n\"198526\":1,\n\"198game\":1,\n\"199it\":1,\n\"19lou\":1,\n\"19yxw\":1,\n\"19zhan\":1,\n\"1dufish\":1,\n\"1dusou\":1,\n\"1dutm\":1,\n\"1gbru\":1,\n\"1kejian\":1,\n\"1m3d\":1,\n\"1mall\":1,\n\"1mishu\":1,\n\"1mit\":1,\n\"1n11\":1,\n\"1nongjing\":1,\n\"1nsou\":1,\n\"1peixun\":1,\n\"1qwe3r\":1,\n\"1stjc\":1,\n\"1t1t\":1,\n\"1techan\":1,\n\"1textile\":1,\n\"1ting\":1,\n\"1v1offcn\":1,\n\"1wandian\":1,\n\"1y2y\":1,\n\"1youxi\":1,\n\"1zhanok\":1,\n\"1zjob\":1,\n\"1zw\":1,\n\"2000888\":1,\n\"2008red\":1,\n\"200tc\":1,\n\"2011n\":1,\n\"21-cmjob\":1,\n\"21-rent\":1,\n\"21-sun\":1,\n\"21-used\":1,\n\"2100book\":1,\n\"210go\":1,\n\"211600\":1,\n\"211lx\":1,\n\"212300\":1,\n\"2125\":1,\n\"2197079\":1,\n\"21caas\":1,\n\"21cbh\":1,\n\"21ccnn\":1,\n\"21cn\":1,\n\"21cnhr\":1,\n\"21cnimg\":1,\n\"21cnjy\":1,\n\"21cp\":1,\n\"21dagong\":1,\n\"21dianyuan\":1,\n\"21dnn\":1,\n\"21edu8\":1,\n\"21food\":1,\n\"21hospital\":1,\n\"21hubei\":1,\n\"21ic\":1,\n\"21js\":1,\n\"21momo\":1,\n\"21our\":1,\n\"21part\":1,\n\"21pw\":1,\n\"21rcw\":1,\n\"21rv\":1,\n\"21so\":1,\n\"21tb\":1,\n\"21tyn\":1,\n\"21wecan\":1,\n\"21wenju\":1,\n\"21xc\":1,\n\"2200book\":1,\n\"221400job\":1,\n\"221700\":1,\n\"224700\":1,\n\"226500\":1,\n\"226y\":1,\n\"2298\":1,\n\"22edu\":1,\n\"233\":1,\n\"233000\":1,\n\"233863\":1,\n\"2344\":1,\n\"2345\":1,\n\"2366\":1,\n\"238200\":1,\n\"23ks\":1,\n\"246xf\":1,\n\"24jz\":1,\n\"24k99\":1,\n\"2500sz\":1,\n\"253u\":1,\n\"258\":1,\n\"258en\":1,\n\"25nc\":1,\n\"25pp\":1,\n\"25yz\":1,\n\"263\":1,\n\"263xmail\":1,\n\"264g\":1,\n\"265\":1,\n\"26595\":1,\n\"265g\":1,\n\"2688\":1,\n\"26abc\":1,\n\"28\":1,\n\"2881\":1,\n\"28hotel\":1,\n\"28sn\":1,\n\"28yj\":1,\n\"2cto\":1,\n\"2ge8\":1,\n\"2hua\":1,\n\"2m2j\":1,\n\"2mjob\":1,\n\"2mould\":1,\n\"2pjob\":1,\n\"2shequ\":1,\n\"2shoujie\":1,\n\"2smtc\":1,\n\"300p\":1,\n\"301688\":1,\n\"30556\":1,\n\"308308\":1,\n\"30edu\":1,\n\"310win\":1,\n\"311100\":1,\n\"312168\":1,\n\"312green\":1,\n\"313\":1,\n\"3145\":1,\n\"3155\":1,\n\"3158\":1,\n\"315che\":1,\n\"315hyw\":1,\n\"315online\":1,\n\"315weishi\":1,\n\"31alu\":1,\n\"31bear\":1,\n\"31bxg\":1,\n\"31byq\":1,\n\"31bzjx\":1,\n\"31expo\":1,\n\"31food\":1,\n\"31gcjx\":1,\n\"31gear\":1,\n\"31huiyi\":1,\n\"31jc\":1,\n\"31jgj\":1,\n\"31jiaju\":1,\n\"31jmw\":1,\n\"31jxw\":1,\n\"31mada\":1,\n\"31mold\":1,\n\"31pump\":1,\n\"31rzp\":1,\n\"31seal\":1,\n\"31spjx\":1,\n\"31taoci\":1,\n\"31wj\":1,\n\"31xjd\":1,\n\"31yj\":1,\n\"31zscl\":1,\n\"320106\":1,\n\"320921\":1,\n\"321200\":1,\n\"321cy\":1,\n\"3234\":1,\n\"323g\":1,\n\"32800\":1,\n\"32wan\":1,\n\"3310\":1,\n\"332527\":1,\n\"333job\":1,\n\"333ku\":1,\n\"33519\":1,\n\"3366\":1,\n\"337y\":1,\n\"33lc\":1,\n\"33ly\":1,\n\"33map\":1,\n\"33or\":1,\n\"3454\":1,\n\"34job\":1,\n\"35\":1,\n\"350ban\":1,\n\"352\":1,\n\"352200\":1,\n\"3533\":1,\n\"3566t\":1,\n\"35941\":1,\n\"35nic\":1,\n\"35q\":1,\n\"35rc\":1,\n\"35tool\":1,\n\"3603\":1,\n\"3608\":1,\n\"36099\":1,\n\"360aiyi\":1,\n\"360buy\":1,\n\"360buyimg\":1,\n\"360che\":1,\n\"360chuguo\":1,\n\"360doc\":1,\n\"360doo\":1,\n\"360eol\":1,\n\"360hun\":1,\n\"360hx\":1,\n\"360hy\":1,\n\"360kad\":1,\n\"360kan\":1,\n\"360kxr\":1,\n\"360safe\":1,\n\"360top\":1,\n\"360wbl\":1,\n\"360wyw\":1,\n\"360xh\":1,\n\"3618med\":1,\n\"361games\":1,\n\"364000\":1,\n\"365128\":1,\n\"36578\":1,\n\"36588zs\":1,\n\"365a8\":1,\n\"365ajw\":1,\n\"365anfang\":1,\n\"365art\":1,\n\"365auto\":1,\n\"365azw\":1,\n\"365bj\":1,\n\"365cgw\":1,\n\"365exam\":1,\n\"365heart\":1,\n\"365jilin\":1,\n\"365mo\":1,\n\"365rili\":1,\n\"365sji\":1,\n\"365tex\":1,\n\"365webcall\":1,\n\"365zhaosheng\":1,\n\"366x24\":1,\n\"368tea\":1,\n\"36hjob\":1,\n\"36kr\":1,\n\"36mc\":1,\n\"36nz\":1,\n\"37\":1,\n\"371\":1,\n\"37168\":1,\n\"371house\":1,\n\"3737\":1,\n\"3737k\":1,\n\"373f\":1,\n\"373house\":1,\n\"37937\":1,\n\"37cs\":1,\n\"37kfb\":1,\n\"37nixi\":1,\n\"37wan\":1,\n\"37wanimg\":1,\n\"3817\":1,\n\"3839\":1,\n\"387a\":1,\n\"3937\":1,\n\"3987\":1,\n\"39yss\":1,\n\"39yst\":1,\n\"3conline\":1,\n\"3d66\":1,\n\"3dfc\":1,\n\"3dkezhan\":1,\n\"3dmgame\":1,\n\"3dwwwgame\":1,\n\"3ghuashang\":1,\n\"3kfw\":1,\n\"3kk\":1,\n\"3lian\":1,\n\"3n110\":1,\n\"3qhouse\":1,\n\"3r66\":1,\n\"3s001\":1,\n\"3see\":1,\n\"3xgd\":1,\n\"400516\":1,\n\"4006666688\":1,\n\"4008000000\":1,\n\"4008885166\":1,\n\"400jz\":1,\n\"40279\":1,\n\"404000\":1,\n\"40407\":1,\n\"405400\":1,\n\"411au\":1,\n\"42144\":1,\n\"425300\":1,\n\"435200\":1,\n\"4355\":1,\n\"4399\":1,\n\"4399dmw\":1,\n\"4399j\":1,\n\"4399sy\":1,\n\"45575\":1,\n\"458hospital\":1,\n\"45fan\":1,\n\"45rc\":1,\n\"45win\":1,\n\"46518\":1,\n\"47365\":1,\n\"4738\":1,\n\"4765\":1,\n\"4779\":1,\n\"488u\":1,\n\"49you\":1,\n\"4gfy\":1,\n\"4yang\":1,\n\"500\":1,\n\"50018\":1,\n\"500wan\":1,\n\"5054399\":1,\n\"5068\":1,\n\"508job\":1,\n\"51\":1,\n\"51-cf\":1,\n\"510560\":1,\n\"5117\":1,\n\"5120\":1,\n\"51240\":1,\n\"51511\":1,\n\"5156edu\":1,\n\"5156rcw\":1,\n\"5173\":1,\n\"5173cdn\":1,\n\"51766\":1,\n\"5179\":1,\n\"517best\":1,\n\"517huizhou\":1,\n\"517tez\":1,\n\"5184\":1,\n\"518ad\":1,\n\"519d\":1,\n\"519dian\":1,\n\"51aimei\":1,\n\"51auto\":1,\n\"51bafu\":1,\n\"51bi\":1,\n\"51buy\":1,\n\"51bxg\":1,\n\"51chudui\":1,\n\"51chuli\":1,\n\"51cnhr\":1,\n\"51comp\":1,\n\"51credit\":1,\n\"51cto\":1,\n\"51daifu\":1,\n\"51ditu\":1,\n\"51dzrc\":1,\n\"51dzw\":1,\n\"51edu\":1,\n\"51etong\":1,\n\"51ey\":1,\n\"51fanli\":1,\n\"51fdc\":1,\n\"51flrc\":1,\n\"51g3\":1,\n\"51gaifang\":1,\n\"51haojob\":1,\n\"51hcw\":1,\n\"51hejia\":1,\n\"51iec\":1,\n\"51ielts\":1,\n\"51img1\":1,\n\"51jam\":1,\n\"51jiameng\":1,\n\"51jiaxiao\":1,\n\"51jiemeng\":1,\n\"51jingke\":1,\n\"51jishu\":1,\n\"51jiuhuo\":1,\n\"51job\":1,\n\"51jobcdn\":1,\n\"51jyrc\":1,\n\"51kids\":1,\n\"51kqn\":1,\n\"51langtu\":1,\n\"51liucheng\":1,\n\"51lunwen\":1,\n\"51lyrc\":1,\n\"51meishu\":1,\n\"51mingche\":1,\n\"51mobilejob\":1,\n\"51mole\":1,\n\"51mp3ring\":1,\n\"51nuoqi\":1,\n\"51offer\":1,\n\"51oscar\":1,\n\"51pla\":1,\n\"51qc\":1,\n\"51qingjiao\":1,\n\"51rc\":1,\n\"51rencai\":1,\n\"51report\":1,\n\"51seer\":1,\n\"51sheyuan\":1,\n\"51sole\":1,\n\"51t\":1,\n\"51talk\":1,\n\"51talkenglish\":1,\n\"51taonan\":1,\n\"51taoshi\":1,\n\"51tie\":1,\n\"51touch\":1,\n\"51ttyy\":1,\n\"51tz\":1,\n\"51valves\":1,\n\"51wan\":1,\n\"51wf\":1,\n\"51wj\":1,\n\"51wjrc\":1,\n\"51wyrc\":1,\n\"51xxr\":1,\n\"51yala\":1,\n\"51yes\":1,\n\"51yey\":1,\n\"51you\":1,\n\"51youcai\":1,\n\"51yougo\":1,\n\"51ysrc\":1,\n\"51yunli\":1,\n\"51zhantai\":1,\n\"51zhucai\":1,\n\"51zjxm\":1,\n\"51zsjc\":1,\n\"51ztzj\":1,\n\"51zuoche\":1,\n\"51zupu\":1,\n\"51zx\":1,\n\"51zyrc\":1,\n\"520\":1,\n\"520520520520520\":1,\n\"520apk\":1,\n\"520bn\":1,\n\"520e3e4\":1,\n\"520love520\":1,\n\"520wawa\":1,\n\"521che\":1,\n\"521g\":1,\n\"5234444\":1,\n\"52372\":1,\n\"5253\":1,\n\"526wan\":1,\n\"527pk\":1,\n\"52as\":1,\n\"52bar\":1,\n\"52bendi\":1,\n\"52bus\":1,\n\"52che\":1,\n\"52da\":1,\n\"52design\":1,\n\"52djq\":1,\n\"52fangzi\":1,\n\"52fuqing\":1,\n\"52guixi\":1,\n\"52hardware\":1,\n\"52hxw\":1,\n\"52jscn\":1,\n\"52njl\":1,\n\"52pk\":1,\n\"52solution\":1,\n\"52ykjob\":1,\n\"52yuanm\":1,\n\"52z\":1,\n\"52zhushan\":1,\n\"531city\":1,\n\"533\":1,\n\"5336\":1,\n\"538538\":1,\n\"5399\":1,\n\"53kf\":1,\n\"54086\":1,\n\"54114\":1,\n\"5433\":1,\n\"54heb\":1,\n\"54jj\":1,\n\"54job\":1,\n\"55\":1,\n\"550400\":1,\n\"55188\":1,\n\"55bbs\":1,\n\"55tuan\":1,\n\"55tuanimg\":1,\n\"55weixiu\":1,\n\"55you\":1,\n\"56\":1,\n\"56156\":1,\n\"5617\":1,\n\"56360\":1,\n\"5652\":1,\n\"5654\":1,\n\"566855\":1,\n\"5669\":1,\n\"566job\":1,\n\"56china\":1,\n\"56en\":1,\n\"56img\":1,\n\"56ml\":1,\n\"56mp\":1,\n\"56qss\":1,\n\"57023\":1,\n\"5741886\":1,\n\"576\":1,\n\"57616\":1,\n\"576tv\":1,\n\"5778\":1,\n\"577fang\":1,\n\"57821\":1,\n\"57go\":1,\n\"57info\":1,\n\"57qy\":1,\n\"57tibet\":1,\n\"57tuan\":1,\n\"58\":1,\n\"580k\":1,\n\"582hr\":1,\n\"5858\":1,\n\"586jz\":1,\n\"5874\":1,\n\"587766\":1,\n\"58dm\":1,\n\"58fenlei\":1,\n\"58food\":1,\n\"58game\":1,\n\"58guakao\":1,\n\"58house\":1,\n\"58pic\":1,\n\"58sing\":1,\n\"59120\":1,\n\"59178\":1,\n\"591hx\":1,\n\"591wed\":1,\n\"591wy\":1,\n\"5925car\":1,\n\"596fc\":1,\n\"597\":1,\n\"59706\":1,\n\"597rcw\":1,\n\"598rc\":1,\n\"59kankan\":1,\n\"5ajob\":1,\n\"5d6d\":1,\n\"5est\":1,\n\"5etv\":1,\n\"5fen\":1,\n\"5g\":1,\n\"5huu\":1,\n\"5i5j\":1,\n\"5i9u\":1,\n\"5ikfc\":1,\n\"5ipatent\":1,\n\"5its\":1,\n\"5iucn\":1,\n\"5iyq\":1,\n\"5jzp\":1,\n\"5khouse\":1,\n\"5lejob\":1,\n\"5read\":1,\n\"5sai\":1,\n\"5sw\":1,\n\"5u588\":1,\n\"5w\":1,\n\"6-china\":1,\n\"60malaysia\":1,\n\"61\":1,\n\"6103\":1,\n\"61166\":1,\n\"612345\":1,\n\"6164\":1,\n\"6168511\":1,\n\"6188\":1,\n\"618hr\":1,\n\"61baobao\":1,\n\"61bbw\":1,\n\"61ertong\":1,\n\"61flash\":1,\n\"61mami\":1,\n\"628\":1,\n\"632news\":1,\n\"64365\":1,\n\"646000\":1,\n\"64ma\":1,\n\"65\":1,\n\"651700\":1,\n\"6528\":1,\n\"65singapore\":1,\n\"65wan\":1,\n\"66163\":1,\n\"6637\":1,\n\"6665\":1,\n\"66667676\":1,\n\"666ccc\":1,\n\"6676\":1,\n\"6677000\":1,\n\"66880\":1,\n\"668city\":1,\n\"668map\":1,\n\"6695\":1,\n\"66diqiu\":1,\n\"66dt\":1,\n\"66house\":1,\n\"66liu\":1,\n\"66qhd\":1,\n\"66ruian\":1,\n\"66u\":1,\n\"66wc\":1,\n\"66wz\":1,\n\"66xue\":1,\n\"66yj\":1,\n\"66you\":1,\n\"66zhuang\":1,\n\"67\":1,\n\"6711\":1,\n\"678114\":1,\n\"6789uu\":1,\n\"678py\":1,\n\"680\":1,\n\"68211\":1,\n\"685\":1,\n\"688glass\":1,\n\"688n\":1,\n\"68hr\":1,\n\"68zhuan\":1,\n\"6949\":1,\n\"69hr\":1,\n\"69kan\":1,\n\"6eat\":1,\n\"6m\":1,\n\"6tennis\":1,\n\"6v68\":1,\n\"6zrc\":1,\n\"70\":1,\n\"703804\":1,\n\"70e\":1,\n\"70yx\":1,\n\"711g\":1,\n\"7120\":1,\n\"712100\":1,\n\"7192\":1,\n\"71lady\":1,\n\"71lm\":1,\n\"71study\":1,\n\"71zs\":1,\n\"72177\":1,\n\"7230\":1,\n\"7273\":1,\n\"72ce\":1,\n\"72g\":1,\n\"72xuan\":1,\n\"731c\":1,\n\"737\":1,\n\"7377\":1,\n\"7399\":1,\n\"73994\":1,\n\"74cms\":1,\n\"762rc\":1,\n\"7651\":1,\n\"766\":1,\n\"769car\":1,\n\"76jie\":1,\n\"7711\":1,\n\"77313\":1,\n\"774g\":1,\n\"7755\":1,\n\"777zp\":1,\n\"7788\":1,\n\"7789\":1,\n\"7799520\":1,\n\"77hunjia\":1,\n\"77l\":1,\n\"77vcd\":1,\n\"77zxw\":1,\n\"78187\":1,\n\"7878\":1,\n\"78793\":1,\n\"789gg\":1,\n\"78fz\":1,\n\"78hr\":1,\n\"78zph\":1,\n\"79\":1,\n\"7937\":1,\n\"7940\":1,\n\"7979la\":1,\n\"798edu\":1,\n\"799job\":1,\n\"79cha\":1,\n\"79w\":1,\n\"7ahr\":1,\n\"7c\":1,\n\"7caiyun\":1,\n\"7dapei\":1,\n\"7edown\":1,\n\"7fgame\":1,\n\"7hcn\":1,\n\"7hon\":1,\n\"7jia2\":1,\n\"7k35\":1,\n\"7k7k\":1,\n\"7mgame\":1,\n\"7po\":1,\n\"7stk\":1,\n\"7su\":1,\n\"7wsh\":1,\n\"7xz\":1,\n\"7y7\":1,\n\"7yueji\":1,\n\"800020308\":1,\n\"800hr\":1,\n\"800pai\":1,\n\"8014\":1,\n\"80881\":1,\n\"8090yxs\":1,\n\"80halta\":1,\n\"80tian\":1,\n\"81629\":1,\n\"818\":1,\n\"818222\":1,\n\"81tech\":1,\n\"81yy\":1,\n\"8211\":1,\n\"82222919\":1,\n\"82341\":1,\n\"826\":1,\n\"8264\":1,\n\"8265\":1,\n\"828g\":1,\n\"832200\":1,\n\"83480900\":1,\n\"83838\":1,\n\"8384cs\":1,\n\"8385\":1,\n\"84519\":1,\n\"84ktv\":1,\n\"860527\":1,\n\"860598\":1,\n\"862sc\":1,\n\"86516\":1,\n\"8684\":1,\n\"86933\":1,\n\"86anjie\":1,\n\"86djw\":1,\n\"86jobs\":1,\n\"86jzjob\":1,\n\"86kx\":1,\n\"86kyjob\":1,\n\"86lawyer\":1,\n\"86mdo\":1,\n\"86nb\":1,\n\"86office\":1,\n\"86pla\":1,\n\"86qc\":1,\n\"86wan\":1,\n\"86wind\":1,\n\"86zsw\":1,\n\"87188718\":1,\n\"8783\":1,\n\"87pk\":1,\n\"88\":1,\n\"88152\":1,\n\"8844\":1,\n\"88680\":1,\n\"88845678\":1,\n\"88999\":1,\n\"88h3\":1,\n\"88lan\":1,\n\"88mf\":1,\n\"88tc\":1,\n\"88yz\":1,\n\"89178\":1,\n\"895cn\":1,\n\"898tc\":1,\n\"8bo\":1,\n\"8btc\":1,\n\"8dn\":1,\n\"8fkd\":1,\n\"8le8le\":1,\n\"8tennis\":1,\n\"8uka\":1,\n\"8uuzg\":1,\n\"90576\":1,\n\"90tiyu\":1,\n\"90vs\":1,\n\"91\":1,\n\"911cha\":1,\n\"911xs\":1,\n\"913u\":1,\n\"9158\":1,\n\"917\":1,\n\"917rcw\":1,\n\"9188\":1,\n\"9191mr\":1,\n\"9191px\":1,\n\"91985\":1,\n\"91b2b\":1,\n\"91canyin\":1,\n\"91cps\":1,\n\"91danji\":1,\n\"91ddcc\":1,\n\"91huayi\":1,\n\"91jf\":1,\n\"91jm\":1,\n\"91jmw\":1,\n\"91job\":1,\n\"91jsj\":1,\n\"91open\":1,\n\"91px\":1,\n\"91rb\":1,\n\"91student\":1,\n\"91town\":1,\n\"91wan\":1,\n\"91yao\":1,\n\"92gzc\":1,\n\"92wudao\":1,\n\"92wy\":1,\n\"92you\":1,\n\"934dsw\":1,\n\"9355\":1,\n\"9377\":1,\n\"93pk\":1,\n\"93tyy\":1,\n\"94176\":1,\n\"941jy\":1,\n\"9453job\":1,\n\"94i5\":1,\n\"95060\":1,\n\"95081\":1,\n\"95191\":1,\n\"9553\":1,\n\"9564\":1,\n\"9588\":1,\n\"958shop\":1,\n\"95px\":1,\n\"960law\":1,\n\"960rc\":1,\n\"96211\":1,\n\"9637\":1,\n\"96520\":1,\n\"9666sr\":1,\n\"9669\":1,\n\"96963\":1,\n\"969g\":1,\n\"96hq\":1,\n\"96pk\":1,\n\"96u\":1,\n\"9724\":1,\n\"973\":1,\n\"9787\":1,\n\"97973\":1,\n\"97go\":1,\n\"98523\":1,\n\"988001\":1,\n\"988yx\":1,\n\"98player\":1,\n\"98znz\":1,\n\"99\":1,\n\"99114\":1,\n\"99166\":1,\n\"9939\":1,\n\"9949\":1,\n\"996\":1,\n\"9966333\":1,\n\"997788\":1,\n\"998\":1,\n\"999\":1,\n\"9991\":1,\n\"9996270\":1,\n\"999ask\":1,\n\"999brain\":1,\n\"99bill\":1,\n\"99cfw\":1,\n\"99fund\":1,\n\"99huizhou\":1,\n\"99ielts\":1,\n\"99inf\":1,\n\"99jianzhu\":1,\n\"99nahuo\":1,\n\"99pet\":1,\n\"99qh\":1,\n\"99sushe\":1,\n\"99wed\":1,\n\"99xr\":1,\n\"99ys\":1,\n\"99zuowen\":1,\n\"9che\":1,\n\"9chew\":1,\n\"9chun\":1,\n\"9first\":1,\n\"9ht\":1,\n\"9i5c\":1,\n\"9ijr\":1,\n\"9juren\":1,\n\"9k9k\":1,\n\"9ku\":1,\n\"9laodi\":1,\n\"9qc\":1,\n\"9sky\":1,\n\"9to\":1,\n\"9u\":1,\n\"9u8u\":1,\n\"9v8v\":1,\n\"9wee\":1,\n\"9ye\":1,\n\"9yjobtm\":1,\n\"9you\":1,\n\"9zjob\":1,\n\"a0598\":1,\n\"a1166\":1,\n\"a22\":1,\n\"a67\":1,\n\"a688888\":1,\n\"a8\":1,\n\"a9188\":1,\n\"a963\":1,\n\"abab\":1,\n\"abang\":1,\n\"abchina\":1,\n\"ablesky\":1,\n\"accgame\":1,\n\"aci-wh\":1,\n\"acs86\":1,\n\"acshoes\":1,\n\"adaicom\":1,\n\"addpv\":1,\n\"adiic\":1,\n\"admaimai\":1,\n\"admin5\":1,\n\"admin6\":1,\n\"adnxs\":1,\n\"adroll\":1,\n\"adsage\":1,\n\"adsame\":1,\n\"adsonar\":1,\n\"adtechus\":1,\n\"adyun\":1,\n\"aeenets\":1,\n\"af360\":1,\n\"afjk\":1,\n\"afjob88\":1,\n\"aft888\":1,\n\"afzhan\":1,\n\"ag365\":1,\n\"age06\":1,\n\"agrodt\":1,\n\"agrofairs\":1,\n\"agrosg\":1,\n\"ahauto\":1,\n\"ahbys\":1,\n\"ahchanyi\":1,\n\"ahgame\":1,\n\"ahglj\":1,\n\"ahgzdz\":1,\n\"ahjgxy\":1,\n\"ahjtxx\":1,\n\"ahjzw\":1,\n\"ahlags\":1,\n\"ahlib\":1,\n\"ahlife\":1,\n\"ahljnews\":1,\n\"ahmmhg\":1,\n\"ahqmdq\":1,\n\"ahssnews\":1,\n\"ahsyj\":1,\n\"ai96\":1,\n\"aibang\":1,\n\"aibo123\":1,\n\"aicai\":1,\n\"aichao521\":1,\n\"aicunfu\":1,\n\"aideschool\":1,\n\"aidiao\":1,\n\"aidigong\":1,\n\"aidr968\":1,\n\"aifang\":1,\n\"aifangke\":1,\n\"aifcdn\":1,\n\"aifengjie\":1,\n\"aigou\":1,\n\"aihami\":1,\n\"aihandu\":1,\n\"aihuigo\":1,\n\"aija\":1,\n\"aiju\":1,\n\"aiketour\":1,\n\"aili\":1,\n\"ailinzhou\":1,\n\"ailiuxue\":1,\n\"aimuju\":1,\n\"aipai\":1,\n\"airmb\":1,\n\"airtofly\":1,\n\"aituan\":1,\n\"aiyiqu\":1,\n\"aiyouxi\":1,\n\"aizhan\":1,\n\"aizhe58\":1,\n\"aizongyi\":1,\n\"ajkcdn\":1,\n\"ajkimg\":1,\n\"akangdi\":1,\n\"akdanji\":1,\n\"aksxw\":1,\n\"alacun\":1,\n\"aliapp\":1,\n\"alibaba\":1,\n\"alibado\":1,\n\"alibole\":1,\n\"alicdn\":1,\n\"aliexpress\":1,\n\"alifabu\":1,\n\"alihuahua\":1,\n\"aliimg\":1,\n\"aliloan\":1,\n\"alimama\":1,\n\"alipay\":1,\n\"alipayobjects\":1,\n\"aliresearch\":1,\n\"alisoft\":1,\n\"alitrip\":1,\n\"aliunicorn\":1,\n\"alivv\":1,\n\"alixixi\":1,\n\"aliyiyao\":1,\n\"aliyun\":1,\n\"aliyuncs\":1,\n\"alkuyi\":1,\n\"allbrightlaw\":1,\n\"allfang\":1,\n\"allyes\":1,\n\"altxw\":1,\n\"alu1886\":1,\n\"alyisheng\":1,\n\"am89\":1,\n\"amap\":1,\n\"ambow\":1,\n\"ampcn\":1,\n\"anatuprak\":1,\n\"anchi-china\":1,\n\"andaike\":1,\n\"anfan\":1,\n\"anfensi\":1,\n\"angeeks\":1,\n\"angelcrunch\":1,\n\"angelyeast\":1,\n\"anhuaedu\":1,\n\"anhuihr\":1,\n\"anhuijrw\":1,\n\"anhuinews\":1,\n\"animalchina\":1,\n\"anjian\":1,\n\"anjuke\":1,\n\"anjukestatic\":1,\n\"anqingonline\":1,\n\"anqu\":1,\n\"anquanbao\":1,\n\"anruan\":1,\n\"ansteelgroup\":1,\n\"antpedia\":1,\n\"anxiangren\":1,\n\"anxin\":1,\n\"anxjm\":1,\n\"any123\":1,\n\"any2000\":1,\n\"anzhi\":1,\n\"anzow\":1,\n\"aojiyouxue\":1,\n\"aojiyuke\":1,\n\"aojoo\":1,\n\"aoomoo\":1,\n\"aoshu\":1,\n\"aosoo\":1,\n\"aotutuan\":1,\n\"aoye\":1,\n\"aoyou\":1,\n\"ap88\":1,\n\"apabi\":1,\n\"apandim\":1,\n\"apclc\":1,\n\"apkyx\":1,\n\"app111\":1,\n\"app17\":1,\n\"apparelsos\":1,\n\"appchina\":1,\n\"appgame\":1,\n\"apple\":1,\n\"apple2003\":1,\n\"appvv\":1,\n\"appying\":1,\n\"aptchina\":1,\n\"apusic\":1,\n\"aqapk\":1,\n\"aqioo\":1,\n\"aqjfsy\":1,\n\"aqjob\":1,\n\"aqzpw\":1,\n\"aqzyzx\":1,\n\"archina\":1,\n\"arpun\":1,\n\"art456\":1,\n\"artebuy\":1,\n\"artgoin\":1,\n\"arting365\":1,\n\"artokok\":1,\n\"artrade\":1,\n\"artxun\":1,\n\"as2sc\":1,\n\"aseantradecenter\":1,\n\"asiabt\":1,\n\"asiae\":1,\n\"askci\":1,\n\"aslzw\":1,\n\"asp168\":1,\n\"aspcms\":1,\n\"astropulsion\":1,\n\"at918\":1,\n\"ataozx\":1,\n\"atdmt\":1,\n\"atobo\":1,\n\"atpanel\":1,\n\"auak\":1,\n\"austargroup\":1,\n\"austarstudy\":1,\n\"auto024\":1,\n\"auto18\":1,\n\"auto318\":1,\n\"auto328\":1,\n\"autobaidu\":1,\n\"autochina360\":1,\n\"autosup\":1,\n\"auyou\":1,\n\"av001\":1,\n\"aw99\":1,\n\"axmro\":1,\n\"ayrbs\":1,\n\"ayxxz\":1,\n\"b-fairy\":1,\n\"b-tea\":1,\n\"b2b110\":1,\n\"b2b168\":1,\n\"b2bic\":1,\n\"b2bkk\":1,\n\"b2bvip\":1,\n\"b2cedu\":1,\n\"b5m\":1,\n\"bababian\":1,\n\"babidou\":1,\n\"babymob\":1,\n\"babytree\":1,\n\"babytreeimg\":1,\n\"bafangwang\":1,\n\"bagb2b\":1,\n\"baicai\":1,\n\"baicheng\":1,\n\"baicmotor\":1,\n\"baidajob\":1,\n\"baidu\":1,\n\"baidustatic\":1,\n\"baiduyy\":1,\n\"baietu\":1,\n\"baifendian\":1,\n\"baifubao\":1,\n\"baihe\":1,\n\"baike\":1,\n\"baikemy\":1,\n\"bailitop\":1,\n\"bailvwang\":1,\n\"baimao\":1,\n\"baimei\":1,\n\"baimin\":1,\n\"baina\":1,\n\"baipaopao\":1,\n\"baipu365\":1,\n\"baiqi008\":1,\n\"baisha2004\":1,\n\"baishan\":1,\n\"baishuiapple\":1,\n\"baishunet\":1,\n\"baiwanzhan\":1,\n\"baixing\":1,\n\"baixinger\":1,\n\"baixingjd\":1,\n\"baiye5\":1,\n\"baiyou100\":1,\n\"bamaiwo\":1,\n\"bamaol\":1,\n\"bamboo18\":1,\n\"bamudi\":1,\n\"bamuyu\":1,\n\"banbijiang\":1,\n\"banggo\":1,\n\"banjiajia\":1,\n\"bank-of-china\":1,\n\"bankcomm\":1,\n\"bankhr\":1,\n\"bankofshanghai\":1,\n\"banksteel\":1,\n\"banma\":1,\n\"banwojia\":1,\n\"baobao88\":1,\n\"baobaolong\":1,\n\"baobaomm\":1,\n\"baobei360\":1,\n\"baobeihuijia\":1,\n\"baobeita\":1,\n\"baobidai\":1,\n\"baofeng\":1,\n\"baofoo\":1,\n\"baoji168\":1,\n\"baojidaily\":1,\n\"baojijob\":1,\n\"baojinews\":1,\n\"baojk\":1,\n\"baomihua\":1,\n\"baoming\":1,\n\"baoming88\":1,\n\"baoruan\":1,\n\"baoshanjie\":1,\n\"baosteel\":1,\n\"baotoufxh\":1,\n\"baoyuntong\":1,\n\"baozang\":1,\n\"baozifa\":1,\n\"baozoumanhua\":1,\n\"barmap\":1,\n\"batiaoyu\":1,\n\"batterydir\":1,\n\"batterykey\":1,\n\"baxue\":1,\n\"bayuche\":1,\n\"bazhibo\":1,\n\"bbbaaa\":1,\n\"bbhun\":1,\n\"bbioo\":1,\n\"bbs029\":1,\n\"bbsheji\":1,\n\"bbtcaster\":1,\n\"bbwfish\":1,\n\"bcactc\":1,\n\"bcjy123\":1,\n\"bcpcn\":1,\n\"bdall\":1,\n\"bdchina\":1,\n\"bdglj\":1,\n\"bdgycx\":1,\n\"bdimg\":1,\n\"bdmryj\":1,\n\"bdstatic\":1,\n\"becod\":1,\n\"beelink\":1,\n\"beianbeian\":1,\n\"beibaotu\":1,\n\"beibei\":1,\n\"beifabook\":1,\n\"beifangfoshifen\":1,\n\"beiguorc\":1,\n\"beihai365\":1,\n\"beihaidc\":1,\n\"beijinghuashen\":1,\n\"beijingrc\":1,\n\"beimeihongfeng\":1,\n\"beisen\":1,\n\"beitaichufang\":1,\n\"beiwaionline\":1,\n\"beiww\":1,\n\"benber\":1,\n\"bendibao\":1,\n\"bengbeng\":1,\n\"bengou\":1,\n\"benseshijue\":1,\n\"benshouji\":1,\n\"benxi0414\":1,\n\"berqin\":1,\n\"berui\":1,\n\"best73\":1,\n\"bestb2b\":1,\n\"besttrav\":1,\n\"betrad\":1,\n\"beva\":1,\n\"bf35\":1,\n\"bfedu\":1,\n\"bfjjw\":1,\n\"bfyx\":1,\n\"bgl88\":1,\n\"bgrimm\":1,\n\"bh-eye\":1,\n\"bh111\":1,\n\"bhxww\":1,\n\"biancui\":1,\n\"bianfeng\":1,\n\"bianmincn\":1,\n\"bianzhirensheng\":1,\n\"bibitie\":1,\n\"bidchance\":1,\n\"bieshu\":1,\n\"big-bit\":1,\n\"bijirim\":1,\n\"biketo\":1,\n\"bilibili\":1,\n\"biligame\":1,\n\"bilinstar\":1,\n\"bincailiuxue\":1,\n\"bingchengwang\":1,\n\"binzhuang\":1,\n\"bio1000\":1,\n\"bioon\":1,\n\"bisenet\":1,\n\"bitauto\":1,\n\"bitautoimg\":1,\n\"bitautotech\":1,\n\"bitscn\":1,\n\"biyangwang\":1,\n\"biyong007\":1,\n\"biz178\":1,\n\"biz72\":1,\n\"bizcn\":1,\n\"bj597\":1,\n\"bjbghc\":1,\n\"bjbus\":1,\n\"bjcankao\":1,\n\"bjccedu\":1,\n\"bjcec\":1,\n\"bjchild\":1,\n\"bjclio\":1,\n\"bjfair\":1,\n\"bjfisc\":1,\n\"bjlmfq\":1,\n\"bjmama\":1,\n\"bjmanyuan\":1,\n\"bjmti\":1,\n\"bjp321\":1,\n\"bjrc\":1,\n\"bjrcb\":1,\n\"bjsjwl\":1,\n\"bjsly\":1,\n\"bjsoyo\":1,\n\"bjspw\":1,\n\"bjsqgy\":1,\n\"bjsyqw\":1,\n\"bjtopli\":1,\n\"bjwmys\":1,\n\"bjxatq\":1,\n\"bjximei\":1,\n\"bjzqw\":1,\n\"bjzs114\":1,\n\"bkill\":1,\n\"blctwed\":1,\n\"bleju\":1,\n\"blemall\":1,\n\"bliao\":1,\n\"blimage\":1,\n\"blogbus\":1,\n\"blogchina\":1,\n\"blogcn\":1,\n\"bloves\":1,\n\"blqx\":1,\n\"blqy\":1,\n\"blshe\":1,\n\"bluehn\":1,\n\"blueidea\":1,\n\"bluekai\":1,\n\"blyol\":1,\n\"blyun\":1,\n\"bmlink\":1,\n\"bnagri\":1,\n\"bndaily\":1,\n\"bnjyks\":1,\n\"bnncn\":1,\n\"bnqgsl\":1,\n\"bnwin\":1,\n\"bo-yi\":1,\n\"boai\":1,\n\"boairc\":1,\n\"bokecc\":1,\n\"bokee\":1,\n\"bokerb\":1,\n\"bolijob\":1,\n\"booeoo\":1,\n\"bookschina\":1,\n\"boosj\":1,\n\"bootcss\":1,\n\"boqii\":1,\n\"bosscdn\":1,\n\"bossgoo\":1,\n\"bosshr\":1,\n\"bosslink\":1,\n\"boxuu\":1,\n\"bozhong\":1,\n\"bqqm\":1,\n\"brandcn\":1,\n\"breadtrip\":1,\n\"brightdairy\":1,\n\"bs265\":1,\n\"bsjhhzs\":1,\n\"bsrczpw\":1,\n\"bssmm\":1,\n\"bsyjrb\":1,\n\"btc114\":1,\n\"btc123\":1,\n\"btcha\":1,\n\"btd\":1,\n\"btophr\":1,\n\"btrcsc\":1,\n\"btsteel\":1,\n\"bufan\":1,\n\"buildhr\":1,\n\"bundpic\":1,\n\"burberry\":1,\n\"bus84\":1,\n\"busytrade\":1,\n\"buycarcn\":1,\n\"buyiju\":1,\n\"bww6bdd\":1,\n\"bx58\":1,\n\"bxd365\":1,\n\"bxdyt\":1,\n\"bxgtd\":1,\n\"bxjyw\":1,\n\"bxxy\":1,\n\"bxycw\":1,\n\"bxynzz\":1,\n\"bxzxw\":1,\n\"bycmw\":1,\n\"byecity\":1,\n\"byf\":1,\n\"byshr\":1,\n\"bytsylmr\":1,\n\"bzgd\":1,\n\"bzjw\":1,\n\"bzshw\":1,\n\"bzw315\":1,\n\"c-119\":1,\n\"c-bm\":1,\n\"c-c\":1,\n\"c-ctrip\":1,\n\"c-yl\":1,\n\"c029\":1,\n\"c969\":1,\n\"ca001\":1,\n\"ca168\":1,\n\"ca800\":1,\n\"caayee\":1,\n\"cabhr\":1,\n\"cabinetbuy\":1,\n\"cableabc\":1,\n\"caexpo\":1,\n\"cago365\":1,\n\"cai188\":1,\n\"caidianqu\":1,\n\"caigou2003\":1,\n\"caiguu\":1,\n\"caihao\":1,\n\"caijixia\":1,\n\"cailele\":1,\n\"cailiao\":1,\n\"caing\":1,\n\"caipiao365\":1,\n\"caipopo\":1,\n\"caixin\":1,\n\"caiyun\":1,\n\"cake400\":1,\n\"cali-light\":1,\n\"candou\":1,\n\"cang\":1,\n\"cangnan5\":1,\n\"cankaoxiaoxi\":1,\n\"canyin88\":1,\n\"caomeipai\":1,\n\"car0575\":1,\n\"car2100\":1,\n\"carcav\":1,\n\"cardbaobao\":1,\n\"carnoc\":1,\n\"carschina\":1,\n\"carxoo\":1,\n\"casemeet\":1,\n\"casvino\":1,\n\"casvm\":1,\n\"cat898\":1,\n\"catwaji\":1,\n\"cb12580\":1,\n\"cbe21\":1,\n\"cbigame\":1,\n\"cbinews\":1,\n\"cbminfo\":1,\n\"cboil\":1,\n\"cbrx\":1,\n\"cbskc\":1,\n\"cbsrc\":1,\n\"cc148\":1,\n\"cc961\":1,\n\"ccb\":1,\n\"cccwww\":1,\n\"ccdby\":1,\n\"ccedip\":1,\n\"ccedisp\":1,\n\"ccedpw\":1,\n\"ccement\":1,\n\"ccgoufang\":1,\n\"ccic\":1,\n\"ccidcom\":1,\n\"ccidnet\":1,\n\"ccjoy\":1,\n\"cclcn\":1,\n\"ccm-1\":1,\n\"ccn360\":1,\n\"ccnpic\":1,\n\"ccoalnews\":1,\n\"ccost\":1,\n\"ccpc360\":1,\n\"ccr100\":1,\n\"cct114\":1,\n\"cctcct\":1,\n\"cctiedu\":1,\n\"cctime\":1,\n\"cctv\":1,\n\"cctvcj\":1,\n\"cctvmall\":1,\n\"cctvpic\":1,\n\"ccutu\":1,\n\"ccwcw\":1,\n\"ccwushu\":1,\n\"cd-feiyue\":1,\n\"cdaidu\":1,\n\"cdbcw\":1,\n\"cddiaosu\":1,\n\"cdedu\":1,\n\"cdjsjx\":1,\n\"cdnet110\":1,\n\"cdqss\":1,\n\"cdrfjc\":1,\n\"cdrtvu\":1,\n\"cdscjd\":1,\n\"cdsme\":1,\n\"cdsydc\":1,\n\"cdyee\":1,\n\"cdygdq\":1,\n\"cdyipin\":1,\n\"cdyzg\":1,\n\"cdzgh\":1,\n\"ce-air\":1,\n\"ceair\":1,\n\"cebbank\":1,\n\"cecb2b\":1,\n\"ceccen\":1,\n\"cehome\":1,\n\"cehui8\":1,\n\"ceiea\":1,\n\"cement365\":1,\n\"cementren\":1,\n\"centanet\":1,\n\"centuryholding\":1,\n\"cenwor\":1,\n\"ceoeo\":1,\n\"ceotx\":1,\n\"ceowan\":1,\n\"ceramicschina\":1,\n\"cernet\":1,\n\"cersp\":1,\n\"ceunion\":1,\n\"cf668\":1,\n\"cfcyb\":1,\n\"cfd163\":1,\n\"cfhot\":1,\n\"cfmmc\":1,\n\"cguardian\":1,\n\"cguwan\":1,\n\"ch\":1,\n\"ch999\":1,\n\"chaduo\":1,\n\"chaej\":1,\n\"chahaoba\":1,\n\"chahaotai\":1,\n\"chaic\":1,\n\"chajie\":1,\n\"chamei\":1,\n\"champconsult\":1,\n\"chanel\":1,\n\"changfon\":1,\n\"changhongnet\":1,\n\"changjiangtimes\":1,\n\"changyou\":1,\n\"changzhinews\":1,\n\"chaoren\":1,\n\"chaoxing\":1,\n\"chaozhoudaily\":1,\n\"chasfz\":1,\n\"chashebao\":1,\n\"chazidian\":1,\n\"chazuo\":1,\n\"chcpmc\":1,\n\"che-piao\":1,\n\"che12\":1,\n\"che168\":1,\n\"che2\":1,\n\"cheaa\":1,\n\"cheari\":1,\n\"checkoo\":1,\n\"cheduo\":1,\n\"cheduoshao\":1,\n\"chefans\":1,\n\"chelink\":1,\n\"chem17\":1,\n\"chem960\":1,\n\"chem99\":1,\n\"chemayi\":1,\n\"chemdrug\":1,\n\"chemishu\":1,\n\"chemmade\":1,\n\"chemnet\":1,\n\"chemrc\":1,\n\"chemsb\":1,\n\"chengan5\":1,\n\"chengdechina\":1,\n\"chengdujjw\":1,\n\"chengguw\":1,\n\"chengkao365\":1,\n\"chengshiw\":1,\n\"chengshizg\":1,\n\"chengw\":1,\n\"chengyangnews\":1,\n\"chenhr\":1,\n\"chepin88\":1,\n\"chepinnet\":1,\n\"cheshi\":1,\n\"cheshi-img\":1,\n\"chetx\":1,\n\"chetxia\":1,\n\"chewen\":1,\n\"chexiu\":1,\n\"chexun\":1,\n\"cheyian\":1,\n\"cheyisou\":1,\n\"cheyou123\":1,\n\"cheyun\":1,\n\"chgcw\":1,\n\"chhkjob\":1,\n\"china\":1,\n\"china-3\":1,\n\"china-315\":1,\n\"china-ah\":1,\n\"china-asahi\":1,\n\"china-b\":1,\n\"china-cdt\":1,\n\"china-changlin\":1,\n\"china-channel\":1,\n\"china-chuwei\":1,\n\"china-d\":1,\n\"china-designer\":1,\n\"china-edai\":1,\n\"china-ef\":1,\n\"china-eia\":1,\n\"china-erzhong\":1,\n\"china-fire\":1,\n\"china-flower\":1,\n\"china-holiday\":1,\n\"china-huaxue\":1,\n\"china-insurance\":1,\n\"china-lushan\":1,\n\"china-nengyuan\":1,\n\"china-pub\":1,\n\"china-seeq\":1,\n\"china-shufajia\":1,\n\"china-slate\":1,\n\"china-sss\":1,\n\"china-up\":1,\n\"china-waste\":1,\n\"china-zibo\":1,\n\"china001\":1,\n\"china114net\":1,\n\"china12365\":1,\n\"china1f\":1,\n\"china2car\":1,\n\"china3-d\":1,\n\"chinaacc\":1,\n\"chinaamc\":1,\n\"chinaavl\":1,\n\"chinabathware\":1,\n\"chinabdh\":1,\n\"chinabdt\":1,\n\"chinabgao\":1,\n\"chinabidding\":1,\n\"chinabmi\":1,\n\"chinabreed\":1,\n\"chinabuses\":1,\n\"chinabx\":1,\n\"chinabyte\":1,\n\"chinabzp\":1,\n\"chinacarbide\":1,\n\"chinacars\":1,\n\"chinacbe\":1,\n\"chinaccm\":1,\n\"chinaccnet\":1,\n\"chinaceot\":1,\n\"chinachemnet\":1,\n\"chinachugui\":1,\n\"chinacnr\":1,\n\"chinacoal\":1,\n\"chinacoop\":1,\n\"chinacpx\":1,\n\"chinacqsb\":1,\n\"chinacreator\":1,\n\"chinacxgd\":1,\n\"chinadance\":1,\n\"chinadrtv\":1,\n\"chinadyt\":1,\n\"chinaedu\":1,\n\"chinaedunet\":1,\n\"chinaenvironment\":1,\n\"chinaeye\":1,\n\"chinafix\":1,\n\"chinaforklift\":1,\n\"chinafudaoban\":1,\n\"chinagiftsfair\":1,\n\"chinagoldgroup\":1,\n\"chinagzn\":1,\n\"chinahaoan\":1,\n\"chinahazelnut\":1,\n\"chinahbnet\":1,\n\"chinahightech\":1,\n\"chinahighway\":1,\n\"chinahr\":1,\n\"chinahrt\":1,\n\"chinahvacr\":1,\n\"chinaiiss\":1,\n\"chinaiol\":1,\n\"chinairn\":1,\n\"chinaitlab\":1,\n\"chinajnhb\":1,\n\"chinajob\":1,\n\"chinajsxx\":1,\n\"chinajxship\":1,\n\"chinajzw\":1,\n\"chinakaoyan\":1,\n\"chinakingo\":1,\n\"chinalao\":1,\n\"chinalawedu\":1,\n\"chinalawinfo\":1,\n\"chinaluxus\":1,\n\"chinalxnet\":1,\n\"chinameirongspa\":1,\n\"chinamendu\":1,\n\"chinamenwang\":1,\n\"chinamining\":1,\n\"chinamobile\":1,\n\"chinamsr\":1,\n\"chinamypp\":1,\n\"chinanetsun\":1,\n\"chinaneweast\":1,\n\"chinanews\":1,\n\"chinaningbo\":1,\n\"chinaoct\":1,\n\"chinaok\":1,\n\"chinaore\":1,\n\"chinapay\":1,\n\"chinapet\":1,\n\"chinapnr\":1,\n\"chinaports\":1,\n\"chinapp\":1,\n\"chinaqw\":1,\n\"chinaren\":1,\n\"chinasexq\":1,\n\"chinaso\":1,\n\"chinasq\":1,\n\"chinasspp\":1,\n\"chinaswitch\":1,\n\"chinasws\":1,\n\"chinatarena\":1,\n\"chinatat\":1,\n\"chinatibetnews\":1,\n\"chinatietong\":1,\n\"chinatour-net\":1,\n\"chinatsi\":1,\n\"chinauma\":1,\n\"chinaunicom\":1,\n\"chinaunionpay\":1,\n\"chinaups\":1,\n\"chinavegan\":1,\n\"chinavisual\":1,\n\"chinavnet\":1,\n\"chinavoa\":1,\n\"chinawatchnet\":1,\n\"chinawbsyxh\":1,\n\"chinawch\":1,\n\"chinaweiyu\":1,\n\"chinawestagr\":1,\n\"chinawjol\":1,\n\"chinawoodnet\":1,\n\"chinawudang\":1,\n\"chinawutong\":1,\n\"chinawuyuan\":1,\n\"chinaxiaokang\":1,\n\"chinaxinge\":1,\n\"chinaxq\":1,\n\"chinaxwcb\":1,\n\"chinayigui\":1,\n\"chinayouji\":1,\n\"chinayyjx\":1,\n\"chinaz\":1,\n\"chinazichan\":1,\n\"chinazikao\":1,\n\"chinazjy\":1,\n\"chinesecio\":1,\n\"chinesejy\":1,\n\"chizhoujob\":1,\n\"chizhouren\":1,\n\"chiznews\":1,\n\"chnart\":1,\n\"chnpac\":1,\n\"chnsuv\":1,\n\"chnvc\":1,\n\"chnweiyu\":1,\n\"chofn\":1,\n\"chtf\":1,\n\"chtgc\":1,\n\"chuandong\":1,\n\"chuangye\":1,\n\"chuangyemeng\":1,\n\"chuanke\":1,\n\"chuanmeicn\":1,\n\"chufw\":1,\n\"chuguo78\":1,\n\"chuguohome\":1,\n\"chunqiuwang\":1,\n\"chushan\":1,\n\"ci123\":1,\n\"ciceme\":1,\n\"ciif-expo\":1,\n\"ciku5\":1,\n\"cioage\":1,\n\"cisco\":1,\n\"cisregister\":1,\n\"citic\":1,\n\"citsnj\":1,\n\"city8\":1,\n\"citygf\":1,\n\"citysbs\":1,\n\"cityy\":1,\n\"civilness\":1,\n\"ciweek\":1,\n\"ciwong\":1,\n\"cjol\":1,\n\"cjrcsc\":1,\n\"cjyyw\":1,\n\"ckplayer\":1,\n\"cl0438\":1,\n\"cl597\":1,\n\"class01\":1,\n\"classic023\":1,\n\"clcmw\":1,\n\"cljmmm123\":1,\n\"clotheshr\":1,\n\"clothr\":1,\n\"clssn\":1,\n\"cmbchina\":1,\n\"cmejob\":1,\n\"cmfu\":1,\n\"cmge\":1,\n\"cmhk\":1,\n\"cmitsd\":1,\n\"cmol\":1,\n\"cmstop\":1,\n\"cmt178\":1,\n\"cmxrcw\":1,\n\"cn-122\":1,\n\"cn-diaoyu\":1,\n\"cn-office\":1,\n\"cn-roofexpert\":1,\n\"cn-truck\":1,\n\"cn010w\":1,\n\"cn0434\":1,\n\"cn0556\":1,\n\"cn0851\":1,\n\"cn0917\":1,\n\"cn12333\":1,\n\"cn21edu\":1,\n\"cn2che\":1,\n\"cn357\":1,\n\"cn5135\":1,\n\"cn539\":1,\n\"cn716\":1,\n\"cnad\":1,\n\"cnadtop\":1,\n\"cnagri\":1,\n\"cnaho\":1,\n\"cnair\":1,\n\"cnal\":1,\n\"cnautonews\":1,\n\"cnbeta\":1,\n\"cnblogs\":1,\n\"cnbzxw\":1,\n\"cnchainnet\":1,\n\"cnchu\":1,\n\"cncn\":1,\n\"cncookernet\":1,\n\"cncopter\":1,\n\"cncotton\":1,\n\"cncproduct\":1,\n\"cncraftinfo\":1,\n\"cncrk\":1,\n\"cnd8\":1,\n\"cndae\":1,\n\"cndesign\":1,\n\"cndingxi\":1,\n\"cndns\":1,\n\"cndoornet\":1,\n\"cndoors\":1,\n\"cndrsq\":1,\n\"cndrynet\":1,\n\"cndsi\":1,\n\"cndzys\":1,\n\"cnelc\":1,\n\"cnena\":1,\n\"cnep001\":1,\n\"cnepaper\":1,\n\"cnfeol\":1,\n\"cnffi\":1,\n\"cnfilternet\":1,\n\"cnfla\":1,\n\"cnfol\":1,\n\"cnfolimg\":1,\n\"cnforex\":1,\n\"cnfq\":1,\n\"cnfruit\":1,\n\"cnfzflw\":1,\n\"cngaosu\":1,\n\"cngba\":1,\n\"cngoto\":1,\n\"cngrain\":1,\n\"cnhaio\":1,\n\"cnhan\":1,\n\"cnhandan\":1,\n\"cnhangyun\":1,\n\"cnhmsq\":1,\n\"cnhnb\":1,\n\"cnhubei\":1,\n\"cnhvacrnet\":1,\n\"cnhzpjy\":1,\n\"cnipai\":1,\n\"cnipr\":1,\n\"cnjiaju\":1,\n\"cnjidan\":1,\n\"cnjj\":1,\n\"cnjnsb\":1,\n\"cnjob\":1,\n\"cnjsqw\":1,\n\"cnjxol\":1,\n\"cnjywl\":1,\n\"cnjzjj\":1,\n\"cnkang\":1,\n\"cnkjtf\":1,\n\"cnkjz\":1,\n\"cnledw\":1,\n\"cnlightnet\":1,\n\"cnluqiao\":1,\n\"cnluye\":1,\n\"cnmill\":1,\n\"cnmmhh\":1,\n\"cnmo\":1,\n\"cnnaihuo\":1,\n\"cnnb\":1,\n\"cnoee\":1,\n\"cnokcn\":1,\n\"cnoutdoor\":1,\n\"cnpatent\":1,\n\"cnpickups\":1,\n\"cnpkm\":1,\n\"cnpowdernet\":1,\n\"cnpubg\":1,\n\"cnpv\":1,\n\"cnqc\":1,\n\"cnqjc\":1,\n\"cnqjw\":1,\n\"cnradio\":1,\n\"cnrdn\":1,\n\"cnree\":1,\n\"cnrencai\":1,\n\"cnrepair\":1,\n\"cnrepark\":1,\n\"cnseeq\":1,\n\"cnshipnet\":1,\n\"cnshipping\":1,\n\"cnsikao\":1,\n\"cnsimin\":1,\n\"cnsnpj\":1,\n\"cnsphoto\":1,\n\"cnsqzx\":1,\n\"cnstock\":1,\n\"cnsuning\":1,\n\"cnsuv\":1,\n\"cnsyyx\":1,\n\"cnta\":1,\n\"cntaijiquan\":1,\n\"cntaiping\":1,\n\"cntc\":1,\n\"cntexjob\":1,\n\"cntheory\":1,\n\"cntour2\":1,\n\"cntrades\":1,\n\"cntronics\":1,\n\"cnv168\":1,\n\"cnwaternews\":1,\n\"cnwav\":1,\n\"cnwdjj\":1,\n\"cnwear\":1,\n\"cnwest\":1,\n\"cnwest88\":1,\n\"cnwinenews\":1,\n\"cnwpem\":1,\n\"cnwuyun\":1,\n\"cnxds\":1,\n\"cnxiantao\":1,\n\"cnxianzai\":1,\n\"cnyigui\":1,\n\"cnys\":1,\n\"cnyu\":1,\n\"cnyxs\":1,\n\"cnzao\":1,\n\"cnzhantuan\":1,\n\"cnzhengmu\":1,\n\"cnzjqi\":1,\n\"cnzsyz\":1,\n\"cnzz\":1,\n\"co188\":1,\n\"coal-link\":1,\n\"coalcn\":1,\n\"coaoo\":1,\n\"coatingol\":1,\n\"coco90\":1,\n\"cocoachina\":1,\n\"cofco\":1,\n\"cofeed\":1,\n\"cofool\":1,\n\"cogonline\":1,\n\"comicyu\":1,\n\"compete\":1,\n\"comsenz\":1,\n\"conshow\":1,\n\"coo8\":1,\n\"coodir\":1,\n\"cool-de\":1,\n\"coolxap\":1,\n\"coolzan\":1,\n\"coop100\":1,\n\"coopb2b\":1,\n\"cosco\":1,\n\"cozyee\":1,\n\"cp2y\":1,\n\"cpdyj\":1,\n\"cpooo\":1,\n\"cpp114\":1,\n\"cppfoto\":1,\n\"cps1688\":1,\n\"cps800\":1,\n\"cptjob\":1,\n\"cpv6\":1,\n\"cpvjob\":1,\n\"cq3a\":1,\n\"cq6\":1,\n\"cqbnda\":1,\n\"cqbnedu\":1,\n\"cqbnkx\":1,\n\"cqbnly\":1,\n\"cqbnrc\":1,\n\"cqbntv\":1,\n\"cqbys\":1,\n\"cqcb\":1,\n\"cqcoal\":1,\n\"cqcsrc\":1,\n\"cqdent\":1,\n\"cqduomi\":1,\n\"cqfire\":1,\n\"cqhaokou\":1,\n\"cqjiaz\":1,\n\"cqjjnet\":1,\n\"cqjob\":1,\n\"cqjsxx\":1,\n\"cqjy\":1,\n\"cqkx\":1,\n\"cqlozz\":1,\n\"cqmmgo\":1,\n\"cqncnews\":1,\n\"cqqiyi\":1,\n\"cqshenou\":1,\n\"cqskl\":1,\n\"cqtea\":1,\n\"cqtransit\":1,\n\"cquae\":1,\n\"cqvip\":1,\n\"cqwin\":1,\n\"cqxh120\":1,\n\"cqxiehe\":1,\n\"cqxsss\":1,\n\"cqzls\":1,\n\"cr173\":1,\n\"cr18g\":1,\n\"crabchina\":1,\n\"craftcontact\":1,\n\"crec4\":1,\n\"crecg\":1,\n\"cric\":1,\n\"crm1001\":1,\n\"crmgz\":1,\n\"crosswaycn\":1,\n\"crsky\":1,\n\"crystaledu\":1,\n\"cs-air\":1,\n\"cs090\":1,\n\"cs2sc\":1,\n\"cs53\":1,\n\"cs6s\":1,\n\"csadec\":1,\n\"csair\":1,\n\"csbew\":1,\n\"csc86\":1,\n\"cscec\":1,\n\"cscoal\":1,\n\"cscsf\":1,\n\"cscyw\":1,\n\"cseyzx\":1,\n\"csgc365\":1,\n\"csgm168\":1,\n\"csrcsc\":1,\n\"cssmoban\":1,\n\"cssyzxx\":1,\n\"csvw\":1,\n\"csxnews\":1,\n\"csxww\":1,\n\"csytv\":1,\n\"cszx\":1,\n\"ct10000\":1,\n\"ct108\":1,\n\"ct597\":1,\n\"ctaoci\":1,\n\"cteaw\":1,\n\"cthnet\":1,\n\"cthy\":1,\n\"ctiforum\":1,\n\"ctqcp\":1,\n\"ctrip\":1,\n\"ctsho\":1,\n\"cttsd\":1,\n\"ctule\":1,\n\"ctxyw\":1,\n\"cubead\":1,\n\"cuctv\":1,\n\"cug2313\":1,\n\"cunan\":1,\n\"cuncun8\":1,\n\"cuplayer\":1,\n\"custeel\":1,\n\"cut35\":1,\n\"cutv\":1,\n\"cwan\":1,\n\"cwddd\":1,\n\"cwestc\":1,\n\"cwiif\":1,\n\"cwmining\":1,\n\"cwroom\":1,\n\"cxhr\":1,\n\"cxwl\":1,\n\"cy\":1,\n\"cy580\":1,\n\"cy887\":1,\n\"cycnet\":1,\n\"cycoo\":1,\n\"cyol\":1,\n\"cz2sc\":1,\n\"cz365\":1,\n\"czbanbantong\":1,\n\"czbtv\":1,\n\"czepb\":1,\n\"czfcw\":1,\n\"czgjj\":1,\n\"czjpw\":1,\n\"czrrw\":1,\n\"czrxw\":1,\n\"czsrc\":1,\n\"cztour\":1,\n\"cztv\":1,\n\"czvv\":1,\n\"czwlgy\":1,\n\"czxiu\":1,\n\"d1cm\":1,\n\"d1net\":1,\n\"d8wed\":1,\n\"d9soft\":1,\n\"daba\":1,\n\"dachanet\":1,\n\"dachenglaw\":1,\n\"dachengnet\":1,\n\"dadipedia\":1,\n\"dadiwang\":1,\n\"dadou\":1,\n\"dadunet\":1,\n\"dafengso\":1,\n\"dagancn\":1,\n\"dagangcheng\":1,\n\"daguantao\":1,\n\"dahainan\":1,\n\"dahangzhou\":1,\n\"dahecc\":1,\n\"dahei\":1,\n\"daheshui\":1,\n\"dahoutao\":1,\n\"dahua8\":1,\n\"dahuawang\":1,\n\"dai911\":1,\n\"daibini\":1,\n\"daikuane\":1,\n\"dailyqd\":1,\n\"daisonghua\":1,\n\"daixiaomi\":1,\n\"daiyanbao\":1,\n\"dajiabao\":1,\n\"dajianet\":1,\n\"dajiazhao\":1,\n\"dajie\":1,\n\"damuzzz\":1,\n\"dance365\":1,\n\"dance888\":1,\n\"dang3\":1,\n\"dangdang\":1,\n\"dangjian\":1,\n\"danzhaowang\":1,\n\"daodao\":1,\n\"daogoubang\":1,\n\"daoguo\":1,\n\"daoxila\":1,\n\"dapu\":1,\n\"daqi\":1,\n\"daqsoft\":1,\n\"darczpw\":1,\n\"darongcheng\":1,\n\"darryring\":1,\n\"davinfo\":1,\n\"daxiangrc\":1,\n\"dayoo\":1,\n\"dayou123\":1,\n\"dazhaiwang\":1,\n\"dazhe5\":1,\n\"dazhenzimiao\":1,\n\"dazhongemiao\":1,\n\"dazhonghr\":1,\n\"dazhoushan\":1,\n\"dazibo\":1,\n\"dazpin\":1,\n\"db-nw\":1,\n\"db2car\":1,\n\"dbank\":1,\n\"dbgtzx\":1,\n\"dbtc888\":1,\n\"dc-cn\":1,\n\"dcqedu\":1,\n\"dcxnews\":1,\n\"ddcsh\":1,\n\"ddmap\":1,\n\"ddmapimg\":1,\n\"ddooo\":1,\n\"ddvip\":1,\n\"decwhy\":1,\n\"dedecms\":1,\n\"demage\":1,\n\"demaxiya\":1,\n\"denghuo\":1,\n\"deppon\":1,\n\"derenbs\":1,\n\"desktx\":1,\n\"destoon\":1,\n\"deyang5\":1,\n\"deyi\":1,\n\"deyiso\":1,\n\"dezhi\":1,\n\"dezhoudaily\":1,\n\"dfcfw\":1,\n\"dfdaily\":1,\n\"dfedu\":1,\n\"dfhdw\":1,\n\"dfhon\":1,\n\"dflgnc\":1,\n\"dfshw\":1,\n\"dfsrcw\":1,\n\"dg114\":1,\n\"dg121\":1,\n\"dgchangan\":1,\n\"dginfo\":1,\n\"dgjyw\":1,\n\"dglongmei\":1,\n\"dgqjj\":1,\n\"dgtx888\":1,\n\"dgyuanyi\":1,\n\"dgzzm\":1,\n\"dhgate\":1,\n\"dhifi\":1,\n\"diandian\":1,\n\"diandong\":1,\n\"dianji007\":1,\n\"dianli114\":1,\n\"dianpifa\":1,\n\"dianping\":1,\n\"dianpingba\":1,\n\"dianyuan\":1,\n\"diaochapai\":1,\n\"diaoyanbao\":1,\n\"diaoyu\":1,\n\"diaoyu123\":1,\n\"diaoyu520\":1,\n\"diaoyula\":1,\n\"diaoyuwang\":1,\n\"diaoyuweng\":1,\n\"dichan\":1,\n\"dili360\":1,\n\"dinghuaren\":1,\n\"dingsite\":1,\n\"dingxinhui\":1,\n\"dingyx\":1,\n\"dionly\":1,\n\"diqiuw\":1,\n\"dir001\":1,\n\"discoverhongkong\":1,\n\"discoversources\":1,\n\"discuz\":1,\n\"ditan360\":1,\n\"ditan369\":1,\n\"diyicai\":1,\n\"diyifanwen\":1,\n\"diyishijian\":1,\n\"diyiyou\":1,\n\"diypda\":1,\n\"diytrade\":1,\n\"djcb71\":1,\n\"djjw\":1,\n\"djkk\":1,\n\"djob\":1,\n\"djxww\":1,\n\"djye\":1,\n\"dld\":1,\n\"dldcdn\":1,\n\"dledu\":1,\n\"dlflavor\":1,\n\"dlgaoji\":1,\n\"dllake\":1,\n\"dlmonita\":1,\n\"dlxww\":1,\n\"dlysgh\":1,\n\"dm-rc\":1,\n\"dm0571\":1,\n\"dm456\":1,\n\"dmansg\":1,\n\"dmcbd\":1,\n\"dmzj\":1,\n\"dn1234\":1,\n\"dnwx\":1,\n\"doc88\":1,\n\"docer\":1,\n\"docin\":1,\n\"dodonew\":1,\n\"dog126\":1,\n\"doido\":1,\n\"dolcn\":1,\n\"donews\":1,\n\"dongao\":1,\n\"dongbeiol\":1,\n\"dongeedu\":1,\n\"dongfang\":1,\n\"dongfang8\":1,\n\"dongfangnews\":1,\n\"dongnanshan\":1,\n\"dongtangad\":1,\n\"dooland\":1,\n\"doomii\":1,\n\"doorhr\":1,\n\"dospy\":1,\n\"dostor\":1,\n\"douban\":1,\n\"douguo\":1,\n\"douluodalu123\":1,\n\"douxie\":1,\n\"dowater\":1,\n\"downhot\":1,\n\"downxia\":1,\n\"dpfile\":1,\n\"dpm360\":1,\n\"dq247\":1,\n\"dqccc\":1,\n\"dqcccc\":1,\n\"dqdaily\":1,\n\"dqguo\":1,\n\"dqiong\":1,\n\"dqjob88\":1,\n\"dqzc\":1,\n\"dreams-travel\":1,\n\"drivergenius\":1,\n\"driversdown\":1,\n\"ds123456\":1,\n\"ds599\":1,\n\"dsdod\":1,\n\"dsfdc\":1,\n\"dshigao\":1,\n\"dshmama\":1,\n\"dshrc\":1,\n\"dsrlzy\":1,\n\"dtcoalmine\":1,\n\"dtxmw\":1,\n\"duapp\":1,\n\"duba\":1,\n\"duitang\":1,\n\"dukuai\":1,\n\"duojiaochong\":1,\n\"duokan\":1,\n\"duomai\":1,\n\"duomeiren\":1,\n\"duomi\":1,\n\"duoshitong\":1,\n\"duoshuo\":1,\n\"duote\":1,\n\"duouoo\":1,\n\"duowan\":1,\n\"duoyewu\":1,\n\"duoyi\":1,\n\"dushicn\":1,\n\"dushifang\":1,\n\"duwenzhang\":1,\n\"duxiu\":1,\n\"dv37\":1,\n\"dwstatic\":1,\n\"dx-job\":1,\n\"dxda\":1,\n\"dxddcx\":1,\n\"dxszxy\":1,\n\"dxy\":1,\n\"dxycdn\":1,\n\"dxzx\":1,\n\"dycars\":1,\n\"dyfcw\":1,\n\"dyhjw\":1,\n\"dyplk\":1,\n\"dyqc\":1,\n\"dz-z\":1,\n\"dz1982\":1,\n\"dz666\":1,\n\"dzcnc\":1,\n\"dzmjw\":1,\n\"dzqiche\":1,\n\"dzrbs\":1,\n\"dzsc\":1,\n\"dzsm\":1,\n\"dzsrcw\":1,\n\"dzszb\":1,\n\"dzwindows\":1,\n\"dzwww\":1,\n\"dzxss\":1,\n\"dzyysb\":1,\n\"e-baojian\":1,\n\"e-chinalife\":1,\n\"e-jjj\":1,\n\"e-tiller\":1,\n\"e0514\":1,\n\"e0575\":1,\n\"e0734\":1,\n\"e118114\":1,\n\"e21cn\":1,\n\"e2say\":1,\n\"e521\":1,\n\"e8online\":1,\n\"ea3w\":1,\n\"ea56\":1,\n\"eabax\":1,\n\"eachnet\":1,\n\"eahui\":1,\n\"earthedu\":1,\n\"easdo\":1,\n\"easiu\":1,\n\"eastday\":1,\n\"easthome\":1,\n\"eastmoney\":1,\n\"eastsilver\":1,\n\"eastsoo\":1,\n\"easyreadtech\":1,\n\"easysofthome\":1,\n\"eayuan\":1,\n\"eb80\":1,\n\"ebay\":1,\n\"ebdoor\":1,\n\"ebigear\":1,\n\"ebioe\":1,\n\"ebnew\":1,\n\"ebrun\":1,\n\"ebscn\":1,\n\"ebseek\":1,\n\"ec51\":1,\n\"ec818\":1,\n\"ecaidian\":1,\n\"ecaihr\":1,\n\"eccn\":1,\n\"ecduo\":1,\n\"ecgoods\":1,\n\"echiele\":1,\n\"echinagov\":1,\n\"ecitic\":1,\n\"ecjyj\":1,\n\"ecp888\":1,\n\"ecppn\":1,\n\"ecqun\":1,\n\"ecshop\":1,\n\"edai\":1,\n\"edancheng\":1,\n\"edaocha\":1,\n\"ede35\":1,\n\"edu-hb\":1,\n\"edu-js\":1,\n\"edu03\":1,\n\"edu24ol\":1,\n\"edu5a\":1,\n\"edu80\":1,\n\"edu84\":1,\n\"edu88\":1,\n\"eduease\":1,\n\"eduego\":1,\n\"eduglobal\":1,\n\"edushi\":1,\n\"edutt\":1,\n\"eduu\":1,\n\"eduuu\":1,\n\"eduwo\":1,\n\"eduwsw\":1,\n\"eduyf\":1,\n\"edzx\":1,\n\"eechina\":1,\n\"eefocus\":1,\n\"eehu\":1,\n\"eeju\":1,\n\"eelly\":1,\n\"eeyy\":1,\n\"ef-school\":1,\n\"ef360\":1,\n\"efwang\":1,\n\"egou\":1,\n\"ehaier\":1,\n\"ehomeday\":1,\n\"ehometu\":1,\n\"ehr99\":1,\n\"ehvacr\":1,\n\"eicbs\":1,\n\"eiiq\":1,\n\"eis100\":1,\n\"eit0571\":1,\n\"ejee\":1,\n\"ejiacn\":1,\n\"ejier\":1,\n\"eju\":1,\n\"ek6\":1,\n\"ekaidian\":1,\n\"elanw\":1,\n\"eldawa\":1,\n\"ele001\":1,\n\"elecfans\":1,\n\"elecinfo\":1,\n\"elexcon\":1,\n\"eliushi\":1,\n\"ellechina\":1,\n\"ellll\":1,\n\"elong\":1,\n\"els001\":1,\n\"emarbox\":1,\n\"eminiye\":1,\n\"ems517\":1,\n\"emtx\":1,\n\"en51\":1,\n\"ename\":1,\n\"enbowang\":1,\n\"enchantshow\":1,\n\"enetedu\":1,\n\"eng24\":1,\n\"enguo\":1,\n\"enkj\":1,\n\"enshijob\":1,\n\"enterdesk\":1,\n\"eoaoo\":1,\n\"eoeandroid\":1,\n\"eoemarket\":1,\n\"eoffcn\":1,\n\"eooioo\":1,\n\"eooqoo\":1,\n\"eoouoo\":1,\n\"eoozoo\":1,\n\"eoriver\":1,\n\"epanshi\":1,\n\"epday\":1,\n\"epjob88\":1,\n\"epjyw\":1,\n\"epweike\":1,\n\"epzhaopin\":1,\n\"eq-hl\":1,\n\"eqyn\":1,\n\"erdsrsrc\":1,\n\"erongtu\":1,\n\"ersoso\":1,\n\"erya100\":1,\n\"escdn\":1,\n\"esfimg\":1,\n\"eshow365\":1,\n\"eshufa\":1,\n\"esljt\":1,\n\"esnai\":1,\n\"esongyuan\":1,\n\"esun88\":1,\n\"etao\":1,\n\"etest8\":1,\n\"ethainan\":1,\n\"etiantian\":1,\n\"etlong\":1,\n\"etoubao\":1,\n\"etpass\":1,\n\"etuan\":1,\n\"ev123\":1,\n\"evergrande\":1,\n\"everychina\":1,\n\"ewmzs\":1,\n\"ewoka\":1,\n\"eworldship\":1,\n\"ewsos\":1,\n\"ewteacher\":1,\n\"exam8\":1,\n\"examda\":1,\n\"examw\":1,\n\"exbulk\":1,\n\"exchangecn\":1,\n\"expo-china\":1,\n\"expoon\":1,\n\"expoooo\":1,\n\"expotu\":1,\n\"expowindow\":1,\n\"ey99\":1,\n\"eyaobei\":1,\n\"eyejoyful\":1,\n\"eyizhang\":1,\n\"eyou\":1,\n\"eyuyao\":1,\n\"eywedu\":1,\n\"ezhiol\":1,\n\"eztxw\":1,\n\"f139\":1,\n\"f1688\":1,\n\"f537\":1,\n\"fa-today\":1,\n\"fa597\":1,\n\"fabang\":1,\n\"fabao365\":1,\n\"fabu114\":1,\n\"fad123\":1,\n\"fafaku\":1,\n\"faidns\":1,\n\"faisco\":1,\n\"fala114\":1,\n\"faloo\":1,\n\"famen88\":1,\n\"famens\":1,\n\"famensi\":1,\n\"fancai\":1,\n\"fandian\":1,\n\"fang\":1,\n\"fang33\":1,\n\"fang99\":1,\n\"fangbx\":1,\n\"fangchan\":1,\n\"fangdd\":1,\n\"fangdr\":1,\n\"fanging\":1,\n\"fangjia\":1,\n\"fangjiadp\":1,\n\"fanglimei\":1,\n\"fangtan007\":1,\n\"fangte\":1,\n\"fangtoo\":1,\n\"fangxiaoer\":1,\n\"fangyi\":1,\n\"fangyou\":1,\n\"fangyuan365\":1,\n\"fangzhanhui\":1,\n\"fangzhur\":1,\n\"fanhuan\":1,\n\"fanlihe\":1,\n\"fanqieleyuan\":1,\n\"fanxuefei\":1,\n\"fanyizhijia\":1,\n\"far2000\":1,\n\"fastcdn\":1,\n\"favolist\":1,\n\"faw-mazda\":1,\n\"faw-vw\":1,\n\"fawan\":1,\n\"fblife\":1,\n\"fc0633\":1,\n\"fc571\":1,\n\"fccs\":1,\n\"fcg360\":1,\n\"fcgsnews\":1,\n\"fcjjr\":1,\n\"fcjob88\":1,\n\"fcrc114\":1,\n\"fcw6\":1,\n\"fcyhw\":1,\n\"fd597\":1,\n\"fdc0760\":1,\n\"fdgzw\":1,\n\"fdjzu\":1,\n\"fdkjgz\":1,\n\"feedsky\":1,\n\"feelcars\":1,\n\"feeyo\":1,\n\"fei580\":1,\n\"feicuiwuyu\":1,\n\"feiku\":1,\n\"feiliu\":1,\n\"feipin\":1,\n\"fenfen\":1,\n\"feng\":1,\n\"fengbao\":1,\n\"fengj\":1,\n\"fengjing\":1,\n\"fengniao\":1,\n\"fengone\":1,\n\"fengsung\":1,\n\"fengyunzhibo\":1,\n\"fenlei168\":1,\n\"fenlei265\":1,\n\"fenleidao\":1,\n\"fensui168\":1,\n\"ffpic\":1,\n\"fhlczy\":1,\n\"fhlyou\":1,\n\"fillseo\":1,\n\"fimmu\":1,\n\"financeun\":1,\n\"findlawimg\":1,\n\"findzd\":1,\n\"fj-hitech\":1,\n\"fj007\":1,\n\"fj987\":1,\n\"fjber\":1,\n\"fjcha\":1,\n\"fjcns\":1,\n\"fjcoop\":1,\n\"fjdaily\":1,\n\"fjdh\":1,\n\"fjhrss\":1,\n\"fjhun\":1,\n\"fjii\":1,\n\"fjjcjy\":1,\n\"fjjdrcw\":1,\n\"fjlh\":1,\n\"fjmwjx\":1,\n\"fjnacc\":1,\n\"fjnet\":1,\n\"fjpta\":1,\n\"fjsen\":1,\n\"fjsjs\":1,\n\"fjta\":1,\n\"fjtn\":1,\n\"fjzlym\":1,\n\"fjzol\":1,\n\"fl001\":1,\n\"fl78\":1,\n\"flash1890\":1,\n\"flashget\":1,\n\"floorb2b\":1,\n\"flower188\":1,\n\"flssw\":1,\n\"fltrp\":1,\n\"flyxg\":1,\n\"fnkq\":1,\n\"fnrcw\":1,\n\"fobshanghai\":1,\n\"focuschina\":1,\n\"folkw\":1,\n\"foloda\":1,\n\"foodjx\":1,\n\"foods1\":1,\n\"foodszs\":1,\n\"foojoo\":1,\n\"for68\":1,\n\"forbeschina\":1,\n\"fotile\":1,\n\"fpdisplay\":1,\n\"fpgadev\":1,\n\"fpwap\":1,\n\"fq597\":1,\n\"fractal-technology\":1,\n\"freehead\":1,\n\"frkq\":1,\n\"fs121\":1,\n\"fs31\":1,\n\"fsclzs\":1,\n\"fsdew\":1,\n\"fsjoy\":1,\n\"fslsg\":1,\n\"fstcb\":1,\n\"ft22\":1,\n\"ftchinese\":1,\n\"ftuan\":1,\n\"fujianec\":1,\n\"fujianrc\":1,\n\"fuliao\":1,\n\"fuling\":1,\n\"fuliyuwang\":1,\n\"fumubang\":1,\n\"fumuhui\":1,\n\"funfungolf\":1,\n\"funshion\":1,\n\"funxoo\":1,\n\"funxun\":1,\n\"fupiaopifa\":1,\n\"fuqiangw\":1,\n\"fuqing2006\":1,\n\"furniturebbs\":1,\n\"furnituremedia\":1,\n\"fututa\":1,\n\"fuwuce\":1,\n\"fuyoubank\":1,\n\"fwzjia\":1,\n\"fx168\":1,\n\"fx678\":1,\n\"fxxz\":1,\n\"fybxw\":1,\n\"fysns\":1,\n\"fytcw\":1,\n\"fz2sc\":1,\n\"fz597\":1,\n\"fzbm\":1,\n\"fzengine\":1,\n\"fzfzjx\":1,\n\"fzg360\":1,\n\"fzpig\":1,\n\"fzsjob\":1,\n\"g1080\":1,\n\"g12e\":1,\n\"g207\":1,\n\"g2b2b\":1,\n\"g7430\":1,\n\"gacmotor\":1,\n\"gai001\":1,\n\"gaibar\":1,\n\"gaitu\":1,\n\"gaizhui\":1,\n\"game080\":1,\n\"gamecomb\":1,\n\"gamersky\":1,\n\"gamesville\":1,\n\"gametea\":1,\n\"gamfe\":1,\n\"ganhuoche\":1,\n\"ganji\":1,\n\"ganjiangrc\":1,\n\"ganjistatic1\":1,\n\"ganniu\":1,\n\"ganwan\":1,\n\"ganxianw\":1,\n\"ganzhe\":1,\n\"gao7\":1,\n\"gao8dou\":1,\n\"gaodun\":1,\n\"gaofen\":1,\n\"gaokao\":1,\n\"gaokao789\":1,\n\"gaoqingren\":1,\n\"gaosiedu\":1,\n\"gaosubao\":1,\n\"gaoxiaola\":1,\n\"gaozhouba\":1,\n\"garply\":1,\n\"gasgoo\":1,\n\"gashr\":1,\n\"gasshow\":1,\n\"gather-sc\":1,\n\"gcchina\":1,\n\"gd-china\":1,\n\"gd-fishmarket\":1,\n\"gdcct\":1,\n\"gdcoop\":1,\n\"gdcrj\":1,\n\"gdedu123\":1,\n\"gdhbsh\":1,\n\"gdmm\":1,\n\"gdrc\":1,\n\"gdswine\":1,\n\"gdsxxw\":1,\n\"gdttc\":1,\n\"gdtuoling\":1,\n\"gdwca\":1,\n\"gdwest\":1,\n\"gdzj8\":1,\n\"geely\":1,\n\"geihui\":1,\n\"gemdale\":1,\n\"geo-show\":1,\n\"gesep\":1,\n\"gexing\":1,\n\"gezila\":1,\n\"gfan\":1,\n\"gfsns\":1,\n\"gg-art\":1,\n\"gg-led\":1,\n\"ggcj\":1,\n\"ghjie\":1,\n\"gift12345\":1,\n\"gitom\":1,\n\"gk-z\":1,\n\"gk99\":1,\n\"gkao\":1,\n\"gkong\":1,\n\"gkstk\":1,\n\"gkxx\":1,\n\"gkzhan\":1,\n\"glasseasy\":1,\n\"glasshr\":1,\n\"gldjc\":1,\n\"glinfo\":1,\n\"global-trade-center\":1,\n\"globalchemmade\":1,\n\"globalhardwares\":1,\n\"globalmarket\":1,\n\"globeimmi\":1,\n\"globrand\":1,\n\"glofang\":1,\n\"glrcw\":1,\n\"glyrc\":1,\n\"glzhuang\":1,\n\"gm86\":1,\n\"gmseb\":1,\n\"gndaily\":1,\n\"go007\":1,\n\"go2map\":1,\n\"go823\":1,\n\"go9939\":1,\n\"godsignal\":1,\n\"goepe\":1,\n\"gogocn\":1,\n\"gojiaju\":1,\n\"gold600\":1,\n\"gold678\":1,\n\"goldenholiday\":1,\n\"goldin168\":1,\n\"gong123\":1,\n\"gongcai\":1,\n\"gongchang\":1,\n\"gongjiao\":1,\n\"gongjiaomi\":1,\n\"gongkaocn\":1,\n\"gongkong\":1,\n\"gongyishibao\":1,\n\"gongzhou\":1,\n\"gonren\":1,\n\"goo2sc\":1,\n\"goocun\":1,\n\"goodbaby\":1,\n\"goodkejian\":1,\n\"google-analytics\":1,\n\"googleadservices\":1,\n\"googlesyndication\":1,\n\"googletagmanager\":1,\n\"googvv\":1,\n\"gooioo\":1,\n\"gooniu\":1,\n\"gooooal\":1,\n\"goootech\":1,\n\"gopinyin\":1,\n\"gopuu\":1,\n\"gotohz\":1,\n\"gotoip1\":1,\n\"gotoip2\":1,\n\"gotoip3\":1,\n\"gotoip4\":1,\n\"gotoip55\":1,\n\"gotoningbo\":1,\n\"gouchezixun\":1,\n\"goufang\":1,\n\"goufw\":1,\n\"gougou\":1,\n\"goulew\":1,\n\"goumin\":1,\n\"goupuzi\":1,\n\"goushe\":1,\n\"gouwuke\":1,\n\"gowulong\":1,\n\"gqren\":1,\n\"gqsoso\":1,\n\"grchina\":1,\n\"greatwuyi\":1,\n\"greentimes\":1,\n\"greenxf\":1,\n\"grfyw\":1,\n\"gridsources\":1,\n\"gridsumdissector\":1,\n\"grinm\":1,\n\"gsdpw\":1,\n\"gsftw\":1,\n\"gsheimeiren\":1,\n\"gsjb\":1,\n\"gsrcw\":1,\n\"gsstgs\":1,\n\"gstarcad\":1,\n\"gsxpz\":1,\n\"gtgqw\":1,\n\"gtimg\":1,\n\"gtja\":1,\n\"gtobal\":1,\n\"gtuu\":1,\n\"gtxh\":1,\n\"gtzyb\":1,\n\"guahao\":1,\n\"guan5\":1,\n\"guanchengrc\":1,\n\"guang\":1,\n\"guangdongrc\":1,\n\"guangguiyin\":1,\n\"guangshuishi\":1,\n\"guangxirc\":1,\n\"guanjiatu\":1,\n\"guanjoy\":1,\n\"guanyun520\":1,\n\"guanzhongrc\":1,\n\"gucheng\":1,\n\"gucn\":1,\n\"guhantai\":1,\n\"guidaye\":1,\n\"guidechem\":1,\n\"guiguanrc\":1,\n\"guijirc\":1,\n\"guijob\":1,\n\"guilincits\":1,\n\"guilinhd\":1,\n\"guilinlife\":1,\n\"guimi\":1,\n\"guiqianrc\":1,\n\"gulove\":1,\n\"guocar\":1,\n\"guolairen\":1,\n\"guolv\":1,\n\"guolvol\":1,\n\"guoshi\":1,\n\"guoxue\":1,\n\"gushiw\":1,\n\"gusuwang\":1,\n\"gutx\":1,\n\"guuoo\":1,\n\"guwanw\":1,\n\"guzhiwang\":1,\n\"gwyoo\":1,\n\"gwyou\":1,\n\"gwypxw\":1,\n\"gx123\":1,\n\"gx12301\":1,\n\"gx211\":1,\n\"gxbys\":1,\n\"gxcity\":1,\n\"gxfdcw\":1,\n\"gxfpw\":1,\n\"gxgymsxx\":1,\n\"gxhc365\":1,\n\"gxhouse\":1,\n\"gxhzxw\":1,\n\"gxjtaq\":1,\n\"gxnongmu\":1,\n\"gxorg\":1,\n\"gxqcw\":1,\n\"gxqxj\":1,\n\"gxrc\":1,\n\"gxrcw\":1,\n\"gxsky\":1,\n\"gxwj315\":1,\n\"gxybw\":1,\n\"gxylnews\":1,\n\"gy365\":1,\n\"gyxnews\":1,\n\"gyxuan\":1,\n\"gz91\":1,\n\"gzbsnc\":1,\n\"gzccps\":1,\n\"gzcofc\":1,\n\"gzcol\":1,\n\"gzcpc\":1,\n\"gzdfxw\":1,\n\"gzdsw\":1,\n\"gzedu\":1,\n\"gzh\":1,\n\"gzjuncheng\":1,\n\"gzlight\":1,\n\"gzmama\":1,\n\"gzmanny\":1,\n\"gzmtr\":1,\n\"gznet\":1,\n\"gzqnzyz\":1,\n\"gzred\":1,\n\"gzrencai\":1,\n\"gzrisingsteel\":1,\n\"gzsedu\":1,\n\"gzstv\":1,\n\"gzszk\":1,\n\"gztcdj\":1,\n\"gztv\":1,\n\"gzucard\":1,\n\"gzxuelun\":1,\n\"gzymj\":1,\n\"gzza\":1,\n\"h0591\":1,\n\"h2o-china\":1,\n\"habctv\":1,\n\"hackhome\":1,\n\"hackp\":1,\n\"hahaertong\":1,\n\"haibao\":1,\n\"haichaninfo\":1,\n\"haier\":1,\n\"haihuahr\":1,\n\"haihui1688\":1,\n\"haimanfeisi\":1,\n\"hainanfz\":1,\n\"haining\":1,\n\"hanbinwang\":1,\n\"hancheng\":1,\n\"handu\":1,\n\"hangye8\":1,\n\"hanweb\":1,\n\"hanxingtv\":1,\n\"hao0469\":1,\n\"hao123\":1,\n\"hao123img\":1,\n\"hao224\":1,\n\"hao315\":1,\n\"haob2b\":1,\n\"haobangni\":1,\n\"haochi123\":1,\n\"haochimei\":1,\n\"haodai\":1,\n\"haodf\":1,\n\"haodingdan\":1,\n\"haodou\":1,\n\"haofjj\":1,\n\"haofung\":1,\n\"haofz\":1,\n\"haogongzhang\":1,\n\"haojiudaili\":1,\n\"haoleyou\":1,\n\"haoliv\":1,\n\"haomzl\":1,\n\"haopoo\":1,\n\"haorc\":1,\n\"haote\":1,\n\"haotijin\":1,\n\"haotui\":1,\n\"haowangpu\":1,\n\"haowm\":1,\n\"haowu\":1,\n\"haoyisheng\":1,\n\"haoyiwujin\":1,\n\"haoyun56\":1,\n\"haozhanhui\":1,\n\"haozhou\":1,\n\"haozu\":1,\n\"haozuojia\":1,\n\"happypingpang\":1,\n\"harbin123\":1,\n\"harrenmedianetwork\":1,\n\"hatcy\":1,\n\"havehome\":1,\n\"haxiu\":1,\n\"hb30\":1,\n\"hbaas\":1,\n\"hbdjk\":1,\n\"hbeinews\":1,\n\"hbfxh\":1,\n\"hbfys\":1,\n\"hbfzb\":1,\n\"hbgajg\":1,\n\"hbgrain\":1,\n\"hbgsl\":1,\n\"hbhscpa\":1,\n\"hbjie\":1,\n\"hbjob88\":1,\n\"hbksw\":1,\n\"hbliti\":1,\n\"hbqc\":1,\n\"hbqnb\":1,\n\"hbrc\":1,\n\"hbshgzx\":1,\n\"hbsjz110\":1,\n\"hbsztv\":1,\n\"hbtcw\":1,\n\"hbtycp\":1,\n\"hbxfmp\":1,\n\"hbxmad\":1,\n\"hbydsy\":1,\n\"hbyidu\":1,\n\"hbzhan\":1,\n\"hbzkw\":1,\n\"hbzkwl\":1,\n\"hc360\":1,\n\"hc433\":1,\n\"hctvnet\":1,\n\"hcxww\":1,\n\"hd512\":1,\n\"hdeso\":1,\n\"hdmnw\":1,\n\"hdslb\":1,\n\"hdzp\":1,\n\"hdzxw\":1,\n\"he-nan\":1,\n\"healthoo\":1,\n\"healthr\":1,\n\"hebcoop\":1,\n\"hebdx\":1,\n\"hebeicdc\":1,\n\"hebeihr\":1,\n\"hebiw\":1,\n\"hebradio\":1,\n\"hebtv\":1,\n\"hefeiat\":1,\n\"hehu\":1,\n\"heiguang\":1,\n\"heima8\":1,\n\"hejun\":1,\n\"hekouqu\":1,\n\"hellozb\":1,\n\"hellozx\":1,\n\"henan100\":1,\n\"henanci\":1,\n\"henanedu\":1,\n\"henankf\":1,\n\"henanrc\":1,\n\"henantiyu\":1,\n\"henanweiye\":1,\n\"hengqian\":1,\n\"hengqijy\":1,\n\"hengyan\":1,\n\"hepan\":1,\n\"hepost\":1,\n\"hepuwang\":1,\n\"herostart\":1,\n\"herschina\":1,\n\"hersp\":1,\n\"hetda\":1,\n\"hexieshaanxi\":1,\n\"hexindai\":1,\n\"hexun\":1,\n\"heyuan163\":1,\n\"heze369\":1,\n\"hezejob\":1,\n\"hezeribao\":1,\n\"hf2sc\":1,\n\"hf365\":1,\n\"hfhouse\":1,\n\"hfk99\":1,\n\"hftogo\":1,\n\"hfwenshi\":1,\n\"hg-z\":1,\n\"hgjob\":1,\n\"hgqzj\":1,\n\"hgrencai\":1,\n\"hgzrc\":1,\n\"hh010\":1,\n\"hhczy\":1,\n\"hhhrs\":1,\n\"hhhtnews\":1,\n\"hhk365\":1,\n\"hhkao\":1,\n\"hhncp\":1,\n\"hhtravel\":1,\n\"hi0734\":1,\n\"hi1718\":1,\n\"hi2000\":1,\n\"hi772\":1,\n\"hiao\":1,\n\"hiapk\":1,\n\"hicct\":1,\n\"hicdma\":1,\n\"hichina\":1,\n\"hilizi\":1,\n\"himfr\":1,\n\"himinsy\":1,\n\"hipiao\":1,\n\"hirede\":1,\n\"hisense\":1,\n\"hisupplier\":1,\n\"hitao\":1,\n\"hjenglish\":1,\n\"hk515\":1,\n\"hkcts\":1,\n\"hkproperty\":1,\n\"hktdc\":1,\n\"hkxtzgl\":1,\n\"hldbtv\":1,\n\"hldnews\":1,\n\"hlgnet\":1,\n\"hljjc\":1,\n\"hljrtvu\":1,\n\"hljtcp\":1,\n\"hljtv\":1,\n\"hlpolice\":1,\n\"hly\":1,\n\"hlybar\":1,\n\"hmaow\":1,\n\"hme01\":1,\n\"hmecw\":1,\n\"hmlan\":1,\n\"hmw163\":1,\n\"hmw365\":1,\n\"hn12333\":1,\n\"hn987\":1,\n\"hnair\":1,\n\"hncdc\":1,\n\"hnchj\":1,\n\"hncoop\":1,\n\"hncpu\":1,\n\"hncsmjzs\":1,\n\"hnditu\":1,\n\"hnemap\":1,\n\"hnfgdj\":1,\n\"hnfxh\":1,\n\"hnfzb\":1,\n\"hngbjy\":1,\n\"hngfjy\":1,\n\"hnhjw\":1,\n\"hnhw\":1,\n\"hnhyrc\":1,\n\"hnkejixueyuan\":1,\n\"hnloushi\":1,\n\"hnmama\":1,\n\"hnnypp\":1,\n\"hnradio\":1,\n\"hnrc\":1,\n\"hnrcsc\":1,\n\"hnrczpw\":1,\n\"hnrsks\":1,\n\"hnsncb\":1,\n\"hnticai\":1,\n\"hntjtjw\":1,\n\"hnwencheng\":1,\n\"hnxxw666\":1,\n\"hnxxwzz\":1,\n\"hnxysteel\":1,\n\"hnyxhb\":1,\n\"hnyymd\":1,\n\"hnzhuang\":1,\n\"hnzqw\":1,\n\"hnzscl\":1,\n\"hnzssj\":1,\n\"hnzyzx\":1,\n\"hogesoft\":1,\n\"holdfine\":1,\n\"home77\":1,\n\"home898\":1,\n\"homeinns\":1,\n\"homekoo\":1,\n\"hometex114\":1,\n\"hometexnet\":1,\n\"homeun\":1,\n\"hong-men\":1,\n\"hongdamold\":1,\n\"hongen\":1,\n\"honghuowang\":1,\n\"hongjingedu\":1,\n\"hongmen\":1,\n\"hongniang\":1,\n\"hongshu\":1,\n\"hongtu\":1,\n\"hongxiu\":1,\n\"hongzao114\":1,\n\"hoopchina\":1,\n\"hooshong\":1,\n\"horsehr\":1,\n\"hosocorp\":1,\n\"hot178\":1,\n\"houcar\":1,\n\"houdao\":1,\n\"house365\":1,\n\"house371\":1,\n\"house666\":1,\n\"househr\":1,\n\"househy\":1,\n\"housoo\":1,\n\"houstyle\":1,\n\"houxue\":1,\n\"howbuy\":1,\n\"howjia\":1,\n\"howzhi\":1,\n\"hq-ielts\":1,\n\"hq0564\":1,\n\"hq88\":1,\n\"hqbpc\":1,\n\"hqcr\":1,\n\"hqdoor\":1,\n\"hqew\":1,\n\"hqjhw\":1,\n\"hql8\":1,\n\"hqlsw\":1,\n\"hqmianshou\":1,\n\"hqqrc\":1,\n\"hqsxy\":1,\n\"hqthw\":1,\n\"hqyj\":1,\n\"hr006\":1,\n\"hr025\":1,\n\"hr0571\":1,\n\"hr0660\":1,\n\"hr0751\":1,\n\"hr0752\":1,\n\"hr0753\":1,\n\"hr0755\":1,\n\"hr0759\":1,\n\"hr0766\":1,\n\"hr0898\":1,\n\"hr1000\":1,\n\"hr33\":1,\n\"hr369\":1,\n\"hr762\":1,\n\"hr763\":1,\n\"hrbanlv\":1,\n\"hrbit\":1,\n\"hrbjsd\":1,\n\"hrbuilds\":1,\n\"hrhorse\":1,\n\"hrpin\":1,\n\"hs-cn\":1,\n\"hsdcw\":1,\n\"hsdhq\":1,\n\"hshan\":1,\n\"hsjyxx\":1,\n\"hsmhw\":1,\n\"hsrcw\":1,\n\"hssanli\":1,\n\"hsw365\":1,\n\"hsx99\":1,\n\"htexam\":1,\n\"htinns\":1,\n\"htkaoyan\":1,\n\"htsec\":1,\n\"httpcn\":1,\n\"htyuqi\":1,\n\"hua\":1,\n\"huaban\":1,\n\"huabian\":1,\n\"huacolor\":1,\n\"huadaofengye\":1,\n\"huagu\":1,\n\"huaian\":1,\n\"huaibei163\":1,\n\"huainet\":1,\n\"huaiyangnews\":1,\n\"huajiemba\":1,\n\"huajx\":1,\n\"hualady\":1,\n\"hualongxiang\":1,\n\"huamanche\":1,\n\"huamu\":1,\n\"huanancn\":1,\n\"huangru\":1,\n\"huangye88\":1,\n\"huangyesoso\":1,\n\"huanjinrong\":1,\n\"huanq\":1,\n\"huanqiu\":1,\n\"huantu\":1,\n\"huapinwang\":1,\n\"huash\":1,\n\"huashihongfeng\":1,\n\"huasmaple\":1,\n\"huatai\":1,\n\"huatu\":1,\n\"huaue\":1,\n\"huawei\":1,\n\"huaxi100\":1,\n\"huaxia\":1,\n\"huaxirc\":1,\n\"huayin114\":1,\n\"huayin520\":1,\n\"huayuanjuye\":1,\n\"huayuejob\":1,\n\"huazhile\":1,\n\"huazhu\":1,\n\"hubai\":1,\n\"hubeirc\":1,\n\"hudong\":1,\n\"hugd\":1,\n\"hui800\":1,\n\"huibo\":1,\n\"huibojob\":1,\n\"huiche\":1,\n\"huiche100\":1,\n\"huilaimai\":1,\n\"huilan\":1,\n\"huimaiche\":1,\n\"huishangbao\":1,\n\"huishi365\":1,\n\"huishoushang\":1,\n\"huisou\":1,\n\"huitong123\":1,\n\"huitu\":1,\n\"huixiaodai\":1,\n\"huizcn\":1,\n\"huizhuang\":1,\n\"hujiang\":1,\n\"huluxia\":1,\n\"hunangy\":1,\n\"hunanpta\":1,\n\"hunanrc\":1,\n\"hunantv\":1,\n\"hunbys\":1,\n\"hunchunnet\":1,\n\"hunlimama\":1,\n\"hunqingren\":1,\n\"hunt007\":1,\n\"hunuo\":1,\n\"huobi\":1,\n\"huoche\":1,\n\"huochepiao\":1,\n\"huochepu\":1,\n\"huodongjia\":1,\n\"huodongxing\":1,\n\"huohu123\":1,\n\"huolinhe\":1,\n\"huoshannews\":1,\n\"huowan\":1,\n\"huoxue\":1,\n\"hupu\":1,\n\"hushi114\":1,\n\"huway\":1,\n\"huxiu\":1,\n\"hvbao\":1,\n\"hwlai\":1,\n\"hx-car\":1,\n\"hx116\":1,\n\"hx2car\":1,\n\"hx95\":1,\n\"hxen\":1,\n\"hxfzzx\":1,\n\"hxrc\":1,\n\"hxsd\":1,\n\"hxuu\":1,\n\"hxyjw\":1,\n\"hy123\":1,\n\"hydcd\":1,\n\"hyedu\":1,\n\"hyjzw\":1,\n\"hyqcw\":1,\n\"hyrmw\":1,\n\"hytechan\":1,\n\"hywlm\":1,\n\"hyxfhq\":1,\n\"hyxnews\":1,\n\"hyxww\":1,\n\"hz321\":1,\n\"hz66\":1,\n\"hzagro\":1,\n\"hzbj\":1,\n\"hzbx\":1,\n\"hzcnb\":1,\n\"hzcnc\":1,\n\"hzcskj\":1,\n\"hzgjj\":1,\n\"hzhr\":1,\n\"hzhuti\":1,\n\"hzins\":1,\n\"hzland\":1,\n\"hzlp\":1,\n\"hzlw\":1,\n\"hzmba\":1,\n\"hznews\":1,\n\"hznzcn\":1,\n\"hzqx\":1,\n\"hzrc\":1,\n\"hzshw\":1,\n\"hzsmesc\":1,\n\"hztbc\":1,\n\"hzti\":1,\n\"hzutc\":1,\n\"hzwmw\":1,\n\"i-jjj\":1,\n\"i-okla\":1,\n\"i0456\":1,\n\"i1515\":1,\n\"i8i8i8\":1,\n\"i9133\":1,\n\"iacmall\":1,\n\"iask\":1,\n\"ib-china\":1,\n\"ibamaol\":1,\n\"ibanggo\":1,\n\"ibangkf\":1,\n\"ibeifeng\":1,\n\"ibicn\":1,\n\"ibm\":1,\n\"ibusdb\":1,\n\"ic10\":1,\n\"ic37\":1,\n\"ic98\":1,\n\"icafe8\":1,\n\"icaile\":1,\n\"icbuy\":1,\n\"ichengzi\":1,\n\"ichtf\":1,\n\"iciba\":1,\n\"icis-china\":1,\n\"icjyw\":1,\n\"icpcw\":1,\n\"icson\":1,\n\"icxo\":1,\n\"icycn\":1,\n\"idcquan\":1,\n\"idcspy\":1,\n\"idongzhi\":1,\n\"idooor\":1,\n\"idqqimg\":1,\n\"idting\":1,\n\"ieche\":1,\n\"iecity\":1,\n\"iecworld\":1,\n\"iefang\":1,\n\"iezhan\":1,\n\"ifeng\":1,\n\"ifenghui\":1,\n\"ifengimg\":1,\n\"ifensi\":1,\n\"iflying\":1,\n\"ifsino\":1,\n\"igeak\":1,\n\"ihaiyan\":1,\n\"ihanhua\":1,\n\"ihei5\":1,\n\"iheima\":1,\n\"ihome99\":1,\n\"ihongyou\":1,\n\"ihoome\":1,\n\"ihuatong\":1,\n\"ii010\":1,\n\"iianews\":1,\n\"iiigo\":1,\n\"iiijjj\":1,\n\"iiyi\":1,\n\"ijia360\":1,\n\"ijiatv\":1,\n\"ijie\":1,\n\"ijinshan\":1,\n\"ijjnews\":1,\n\"ijxjj\":1,\n\"ik123\":1,\n\"ikaka\":1,\n\"ikanchai\":1,\n\"ikandian\":1,\n\"ikang\":1,\n\"ikuyy\":1,\n\"ilangwen\":1,\n\"ileehoo\":1,\n\"ilongre\":1,\n\"ilqut\":1,\n\"im286\":1,\n\"imanhua\":1,\n\"imeimama\":1,\n\"img.cctvpic\":1,\n\"imglefeng\":1,\n\"iminte\":1,\n\"imlvyou\":1,\n\"imosi\":1,\n\"imqq\":1,\n\"imrworldwide\":1,\n\"in-en\":1,\n\"in189\":1,\n\"inabr\":1,\n\"inanle\":1,\n\"inchedao\":1,\n\"indexedu\":1,\n\"inezha\":1,\n\"infiworks\":1,\n\"infobidding\":1,\n\"infohc\":1,\n\"infzm\":1,\n\"inhe\":1,\n\"inlishui\":1,\n\"inshion\":1,\n\"intel\":1,\n\"intertid\":1,\n\"inuobi\":1,\n\"investjilin\":1,\n\"invitemedia\":1,\n\"ioeoo\":1,\n\"iooeoo\":1,\n\"ioomoo\":1,\n\"iooqoo\":1,\n\"iooroo\":1,\n\"ioroo\":1,\n\"iouoo\":1,\n\"iouter\":1,\n\"iowoo\":1,\n\"ip138\":1,\n\"ip1840\":1,\n\"ipadown\":1,\n\"ipchina\":1,\n\"ipetfair\":1,\n\"ipincai\":1,\n\"ipingshan\":1,\n\"ipinyou\":1,\n\"iqilu\":1,\n\"iqingren\":1,\n\"iqiyi\":1,\n\"iraoping\":1,\n\"irrichina\":1,\n\"irs01\":1,\n\"isanmen\":1,\n\"ishaanxi\":1,\n\"ishangman\":1,\n\"ishowx\":1,\n\"isoucai\":1,\n\"it168\":1,\n\"it7t\":1,\n\"itbulo\":1,\n\"itchaguan\":1,\n\"itdcw\":1,\n\"iteye\":1,\n\"ithome\":1,\n\"itmop\":1,\n\"itoptrip\":1,\n\"itravelqq\":1,\n\"itshai\":1,\n\"itxinwen\":1,\n\"ivsky\":1,\n\"iwebchoice\":1,\n\"iwhr\":1,\n\"ixiaoma\":1,\n\"ixiawan\":1,\n\"ixumu\":1,\n\"iyaxin\":1,\n\"iyaya\":1,\n\"iyizhai\":1,\n\"iyuanhong\":1,\n\"iyxwzx\":1,\n\"iyzx\":1,\n\"izaojiao\":1,\n\"izda\":1,\n\"izdap\":1,\n\"izdinix\":1,\n\"izhufu\":1,\n\"izhuti\":1,\n\"j1\":1,\n\"j2014\":1,\n\"ja001\":1,\n\"jaecdn\":1,\n\"jaedu\":1,\n\"jarhu\":1,\n\"jaz581\":1,\n\"jb1000\":1,\n\"jbdown\":1,\n\"jbzyw\":1,\n\"jc114\":1,\n\"jc35\":1,\n\"jc68\":1,\n\"jc85\":1,\n\"jcbao\":1,\n\"jcbctv\":1,\n\"jcoal\":1,\n\"jcqzw\":1,\n\"jcrb\":1,\n\"jcrcw\":1,\n\"jcsychina\":1,\n\"jctrans\":1,\n\"jcwcn\":1,\n\"jcz001\":1,\n\"jczxb\":1,\n\"jd\":1,\n\"jd-cg\":1,\n\"jd100\":1,\n\"jdbbx\":1,\n\"jdcjsr\":1,\n\"jdgod\":1,\n\"jdjob88\":1,\n\"jdsc35\":1,\n\"jdw001\":1,\n\"jdypgxw\":1,\n\"jdzj\":1,\n\"jdzol\":1,\n\"jewelchina\":1,\n\"jfcaifu\":1,\n\"jfdaily\":1,\n\"jfgphzs\":1,\n\"jfinfo\":1,\n\"jgaoxiao\":1,\n\"jgcx56\":1,\n\"jgjob88\":1,\n\"jgjw\":1,\n\"jgsdaily\":1,\n\"jgxxw\":1,\n\"jh2sc\":1,\n\"jh597\":1,\n\"jhbezs\":1,\n\"jhcxl\":1,\n\"jhhssy\":1,\n\"jia\":1,\n\"jia360\":1,\n\"jia400\":1,\n\"jiafangyun\":1,\n\"jiagle\":1,\n\"jiahesj\":1,\n\"jiahesuji\":1,\n\"jiajiao114\":1,\n\"jiajiao400\":1,\n\"jiajiaoban\":1,\n\"jiaju\":1,\n\"jiaju001\":1,\n\"jiajumi\":1,\n\"jiajuol\":1,\n\"jiakao\":1,\n\"jiameng\":1,\n\"jiameng001\":1,\n\"jiameng8\":1,\n\"jiancai\":1,\n\"jiancaizhanhui\":1,\n\"jiangduoduo\":1,\n\"jiangdurencai\":1,\n\"jianghairc\":1,\n\"jianghuairc\":1,\n\"jiangmin\":1,\n\"jiangnews\":1,\n\"jiangshi\":1,\n\"jiangsurc\":1,\n\"jiangxirc\":1,\n\"jiankang\":1,\n\"jiankangzu\":1,\n\"jianke\":1,\n\"jiankongbao\":1,\n\"jianli-sky\":1,\n\"jianshe99\":1,\n\"jianso\":1,\n\"jianzhi8\":1,\n\"jianzhiabc\":1,\n\"jiaomai\":1,\n\"jiaoman\":1,\n\"jiaotanqihuo\":1,\n\"jiaoyimao\":1,\n\"jiaoyulei\":1,\n\"jiathis\":1,\n\"jiatx\":1,\n\"jiaxingsteel\":1,\n\"jiayouqiche\":1,\n\"jiayuan\":1,\n\"jiazhao\":1,\n\"jiazhuang6\":1,\n\"jichuang360\":1,\n\"jide123\":1,\n\"jidi\":1,\n\"jidongrc\":1,\n\"jiemeng8\":1,\n\"jiepei\":1,\n\"jietusoft\":1,\n\"jieyitong668\":1,\n\"jifang360\":1,\n\"jiiaa\":1,\n\"jijidi\":1,\n\"jike\":1,\n\"jilaibao\":1,\n\"jilaidai\":1,\n\"jilinfc\":1,\n\"jilinrc\":1,\n\"jilinzhaopin\":1,\n\"jin14\":1,\n\"jinbifun\":1,\n\"jincin\":1,\n\"jinfr\":1,\n\"jinfuzi\":1,\n\"jingchurc\":1,\n\"jingdianwan\":1,\n\"jingjiawang\":1,\n\"jingjinnews\":1,\n\"jingjishi\":1,\n\"jingpinke\":1,\n\"jingwei\":1,\n\"jingwumeishi\":1,\n\"jingyanbus\":1,\n\"jingzheng\":1,\n\"jingzhengu\":1,\n\"jinhejs\":1,\n\"jinhongmc\":1,\n\"jinhuatv\":1,\n\"jinjianginns\":1,\n\"jinkaoedu\":1,\n\"jinku\":1,\n\"jinlaoxi\":1,\n\"jinmajia\":1,\n\"jinmenrc\":1,\n\"jinpu\":1,\n\"jinquktv\":1,\n\"jinshangrc\":1,\n\"jinti\":1,\n\"jinxiang114\":1,\n\"jinyuan2008\":1,\n\"jitimes\":1,\n\"jitongtianxia\":1,\n\"jiu6\":1,\n\"jiudianzhaopin\":1,\n\"jiukuaiyou\":1,\n\"jiuxian\":1,\n\"jiuzhouxue\":1,\n\"jiwu\":1,\n\"jixinet\":1,\n\"jiyifa\":1,\n\"jiyuantour\":1,\n\"jj20\":1,\n\"jj831\":1,\n\"jjjaaa\":1,\n\"jjjgame\":1,\n\"jjjlll\":1,\n\"jjlxpz\":1,\n\"jjmmw\":1,\n\"jjsrcw\":1,\n\"jjtang\":1,\n\"jjwn\":1,\n\"jjzg365\":1,\n\"jk51\":1,\n\"jldledu\":1,\n\"jlhcszx\":1,\n\"jlit365\":1,\n\"jljbbs\":1,\n\"jljob88\":1,\n\"jllnzz\":1,\n\"jlmhk\":1,\n\"jlonline\":1,\n\"jlsgjt\":1,\n\"jlshumei\":1,\n\"jlsjswm\":1,\n\"jlsmm\":1,\n\"jluzh\":1,\n\"jlxtdz\":1,\n\"jlzkb\":1,\n\"jm-tour\":1,\n\"jmlr\":1,\n\"jmrb\":1,\n\"jmstatic\":1,\n\"jn001\":1,\n\"jnesc\":1,\n\"jnflsky\":1,\n\"jnlandao\":1,\n\"jnlc\":1,\n\"jnmama\":1,\n\"jnmc\":1,\n\"jnmte\":1,\n\"jnnc\":1,\n\"job-sky\":1,\n\"job0663\":1,\n\"job0768\":1,\n\"job100\":1,\n\"job10000\":1,\n\"job1001\":1,\n\"job120\":1,\n\"job128\":1,\n\"job168\":1,\n\"job2299\":1,\n\"job250\":1,\n\"job256\":1,\n\"job36\":1,\n\"job369\":1,\n\"job5156\":1,\n\"job592\":1,\n\"job616\":1,\n\"job700\":1,\n\"job8001\":1,\n\"job910\":1,\n\"job9151\":1,\n\"job98\":1,\n\"job9981\":1,\n\"job9988\":1,\n\"jobcn\":1,\n\"jobeast\":1,\n\"jobems\":1,\n\"jobfn\":1,\n\"jobgao\":1,\n\"jobgojob\":1,\n\"jobhb\":1,\n\"jobpin\":1,\n\"jobui\":1,\n\"jobuy\":1,\n\"jobvvv\":1,\n\"jobyun\":1,\n\"joeoo\":1,\n\"joingoo\":1,\n\"joobbe\":1,\n\"joojcc\":1,\n\"joojzz\":1,\n\"joouoo\":1,\n\"jooxoo\":1,\n\"joyes\":1,\n\"joyme\":1,\n\"joyo\":1,\n\"joyyang\":1,\n\"jpkjz\":1,\n\"jq-school\":1,\n\"jqw\":1,\n\"jr18\":1,\n\"jrb2b\":1,\n\"jrj\":1,\n\"jrlpw\":1,\n\"jrpengze\":1,\n\"jrrsq\":1,\n\"jrshx\":1,\n\"jrsmw\":1,\n\"jrw100\":1,\n\"jrxjnet\":1,\n\"jryghq\":1,\n\"jrzj\":1,\n\"jrzp\":1,\n\"js-lottery\":1,\n\"js0573\":1,\n\"js118114\":1,\n\"js119\":1,\n\"js811\":1,\n\"js95598\":1,\n\"jsbc\":1,\n\"jscj\":1,\n\"jsenews\":1,\n\"jsgc168\":1,\n\"jshealth\":1,\n\"jshyrsrc\":1,\n\"jshze\":1,\n\"jsjrc\":1,\n\"jslottery\":1,\n\"jsly001\":1,\n\"jsnxs\":1,\n\"jsqw\":1,\n\"jsrc\":1,\n\"jsrsrc\":1,\n\"jsrxny\":1,\n\"jssdw\":1,\n\"jssjys\":1,\n\"jstedu\":1,\n\"jstour\":1,\n\"jstv\":1,\n\"jswmw\":1,\n\"jsxlmed\":1,\n\"jsxmws\":1,\n\"jsyks\":1,\n\"jsymyjs\":1,\n\"jsypj\":1,\n\"jszhaobiao\":1,\n\"jszjsx\":1,\n\"jt122\":1,\n\"jtbole\":1,\n\"jthysh\":1,\n\"jtimg\":1,\n\"jtlhome\":1,\n\"jtxxol\":1,\n\"jtyjy\":1,\n\"ju51\":1,\n\"juanpi\":1,\n\"juchang\":1,\n\"juedui100\":1,\n\"juesheng\":1,\n\"jufengshang\":1,\n\"juhaof\":1,\n\"jujiaonet\":1,\n\"jumei\":1,\n\"junbaike\":1,\n\"junjiajob\":1,\n\"junshishu\":1,\n\"junzhe\":1,\n\"junzhuan\":1,\n\"junzimen\":1,\n\"juooo\":1,\n\"juoooo\":1,\n\"juren\":1,\n\"jutuw\":1,\n\"juwai\":1,\n\"juxia\":1,\n\"juyouxi\":1,\n\"juyuan\":1,\n\"jx09\":1,\n\"jx612345\":1,\n\"jxazjd\":1,\n\"jxcnt\":1,\n\"jxcua\":1,\n\"jxdcw\":1,\n\"jxdiguo\":1,\n\"jxdyf\":1,\n\"jxedt\":1,\n\"jxedu\":1,\n\"jxfdc\":1,\n\"jxfgts\":1,\n\"jxga\":1,\n\"jxgdw\":1,\n\"jxgsgl\":1,\n\"jxgydc\":1,\n\"jxhcw\":1,\n\"jxhi\":1,\n\"jxjas\":1,\n\"jxjatv\":1,\n\"jxjjx\":1,\n\"jxjtxy\":1,\n\"jxjyzy\":1,\n\"jxlcx\":1,\n\"jxllt\":1,\n\"jxltw\":1,\n\"jxpaw\":1,\n\"jxpf\":1,\n\"jxpta\":1,\n\"jxrcw\":1,\n\"jxrencai\":1,\n\"jxrsrc\":1,\n\"jxrtv\":1,\n\"jxsedu\":1,\n\"jxslsd\":1,\n\"jxsoso\":1,\n\"jxsrr\":1,\n\"jxt189\":1,\n\"jxteacher\":1,\n\"jxtourism\":1,\n\"jxtutechan\":1,\n\"jxwei\":1,\n\"jxycw\":1,\n\"jygycp\":1,\n\"jyrcjl\":1,\n\"jysedu\":1,\n\"jyyuan\":1,\n\"jz0574\":1,\n\"jz5u\":1,\n\"jzb\":1,\n\"jzcool\":1,\n\"jzjob007\":1,\n\"jznj\":1,\n\"jzpt\":1,\n\"jzqyw\":1,\n\"jzrb\":1,\n\"jzshsc\":1,\n\"jzvip\":1,\n\"jzwcom\":1,\n\"jzyx\":1,\n\"k0410\":1,\n\"k18\":1,\n\"k191\":1,\n\"k366\":1,\n\"k369\":1,\n\"k76\":1,\n\"k8008\":1,\n\"k8k9\":1,\n\"kaba365\":1,\n\"kadaiw\":1,\n\"kadang\":1,\n\"kaichewan\":1,\n\"kaifu\":1,\n\"kaifu7\":1,\n\"kaiwind\":1,\n\"kaixin001\":1,\n\"kakaba\":1,\n\"kameng\":1,\n\"kanbox\":1,\n\"kandeng\":1,\n\"kandian\":1,\n\"kanglu\":1,\n\"kangq\":1,\n\"kangzhi\":1,\n\"kanimg\":1,\n\"kankan\":1,\n\"kankanews\":1,\n\"kanshu\":1,\n\"kanzhun\":1,\n\"kaopu001\":1,\n\"kaoshi110\":1,\n\"kaoyan\":1,\n\"kaoyanfuxi\":1,\n\"kaoyee\":1,\n\"kaozc\":1,\n\"kazakhsoft\":1,\n\"kb-medical\":1,\n\"kds100\":1,\n\"kdslife\":1,\n\"kedou\":1,\n\"keepc\":1,\n\"kehou\":1,\n\"kejiqi\":1,\n\"kejixun\":1,\n\"kekenet\":1,\n\"kenfor\":1,\n\"keqii\":1,\n\"kesion\":1,\n\"keyunzhan\":1,\n\"kfsfu\":1,\n\"kfw001\":1,\n\"kimiss\":1,\n\"kingdee\":1,\n\"kingsoft\":1,\n\"kisdee\":1,\n\"kkeye\":1,\n\"kkk5\":1,\n\"kkkedu\":1,\n\"kmguolv\":1,\n\"kms88\":1,\n\"kmxsedu\":1,\n\"knowsky\":1,\n\"koeoo\":1,\n\"kongfz\":1,\n\"kongzhong\":1,\n\"konka\":1,\n\"kooaoo\":1,\n\"koofang\":1,\n\"koolearn\":1,\n\"koovoo\":1,\n\"koowo\":1,\n\"kooxoo\":1,\n\"koubei\":1,\n\"koudai\":1,\n\"kq81\":1,\n\"kq88\":1,\n\"kqs114\":1,\n\"kqzp\":1,\n\"ks116\":1,\n\"ks5u\":1,\n\"ksbao\":1,\n\"ksbbs\":1,\n\"kskino\":1,\n\"ktvcity\":1,\n\"ktxp\":1,\n\"ku6\":1,\n\"ku6cdn\":1,\n\"ku6img\":1,\n\"ku6vms\":1,\n\"kuai8\":1,\n\"kuaidi100\":1,\n\"kuaiji\":1,\n\"kuailezu\":1,\n\"kuailiyu\":1,\n\"kuaiyoujia\":1,\n\"kuakao\":1,\n\"kuche\":1,\n\"kufa88\":1,\n\"kugou\":1,\n\"kujiale\":1,\n\"kukuplay\":1,\n\"kunlun\":1,\n\"kunshanrc\":1,\n\"kuotu\":1,\n\"kuparts\":1,\n\"kuqyu\":1,\n\"kutj\":1,\n\"kutongji\":1,\n\"kuwan8\":1,\n\"kuyibu\":1,\n\"kuyiso\":1,\n\"kvov\":1,\n\"ky-akoya\":1,\n\"kyjia\":1,\n\"kyp\":1,\n\"kywmall\":1,\n\"kzhuang\":1,\n\"kzj365\":1,\n\"kzjdb\":1,\n\"l-zzz\":1,\n\"lacpj\":1,\n\"lady8844\":1,\n\"lafaso\":1,\n\"lagou\":1,\n\"laidianduo\":1,\n\"laidingba\":1,\n\"laifeng\":1,\n\"laijiuye\":1,\n\"laiwang\":1,\n\"lajmzs\":1,\n\"lamabang\":1,\n\"lamahui\":1,\n\"lan1001\":1,\n\"landai\":1,\n\"landchina\":1,\n\"landjs\":1,\n\"landtu\":1,\n\"lanfw\":1,\n\"langfly\":1,\n\"langtaojin\":1,\n\"lanhii\":1,\n\"lanou3g\":1,\n\"lanqi\":1,\n\"lanrentuku\":1,\n\"lanrenzhaofang\":1,\n\"lanrenzhijia\":1,\n\"lanshandichan\":1,\n\"lanyanwan\":1,\n\"laohu\":1,\n\"laoke\":1,\n\"laomoo\":1,\n\"laonanren\":1,\n\"laoqianzhuang\":1,\n\"laoren\":1,\n\"laser-chn\":1,\n\"laserfair\":1,\n\"lashou\":1,\n\"lashouimg\":1,\n\"lavago\":1,\n\"law-lib\":1,\n\"law-star\":1,\n\"law1818\":1,\n\"lawtimeimg\":1,\n\"lawyermr\":1,\n\"lawyerwq\":1,\n\"lazyren\":1,\n\"lbgoo\":1,\n\"lbx777\":1,\n\"lc-news\":1,\n\"lcfcw\":1,\n\"lchssy\":1,\n\"lcyx\":1,\n\"ldrczpw\":1,\n\"ldsshj\":1,\n\"leatherhr\":1,\n\"leazn\":1,\n\"lecai\":1,\n\"ledcac\":1,\n\"ledcax\":1,\n\"ledmmw\":1,\n\"ledth\":1,\n\"ledu\":1,\n\"ledwn\":1,\n\"lefeng\":1,\n\"leglek\":1,\n\"legolas-media\":1,\n\"legongchang\":1,\n\"lehecai\":1,\n\"leho\":1,\n\"leidian\":1,\n\"leiphone\":1,\n\"lejiaoyun\":1,\n\"lejj\":1,\n\"leju\":1,\n\"lejuju\":1,\n\"lengxiaohua\":1,\n\"lenovo\":1,\n\"lenovoqm\":1,\n\"leqiyou\":1,\n\"letao\":1,\n\"letfind\":1,\n\"letv\":1,\n\"letvcdn\":1,\n\"letvimg\":1,\n\"lexun\":1,\n\"leyoo\":1,\n\"leyou\":1,\n\"lezhi\":1,\n\"leziyou\":1,\n\"lfang\":1,\n\"lfkt\":1,\n\"lfxww\":1,\n\"lg\":1,\n\"lgmi\":1,\n\"lgrcsc\":1,\n\"lh36524\":1,\n\"li63\":1,\n\"liang360\":1,\n\"lianjia\":1,\n\"lianm\":1,\n\"liansuo\":1,\n\"liansuopinpai\":1,\n\"liantu\":1,\n\"liao1\":1,\n\"liaoing\":1,\n\"liaoshenrc\":1,\n\"liba\":1,\n\"lie-che\":1,\n\"liebiao\":1,\n\"liebo\":1,\n\"liecheng\":1,\n\"lieju\":1,\n\"liepin\":1,\n\"lierencai\":1,\n\"lietou\":1,\n\"lietou-static\":1,\n\"lieyou\":1,\n\"life139\":1,\n\"lifeyoyo\":1,\n\"lightget\":1,\n\"lightingchina\":1,\n\"lihaisheng\":1,\n\"linekong\":1,\n\"linezing\":1,\n\"linfangwang\":1,\n\"lingaoren\":1,\n\"lingnanrc\":1,\n\"lingshi\":1,\n\"lingtuan\":1,\n\"linjiang365\":1,\n\"link-future\":1,\n\"linkhx\":1,\n\"linkwan\":1,\n\"linuxdiyf\":1,\n\"linyiren\":1,\n\"liqucn\":1,\n\"lishi5\":1,\n\"lishifengyun\":1,\n\"litianbg\":1,\n\"liudu\":1,\n\"liuhe\":1,\n\"liuts\":1,\n\"liuxilife\":1,\n\"liuxue114\":1,\n\"liuxue360\":1,\n\"liuxue3600\":1,\n\"liuxue86\":1,\n\"liuxueca\":1,\n\"live754\":1,\n\"live800\":1,\n\"livnj\":1,\n\"liwai\":1,\n\"liwuyou\":1,\n\"liyezhongzhi\":1,\n\"liyi99\":1,\n\"lizi\":1,\n\"lj597\":1,\n\"ljforest\":1,\n\"ljspjm\":1,\n\"lkgame\":1,\n\"lldgd\":1,\n\"lllddd\":1,\n\"lltqc\":1,\n\"llvan\":1,\n\"llzg\":1,\n\"lm263\":1,\n\"lmbang\":1,\n\"lmdigi\":1,\n\"ln-rc\":1,\n\"ln2car\":1,\n\"ln632\":1,\n\"lndzz\":1,\n\"lnfisher\":1,\n\"lnlib\":1,\n\"lnpaw\":1,\n\"lnrsks\":1,\n\"lntvu\":1,\n\"lnzsks\":1,\n\"locoso\":1,\n\"lofter\":1,\n\"logclub\":1,\n\"logmein\":1,\n\"loho88\":1,\n\"lolbuku\":1,\n\"longchengrc\":1,\n\"longkangmiaomu\":1,\n\"longre\":1,\n\"longren\":1,\n\"longshangrc\":1,\n\"longtengcn\":1,\n\"longwenedu\":1,\n\"longzhouwan\":1,\n\"looedu\":1,\n\"loogoo\":1,\n\"loorin\":1,\n\"looyu\":1,\n\"looyuoms\":1,\n\"lotour\":1,\n\"louoo\":1,\n\"loupan\":1,\n\"lousw\":1,\n\"love169\":1,\n\"love21cn\":1,\n\"loveinhere\":1,\n\"loveliao\":1,\n\"lovingjob\":1,\n\"lp91\":1,\n\"lpb2b\":1,\n\"lpsrc\":1,\n\"lqjob88\":1,\n\"lqzp\":1,\n\"lrbaba\":1,\n\"lrswl\":1,\n\"ls666\":1,\n\"lsdag\":1,\n\"lsgzn\":1,\n\"lsnetlib\":1,\n\"lsrczpw\":1,\n\"lssdjt\":1,\n\"lssen\":1,\n\"lsszj\":1,\n\"lstcw\":1,\n\"lsw88\":1,\n\"lsyzzzz\":1,\n\"lszxyey\":1,\n\"luan163\":1,\n\"luaninfo\":1,\n\"luanren\":1,\n\"lubanu\":1,\n\"ludashi\":1,\n\"lufax\":1,\n\"lunwentianxia\":1,\n\"luoanguo\":1,\n\"luoherc\":1,\n\"luosi\":1,\n\"luoyuan597\":1,\n\"lure123\":1,\n\"lusongsong\":1,\n\"luwenwang\":1,\n\"luxtarget\":1,\n\"luzhou4\":1,\n\"lvhua\":1,\n\"lvlian5\":1,\n\"lvmama\":1,\n\"lvping\":1,\n\"lvse\":1,\n\"lvseba\":1,\n\"lvshou\":1,\n\"lvtu\":1,\n\"lvye\":1,\n\"lvyou114\":1,\n\"lvziyao\":1,\n\"lwcj\":1,\n\"lwedu\":1,\n\"lwhfishing\":1,\n\"lwhouse\":1,\n\"lwinfo\":1,\n\"lx0830\":1,\n\"lxdns\":1,\n\"lxtedu\":1,\n\"ly\":1,\n\"ly3506\":1,\n\"lycos\":1,\n\"lydfdz\":1,\n\"lyfcw\":1,\n\"lyfff\":1,\n\"lygbole\":1,\n\"lygczj\":1,\n\"lygmedia\":1,\n\"lygo\":1,\n\"lygrc\":1,\n\"lyhero\":1,\n\"lyielts\":1,\n\"lymffyjd\":1,\n\"lyqcw\":1,\n\"lyrcw\":1,\n\"lywww\":1,\n\"lywxww\":1,\n\"lywzc\":1,\n\"lzhuba\":1,\n\"lzlj\":1,\n\"lzsgaj\":1,\n\"m148\":1,\n\"m18\":1,\n\"m1905\":1,\n\"m3guo\":1,\n\"m598\":1,\n\"m6699\":1,\n\"machine35\":1,\n\"machine365\":1,\n\"machjobs\":1,\n\"made-in-china\":1,\n\"magedu\":1,\n\"mahua\":1,\n\"maichawang\":1,\n\"maidong100\":1,\n\"maifang\":1,\n\"maigoo\":1,\n\"maijipu\":1,\n\"maijx\":1,\n\"mainone\":1,\n\"maituan\":1,\n\"maiwaiwai\":1,\n\"maizufang\":1,\n\"makepolo\":1,\n\"malmam\":1,\n\"mamacn\":1,\n\"manggojia\":1,\n\"mangocity\":1,\n\"manmankan\":1,\n\"manyou\":1,\n\"manzuo\":1,\n\"mao114\":1,\n\"maomeilock\":1,\n\"maoren8\":1,\n\"maotiao\":1,\n\"maoyan\":1,\n\"maoyigu\":1,\n\"maoyiw\":1,\n\"maozhiwang\":1,\n\"map456\":1,\n\"mapabc\":1,\n\"mapbar\":1,\n\"marry5\":1,\n\"marry52\":1,\n\"marstv\":1,\n\"masamaso\":1,\n\"maslink\":1,\n\"mathtag\":1,\n\"mayi\":1,\n\"mayiw\":1,\n\"mayiyou\":1,\n\"mb5u\":1,\n\"mbachina\":1,\n\"mbahome\":1,\n\"mbalib\":1,\n\"mbaobao\":1,\n\"mbatrip\":1,\n\"mbscss\":1,\n\"mc-test\":1,\n\"mc1314\":1,\n\"mc870\":1,\n\"mcbaidu\":1,\n\"mcchina\":1,\n\"mcixi\":1,\n\"mcmqyc\":1,\n\"mdvoo\":1,\n\"meadin\":1,\n\"mechr\":1,\n\"med126\":1,\n\"med66\":1,\n\"medejob\":1,\n\"mediaplex\":1,\n\"mediav\":1,\n\"medic360\":1,\n\"medzpw\":1,\n\"meet99\":1,\n\"mei5w\":1,\n\"meidianwang\":1,\n\"meigui3\":1,\n\"meihongfeng\":1,\n\"meijing\":1,\n\"meijw\":1,\n\"meilele\":1,\n\"meilishuo\":1,\n\"meinv\":1,\n\"meinvjz\":1,\n\"meishanren\":1,\n\"meishichina\":1,\n\"meitantong\":1,\n\"meitanwang\":1,\n\"meitu\":1,\n\"meituan\":1,\n\"meiya\":1,\n\"meiyuanchun\":1,\n\"meizhou\":1,\n\"meizhouchina\":1,\n\"meizu\":1,\n\"memall360\":1,\n\"menkou\":1,\n\"menmian\":1,\n\"mepfair\":1,\n\"mercachina\":1,\n\"messebbs\":1,\n\"metalchina\":1,\n\"metaltechexpo\":1,\n\"metroer\":1,\n\"meyol\":1,\n\"mf08s\":1,\n\"mfdyy\":1,\n\"mfw365\":1,\n\"mgccjg\":1,\n\"mgknives\":1,\n\"mgshk\":1,\n\"mgyun\":1,\n\"mh28\":1,\n\"mhdz\":1,\n\"mhongfeng\":1,\n\"mi\":1,\n\"mianbao\":1,\n\"miaomudi\":1,\n\"miaotiao\":1,\n\"miaozhen\":1,\n\"micamika\":1,\n\"microad-cn\":1,\n\"microsoft\":1,\n\"midea\":1,\n\"miercn\":1,\n\"miliao\":1,\n\"mimimama\":1,\n\"mingche\":1,\n\"mingjian\":1,\n\"mingluji\":1,\n\"mingong123\":1,\n\"mingxing\":1,\n\"mingzhurc\":1,\n\"mining120\":1,\n\"mininghr\":1,\n\"minjiangrc\":1,\n\"mipang\":1,\n\"mirautomation\":1,\n\"misranim\":1,\n\"missyuan\":1,\n\"miui\":1,\n\"miyun360\":1,\n\"mizhe\":1,\n\"mjceo\":1,\n\"mjingpin\":1,\n\"mjjq\":1,\n\"mkzhan\":1,\n\"mlbuy\":1,\n\"mlt01\":1,\n\"mmall\":1,\n\"mmbang\":1,\n\"mmfj\":1,\n\"mmimm\":1,\n\"mmjyw\":1,\n\"mmrcw\":1,\n\"mmsfw\":1,\n\"mmstat\":1,\n\"mmstw\":1,\n\"mnkjxy\":1,\n\"mnpaw\":1,\n\"mnsfh\":1,\n\"mnwww\":1,\n\"mobao\":1,\n\"moejam\":1,\n\"mofang\":1,\n\"mofangge\":1,\n\"mogujie\":1,\n\"moke8\":1,\n\"momo35\":1,\n\"monfr\":1,\n\"monteamor\":1,\n\"monternet\":1,\n\"mookie1\":1,\n\"moonbasa\":1,\n\"mop\":1,\n\"morcato\":1,\n\"mosso\":1,\n\"motie\":1,\n\"motnt\":1,\n\"motorchina\":1,\n\"moukao\":1,\n\"mouldu\":1,\n\"moutaichina\":1,\n\"moxingwang\":1,\n\"moyiza\":1,\n\"mozillaonline\":1,\n\"mplife\":1,\n\"mr91\":1,\n\"msn\":1,\n\"mstxx\":1,\n\"mtime\":1,\n\"mtnets\":1,\n\"mtv123\":1,\n\"mtw001\":1,\n\"mumayi\":1,\n\"muniao\":1,\n\"muyee\":1,\n\"muyingjie\":1,\n\"muyingzhijia\":1,\n\"muzhiwan\":1,\n\"mw1950\":1,\n\"mx175\":1,\n\"mxwz\":1,\n\"my0511\":1,\n\"my0538\":1,\n\"my0792\":1,\n\"my0813\":1,\n\"my0832\":1,\n\"my399\":1,\n\"my3dparts\":1,\n\"my3w\":1,\n\"my4399\":1,\n\"my71\":1,\n\"myapp\":1,\n\"mybulkstock\":1,\n\"mybuxiu\":1,\n\"mybxg\":1,\n\"mycar168\":1,\n\"mychemjob\":1,\n\"mycimt\":1,\n\"mydown\":1,\n\"mydrivers\":1,\n\"myepjob\":1,\n\"myhard\":1,\n\"myjmw\":1,\n\"myjob\":1,\n\"mylegist\":1,\n\"mypethome\":1,\n\"mypharma\":1,\n\"myrice\":1,\n\"myrolan\":1,\n\"myshipjob\":1,\n\"myshuo\":1,\n\"mysipo\":1,\n\"mysteel\":1,\n\"mysteelcdn\":1,\n\"mysteelcms\":1,\n\"mysteelweekly\":1,\n\"mytophome\":1,\n\"mytv365\":1,\n\"myubbs\":1,\n\"myyouse\":1,\n\"myzhengxing\":1,\n\"mzedu\":1,\n\"mzrcw\":1,\n\"mzstatic\":1,\n\"mzwok\":1,\n\"mzyfz\":1,\n\"nahuo\":1,\n\"naliwan\":1,\n\"nanbuxc\":1,\n\"nandu\":1,\n\"nanjob\":1,\n\"nanningjie\":1,\n\"nanputuo\":1,\n\"nantaihu\":1,\n\"narkii\":1,\n\"narutom\":1,\n\"nb2car\":1,\n\"nba\":1,\n\"nbbltv\":1,\n\"nbch2sc\":1,\n\"nbcoop\":1,\n\"nbgjj\":1,\n\"nbjbsun\":1,\n\"nbjnzx\":1,\n\"nbqcrl\":1,\n\"nbradio\":1,\n\"nbwater\":1,\n\"nbyouth\":1,\n\"nc2sc\":1,\n\"ncdiy\":1,\n\"ncmgcc\":1,\n\"ncxww\":1,\n\"nd-medicine\":1,\n\"nd090\":1,\n\"nd2sc\":1,\n\"nd597\":1,\n\"nd999\":1,\n\"nddaily\":1,\n\"ndfang\":1,\n\"nduoa\":1,\n\"ne365\":1,\n\"ne51\":1,\n\"neeu\":1,\n\"neimengrc\":1,\n\"nengyuan\":1,\n\"nerjob\":1,\n\"nestcms\":1,\n\"net114\":1,\n\"netandtv\":1,\n\"netbian\":1,\n\"netease\":1,\n\"netor\":1,\n\"netqin\":1,\n\"netsun\":1,\n\"newft\":1,\n\"newhua\":1,\n\"newmaker\":1,\n\"newoo\":1,\n\"news18a\":1,\n\"newsccn\":1,\n\"newscnr\":1,\n\"newshainan\":1,\n\"newshuanan\":1,\n\"newsxc\":1,\n\"newsxy\":1,\n\"newsyc\":1,\n\"newzgc\":1,\n\"nfcmag\":1,\n\"nfrencai\":1,\n\"ngjy\":1,\n\"nh365\":1,\n\"nhaidu\":1,\n\"nhcsw\":1,\n\"nhjyw\":1,\n\"nhmgr\":1,\n\"nhshequ\":1,\n\"nhxxg\":1,\n\"nhzhaopin\":1,\n\"nhzj\":1,\n\"nianw\":1,\n\"night9\":1,\n\"nihaotw\":1,\n\"nihaowang\":1,\n\"nike17\":1,\n\"nimtt\":1,\n\"ningbochina\":1,\n\"ningboexport\":1,\n\"ninghai\":1,\n\"ninghaiauto\":1,\n\"ninxun\":1,\n\"nipic\":1,\n\"niua\":1,\n\"niuchengwang\":1,\n\"niutuku\":1,\n\"niuwan\":1,\n\"niuwz\":1,\n\"niwodai\":1,\n\"niwota\":1,\n\"nj110\":1,\n\"njhaiwai\":1,\n\"njltmp\":1,\n\"njmuseum\":1,\n\"njprice\":1,\n\"njrsrc\":1,\n\"njsjys\":1,\n\"njxjyw\":1,\n\"njycyj\":1,\n\"nkhxl\":1,\n\"nlxn\":1,\n\"nmgfic\":1,\n\"nmglabs\":1,\n\"nmgrc\":1,\n\"nmgzkj\":1,\n\"nmrcw\":1,\n\"nmsti\":1,\n\"nnhdqm\":1,\n\"nnjob\":1,\n\"nnn666\":1,\n\"nnwb\":1,\n\"nong828\":1,\n\"nongchengws\":1,\n\"nongji1688\":1,\n\"nongji360\":1,\n\"nongjx\":1,\n\"nongli\":1,\n\"nongmintv\":1,\n\"nongrisheng\":1,\n\"nongyao001\":1,\n\"nooeoo\":1,\n\"noojoo\":1,\n\"northtimes\":1,\n\"nowec\":1,\n\"nowscore\":1,\n\"np5\":1,\n\"np597\":1,\n\"npcka\":1,\n\"npckk\":1,\n\"npicp\":1,\n\"npjy\":1,\n\"npsxjy\":1,\n\"nrcce\":1,\n\"nrclady\":1,\n\"nrparking\":1,\n\"nsjy\":1,\n\"nsmovie\":1,\n\"nsoso\":1,\n\"nsw88\":1,\n\"nsy6\":1,\n\"ntalker\":1,\n\"ntccjy\":1,\n\"ntehs\":1,\n\"ntgjj\":1,\n\"ntjob88\":1,\n\"ntjoy\":1,\n\"ntlsxj\":1,\n\"ntup\":1,\n\"ntwenming\":1,\n\"nubb\":1,\n\"nuomi\":1,\n\"nurqut\":1,\n\"nvsheng\":1,\n\"nxbys\":1,\n\"nxedu\":1,\n\"nxfang\":1,\n\"ny1988\":1,\n\"ny3721\":1,\n\"ny688\":1,\n\"nyzpw\":1,\n\"nz165\":1,\n\"nz86\":1,\n\"nzczq\":1,\n\"nzjsw\":1,\n\"nzw-china\":1,\n\"o571\":1,\n\"oadz\":1,\n\"obolee\":1,\n\"oceanol\":1,\n\"oecr\":1,\n\"oeeee\":1,\n\"oemol\":1,\n\"oemresource\":1,\n\"offcn\":1,\n\"officese\":1,\n\"offifurniture\":1,\n\"ofuns\":1,\n\"ofweek\":1,\n\"ofzx\":1,\n\"oho168\":1,\n\"ohocn\":1,\n\"ohqly\":1,\n\"ohsx\":1,\n\"oicq88\":1,\n\"ok0559\":1,\n\"ok619\":1,\n\"okbuy\":1,\n\"okhqb\":1,\n\"oklx\":1,\n\"okmk\":1,\n\"okooo\":1,\n\"okyan\":1,\n\"ol-img\":1,\n\"olcdn\":1,\n\"older99\":1,\n\"ometal\":1,\n\"onccc\":1,\n\"one-all\":1,\n\"one101\":1,\n\"onekeyrom\":1,\n\"onlylady\":1,\n\"oodii\":1,\n\"oooggg\":1,\n\"ooopic\":1,\n\"operachina\":1,\n\"optaim\":1,\n\"or58\":1,\n\"oranpage\":1,\n\"oray\":1,\n\"ordosggzyjy\":1,\n\"orgcc\":1,\n\"orsoon\":1,\n\"ostudytour\":1,\n\"otcms\":1,\n\"oujiangrc\":1,\n\"ourbloom\":1,\n\"ourgame\":1,\n\"ourxun\":1,\n\"oussko\":1,\n\"outlets365\":1,\n\"ovodm\":1,\n\"ozhibao\":1,\n\"p-e-china\":1,\n\"p2p110\":1,\n\"p2p265\":1,\n\"p2pchina\":1,\n\"p2pfenhu\":1,\n\"p2pxing\":1,\n\"pahaoche\":1,\n\"paidai\":1,\n\"paipai\":1,\n\"paipaiimg\":1,\n\"paishoes\":1,\n\"paljw\":1,\n\"panduola\":1,\n\"panguso\":1,\n\"panjk\":1,\n\"paochefang\":1,\n\"paody\":1,\n\"paopaoku\":1,\n\"paoxue\":1,\n\"paratong\":1,\n\"paypal\":1,\n\"pazx888\":1,\n\"pc186\":1,\n\"pc3w\":1,\n\"pc51\":1,\n\"pc6\":1,\n\"pc841\":1,\n\"pcbeta\":1,\n\"pcpc521\":1,\n\"pcpop\":1,\n\"pcwl\":1,\n\"pcxxw\":1,\n\"pdhr\":1,\n\"pdsxww\":1,\n\"pe168\":1,\n\"peixun360\":1,\n\"peixun5\":1,\n\"peiyou\":1,\n\"pengchengrc\":1,\n\"pengfu\":1,\n\"pengke\":1,\n\"penglaiu\":1,\n\"pengpeng\":1,\n\"pengrc\":1,\n\"pengyou\":1,\n\"pengzerencai\":1,\n\"people258\":1,\n\"peoplerail\":1,\n\"pethr\":1,\n\"petzp\":1,\n\"pf168\":1,\n\"pf178\":1,\n\"pfwang\":1,\n\"pgpop\":1,\n\"ph66\":1,\n\"pharmjx\":1,\n\"phoenixtv\":1,\n\"php100\":1,\n\"phpchina\":1,\n\"phpwind\":1,\n\"piao\":1,\n\"piaodown\":1,\n\"piaoliang\":1,\n\"pimei\":1,\n\"pincai\":1,\n\"pinfengws\":1,\n\"pingan\":1,\n\"pinganfang\":1,\n\"pinganhd\":1,\n\"pingguolv\":1,\n\"pingshu8\":1,\n\"pingtan597\":1,\n\"pingtandao\":1,\n\"pingxiaow\":1,\n\"pinkecity\":1,\n\"pinla\":1,\n\"pinpai37\":1,\n\"pinshan\":1,\n\"pinyouc\":1,\n\"pinzhituan\":1,\n\"pipaw\":1,\n\"pixlr\":1,\n\"pizhou365\":1,\n\"pjtime\":1,\n\"pk38\":1,\n\"pkzx\":1,\n\"plxww\":1,\n\"pm91\":1,\n\"pnwww\":1,\n\"pnzpw\":1,\n\"pod100\":1,\n\"podinns\":1,\n\"poobuy\":1,\n\"pop-fashion\":1,\n\"pop136\":1,\n\"pop800\":1,\n\"popoho\":1,\n\"popwan\":1,\n\"powercdn\":1,\n\"ppaaol\":1,\n\"ppdai\":1,\n\"ppkao\":1,\n\"pplive\":1,\n\"pppaaa\":1,\n\"ppstream\":1,\n\"ppsxx\":1,\n\"pptv\":1,\n\"ppwan\":1,\n\"ppxmw\":1,\n\"ppzhan\":1,\n\"ppzhangui\":1,\n\"ppzuche\":1,\n\"prcedu\":1,\n\"prnasia\":1,\n\"psahz\":1,\n\"psbc\":1,\n\"pscjy\":1,\n\"psjia\":1,\n\"pstatp\":1,\n\"psychcn\":1,\n\"pszx\":1,\n\"pt597\":1,\n\"pt791\":1,\n\"ptacn\":1,\n\"ptbus\":1,\n\"ptdao\":1,\n\"ptjy\":1,\n\"ptlogin2.qq\":1,\n\"ptotour\":1,\n\"ptpcp\":1,\n\"puahome\":1,\n\"pubmatic\":1,\n\"puepu\":1,\n\"puercn\":1,\n\"puertea8\":1,\n\"puerteaking\":1,\n\"pumpbest\":1,\n\"pupuwang\":1,\n\"purchasingbbs\":1,\n\"pusa123\":1,\n\"pusa365\":1,\n\"putaomiaomu\":1,\n\"putclub\":1,\n\"puworld\":1,\n\"pvc123\":1,\n\"px020\":1,\n\"px0769\":1,\n\"px101\":1,\n\"px58\":1,\n\"px8\":1,\n\"pxrczpw\":1,\n\"py168\":1,\n\"pybxfc\":1,\n\"pybxrc\":1,\n\"pyinfo\":1,\n\"pyjia\":1,\n\"pyr6\":1,\n\"pyspajs\":1,\n\"pzoom\":1,\n\"pzsh\":1,\n\"pztuan\":1,\n\"pzzx\":1,\n\"q1\":1,\n\"qa114\":1,\n\"qbaobei\":1,\n\"qc188\":1,\n\"qc6\":1,\n\"qcloud\":1,\n\"qcoco\":1,\n\"qcrencai\":1,\n\"qctester\":1,\n\"qctsw\":1,\n\"qcw114\":1,\n\"qcwe\":1,\n\"qcwz8\":1,\n\"qdbeian\":1,\n\"qdfymr\":1,\n\"qdmm\":1,\n\"qdnrc\":1,\n\"qdnrm\":1,\n\"qdoulu\":1,\n\"qdshuangjie\":1,\n\"qdwenxue\":1,\n\"qdzkb\":1,\n\"qeecn\":1,\n\"qeejoo\":1,\n\"qegee\":1,\n\"qeqeqe\":1,\n\"qfang\":1,\n\"qfzp\":1,\n\"qgjxb\":1,\n\"qhccw\":1,\n\"qhdcc\":1,\n\"qhdnews\":1,\n\"qhdxw\":1,\n\"qhgate\":1,\n\"qhimg\":1,\n\"qhinfo\":1,\n\"qhjgj\":1,\n\"qhldzb\":1,\n\"qhlly\":1,\n\"qhmed\":1,\n\"qhnews\":1,\n\"qhongfeng\":1,\n\"qhsfgl\":1,\n\"qhsrcw\":1,\n\"qhswdx\":1,\n\"qhsxnqcz\":1,\n\"qhyedu\":1,\n\"qhzk\":1,\n\"qi-che\":1,\n\"qiancheng100\":1,\n\"qianggen\":1,\n\"qianhuaweb\":1,\n\"qianjia\":1,\n\"qianjiangjob\":1,\n\"qianlijob\":1,\n\"qianlima\":1,\n\"qianlong\":1,\n\"qianlongnews\":1,\n\"qianluntianxia\":1,\n\"qiannianzhicheng\":1,\n\"qianqian\":1,\n\"qianqishou\":1,\n\"qianqiuren\":1,\n\"qianxs\":1,\n\"qianyan001\":1,\n\"qianyecao\":1,\n\"qianzhan\":1,\n\"qianzhengdaiban\":1,\n\"qiaobutang\":1,\n\"qiaopinche\":1,\n\"qiaxing\":1,\n\"qibosoft\":1,\n\"qicaispace\":1,\n\"qiche-china\":1,\n\"qichetong\":1,\n\"qicou\":1,\n\"qidian\":1,\n\"qieta\":1,\n\"qihoo\":1,\n\"qihuiwang\":1,\n\"qikan\":1,\n\"qilibali\":1,\n\"qimbulak\":1,\n\"qinbei\":1,\n\"qincai\":1,\n\"qincaitou\":1,\n\"qingdaomedia\":1,\n\"qingdaonews\":1,\n\"qingdaozaixian\":1,\n\"qinglanart\":1,\n\"qingrenw\":1,\n\"qiniu\":1,\n\"qiniucdn\":1,\n\"qiniudn\":1,\n\"qinqiner\":1,\n\"qiongzhourc\":1,\n\"qipaoxian\":1,\n\"qipei001\":1,\n\"qipei8\":1,\n\"qipeiren\":1,\n\"qipeizhan\":1,\n\"qire123\":1,\n\"qishanwang\":1,\n\"qiuhongfeng\":1,\n\"qiushibaike\":1,\n\"qiushibang\":1,\n\"qiuxian\":1,\n\"qiyefabu\":1,\n\"qiyegu\":1,\n\"qiyeku\":1,\n\"qiyexxw\":1,\n\"qiyi\":1,\n\"qiyipic\":1,\n\"qiyouwang\":1,\n\"qiyu360\":1,\n\"qiyue\":1,\n\"qizuang\":1,\n\"qjrc\":1,\n\"qjy168\":1,\n\"qkfang\":1,\n\"qlgaokao\":1,\n\"qlmlxg\":1,\n\"qlnew\":1,\n\"qlrc\":1,\n\"qlswu\":1,\n\"qlteacher\":1,\n\"qlzpw\":1,\n\"qm120\":1,\n\"qm988\":1,\n\"qmango\":1,\n\"qmyue\":1,\n\"qnsb\":1,\n\"qooic\":1,\n\"qoomoo\":1,\n\"qopoo\":1,\n\"qouoo\":1,\n\"qp110\":1,\n\"qphome\":1,\n\"qq\":1,\n\"qq163\":1,\n\"qq190\":1,\n\"qqbaobao\":1,\n\"qqbiaoqing\":1,\n\"qqcyl\":1,\n\"qqdcw\":1,\n\"qqershou\":1,\n\"qqfangke\":1,\n\"qqgexingqianming\":1,\n\"qqhryz\":1,\n\"qqkqw\":1,\n\"qqma\":1,\n\"qqmail\":1,\n\"qqpifu\":1,\n\"qqqggg\":1,\n\"qqqooo\":1,\n\"qqtn\":1,\n\"qqtouxiang\":1,\n\"qqtu8\":1,\n\"qqwm2014\":1,\n\"qqwwr\":1,\n\"qqyy\":1,\n\"qqzssl\":1,\n\"qqzyw\":1,\n\"qstatic\":1,\n\"qsztc\":1,\n\"qtour\":1,\n\"qu-zhou\":1,\n\"qu114\":1,\n\"qu247\":1,\n\"qu97\":1,\n\"quanguoyoubian\":1,\n\"quanji\":1,\n\"quanjing\":1,\n\"quanjingke\":1,\n\"quanjinglian\":1,\n\"quanmama\":1,\n\"quanranchina\":1,\n\"quantserve\":1,\n\"quanwangtz\":1,\n\"quanzhi\":1,\n\"qudao\":1,\n\"qudao168\":1,\n\"qudong\":1,\n\"qufeizhou\":1,\n\"qufenlei\":1,\n\"quhua\":1,\n\"qulv\":1,\n\"quna\":1,\n\"qunar\":1,\n\"qunarzz\":1,\n\"qutouzi\":1,\n\"quweiwu\":1,\n\"quxiu\":1,\n\"quzhouwang\":1,\n\"qvod\":1,\n\"qw168\":1,\n\"qwjian\":1,\n\"qx121\":1,\n\"qx162\":1,\n\"qx818\":1,\n\"qxnzx\":1,\n\"qxw18\":1,\n\"qxyou\":1,\n\"qy6\":1,\n\"qycn\":1,\n\"qyer\":1,\n\"qyjpzx\":1,\n\"qymgc\":1,\n\"qyzyw\":1,\n\"qz123\":1,\n\"qz597\":1,\n\"qz828\":1,\n\"qzbbs\":1,\n\"qzcbs\":1,\n\"qzhxw\":1,\n\"qznews360\":1,\n\"qzone\":1,\n\"qzrcw\":1,\n\"qzrczpw\":1,\n\"qzshangwu\":1,\n\"qzwb\":1,\n\"radiotj\":1,\n\"rajyj\":1,\n\"rangeretech\":1,\n\"raorao\":1,\n\"rayp\":1,\n\"rc114\":1,\n\"rc365\":1,\n\"rc3721\":1,\n\"rc392\":1,\n\"rc536\":1,\n\"rc929\":1,\n\"rclawyer\":1,\n\"rcwlm\":1,\n\"rcxx\":1,\n\"readnovel\":1,\n\"real\":1,\n\"recycle366\":1,\n\"redidai\":1,\n\"redocn\":1,\n\"regishome\":1,\n\"rencai5\":1,\n\"rencaijob\":1,\n\"rencailu\":1,\n\"renren\":1,\n\"renren-inc\":1,\n\"renrentou\":1,\n\"renrenzhe\":1,\n\"renrzx\":1,\n\"renwen\":1,\n\"renzheng\":1,\n\"rfchina\":1,\n\"rhxj\":1,\n\"risfond\":1,\n\"rm0510\":1,\n\"rmburl\":1,\n\"roadoor\":1,\n\"robam\":1,\n\"roboo\":1,\n\"robot-china\":1,\n\"rohlan\":1,\n\"rong360\":1,\n\"rongjie360\":1,\n\"rongshidai\":1,\n\"rongshuxia\":1,\n\"rootinhenan\":1,\n\"roowei\":1,\n\"rpjiaoyi\":1,\n\"rrimg\":1,\n\"rrs\":1,\n\"rsqzs\":1,\n\"ruan8\":1,\n\"ruanmei\":1,\n\"rubberhr\":1,\n\"rubcn\":1,\n\"rugao35\":1,\n\"ruian\":1,\n\"ruiwen\":1,\n\"ruixinlong\":1,\n\"runsky\":1,\n\"rzrsrc\":1,\n\"s-msn\":1,\n\"s0593\":1,\n\"s163\":1,\n\"s1979\":1,\n\"sa26\":1,\n\"safe10000\":1,\n\"safecome\":1,\n\"saicgroup\":1,\n\"saifutong\":1,\n\"saige\":1,\n\"saimogroup\":1,\n\"saiqu\":1,\n\"samsung\":1,\n\"sanginn\":1,\n\"sanguosha\":1,\n\"sanhaostreet\":1,\n\"sankewang\":1,\n\"sanqan\":1,\n\"sanqin\":1,\n\"sanqindaily\":1,\n\"santudi\":1,\n\"sanyatour\":1,\n\"sanygroup\":1,\n\"sanyhi\":1,\n\"sanyujixie\":1,\n\"sasa123\":1,\n\"sc157\":1,\n\"sc2p\":1,\n\"sc7\":1,\n\"sc987\":1,\n\"scaleb2b\":1,\n\"scanscout\":1,\n\"scanv\":1,\n\"scbid\":1,\n\"scbsm\":1,\n\"sccnn\":1,\n\"scdms\":1,\n\"scgckj\":1,\n\"scgdj\":1,\n\"scgrain\":1,\n\"school51\":1,\n\"schoolmy\":1,\n\"sci99\":1,\n\"scnjnews\":1,\n\"scorecardresearch\":1,\n\"scpolicec\":1,\n\"scpspa\":1,\n\"scrc168\":1,\n\"screenb2b\":1,\n\"sctv\":1,\n\"scxcxj\":1,\n\"scxfxj\":1,\n\"scxlc\":1,\n\"scxttj\":1,\n\"scxyes\":1,\n\"sczfcg\":1,\n\"sczytv\":1,\n\"sd001\":1,\n\"sdcheshi\":1,\n\"sdchina\":1,\n\"sdcoop\":1,\n\"sddjw\":1,\n\"sdenews\":1,\n\"sdfdc\":1,\n\"sdfqmm\":1,\n\"sdg-china\":1,\n\"sdgw\":1,\n\"sdhltsp\":1,\n\"sdhssy\":1,\n\"sdjnnews\":1,\n\"sdjob\":1,\n\"sdjtcx\":1,\n\"sdlib\":1,\n\"sdnycxzy\":1,\n\"sdo\":1,\n\"sdongnews\":1,\n\"sdrc315\":1,\n\"sdticai\":1,\n\"sdwenhua\":1,\n\"sdxhce\":1,\n\"sdxiaohongxing\":1,\n\"seafang\":1,\n\"seburi\":1,\n\"see-say\":1,\n\"seecq\":1,\n\"seedit\":1,\n\"seekic\":1,\n\"seezy\":1,\n\"segahome\":1,\n\"segmentfault\":1,\n\"sendong\":1,\n\"senmit\":1,\n\"sensafish\":1,\n\"sensorshome\":1,\n\"seowhy\":1,\n\"serving-sys\":1,\n\"sewworld\":1,\n\"sf-express\":1,\n\"sfacg\":1,\n\"sflep\":1,\n\"sg-rc\":1,\n\"sg169\":1,\n\"sg560\":1,\n\"sgamer\":1,\n\"sgrcw\":1,\n\"sgzjkj\":1,\n\"sh-telue\":1,\n\"sh1188\":1,\n\"sh51766\":1,\n\"sh7\":1,\n\"sh91\":1,\n\"sha-steel\":1,\n\"shache\":1,\n\"shafa\":1,\n\"shanchengrc\":1,\n\"shandalu\":1,\n\"shandongbeihai\":1,\n\"shandongrc\":1,\n\"shang360\":1,\n\"shangbw\":1,\n\"shangdianp\":1,\n\"shangdu\":1,\n\"shanghaigm\":1,\n\"shanghaining\":1,\n\"shanghairc\":1,\n\"shangmuguoji\":1,\n\"shangpin\":1,\n\"shangpusou\":1,\n\"shangxiang\":1,\n\"shangxueba\":1,\n\"shangyici\":1,\n\"shanxirc\":1,\n\"shaoyoo\":1,\n\"shaqing\":1,\n\"shbtob\":1,\n\"shcaoan\":1,\n\"shccig\":1,\n\"shchehang\":1,\n\"shcnws\":1,\n\"shdazao\":1,\n\"shduer\":1,\n\"she120\":1,\n\"shechipin365\":1,\n\"shedunews\":1,\n\"shejiben\":1,\n\"shejiqun\":1,\n\"shejis\":1,\n\"shenchuang\":1,\n\"shendu\":1,\n\"shenghuadg\":1,\n\"shengpay\":1,\n\"shengpet\":1,\n\"shengyidi\":1,\n\"shengyuanguolv\":1,\n\"shenzhenair\":1,\n\"shenzhenhr\":1,\n\"shexiannet\":1,\n\"sheying8\":1,\n\"shgao\":1,\n\"shgjj\":1,\n\"shhbm\":1,\n\"shhkws\":1,\n\"shholip\":1,\n\"shibaili\":1,\n\"shidz\":1,\n\"shifenghk\":1,\n\"shihuahr\":1,\n\"shijiemil\":1,\n\"shilehui\":1,\n\"shilijiuxiang\":1,\n\"shiliunet\":1,\n\"shionry\":1,\n\"shipin588\":1,\n\"shipinzhuchi\":1,\n\"shippingchina\":1,\n\"shiwan\":1,\n\"shiyouhr\":1,\n\"shjmnc\":1,\n\"shjtaq\":1,\n\"shkss\":1,\n\"shlicang\":1,\n\"shlkjdyxgs\":1,\n\"shmcws\":1,\n\"shmds-edu\":1,\n\"shmet\":1,\n\"shmmw\":1,\n\"shoeshr\":1,\n\"shonsh\":1,\n\"shouduhr\":1,\n\"shoudurc\":1,\n\"shoudurx\":1,\n\"shouji\":1,\n\"shouliwang\":1,\n\"shouyao8\":1,\n\"shouyou\":1,\n\"shouyou520\":1,\n\"shouyoubus\":1,\n\"shouyoucdn\":1,\n\"shouyoutv\":1,\n\"show160\":1,\n\"showhua\":1,\n\"showji\":1,\n\"shrongtai\":1,\n\"shsti\":1,\n\"shsunedu\":1,\n\"shuame\":1,\n\"shucai001\":1,\n\"shufa\":1,\n\"shuguocn\":1,\n\"shuhai\":1,\n\"shuichan51\":1,\n\"shuigongye\":1,\n\"shuiguo\":1,\n\"shuiniaoticket\":1,\n\"shuiw114\":1,\n\"shunwang\":1,\n\"shuobao\":1,\n\"shuren100\":1,\n\"shushi100\":1,\n\"shuzixiaoyuan\":1,\n\"shwsdp\":1,\n\"shxbe\":1,\n\"shxdx\":1,\n\"shyywz\":1,\n\"si114\":1,\n\"sichuanrc\":1,\n\"sidelianghang\":1,\n\"sihongbbs\":1,\n\"siilu\":1,\n\"sijihf\":1,\n\"siliaojixie\":1,\n\"simwe\":1,\n\"sina\":1,\n\"sinaapp\":1,\n\"sinaedge\":1,\n\"sinaimg\":1,\n\"sinajs\":1,\n\"singbon\":1,\n\"sinmv\":1,\n\"sino-gas\":1,\n\"sino-manager\":1,\n\"sinocars\":1,\n\"sinochem\":1,\n\"sinochemoil\":1,\n\"sinoef\":1,\n\"sinohydro\":1,\n\"sinolub\":1,\n\"sinopec\":1,\n\"sinopecgroup\":1,\n\"sinopharm\":1,\n\"sinopipenet\":1,\n\"sinosig\":1,\n\"sinosteel\":1,\n\"sinotf\":1,\n\"sinotrans\":1,\n\"sinotrans-csc\":1,\n\"sirenji\":1,\n\"sisdown\":1,\n\"sissiok\":1,\n\"siyuefeng\":1,\n\"sj998\":1,\n\"sjapk\":1,\n\"sjdfgl\":1,\n\"sjfzxm\":1,\n\"sjjob88\":1,\n\"sjjy0738\":1,\n\"sjtinfo\":1,\n\"sjwg\":1,\n\"sjwj\":1,\n\"sjwyx\":1,\n\"sjxyx\":1,\n\"sjzcity\":1,\n\"sjzland\":1,\n\"sjzonline\":1,\n\"sjzyxh\":1,\n\"skinpp\":1,\n\"sksnc\":1,\n\"skxox\":1,\n\"skycn\":1,\n\"skyworth\":1,\n\"slaili\":1,\n\"sljob88\":1,\n\"sljyj\":1,\n\"slrbs\":1,\n\"slstm\":1,\n\"sm160\":1,\n\"sm597\":1,\n\"smartjx\":1,\n\"smecq\":1,\n\"smejs\":1,\n\"smestar\":1,\n\"smforestry\":1,\n\"smhzs\":1,\n\"smrcw\":1,\n\"smswike\":1,\n\"smvtc\":1,\n\"smwrc\":1,\n\"smzy\":1,\n\"snail\":1,\n\"snda\":1,\n\"sndhr\":1,\n\"sneac\":1,\n\"snedu\":1,\n\"snfox\":1,\n\"snjt\":1,\n\"snrtv\":1,\n\"snsyedu\":1,\n\"snupg\":1,\n\"snyu\":1,\n\"snzhao\":1,\n\"so\":1,\n\"soautos\":1,\n\"socang\":1,\n\"soche8\":1,\n\"sodao\":1,\n\"sofang\":1,\n\"soft515\":1,\n\"soft6\":1,\n\"soft711\":1,\n\"softbar\":1,\n\"sogou\":1,\n\"sogoucdn\":1,\n\"sogua\":1,\n\"sohu\":1,\n\"sohusce\":1,\n\"sojike\":1,\n\"sojump\":1,\n\"soku\":1,\n\"solarbe\":1,\n\"somenmian\":1,\n\"sonhoo\":1,\n\"soocang\":1,\n\"sooker\":1,\n\"sooopin\":1,\n\"sooshong\":1,\n\"sootoo\":1,\n\"sooxue\":1,\n\"soozhu\":1,\n\"soperson\":1,\n\"sortdoor\":1,\n\"soso\":1,\n\"sososteel\":1,\n\"soubaoad\":1,\n\"soucai\":1,\n\"souchebang\":1,\n\"soufun\":1,\n\"soufunimg\":1,\n\"soupei360\":1,\n\"soupu\":1,\n\"souqian\":1,\n\"southcn\":1,\n\"southmoney\":1,\n\"soutudi\":1,\n\"souxuexiao\":1,\n\"sowang\":1,\n\"soxsok\":1,\n\"soyuli\":1,\n\"sozhen\":1,\n\"sp0312\":1,\n\"spacechina\":1,\n\"spcce\":1,\n\"spdl\":1,\n\"speiyou\":1,\n\"spjixie\":1,\n\"spjobhr\":1,\n\"spjxcn\":1,\n\"sportscn\":1,\n\"springtour\":1,\n\"spsb114\":1,\n\"spzs\":1,\n\"sq1996\":1,\n\"sqzg\":1,\n\"srcdd\":1,\n\"srtong\":1,\n\"srxww\":1,\n\"srzc\":1,\n\"ss256\":1,\n\"sscmwl\":1,\n\"ssfun\":1,\n\"ssjzw\":1,\n\"sslibrary\":1,\n\"ssqzj\":1,\n\"ssrcsc\":1,\n\"ssreader\":1,\n\"sssggg\":1,\n\"sssjhw\":1,\n\"sssuuu\":1,\n\"ssswh\":1,\n\"sswoo\":1,\n\"st001\":1,\n\"st5\":1,\n\"standardcn\":1,\n\"starbaby\":1,\n\"starlott\":1,\n\"staticsdo\":1,\n\"stcn\":1,\n\"stdaily\":1,\n\"steelphone\":1,\n\"stnts\":1,\n\"stockstar\":1,\n\"stone365\":1,\n\"stonebuy\":1,\n\"stonemsn\":1,\n\"stonesm\":1,\n\"stonexp\":1,\n\"strong-imm\":1,\n\"strong-study\":1,\n\"studentboss\":1,\n\"studydao\":1,\n\"studyems\":1,\n\"studyez\":1,\n\"studyget\":1,\n\"studyie\":1,\n\"studyma\":1,\n\"studynl\":1,\n\"studysg\":1,\n\"suaee\":1,\n\"suanpi\":1,\n\"subaonet\":1,\n\"sucaitianxia\":1,\n\"sudasuta\":1,\n\"suizhoujie\":1,\n\"sulyxin\":1,\n\"sun0758\":1,\n\"sun0769\":1,\n\"sunily\":1,\n\"suning\":1,\n\"sunmen\":1,\n\"sunnychina\":1,\n\"sunplusedu\":1,\n\"sunrise-china\":1,\n\"sunsirs\":1,\n\"sunstu\":1,\n\"sunyeabiz\":1,\n\"suohoo\":1,\n\"supei\":1,\n\"susong51\":1,\n\"sutoo\":1,\n\"suwurc\":1,\n\"suxiege\":1,\n\"suyuedu\":1,\n\"suzhourc\":1,\n\"svisa\":1,\n\"swjoy\":1,\n\"swkong\":1,\n\"swwenshi\":1,\n\"sx597\":1,\n\"sxac\":1,\n\"sxbjedu\":1,\n\"sxcoal\":1,\n\"sxdygbjy\":1,\n\"sxfsw\":1,\n\"sxfyxh\":1,\n\"sxjzwb\":1,\n\"sxkp\":1,\n\"sxmtxs\":1,\n\"sxncb\":1,\n\"sxpmg\":1,\n\"sxpta\":1,\n\"sxrb\":1,\n\"sxrtv\":1,\n\"sxshealth\":1,\n\"sxsme\":1,\n\"sxsznews\":1,\n\"sxtdrn\":1,\n\"sxtour\":1,\n\"sxtvs\":1,\n\"sxvieworld\":1,\n\"sxworker\":1,\n\"sxxfqjyj\":1,\n\"sxxl\":1,\n\"sxycpc\":1,\n\"sxycrb\":1,\n\"sxyhq\":1,\n\"sxykmgy\":1,\n\"sy3688\":1,\n\"syb365\":1,\n\"sybang\":1,\n\"syflowers\":1,\n\"syingrc\":1,\n\"syiptv\":1,\n\"syj\":1,\n\"syjiancai\":1,\n\"symama\":1,\n\"syqnr\":1,\n\"syrcsc\":1,\n\"syrczpw\":1,\n\"sytlw\":1,\n\"syxwnet\":1,\n\"syyx\":1,\n\"sz121\":1,\n\"szaibite\":1,\n\"szbaws\":1,\n\"szcchy56\":1,\n\"szdagao\":1,\n\"szdfsk\":1,\n\"szdwyy\":1,\n\"szedu\":1,\n\"szehs\":1,\n\"szfa\":1,\n\"szfcol\":1,\n\"szffmr\":1,\n\"szfthp\":1,\n\"szhfdq\":1,\n\"szhk\":1,\n\"szhome\":1,\n\"szhua\":1,\n\"szhufu\":1,\n\"szjc8\":1,\n\"szlyw12306\":1,\n\"szmall\":1,\n\"szmama\":1,\n\"szmj\":1,\n\"szmolds\":1,\n\"sznews\":1,\n\"szooo\":1,\n\"szpxb\":1,\n\"szpxe\":1,\n\"szqcw\":1,\n\"szsanshang\":1,\n\"szsmw\":1,\n\"szsnews\":1,\n\"sztjyy\":1,\n\"szwudao\":1,\n\"szyc\":1,\n\"t0001\":1,\n\"t0376\":1,\n\"t139\":1,\n\"t262\":1,\n\"t55\":1,\n\"t960\":1,\n\"tahjlg\":1,\n\"tahongyuan\":1,\n\"taian\":1,\n\"taihainet\":1,\n\"taihexian\":1,\n\"taikang\":1,\n\"taiqiedu\":1,\n\"taishansong\":1,\n\"taizhou\":1,\n\"takungpao\":1,\n\"talyys\":1,\n\"tangdou\":1,\n\"tangjiu\":1,\n\"tangongye\":1,\n\"tantuw\":1,\n\"tanx\":1,\n\"tao123\":1,\n\"taobao\":1,\n\"taobaocdn\":1,\n\"taoche\":1,\n\"taoche100\":1,\n\"taoci\":1,\n\"taoci163\":1,\n\"taocijob\":1,\n\"taodake\":1,\n\"taofang\":1,\n\"taofen8\":1,\n\"taohuren\":1,\n\"taojindi\":1,\n\"taojinji\":1,\n\"taoke\":1,\n\"taoktv\":1,\n\"taolv365\":1,\n\"taopic\":1,\n\"taoren100\":1,\n\"taoshouyou\":1,\n\"taotaocar\":1,\n\"taowo2sc\":1,\n\"taoxiao\":1,\n\"taoxie\":1,\n\"taoxue\":1,\n\"taoxuexiao\":1,\n\"tapebuy\":1,\n\"tarkett1872\":1,\n\"tasjpf\":1,\n\"taskcn\":1,\n\"tatamr\":1,\n\"tatazx\":1,\n\"tatbsb\":1,\n\"taxfls\":1,\n\"tayffdb\":1,\n\"tbscache\":1,\n\"tcdai\":1,\n\"tcgimg\":1,\n\"tcl\":1,\n\"tcpjw\":1,\n\"tcrcsc\":1,\n\"tcrczpw\":1,\n\"tdfcw\":1,\n\"tdimg\":1,\n\"tdycr\":1,\n\"tdycw\":1,\n\"tdzyw\":1,\n\"te6\":1,\n\"tea160\":1,\n\"tea846\":1,\n\"teachercn\":1,\n\"teauo\":1,\n\"tech-food\":1,\n\"techan\":1,\n\"techanzhan\":1,\n\"teeqee\":1,\n\"telecomhr\":1,\n\"tencent\":1,\n\"tencentmind\":1,\n\"tenpay\":1,\n\"tentrue\":1,\n\"tesehunan\":1,\n\"testrust\":1,\n\"tex68\":1,\n\"texu1\":1,\n\"tezgc\":1,\n\"tezhongzhuangbei\":1,\n\"tfol\":1,\n\"tfysw\":1,\n\"tgbus\":1,\n\"tgnet\":1,\n\"the9\":1,\n\"thebeijingnews\":1,\n\"thethirdmedia\":1,\n\"thmz\":1,\n\"tianan-cyber\":1,\n\"tiancity\":1,\n\"tiandaoedu\":1,\n\"tianjihr\":1,\n\"tianjimedia\":1,\n\"tianjinrc\":1,\n\"tianjinwe\":1,\n\"tianqi\":1,\n\"tianshannet\":1,\n\"tianshanrc\":1,\n\"tiantian\":1,\n\"tianxia70\":1,\n\"tianyablog\":1,\n\"tianyaui\":1,\n\"tianyuimg\":1,\n\"tiaohao\":1,\n\"tibet3\":1,\n\"tibetcn\":1,\n\"tibetcul\":1,\n\"tibetinfor\":1,\n\"tiekuangshi\":1,\n\"tielingcn\":1,\n\"tietuku\":1,\n\"tieyou\":1,\n\"tigtag\":1,\n\"timedg\":1,\n\"tingbook\":1,\n\"tingroom\":1,\n\"titan24\":1,\n\"tjbhnews\":1,\n\"tjfic\":1,\n\"tjkx\":1,\n\"tjmama\":1,\n\"tjmsgk\":1,\n\"tjxqjy\":1,\n\"tjysyjs\":1,\n\"tl100\":1,\n\"tmall\":1,\n\"tmhtour\":1,\n\"tmjob88\":1,\n\"tmsf\":1,\n\"tmtpost\":1,\n\"to8to\":1,\n\"tobaccochina\":1,\n\"tobosu\":1,\n\"tochgo\":1,\n\"todayonhistory\":1,\n\"togoo\":1,\n\"toioo\":1,\n\"tom\":1,\n\"tom365\":1,\n\"tom61\":1,\n\"tomdurrie\":1,\n\"tompda\":1,\n\"tongbai8\":1,\n\"tongbu\":1,\n\"tongde\":1,\n\"tongleilive\":1,\n\"tongliaowang\":1,\n\"tonglingjob\":1,\n\"tonglukuaijian\":1,\n\"tongrenshi\":1,\n\"tongxue8\":1,\n\"tongyu800\":1,\n\"tongzhuo100\":1,\n\"tonong\":1,\n\"toobiao\":1,\n\"toobm\":1,\n\"toocle\":1,\n\"toofloor\":1,\n\"toojj\":1,\n\"toolsky\":1,\n\"tooopen\":1,\n\"tootour\":1,\n\"topfo\":1,\n\"topnews9\":1,\n\"topsage\":1,\n\"topu\":1,\n\"topzj\":1,\n\"tordax\":1,\n\"totob\":1,\n\"totocn\":1,\n\"touclick\":1,\n\"tourunion\":1,\n\"tourzj\":1,\n\"toutiao\":1,\n\"touzhijia\":1,\n\"toybaba\":1,\n\"toysbaba\":1,\n\"toysgu\":1,\n\"tozao\":1,\n\"tpooo\":1,\n\"tprtc\":1,\n\"tpzj\":1,\n\"tqedu\":1,\n\"tqkaoyan\":1,\n\"tqmba\":1,\n\"tqmpacc\":1,\n\"tqznedu\":1,\n\"trade2cn\":1,\n\"tranbbs\":1,\n\"travelsky\":1,\n\"tremormedia\":1,\n\"trip8080\":1,\n\"tripbaba\":1,\n\"trjcn\":1,\n\"trmhw\":1,\n\"trustexporter\":1,\n\"tryine\":1,\n\"trylist\":1,\n\"tsingming\":1,\n\"tsqyxxw\":1,\n\"tsrcw\":1,\n\"tswybjgs\":1,\n\"tt-ly\":1,\n\"tt0760\":1,\n\"tt268\":1,\n\"tteb\":1,\n\"tthonghuo\":1,\n\"ttkdex\":1,\n\"ttmam\":1,\n\"ttmeishi\":1,\n\"ttmn\":1,\n\"ttpet\":1,\n\"ttplayer\":1,\n\"ttpod\":1,\n\"ttteee\":1,\n\"ttyl5\":1,\n\"ttys5\":1,\n\"ttzcw\":1,\n\"tu50\":1,\n\"tuan800\":1,\n\"tuanche\":1,\n\"tuanimg\":1,\n\"tuanjiebao\":1,\n\"tuanweihui\":1,\n\"tuboshu\":1,\n\"tuchw\":1,\n\"tudinet\":1,\n\"tudou\":1,\n\"tudouui\":1,\n\"tugao\":1,\n\"tui18\":1,\n\"tuicool\":1,\n\"tuitui99\":1,\n\"tujia\":1,\n\"tuku\":1,\n\"tulaoshi\":1,\n\"tuliu\":1,\n\"tulvzu\":1,\n\"tumanduo\":1,\n\"tuniu\":1,\n\"tuniucdn\":1,\n\"tunliu588\":1,\n\"tuofubao\":1,\n\"tuohuangzu\":1,\n\"tupianzj\":1,\n\"tutechanw\":1,\n\"tutu66\":1,\n\"tuwan\":1,\n\"tv189\":1,\n\"tvhf\":1,\n\"tvhuan\":1,\n\"tvscn\":1,\n\"tvsou\":1,\n\"twwtn\":1,\n\"tx96345\":1,\n\"txdai\":1,\n\"txjly\":1,\n\"txooo\":1,\n\"txssw\":1,\n\"txtbbs\":1,\n\"txwb\":1,\n\"txwm\":1,\n\"ty360\":1,\n\"tybaba\":1,\n\"tyhr\":1,\n\"tylvyouw\":1,\n\"tz0852\":1,\n\"tz121\":1,\n\"tz1288\":1,\n\"tz2car\":1,\n\"tz911\":1,\n\"tz94\":1,\n\"tzcz\":1,\n\"tzfdc\":1,\n\"tzhr\":1,\n\"tzjob\":1,\n\"tzkd\":1,\n\"tzrc\":1,\n\"tzrl\":1,\n\"tzzfcg\":1,\n\"tzzp\":1,\n\"u009\":1,\n\"u0762\":1,\n\"u17\":1,\n\"u69cn\":1,\n\"u88\":1,\n\"u8k8\":1,\n\"u9time\":1,\n\"u9yoyo\":1,\n\"uc108\":1,\n\"uc129\":1,\n\"uctrac\":1,\n\"uehtml\":1,\n\"uemap\":1,\n\"ufangw\":1,\n\"uggd\":1,\n\"uhaidao\":1,\n\"uhenan\":1,\n\"uimaker\":1,\n\"uisdc\":1,\n\"ujob138\":1,\n\"ujob360\":1,\n\"ukecy\":1,\n\"ule\":1,\n\"ulinix\":1,\n\"ulunix\":1,\n\"umiwi\":1,\n\"un188\":1,\n\"unibao\":1,\n\"uninf\":1,\n\"unionli\":1,\n\"unionpay\":1,\n\"university-hr\":1,\n\"unjs\":1,\n\"unpcn\":1,\n\"uoeoo\":1,\n\"uoko\":1,\n\"uooqoo\":1,\n\"uouojk\":1,\n\"up360\":1,\n\"upaidui\":1,\n\"upaiyun\":1,\n\"ups\":1,\n\"upyun\":1,\n\"usbseries\":1,\n\"useso\":1,\n\"usportnews\":1,\n\"usteel\":1,\n\"utourworld\":1,\n\"uu2car\":1,\n\"uu38\":1,\n\"uu7c\":1,\n\"uueasy\":1,\n\"uusee\":1,\n\"uutuu\":1,\n\"uuu9\":1,\n\"uuufun\":1,\n\"uuxoo\":1,\n\"uuyoyo\":1,\n\"uuzhufu\":1,\n\"uuzu\":1,\n\"uwan\":1,\n\"uycar\":1,\n\"uycnr\":1,\n\"uydj\":1,\n\"uzai\":1,\n\"uzaicdn\":1,\n\"uzzf\":1,\n\"v2ex\":1,\n\"v312\":1,\n\"v3gp\":1,\n\"value500\":1,\n\"vancl\":1,\n\"vanclimg\":1,\n\"vanke\":1,\n\"vchangyi\":1,\n\"vcooline\":1,\n\"vdolady\":1,\n\"veerchina\":1,\n\"veg-china\":1,\n\"verycd\":1,\n\"verydz\":1,\n\"vhostgo\":1,\n\"vhuaqiao\":1,\n\"vibmro\":1,\n\"vicovico\":1,\n\"vikecn\":1,\n\"vip\":1,\n\"vip800\":1,\n\"vipcn\":1,\n\"vipshop\":1,\n\"viptijian\":1,\n\"vipyl\":1,\n\"visionunion\":1,\n\"visitgd\":1,\n\"visitsz\":1,\n\"vista123\":1,\n\"vivijk\":1,\n\"vizu\":1,\n\"vjia\":1,\n\"vlongbiz\":1,\n\"vmall\":1,\n\"vmovier\":1,\n\"vobao\":1,\n\"vodjk\":1,\n\"vooec\":1,\n\"vooroo\":1,\n\"vrbeing\":1,\n\"vsharing\":1,\n\"vsuch\":1,\n\"vvjob\":1,\n\"vvvdj\":1,\n\"vx\":1,\n\"vxinyou\":1,\n\"w7000\":1,\n\"w707\":1,\n\"wa8688\":1,\n\"waaku\":1,\n\"wabuw\":1,\n\"wadongxi\":1,\n\"wahawang\":1,\n\"waheaven\":1,\n\"waihuo\":1,\n\"waiwaitu\":1,\n\"waiyu8\":1,\n\"wallstreetcn\":1,\n\"wan\":1,\n\"wandodo\":1,\n\"wandoujia\":1,\n\"wangdai3\":1,\n\"wangdaibaike\":1,\n\"wangdaibang\":1,\n\"wangdaibangshou\":1,\n\"wangdaicaifu\":1,\n\"wangdaidp\":1,\n\"wangdaiguancha\":1,\n\"wangdaiqianyan\":1,\n\"wangdaisky\":1,\n\"wangdaitiandi\":1,\n\"wangdaiwuyou\":1,\n\"wangdaizhijia\":1,\n\"wangdaizhinan\":1,\n\"wanggou\":1,\n\"wanggou86\":1,\n\"wangjiags\":1,\n\"wangjiajg\":1,\n\"wangjinlou\":1,\n\"wangjiu\":1,\n\"wangpiao\":1,\n\"wangqi\":1,\n\"wangtu\":1,\n\"wanguan\":1,\n\"wangye\":1,\n\"wangyouhu\":1,\n\"wanjidao\":1,\n\"wanjingchina\":1,\n\"wanku\":1,\n\"wanlitong\":1,\n\"wanmei\":1,\n\"wanmeimr\":1,\n\"wansecheng\":1,\n\"wanxf\":1,\n\"wanxia\":1,\n\"wanyouxi7\":1,\n\"wanyx\":1,\n\"wanzhoujob\":1,\n\"wapurl\":1,\n\"warchina\":1,\n\"warcraftchina\":1,\n\"watchstor\":1,\n\"waterchina\":1,\n\"wbshsc\":1,\n\"wbtt315\":1,\n\"wcnimg\":1,\n\"wcsrcw\":1,\n\"wcwang\":1,\n\"wdj168\":1,\n\"wdji\":1,\n\"wdjyzx\":1,\n\"wdsjz\":1,\n\"wdzx\":1,\n\"wealink\":1,\n\"weamax\":1,\n\"weathercn\":1,\n\"web3389\":1,\n\"web4008\":1,\n\"webjx\":1,\n\"webpowerchina\":1,\n\"webterren\":1,\n\"webuuo\":1,\n\"webxgame\":1,\n\"wechatnet\":1,\n\"wed139\":1,\n\"wedba\":1,\n\"wedsoso\":1,\n\"wehefei\":1,\n\"weibo\":1,\n\"weicaifu\":1,\n\"weilanhaian\":1,\n\"weilanliuxue\":1,\n\"weimob\":1,\n\"weiningnews\":1,\n\"weinisi\":1,\n\"weiphone\":1,\n\"weixiaodian\":1,\n\"weizhangjilu\":1,\n\"weizhangwang\":1,\n\"weizhuangxiu\":1,\n\"weke\":1,\n\"weleve\":1,\n\"wemvp\":1,\n\"wendu\":1,\n\"wenjingjiaoyu\":1,\n\"wenjuan\":1,\n\"wenlingrc\":1,\n\"wenshizhai\":1,\n\"wenwuchina\":1,\n\"wenxue24\":1,\n\"wenyoutai\":1,\n\"wenzhouglasses\":1,\n\"wenzifanyi\":1,\n\"wesmp\":1,\n\"west263\":1,\n\"wf777\":1,\n\"wfbbs\":1,\n\"wff168\":1,\n\"wfjyxxg\":1,\n\"wfrsks\":1,\n\"wh3351\":1,\n\"whatchina\":1,\n\"whblct\":1,\n\"whcic\":1,\n\"whctv\":1,\n\"whedu21\":1,\n\"whhouse\":1,\n\"whicu\":1,\n\"whjm\":1,\n\"whjuren\":1,\n\"whlsgzn\":1,\n\"whqyw\":1,\n\"whrhkj\":1,\n\"whshangceng\":1,\n\"whwd\":1,\n\"whwz\":1,\n\"wifun\":1,\n\"wihu\":1,\n\"win007\":1,\n\"win7china\":1,\n\"win8china\":1,\n\"wincn\":1,\n\"windchn\":1,\n\"windows7en\":1,\n\"wine9\":1,\n\"winenice\":1,\n\"wines-info\":1,\n\"wingwit\":1,\n\"winhometex\":1,\n\"winshang\":1,\n\"winupon\":1,\n\"winxuan\":1,\n\"wishdown\":1,\n\"wj001\":1,\n\"wjdaily\":1,\n\"wjnin\":1,\n\"wjshw\":1,\n\"wkepu\":1,\n\"wkimg\":1,\n\"wlgyy\":1,\n\"wlkst\":1,\n\"wlmq\":1,\n\"wlmqwb\":1,\n\"wlool\":1,\n\"wlstock\":1,\n\"wlwcn\":1,\n\"wm927\":1,\n\"wmordos\":1,\n\"wmzhe\":1,\n\"wnrczpw\":1,\n\"wnwb\":1,\n\"wnxwzx\":1,\n\"wo116114\":1,\n\"wodingche\":1,\n\"wofang\":1,\n\"wofangwang\":1,\n\"woiyu\":1,\n\"wojubl\":1,\n\"wokanfang\":1,\n\"wokeji\":1,\n\"wokoko\":1,\n\"wolai\":1,\n\"womai\":1,\n\"woman91\":1,\n\"womenofchina\":1,\n\"woniu\":1,\n\"wood-china\":1,\n\"wood168\":1,\n\"wooshoes\":1,\n\"workec\":1,\n\"world-metal\":1,\n\"world-stone\":1,\n\"worldhm\":1,\n\"worldscrap\":1,\n\"worlduc\":1,\n\"wowchina\":1,\n\"woyaogexing\":1,\n\"woyewan\":1,\n\"woying\":1,\n\"woyouguanjia\":1,\n\"wpxap\":1,\n\"wrating\":1,\n\"wsbedu\":1,\n\"wsbynews\":1,\n\"wsche\":1,\n\"wshang\":1,\n\"wshangyun\":1,\n\"wsloan\":1,\n\"wsmhw\":1,\n\"wsqsgo\":1,\n\"wsxq\":1,\n\"wtdianlan\":1,\n\"wto9000\":1,\n\"wtt365\":1,\n\"wudang360\":1,\n\"wudao\":1,\n\"wudaotv\":1,\n\"wuhuansoft\":1,\n\"wujianghr\":1,\n\"wujue\":1,\n\"wulumuqijiaochetuoyun\":1,\n\"wumii\":1,\n\"wusa5\":1,\n\"wutongzi\":1,\n\"wuxingarden\":1,\n\"wuxirc\":1,\n\"wuxjob\":1,\n\"wuyishan\":1,\n\"wuyuan168\":1,\n\"wwenglish\":1,\n\"wxhouse\":1,\n\"wxjob\":1,\n\"wxmama\":1,\n\"wxrb\":1,\n\"wxthw\":1,\n\"wy000\":1,\n\"wyjiuyuanheiji\":1,\n\"wz121\":1,\n\"wz12333\":1,\n\"wz2sc\":1,\n\"wz517\":1,\n\"wzcbd\":1,\n\"wzfg\":1,\n\"wzhd\":1,\n\"wzjob\":1,\n\"wzms\":1,\n\"wzpeace\":1,\n\"wzsee\":1,\n\"wzszp\":1,\n\"wztvu\":1,\n\"wzwh\":1,\n\"wzyds\":1,\n\"wzzbtb\":1,\n\"x3cn\":1,\n\"x4321\":1,\n\"xa999\":1,\n\"xabbs\":1,\n\"xadlan\":1,\n\"xafc\":1,\n\"xahhw\":1,\n\"xajob\":1,\n\"xanet110\":1,\n\"xaonline\":1,\n\"xapcn\":1,\n\"xaprice\":1,\n\"xarc8\":1,\n\"xatvs\":1,\n\"xawan\":1,\n\"xawb\":1,\n\"xbaixing\":1,\n\"xbiao\":1,\n\"xbmhw\":1,\n\"xbxxb\":1,\n\"xbychemoxing\":1,\n\"xbymoxing\":1,\n\"xc0769\":1,\n\"xcarimg\":1,\n\"xcmg\":1,\n\"xcpxw\":1,\n\"xcrc999\":1,\n\"xcy8\":1,\n\"xd\":1,\n\"xdnice\":1,\n\"xdowns\":1,\n\"xdwan\":1,\n\"xf88\":1,\n\"xfbst\":1,\n\"xffcol\":1,\n\"xfqcol\":1,\n\"xfwed\":1,\n\"xfzc\":1,\n\"xgz\":1,\n\"xgzrc\":1,\n\"xh-expo\":1,\n\"xhcedu\":1,\n\"xhdedu\":1,\n\"xhuaian\":1,\n\"xiachufang\":1,\n\"xiadu\":1,\n\"xialinying\":1,\n\"xialv\":1,\n\"xiamenair\":1,\n\"xiami\":1,\n\"xian-tourism\":1,\n\"xianbey\":1,\n\"xianbx\":1,\n\"xiancn\":1,\n\"xiangauto\":1,\n\"xiangcunyou\":1,\n\"xianghunet\":1,\n\"xiangjiangyw\":1,\n\"xiangmu\":1,\n\"xiangrikui\":1,\n\"xiangshenghang\":1,\n\"xiangshu\":1,\n\"xianguo\":1,\n\"xianjj\":1,\n\"xianweizhang\":1,\n\"xianyuwang\":1,\n\"xiao84\":1,\n\"xiaohei\":1,\n\"xiaojiangguo123\":1,\n\"xiaoliangkou\":1,\n\"xiaoma\":1,\n\"xiaomi\":1,\n\"xiaomi001\":1,\n\"xiaomishu\":1,\n\"xiaomizha\":1,\n\"xiaonaodai\":1,\n\"xiaonei\":1,\n\"xiaopi\":1,\n\"xiaoshuo766\":1,\n\"xiaoxiangrc\":1,\n\"xiaoyeren\":1,\n\"xiaoyuanfeng\":1,\n\"xiaozhi123\":1,\n\"xiaozhu\":1,\n\"xiaozhustatic1\":1,\n\"xiashanet\":1,\n\"xiazaiba\":1,\n\"xiazaizhijia\":1,\n\"xicai\":1,\n\"xiche168\":1,\n\"xichengrc\":1,\n\"xiezilou\":1,\n\"xifeng2008\":1,\n\"xigu\":1,\n\"xihairc\":1,\n\"xilu\":1,\n\"ximalaya\":1,\n\"xincheping\":1,\n\"xincx\":1,\n\"xindaibao\":1,\n\"xinddy\":1,\n\"xinfenlei\":1,\n\"xingcishan\":1,\n\"xinggan\":1,\n\"xingjiezs\":1,\n\"xingmucaoye\":1,\n\"xingshu\":1,\n\"xingtaituan\":1,\n\"xingzuo123\":1,\n\"xingzuowu\":1,\n\"xinhainews\":1,\n\"xinhe99\":1,\n\"xinhua08\":1,\n\"xinhuacang\":1,\n\"xinhuanet\":1,\n\"xinhuatone\":1,\n\"xinjiewang\":1,\n\"xinjunshi\":1,\n\"xinkz\":1,\n\"xinli001\":1,\n\"xinli110\":1,\n\"xinlimaoyi\":1,\n\"xinluobo\":1,\n\"xinm123\":1,\n\"xinmanyuan\":1,\n\"xinmicn\":1,\n\"xinnet\":1,\n\"xinniangjie\":1,\n\"xinnong\":1,\n\"xinpg\":1,\n\"xinpian\":1,\n\"xinshaow\":1,\n\"xintaizhou\":1,\n\"xintuan\":1,\n\"xinwangjing\":1,\n\"xinxianrener\":1,\n\"xinxiqu\":1,\n\"xinxiwo\":1,\n\"xinxiyi\":1,\n\"xinxunwang\":1,\n\"xinyanju\":1,\n\"xinyi\":1,\n\"xinyurc\":1,\n\"xipu520\":1,\n\"xitek\":1,\n\"xituan\":1,\n\"xiu\":1,\n\"xiubei\":1,\n\"xiuke\":1,\n\"xiwenquan\":1,\n\"xixiarc\":1,\n\"xixik\":1,\n\"xiyuit\":1,\n\"xizhou\":1,\n\"xizi\":1,\n\"xj0993\":1,\n\"xj169\":1,\n\"xj5u\":1,\n\"xj71\":1,\n\"xj917\":1,\n\"xjcfan\":1,\n\"xjdaily\":1,\n\"xjflcp\":1,\n\"xjhr\":1,\n\"xjjjb\":1,\n\"xjrb\":1,\n\"xjtaobao\":1,\n\"xjtour\":1,\n\"xjtsnews\":1,\n\"xjw6188\":1,\n\"xkhouse\":1,\n\"xkwx\":1,\n\"xkxm\":1,\n\"xlsti\":1,\n\"xlys1904\":1,\n\"xlzx\":1,\n\"xm3502\":1,\n\"xmfc\":1,\n\"xmfish\":1,\n\"xmhljsz\":1,\n\"xmhouse\":1,\n\"xmwj\":1,\n\"xn121\":1,\n\"xna8\":1,\n\"xnjjob\":1,\n\"xnmtd\":1,\n\"xnonl\":1,\n\"xns315\":1,\n\"xnwsq\":1,\n\"xoeoo\":1,\n\"xoyo\":1,\n\"xp14\":1,\n\"xp510\":1,\n\"xp597\":1,\n\"xpgod\":1,\n\"xpxww\":1,\n\"xqingnet\":1,\n\"xrtvu\":1,\n\"xs9999\":1,\n\"xsbxw\":1,\n\"xsbz\":1,\n\"xshr\":1,\n\"xsjob\":1,\n\"xskhome\":1,\n\"xsool\":1,\n\"xsrtvu\":1,\n\"xszrcw\":1,\n\"xtcanlian\":1,\n\"xtjc\":1,\n\"xtuan\":1,\n\"xuanruanjian\":1,\n\"xuanwww\":1,\n\"xuanxuan\":1,\n\"xuchangbbs\":1,\n\"xudongjixie\":1,\n\"xue2you\":1,\n\"xue5156\":1,\n\"xueau\":1,\n\"xueda\":1,\n\"xueersi\":1,\n\"xueeu\":1,\n\"xuefu5\":1,\n\"xueid\":1,\n\"xuejiazhao\":1,\n\"xuejp\":1,\n\"xuekeedu\":1,\n\"xuekewang\":1,\n\"xueshanrc\":1,\n\"xuesoo\":1,\n\"xuexi111\":1,\n\"xuexiaodaquan\":1,\n\"xuexifangfa\":1,\n\"xuexigang\":1,\n\"xuexila\":1,\n\"xuexiniu\":1,\n\"xuexun\":1,\n\"xueyiyun\":1,\n\"xujc\":1,\n\"xumulc\":1,\n\"xumurc\":1,\n\"xumuren\":1,\n\"xungou\":1,\n\"xunlei\":1,\n\"xunleimil\":1,\n\"xunyangwang\":1,\n\"xunyiwenyao\":1,\n\"xunyou\":1,\n\"xutour\":1,\n\"xuzhoujob\":1,\n\"xw365\":1,\n\"xwen\":1,\n\"xwie\":1,\n\"xx007\":1,\n\"xx351\":1,\n\"xxdm\":1,\n\"xxhls\":1,\n\"xxluo\":1,\n\"xxplzx\":1,\n\"xxyw\":1,\n\"xy\":1,\n\"xy9981\":1,\n\"xya8\":1,\n\"xydhl\":1,\n\"xyfc\":1,\n\"xyg100\":1,\n\"xygmed\":1,\n\"xyppzx\":1,\n\"xyrczpw\":1,\n\"xyrtv\":1,\n\"xywy\":1,\n\"xyzs\":1,\n\"xzavt\":1,\n\"xzbfgg\":1,\n\"xzbhzl\":1,\n\"xzboyue\":1,\n\"xzfhgg\":1,\n\"xzjgw\":1,\n\"xzjxsg\":1,\n\"xzjyh\":1,\n\"xzrbw\":1,\n\"xzren\":1,\n\"xzsnw\":1,\n\"xzsyw\":1,\n\"xzuan\":1,\n\"xzxw\":1,\n\"xzxx\":1,\n\"xzyuhui\":1,\n\"xzyxdz\":1,\n\"y13255262618\":1,\n\"y2002\":1,\n\"y5201314\":1,\n\"ya247\":1,\n\"ya597\":1,\n\"yacol\":1,\n\"yahan-wenhua\":1,\n\"yahxi\":1,\n\"yakolux\":1,\n\"yananuniversity\":1,\n\"yandongjixie\":1,\n\"yangcheng8\":1,\n\"yanghongzhou\":1,\n\"yangjiajiao\":1,\n\"yangshitianqi\":1,\n\"yangtse\":1,\n\"yangzhi\":1,\n\"yanlimeirong\":1,\n\"yantaihr\":1,\n\"yantuchina\":1,\n\"yanxiu\":1,\n\"yanzhaorc\":1,\n\"yaochufa\":1,\n\"yaodou\":1,\n\"yaoee\":1,\n\"yaofangwang\":1,\n\"yaojobs\":1,\n\"yaolan\":1,\n\"yaoliwang\":1,\n\"yaolvyou\":1,\n\"yaowan\":1,\n\"yaozh\":1,\n\"yaozs\":1,\n\"yasn\":1,\n\"yayawan\":1,\n\"yb983\":1,\n\"ybbbs\":1,\n\"ybbgn\":1,\n\"ybjk\":1,\n\"ybvv\":1,\n\"ybxww\":1,\n\"ybyulong\":1,\n\"yc38\":1,\n\"yc678\":1,\n\"yc920\":1,\n\"ycbole\":1,\n\"yccar\":1,\n\"yccdn\":1,\n\"ycdyz\":1,\n\"ycgjj\":1,\n\"ychr\":1,\n\"ycicw\":1,\n\"ycpai\":1,\n\"ycrczpw\":1,\n\"ycrusher\":1,\n\"ycshequ\":1,\n\"ycwb\":1,\n\"ycxc\":1,\n\"ycywsh\":1,\n\"yczihua\":1,\n\"ydstatic\":1,\n\"ye40\":1,\n\"yeekang\":1,\n\"yeepay\":1,\n\"yeqiaohui\":1,\n\"yes515\":1,\n\"yesfr\":1,\n\"yeshj\":1,\n\"yesky\":1,\n\"yesmyimg\":1,\n\"yesmywine\":1,\n\"yeyou\":1,\n\"yeyoucdn\":1,\n\"yeyoudaquan\":1,\n\"yeyoujia\":1,\n\"yeyouw\":1,\n\"ygjj\":1,\n\"yhachina\":1,\n\"yhbimg\":1,\n\"yhd\":1,\n\"yhgcc\":1,\n\"yhjj\":1,\n\"yhkgjt\":1,\n\"yhnw\":1,\n\"yhwt\":1,\n\"yi7\":1,\n\"yi958\":1,\n\"yicai\":1,\n\"yiche\":1,\n\"yichemall\":1,\n\"yicheshi\":1,\n\"yidaba\":1,\n\"yieldmanager\":1,\n\"yifucj\":1,\n\"yihaodian\":1,\n\"yihaodianimg\":1,\n\"yijiaqin\":1,\n\"yilewan\":1,\n\"yili\":1,\n\"yingbishufa\":1,\n\"yingchuang\":1,\n\"yingjiesheng\":1,\n\"yingkelawyer\":1,\n\"yinglianre\":1,\n\"yingmoo\":1,\n\"yingsheng\":1,\n\"yingtanwang\":1,\n\"yingxiao360\":1,\n\"yingyu\":1,\n\"yinhangzhaopin\":1,\n\"yinlianbang\":1,\n\"yinsha\":1,\n\"yinshihui\":1,\n\"yintai\":1,\n\"yinxiuwang\":1,\n\"yinyuetai\":1,\n\"yiqifa\":1,\n\"yiqin\":1,\n\"yiqirong\":1,\n\"yiqisoo\":1,\n\"yiqisooimg\":1,\n\"yirendai\":1,\n\"yishizige\":1,\n\"yishu\":1,\n\"yisoche\":1,\n\"yisou\":1,\n\"yisou5\":1,\n\"yiweigou\":1,\n\"yiwu2\":1,\n\"yiwubuy\":1,\n\"yiwufair\":1,\n\"yiwugou\":1,\n\"yixieshi\":1,\n\"yixue001\":1,\n\"yixue99\":1,\n\"yixuezp\":1,\n\"yixun\":1,\n\"yiyedu\":1,\n\"yiyigreen\":1,\n\"yizhaoche\":1,\n\"yizhaopin\":1,\n\"yizhituo\":1,\n\"yizimg\":1,\n\"yjbys\":1,\n\"yjkyj\":1,\n\"yk0579\":1,\n\"ykimg\":1,\n\"ykrx\":1,\n\"yktchina\":1,\n\"yktworld\":1,\n\"ykwin\":1,\n\"yl1001\":1,\n\"yljy\":1,\n\"ylr114\":1,\n\"ylrb\":1,\n\"ylsw\":1,\n\"yltvb\":1,\n\"ylw168\":1,\n\"ylzmhzs\":1,\n\"ymfile\":1,\n\"ymt360\":1,\n\"ymxfishing\":1,\n\"yn114\":1,\n\"yn16\":1,\n\"yn56\":1,\n\"yn987\":1,\n\"yncoop\":1,\n\"yndaily\":1,\n\"yndtjj\":1,\n\"ynet\":1,\n\"ynfjw\":1,\n\"yngkseed\":1,\n\"yngp\":1,\n\"ynhouse\":1,\n\"ynhr\":1,\n\"yninfo\":1,\n\"ynit580\":1,\n\"ynjgy\":1,\n\"ynjtt\":1,\n\"ynpew\":1,\n\"ynpost\":1,\n\"ynpxrz\":1,\n\"ynshangji\":1,\n\"ynsugar\":1,\n\"yntch\":1,\n\"ynwangli\":1,\n\"ynwjs\":1,\n\"ynxdfpr\":1,\n\"ynzp\":1,\n\"yoao\":1,\n\"yodao\":1,\n\"yodbank\":1,\n\"yododo\":1,\n\"yofus\":1,\n\"yoher\":1,\n\"yohobuy\":1,\n\"yohoshow\":1,\n\"yoka\":1,\n\"yokacdn\":1,\n\"yolbax\":1,\n\"yongchengren\":1,\n\"yongjiangrc\":1,\n\"yongsao\":1,\n\"yongshengmold\":1,\n\"yongweizhiye\":1,\n\"yongzhou\":1,\n\"yoohouse\":1,\n\"yooli\":1,\n\"yooyo\":1,\n\"youba\":1,\n\"youban\":1,\n\"youbian\":1,\n\"youbianku\":1,\n\"youbibi\":1,\n\"youboy\":1,\n\"youc\":1,\n\"youdao\":1,\n\"youfangw\":1,\n\"yougou\":1,\n\"youhua\":1,\n\"youhunan\":1,\n\"youjiao\":1,\n\"youjindi\":1,\n\"youkecn\":1,\n\"youkee\":1,\n\"youkelai\":1,\n\"youku\":1,\n\"youlonger\":1,\n\"youmeiji\":1,\n\"younet\":1,\n\"yousee\":1,\n\"youshang\":1,\n\"youtx\":1,\n\"youwo\":1,\n\"youxi\":1,\n\"youxiake\":1,\n\"youxiduo\":1,\n\"youxiniao\":1,\n\"youxiping\":1,\n\"youxiqun\":1,\n\"youxiuhui\":1,\n\"youxiwangguo\":1,\n\"youyuan\":1,\n\"youyy\":1,\n\"youzu\":1,\n\"yoyobaby\":1,\n\"yoyojie\":1,\n\"yoyou\":1,\n\"ypall\":1,\n\"yqbdt\":1,\n\"yqcn\":1,\n\"yqdown\":1,\n\"yqrc\":1,\n\"yrd100\":1,\n\"yrdedu\":1,\n\"ys168\":1,\n\"yshsports\":1,\n\"yssjw\":1,\n\"ysxyyt\":1,\n\"ytbbs\":1,\n\"ytbxw\":1,\n\"ythouse\":1,\n\"ythuayi\":1,\n\"ytjob\":1,\n\"ytrain\":1,\n\"ytrczpw\":1,\n\"ytwrc\":1,\n\"ytxsoft\":1,\n\"ytxww\":1,\n\"yuanlai\":1,\n\"yuanlin\":1,\n\"yuanlin001\":1,\n\"yuanlin365\":1,\n\"yuanyetrip\":1,\n\"yubooa\":1,\n\"yuduxx\":1,\n\"yue365\":1,\n\"yuecheng\":1,\n\"yuejianglou\":1,\n\"yuemei\":1,\n\"yuhou\":1,\n\"yuhuan\":1,\n\"yuhuijob\":1,\n\"yujia\":1,\n\"yuloo\":1,\n\"yunbaoriji\":1,\n\"yuncheng\":1,\n\"yundaex\":1,\n\"yundianrc\":1,\n\"yunguicn\":1,\n\"yunhepan\":1,\n\"yunhosting\":1,\n\"yunos\":1,\n\"yunshipei\":1,\n\"yunshow\":1,\n\"yuntaodu\":1,\n\"yunuu\":1,\n\"yunyangrc\":1,\n\"yupoo\":1,\n\"yuqihuang\":1,\n\"yuqinge\":1,\n\"yurenwan\":1,\n\"yurun\":1,\n\"yusuan\":1,\n\"yutong\":1,\n\"yuxinews\":1,\n\"yuzhicl\":1,\n\"yw597\":1,\n\"ywbb\":1,\n\"yx-s\":1,\n\"yx618\":1,\n\"yxbao\":1,\n\"yxcyh\":1,\n\"yxdown\":1,\n\"yxduo\":1,\n\"yxlady\":1,\n\"yxm\":1,\n\"yxybb\":1,\n\"yxyey\":1,\n\"yxzoo\":1,\n\"yy\":1,\n\"yy138\":1,\n\"yy7091\":1,\n\"yy960\":1,\n\"yyarea\":1,\n\"yycqc\":1,\n\"yyfad\":1,\n\"yyfdcw\":1,\n\"yyfeicui\":1,\n\"yyjia\":1,\n\"yypxcn\":1,\n\"yyqcw\":1,\n\"yyrtv\":1,\n\"yysgsp\":1,\n\"yyt360\":1,\n\"yytcdn\":1,\n\"yyyqqq\":1,\n\"yyyyba\":1,\n\"yzdiaoyu\":1,\n\"yzdjbh\":1,\n\"yzfcw\":1,\n\"yzforex\":1,\n\"yzqcw\":1,\n\"yzrc\":1,\n\"yzwb\":1,\n\"yzxw\":1,\n\"yzydt\":1,\n\"z-china\":1,\n\"z699\":1,\n\"za169\":1,\n\"zangao\":1,\n\"zangyaofang\":1,\n\"zanzw\":1,\n\"zaoche168\":1,\n\"zaojiao\":1,\n\"zastatic\":1,\n\"zbcars\":1,\n\"zbhouse\":1,\n\"zbird\":1,\n\"zbjimg\":1,\n\"zblogcn\":1,\n\"zc85\":1,\n\"zcheer\":1,\n\"zcjob88\":1,\n\"zcmechanic\":1,\n\"zcom\":1,\n\"zcrcw\":1,\n\"zcwz\":1,\n\"zdface\":1,\n\"zdmimg\":1,\n\"zf875\":1,\n\"zf9918\":1,\n\"zg0543\":1,\n\"zgbfw\":1,\n\"zgbm\":1,\n\"zgchangfang\":1,\n\"zgchawang\":1,\n\"zgcmlm\":1,\n\"zgcwrc\":1,\n\"zgdhy\":1,\n\"zgdjyj\":1,\n\"zgdrive\":1,\n\"zgftjg\":1,\n\"zgfznews\":1,\n\"zgfzrc\":1,\n\"zggjj\":1,\n\"zggwyw\":1,\n\"zghgrc\":1,\n\"zghmjjw\":1,\n\"zghmsc\":1,\n\"zghqcy\":1,\n\"zgjczzw\":1,\n\"zgjf168\":1,\n\"zgjhjy\":1,\n\"zgjjc\":1,\n\"zgjjclw\":1,\n\"zgjkcyw\":1,\n\"zgjrrc\":1,\n\"zgjsks\":1,\n\"zgjsw\":1,\n\"zgjtb\":1,\n\"zgjxrc\":1,\n\"zgjzlw\":1,\n\"zgkjzx\":1,\n\"zgkqw\":1,\n\"zglqw\":1,\n\"zglxw\":1,\n\"zglyfzw\":1,\n\"zgmjrc\":1,\n\"zgmod\":1,\n\"zgnhzx\":1,\n\"zgong\":1,\n\"zgpinche\":1,\n\"zgpingshu\":1,\n\"zgppny\":1,\n\"zgqcrc\":1,\n\"zgqczj\":1,\n\"zgqpc\":1,\n\"zgqw\":1,\n\"zgqxn\":1,\n\"zgrcjyw\":1,\n\"zgrcw\":1,\n\"zgsbzlcy\":1,\n\"zgsc123\":1,\n\"zgshengsi\":1,\n\"zgsprc\":1,\n\"zgsxzs\":1,\n\"zgsyb\":1,\n\"zgsydw\":1,\n\"zgtnzx\":1,\n\"zgwdq\":1,\n\"zgwlrc\":1,\n\"zgwmrc\":1,\n\"zgxzw\":1,\n\"zgycrc\":1,\n\"zgycwx\":1,\n\"zgyey\":1,\n\"zgyyrc\":1,\n\"zgza\":1,\n\"zgzcw\":1,\n\"zgznh\":1,\n\"zgzx114\":1,\n\"zgzxzsw\":1,\n\"zh-hr\":1,\n\"zh-hz\":1,\n\"zh-sc\":1,\n\"zh28\":1,\n\"zh51home\":1,\n\"zh853\":1,\n\"zhanggame\":1,\n\"zhangjk\":1,\n\"zhangpu597\":1,\n\"zhaocaihr\":1,\n\"zhaochafa\":1,\n\"zhaokaoku\":1,\n\"zhaopin\":1,\n\"zhaopinxitong\":1,\n\"zhaoshang-sh\":1,\n\"zhaoshang01\":1,\n\"zhaoshang100\":1,\n\"zhaoshang800\":1,\n\"zhaoshangbao\":1,\n\"zhaosheng\":1,\n\"zhaotie\":1,\n\"zhazhi\":1,\n\"zhbiao\":1,\n\"zhbit\":1,\n\"zhcoo\":1,\n\"zhcpic\":1,\n\"zhcw\":1,\n\"zhe800\":1,\n\"zhefun\":1,\n\"zhejiangrc\":1,\n\"zhenai\":1,\n\"zhenai77\":1,\n\"zhenews\":1,\n\"zhenfangyuan\":1,\n\"zhengtongedu\":1,\n\"zhengwutong\":1,\n\"zhengzhoubus\":1,\n\"zhengzhoudongyang\":1,\n\"zhengzhoulvxing\":1,\n\"zhenpin\":1,\n\"zheyibu\":1,\n\"zhgnews\":1,\n\"zhhdq\":1,\n\"zhhtd\":1,\n\"zhibo8\":1,\n\"zhiboche\":1,\n\"zhicheng\":1,\n\"zhidian\":1,\n\"zhiding8\":1,\n\"zhidiy\":1,\n\"zhifang\":1,\n\"zhigame\":1,\n\"zhigou\":1,\n\"zhihu\":1,\n\"zhiji\":1,\n\"zhijia\":1,\n\"zhijinsteel\":1,\n\"zhijinwang\":1,\n\"zhileng\":1,\n\"zhimantian\":1,\n\"zhimg\":1,\n\"zhitechan\":1,\n\"zhituad\":1,\n\"zhiweiwenshi\":1,\n\"zhixiaoren\":1,\n\"zhixiaorenurl\":1,\n\"zhixuan\":1,\n\"zhiye\":1,\n\"zhiyoula\":1,\n\"zhiyuanyun\":1,\n\"zhizhen\":1,\n\"zhiziyun\":1,\n\"zhld\":1,\n\"zhongbuauto\":1,\n\"zhongkao\":1,\n\"zhonglongmotor\":1,\n\"zhongshangwang\":1,\n\"zhongso\":1,\n\"zhongsou\":1,\n\"zhongxingift\":1,\n\"zhongyidong\":1,\n\"zhongzhourc\":1,\n\"zhrmms\":1,\n\"zhsho\":1,\n\"zhsnxy\":1,\n\"zhtool\":1,\n\"zhtv\":1,\n\"zhuangjiba\":1,\n\"zhuangku\":1,\n\"zhuangpin\":1,\n\"zhuannet\":1,\n\"zhuantiku\":1,\n\"zhuapo\":1,\n\"zhuaxia\":1,\n\"zhubaijia\":1,\n\"zhubajie\":1,\n\"zhuicun\":1,\n\"zhujia360\":1,\n\"zhujiangrc\":1,\n\"zhujiangroad\":1,\n\"zhuke\":1,\n\"zhulang\":1,\n\"zhulituan\":1,\n\"zhulong\":1,\n\"zhuokearts\":1,\n\"zhuoku\":1,\n\"zhuqike\":1,\n\"zhuzao\":1,\n\"zhuzaohr\":1,\n\"zhuzhouwang\":1,\n\"zhwdw\":1,\n\"zhxjyw\":1,\n\"zhyedu\":1,\n\"zibosky\":1,\n\"zijiayoucn\":1,\n\"zikao1688\":1,\n\"zikao365\":1,\n\"zimilan\":1,\n\"zisha\":1,\n\"zisuyouw\":1,\n\"zitichina\":1,\n\"zixia\":1,\n\"zj\":1,\n\"zj121\":1,\n\"zj123\":1,\n\"zj60\":1,\n\"zj9\":1,\n\"zjbar\":1,\n\"zjcheshi\":1,\n\"zjcoal\":1,\n\"zjcoop\":1,\n\"zjcyts\":1,\n\"zjhnedu\":1,\n\"zjhq\":1,\n\"zjjsepc\":1,\n\"zjjta\":1,\n\"zjjyzx\":1,\n\"zjknews\":1,\n\"zjkonline\":1,\n\"zjks\":1,\n\"zjlottery\":1,\n\"zjlscourt\":1,\n\"zjolcdn\":1,\n\"zjpark\":1,\n\"zjphis\":1,\n\"zjpse\":1,\n\"zjrc\":1,\n\"zjrw\":1,\n\"zjrxz\":1,\n\"zjstv\":1,\n\"zjtcn\":1,\n\"zjwater\":1,\n\"zjwchc\":1,\n\"zjwmw\":1,\n\"zjxf119\":1,\n\"zjxxt\":1,\n\"zjyhtour\":1,\n\"zjypw\":1,\n\"zjzcj\":1,\n\"zk5u\":1,\n\"zk71\":1,\n\"zkxww\":1,\n\"zlhome\":1,\n\"zlt365\":1,\n\"zmd5\":1,\n\"zmingcx\":1,\n\"zmnedu\":1,\n\"znds\":1,\n\"znhr\":1,\n\"znimg\":1,\n\"znxkw\":1,\n\"zocai\":1,\n\"zoioo\":1,\n\"zol\":1,\n\"zongheng\":1,\n\"zongsifang\":1,\n\"zoomlion\":1,\n\"zoopda\":1,\n\"zoossoft\":1,\n\"zp365\":1,\n\"zp515\":1,\n\"zp666\":1,\n\"zpb365\":1,\n\"zplm\":1,\n\"zpzj\":1,\n\"zq6\":1,\n\"zqgame\":1,\n\"zqzq\":1,\n\"zr597\":1,\n\"zr98\":1,\n\"zs30\":1,\n\"zs310\":1,\n\"zsbicycle\":1,\n\"zsezt\":1,\n\"zshl\":1,\n\"zshouyou\":1,\n\"zshyqx\":1,\n\"zslz\":1,\n\"zsnet\":1,\n\"zsnets\":1,\n\"zssou\":1,\n\"zst365\":1,\n\"zstx88\":1,\n\"zt5\":1,\n\"ztedu\":1,\n\"ztgame\":1,\n\"ztsfc\":1,\n\"zuche\":1,\n\"zuchecdn\":1,\n\"zuchezu\":1,\n\"zudong\":1,\n\"zufang\":1,\n\"zugame\":1,\n\"zugou\":1,\n\"zuiyou\":1,\n\"zuiyouxi\":1,\n\"zujuan\":1,\n\"zulinbao\":1,\n\"zunyiol\":1,\n\"zuoche\":1,\n\"zuojiaju\":1,\n\"zuojiang\":1,\n\"zuowen\":1,\n\"zupuk\":1,\n\"zupulu\":1,\n\"zuzhirenshi\":1,\n\"zuzuche\":1,\n\"zwcad\":1,\n\"zwhz\":1,\n\"zwtxnews\":1,\n\"zx114w\":1,\n\"zx185\":1,\n\"zx79\":1,\n\"zx98\":1,\n\"zxdyw\":1,\n\"zxfishing\":1,\n\"zxhsd\":1,\n\"zxip\":1,\n\"zxiubbs\":1,\n\"zxrcw\":1,\n\"zxwbb\":1,\n\"zxxk\":1,\n\"zxyhw\":1,\n\"zxzhijia\":1,\n\"zy\":1,\n\"zy12580\":1,\n\"zycdxw\":1,\n\"zycmmt\":1,\n\"zyctd\":1,\n\"zynews\":1,\n\"zynw\":1,\n\"zyrb\":1,\n\"zyt-life\":1,\n\"zyue\":1,\n\"zyuexc\":1,\n\"zyzhan\":1,\n\"zz361\":1,\n\"zz51\":1,\n\"zz597\":1,\n\"zz91\":1,\n\"zzbaike\":1,\n\"zzbbs\":1,\n\"zzdjw\":1,\n\"zzfc\":1,\n\"zzgjj\":1,\n\"zzhcz\":1,\n\"zzidc\":1,\n\"zzjob88\":1,\n\"zzlwjy\":1,\n\"zzol360\":1,\n\"zzpgm\":1,\n\"zzqifan\":1,\n\"zzsfjc\":1,\n\"zzsr\":1,\n\"zzstep\":1,\n\"zztyedu\":1,\n\"zzwljc\":1,\n\"zzwms\":1,\n\"zzyjs\":1,\n\"zzyycc\":1,\n\"zzz4\":1\n},\"de\":{\n\"china-botschaft\":1\n},\"edu\":{\n\"snai\":1,\n\"sxrtvu\":1\n},\"fm\":{\n\"douban\":1,\n\"jing\":1,\n\"lvxing\":1\n},\"fr\":{\n\"amb-chine\":1\n},\"hk\":{\n\"95599\":1,\n\"ctrip.com\":1,\n\"hkidc\":1,\n\"takungpao.com\":1,\n\"xsren\":1\n},\"im\":{\n\"cli\":1,\n\"iapps\":1,\n\"iyy\":1,\n\"yixin\":1\n},\"info\":{\n\"gmold\":1,\n\"iyaya\":1,\n\"lztech\":1,\n\"meihua\":1,\n\"williamlong\":1\n},\"jobs\":{\n\"cn\":1\n},\"jp\":{\n\"china-embassy.or\":1\n},\"kr\":{\n\"ctrip.co\":1\n},\"la\":{\n\"33\":1,\n\"36\":1,\n\"51\":1,\n\"55\":1,\n\"900\":1,\n\"chaxun\":1,\n\"iz\":1,\n\"qzone\":1,\n\"ulinix\":1\n},\"me\":{\n\"21me\":1,\n\"bole\":1,\n\"dzj\":1,\n\"kyhs\":1,\n\"nanxi\":1,\n\"shijue\":1,\n\"tvb\":1,\n\"wmpic\":1,\n\"yuksel\":1\n},\"mobi\":{\n\"i1515\":1\n},\"net\":{\n\"001sj\":1,\n\"00615\":1,\n\"020p\":1,\n\"022job\":1,\n\"024anfang\":1,\n\"027\":1,\n\"0376\":1,\n\"0513\":1,\n\"0515car\":1,\n\"0517\":1,\n\"0566cn\":1,\n\"0577home\":1,\n\"0755\":1,\n\"0871job\":1,\n\"0875job\":1,\n\"0898\":1,\n\"0937\":1,\n\"10050\":1,\n\"100jiaoyu\":1,\n\"114my\":1,\n\"115800\":1,\n\"117800\":1,\n\"125cn\":1,\n\"126\":1,\n\"126job\":1,\n\"127\":1,\n\"12900\":1,\n\"158\":1,\n\"1616\":1,\n\"163\":1,\n\"16789\":1,\n\"177dj\":1,\n\"17eu\":1,\n\"17u\":1,\n\"18dao\":1,\n\"200\":1,\n\"21ccom\":1,\n\"21cp\":1,\n\"21ks\":1,\n\"21page\":1,\n\"21shte\":1,\n\"230la\":1,\n\"232100\":1,\n\"263\":1,\n\"269\":1,\n\"293\":1,\n\"2dx\":1,\n\"2liang\":1,\n\"2mdn\":1,\n\"33map\":1,\n\"360guakao\":1,\n\"360tz\":1,\n\"365kl\":1,\n\"370830\":1,\n\"37wan\":1,\n\"39\":1,\n\"39jhw\":1,\n\"3conline\":1,\n\"3ddl\":1,\n\"3edu\":1,\n\"3sjob\":1,\n\"3snews\":1,\n\"414500\":1,\n\"434300\":1,\n\"4399\":1,\n\"461000\":1,\n\"471700\":1,\n\"51\":1,\n\"51daifu\":1,\n\"51fanli\":1,\n\"51gaokao\":1,\n\"51hunter\":1,\n\"51la\":1,\n\"51test\":1,\n\"51zxw\":1,\n\"5251\":1,\n\"52cake\":1,\n\"52car\":1,\n\"52ch\":1,\n\"52hotel\":1,\n\"52jj\":1,\n\"52op\":1,\n\"52sales\":1,\n\"52tian\":1,\n\"52xiaoyuan\":1,\n\"533\":1,\n\"5460\":1,\n\"546300\":1,\n\"54cn\":1,\n\"54kefu\":1,\n\"5566\":1,\n\"557\":1,\n\"5678\":1,\n\"56888\":1,\n\"56ye\":1,\n\"571400\":1,\n\"5721\":1,\n\"5d6d\":1,\n\"5haoxue\":1,\n\"5i9u\":1,\n\"5zsz\":1,\n\"6259114\":1,\n\"68design\":1,\n\"71sou\":1,\n\"78dm\":1,\n\"7usa\":1,\n\"800400\":1,\n\"81629\":1,\n\"84bus\":1,\n\"8671\":1,\n\"86to81\":1,\n\"88353588\":1,\n\"91tea\":1,\n\"94117\":1,\n\"962\":1,\n\"962200\":1,\n\"96369\":1,\n\"96519\":1,\n\"97616\":1,\n\"999120\":1,\n\"acftu\":1,\n\"actoys\":1,\n\"admin5\":1,\n\"ah163\":1,\n\"ahage\":1,\n\"ahcl\":1,\n\"ajiang\":1,\n\"aladd\":1,\n\"ali213\":1,\n\"androidonline\":1,\n\"ankang\":1,\n\"anngo\":1,\n\"anyv\":1,\n\"artintern\":1,\n\"artron\":1,\n\"asp163\":1,\n\"aupu\":1,\n\"awotuan\":1,\n\"ayrc\":1,\n\"b2b168\":1,\n\"baidulian\":1,\n\"bailinsi\":1,\n\"baixing\":1,\n\"baoan\":1,\n\"baoye\":1,\n\"bbscms\":1,\n\"bd365\":1,\n\"bdinfo\":1,\n\"beianchaxun\":1,\n\"beifang\":1,\n\"bejoin\":1,\n\"bfxx\":1,\n\"bianjibu\":1,\n\"bjhytc\":1,\n\"bjmama\":1,\n\"blsy\":1,\n\"bmjob\":1,\n\"bokee\":1,\n\"bsjy\":1,\n\"buildjob\":1,\n\"byfdc\":1,\n\"bzcm\":1,\n\"c-ps\":1,\n\"c114\":1,\n\"caihao\":1,\n\"caiyn\":1,\n\"catv\":1,\n\"cbi360\":1,\n\"ccedin\":1,\n\"ccen\":1,\n\"ccmn\":1,\n\"cctb\":1,\n\"ccughc\":1,\n\"cdgtw\":1,\n\"cdjjedu\":1,\n\"cdn86\":1,\n\"cdrx\":1,\n\"cdyou\":1,\n\"ce02\":1,\n\"cer\":1,\n\"cfanclub\":1,\n\"cfedu\":1,\n\"changdedj\":1,\n\"chebiao\":1,\n\"chem365\":1,\n\"chetuanwang\":1,\n\"chexun\":1,\n\"china-cba\":1,\n\"china-cx\":1,\n\"china-lottery\":1,\n\"china-school\":1,\n\"china-train\":1,\n\"china123\":1,\n\"chinabug\":1,\n\"chinaccd\":1,\n\"chinacity\":1,\n\"chinacrane\":1,\n\"chinaeic\":1,\n\"chinaeol\":1,\n\"chinagames\":1,\n\"chinagb\":1,\n\"chinahrd\":1,\n\"chinahufa\":1,\n\"chinajoy\":1,\n\"chinametro\":1,\n\"chinamost\":1,\n\"chinamr\":1,\n\"chinapaper\":1,\n\"chinapipe\":1,\n\"chinaseed\":1,\n\"chinashishi\":1,\n\"chinauma\":1,\n\"chinaunix\":1,\n\"chinavalue\":1,\n\"chinawestnews\":1,\n\"chutou\":1,\n\"cidu\":1,\n\"cifco\":1,\n\"cippe\":1,\n\"citiz\":1,\n\"ciwong\":1,\n\"cixiedu\":1,\n\"cjdby\":1,\n\"cn\":1,\n\"cn2car\":1,\n\"cnbaowen\":1,\n\"cnchache\":1,\n\"cncn\":1,\n\"cndianlu\":1,\n\"cndog\":1,\n\"cneln\":1,\n\"cnfrp\":1,\n\"cngsda\":1,\n\"cnhbsb\":1,\n\"cnhuadong\":1,\n\"cninfo\":1,\n\"cnjky\":1,\n\"cnjyw\":1,\n\"cnki\":1,\n\"cnkoi\":1,\n\"cnkssb\":1,\n\"cnlinfo\":1,\n\"cnmf\":1,\n\"cnmsw\":1,\n\"cnnyjx\":1,\n\"cnool\":1,\n\"cnpension\":1,\n\"cnphotos\":1,\n\"cnread\":1,\n\"cnshicai\":1,\n\"cnsifa\":1,\n\"cnwen\":1,\n\"cnworld\":1,\n\"cnxishui\":1,\n\"cnyw\":1,\n\"cnzz\":1,\n\"codefans\":1,\n\"coovee\":1,\n\"copperhome\":1,\n\"corpease\":1,\n\"cpecc\":1,\n\"cphoto\":1,\n\"cqfishing\":1,\n\"cqgj\":1,\n\"cqhxjd\":1,\n\"cqmama\":1,\n\"cqnews\":1,\n\"cqqnb\":1,\n\"cqrc\":1,\n\"cqshebao\":1,\n\"cqwu\":1,\n\"cqxszx\":1,\n\"cqyc\":1,\n\"cqyun\":1,\n\"cqzx\":1,\n\"csats\":1,\n\"csdn\":1,\n\"csgia\":1,\n\"csln\":1,\n\"csmama\":1,\n\"csstoday\":1,\n\"cxtvu\":1,\n\"cyjyw\":1,\n\"cyol\":1,\n\"czch\":1,\n\"czinfo\":1,\n\"czonline\":1,\n\"d1xz\":1,\n\"da-hang\":1,\n\"dadiwang\":1,\n\"daoxila\":1,\n\"daozhou\":1,\n\"daqing\":1,\n\"dd001\":1,\n\"ddjob\":1,\n\"dehua\":1,\n\"demage\":1,\n\"dflr\":1,\n\"dfysw\":1,\n\"dgjy\":1,\n\"dgrc\":1,\n\"dianzhanggui\":1,\n\"diaochapai\":1,\n\"diaokeji\":1,\n\"dimeng\":1,\n\"discuz\":1,\n\"diwei\":1,\n\"dltm\":1,\n\"dlzj\":1,\n\"dmjob\":1,\n\"dmjy\":1,\n\"doubleclick\":1,\n\"doyoo\":1,\n\"doyouhike\":1,\n\"dqccc\":1,\n\"dragon-guide\":1,\n\"dt123\":1,\n\"duba\":1,\n\"dv37\":1,\n\"dvbbs\":1,\n\"dvimon\":1,\n\"dyedu\":1,\n\"dyfc\":1,\n\"dytt8\":1,\n\"dz169\":1,\n\"dzjob\":1,\n\"dzwork\":1,\n\"dzxw\":1,\n\"eamn\":1,\n\"edudh\":1,\n\"edudown\":1,\n\"edudt\":1,\n\"eeeqi\":1,\n\"emlog\":1,\n\"emushroom\":1,\n\"ershou\":1,\n\"esnai\":1,\n\"fangfa\":1,\n\"fayo\":1,\n\"fdlt\":1,\n\"fecn\":1,\n\"feijiu\":1,\n\"fengj\":1,\n\"fivecarts\":1,\n\"fjlib\":1,\n\"fjsy\":1,\n\"fjtv\":1,\n\"flash8\":1,\n\"foodmate\":1,\n\"forgechina\":1,\n\"foyuan\":1,\n\"frly\":1,\n\"fsjy\":1,\n\"ftutj\":1,\n\"futurescn\":1,\n\"fx120\":1,\n\"fxxww\":1,\n\"fynews\":1,\n\"fzxyyl\":1,\n\"gangong\":1,\n\"gaoan\":1,\n\"gayaha\":1,\n\"gcimg\":1,\n\"gdcct\":1,\n\"gdcic\":1,\n\"gdsin\":1,\n\"gfedu\":1,\n\"gg163\":1,\n\"gimoo\":1,\n\"globalimporter\":1,\n\"gongzhao\":1,\n\"goodacc\":1,\n\"gotozjj\":1,\n\"gouhuasuan\":1,\n\"gqsoso\":1,\n\"grfy\":1,\n\"gtcfla\":1,\n\"guqu\":1,\n\"gxbs\":1,\n\"gxcic\":1,\n\"gxer\":1,\n\"gxexam\":1,\n\"gxipo\":1,\n\"gxsti\":1,\n\"gyedu\":1,\n\"gz-travel\":1,\n\"gz007\":1,\n\"gzw\":1,\n\"haier\":1,\n\"hainan\":1,\n\"hainanpc\":1,\n\"haorencai\":1,\n\"hb123\":1,\n\"hb12369\":1,\n\"hbcdc\":1,\n\"hbhz\":1,\n\"hbnews\":1,\n\"hbrd\":1,\n\"hbycw\":1,\n\"hdzc\":1,\n\"hhjy\":1,\n\"hhncp\":1,\n\"hhsq\":1,\n\"hk-0898\":1,\n\"hkwb\":1,\n\"hledu\":1,\n\"hlgnet\":1,\n\"hlj\":1,\n\"hlje\":1,\n\"hm-3223\":1,\n\"hncic\":1,\n\"hnfz\":1,\n\"hngawj\":1,\n\"hngjj\":1,\n\"hnjkw\":1,\n\"hnkjonline\":1,\n\"hnlrx\":1,\n\"hnlzw\":1,\n\"hnnw\":1,\n\"hnol\":1,\n\"hnpi\":1,\n\"hnskl\":1,\n\"hnsxfj\":1,\n\"hntianya\":1,\n\"hnwn\":1,\n\"homomo\":1,\n\"hostadm\":1,\n\"hrbhw\":1,\n\"hrblaw\":1,\n\"hsjy\":1,\n\"htbenet\":1,\n\"hteacher\":1,\n\"htexam\":1,\n\"huaxiajiayuan\":1,\n\"huedu\":1,\n\"hunanedu\":1,\n\"huoche\":1,\n\"huochepiao\":1,\n\"hustonline\":1,\n\"hwit\":1,\n\"hxsx\":1,\n\"hxzg\":1,\n\"hyedu\":1,\n\"hyk123\":1,\n\"hynews\":1,\n\"hyxzx\":1,\n\"hyyxw\":1,\n\"hzedu\":1,\n\"hzjxy\":1,\n\"hzjys\":1,\n\"hzlib\":1,\n\"hzpzs\":1,\n\"hzrx\":1,\n\"hzyhrc\":1,\n\"icar168\":1,\n\"ichacha\":1,\n\"ilinyi\":1,\n\"imp3\":1,\n\"importfood\":1,\n\"indexedu\":1,\n\"inhe\":1,\n\"irs01\":1,\n\"ishang\":1,\n\"itcpn\":1,\n\"itiexue\":1,\n\"itpub\":1,\n\"itsogo\":1,\n\"itunion\":1,\n\"iwms\":1,\n\"jandan\":1,\n\"jb51\":1,\n\"jbedu\":1,\n\"jczsw\":1,\n\"jdedu\":1,\n\"jdzol\":1,\n\"jfxx\":1,\n\"jgedu\":1,\n\"jgny\":1,\n\"jhjy\":1,\n\"jiadinglife\":1,\n\"jiajushichang\":1,\n\"jiangsuedu\":1,\n\"jiaodong\":1,\n\"jiaoshizhaopin\":1,\n\"jiaozhou\":1,\n\"jichuang\":1,\n\"jiemo\":1,\n\"jieyue\":1,\n\"jinglao\":1,\n\"jingnei\":1,\n\"jinrongren\":1,\n\"jinshuju\":1,\n\"jius\":1,\n\"jixie\":1,\n\"jjwxc\":1,\n\"jl168\":1,\n\"jlqf\":1,\n\"jlstnet\":1,\n\"jnzxw\":1,\n\"job234\":1,\n\"jobinhe\":1,\n\"jsinfo\":1,\n\"jsr365\":1,\n\"jupai\":1,\n\"jwjy\":1,\n\"jxjjw\":1,\n\"jynews\":1,\n\"jysq\":1,\n\"jzcn\":1,\n\"jzdd\":1,\n\"kaidi163\":1,\n\"kanghu\":1,\n\"kantao\":1,\n\"kdnet\":1,\n\"kejet\":1,\n\"kejiqikan\":1,\n\"khez\":1,\n\"khly\":1,\n\"km169\":1,\n\"kmeb\":1,\n\"ksgs\":1,\n\"kuaidi100\":1,\n\"kuakao\":1,\n\"la-bbs\":1,\n\"labbase\":1,\n\"langge\":1,\n\"laohuangli\":1,\n\"lenosoft\":1,\n\"letian\":1,\n\"lh168\":1,\n\"lhjy\":1,\n\"li63\":1,\n\"lingw\":1,\n\"lingyuan\":1,\n\"linxi\":1,\n\"lipu\":1,\n\"liuxue51\":1,\n\"liveuc\":1,\n\"lixianedu\":1,\n\"ljia\":1,\n\"lmjx\":1,\n\"lnny\":1,\n\"longhoo\":1,\n\"longjiang\":1,\n\"longmen\":1,\n\"lonlife\":1,\n\"lotour\":1,\n\"ls520\":1,\n\"lsjyw\":1,\n\"ltesting\":1,\n\"luohuedu\":1,\n\"lwjy\":1,\n\"lwnews\":1,\n\"lyfxw\":1,\n\"lygrc\":1,\n\"lyjob\":1,\n\"lyjy\":1,\n\"lysk\":1,\n\"lyvec\":1,\n\"lywj\":1,\n\"lz54\":1,\n\"lzgd\":1,\n\"lzsq\":1,\n\"lzzy\":1,\n\"machineryinfo\":1,\n\"mafengwo\":1,\n\"makepolo\":1,\n\"map456\":1,\n\"masfy\":1,\n\"meishij\":1,\n\"meituan\":1,\n\"mm111\":1,\n\"mnrb\":1,\n\"mshw\":1,\n\"msxf\":1,\n\"mushroommarket\":1,\n\"mybu\":1,\n\"mycar168\":1,\n\"mycollect\":1,\n\"myhostadmin\":1,\n\"myrb\":1,\n\"mysteel\":1,\n\"nanrenwo\":1,\n\"nbcredit\":1,\n\"nbks\":1,\n\"nbol\":1,\n\"nbptweb\":1,\n\"nbzhaopin\":1,\n\"nengyuan\":1,\n\"net-school\":1,\n\"netat\":1,\n\"netover\":1,\n\"newasp\":1,\n\"newsmth\":1,\n\"newssc\":1,\n\"newyx\":1,\n\"ng114\":1,\n\"ngrx\":1,\n\"nhedu\":1,\n\"ninghai\":1,\n\"njbxjy\":1,\n\"nmgf\":1,\n\"nmtravel\":1,\n\"nnnews\":1,\n\"nongyezhan\":1,\n\"nosea\":1,\n\"nphoto\":1,\n\"ns365\":1,\n\"ntjy\":1,\n\"ntxx\":1,\n\"nurqut\":1,\n\"nxnews\":1,\n\"nxng\":1,\n\"ohedu\":1,\n\"oilchem\":1,\n\"onegreen\":1,\n\"onfun\":1,\n\"onlinedown\":1,\n\"oschina\":1,\n\"ourseo\":1,\n\"p5w\":1,\n\"pafj\":1,\n\"pageadmin\":1,\n\"pagechoice\":1,\n\"paixie\":1,\n\"paopaoche\":1,\n\"pchome\":1,\n\"phedu\":1,\n\"phome\":1,\n\"phpwind\":1,\n\"picol\":1,\n\"pingnan\":1,\n\"pjob\":1,\n\"pledu\":1,\n\"pnol\":1,\n\"polyv\":1,\n\"powereasy\":1,\n\"prestan\":1,\n\"pthl\":1,\n\"pynet\":1,\n\"pyrc\":1,\n\"pzzc\":1,\n\"qdedu\":1,\n\"qdhr\":1,\n\"qdmama\":1,\n\"qgnews\":1,\n\"qgny\":1,\n\"qgyyzs\":1,\n\"qikao\":1,\n\"qincai\":1,\n\"qiugouxinxi\":1,\n\"qnct\":1,\n\"qndb\":1,\n\"qp365\":1,\n\"qqxuan\":1,\n\"qyedu\":1,\n\"qyjz\":1,\n\"qzedu\":1,\n\"qzkj\":1,\n\"qzzs\":1,\n\"railcn\":1,\n\"raoke\":1,\n\"rc86\":1,\n\"rdedu\":1,\n\"rencai\":1,\n\"replays\":1,\n\"riridy\":1,\n\"rongchang\":1,\n\"rtbidder\":1,\n\"sandai\":1,\n\"sanwen\":1,\n\"sc-overseasinfo\":1,\n\"scedu\":1,\n\"scetc\":1,\n\"scfzw\":1,\n\"scjks\":1,\n\"scopen\":1,\n\"scpv\":1,\n\"scrtvu\":1,\n\"sddp\":1,\n\"sdedu\":1,\n\"sdinfo\":1,\n\"sdjxyj\":1,\n\"sdtyjixie\":1,\n\"sdyjdz\":1,\n\"seosrx\":1,\n\"sepu\":1,\n\"sg91\":1,\n\"sh1800\":1,\n\"shangc\":1,\n\"shanghaimuseum\":1,\n\"shanghaitour\":1,\n\"shanglin\":1,\n\"shaoyangnews\":1,\n\"shedu\":1,\n\"shengyijie\":1,\n\"sherc\":1,\n\"shlll\":1,\n\"shopin\":1,\n\"shouyouzhijia\":1,\n\"shuajizhijia\":1,\n\"shuanghui\":1,\n\"shxb\":1,\n\"shynws\":1,\n\"shyuzhi\":1,\n\"shzfzz\":1,\n\"silverlightchina\":1,\n\"sinahk\":1,\n\"single6\":1,\n\"sinoss\":1,\n\"sitall\":1,\n\"sjyzc\":1,\n\"smjy\":1,\n\"sohu\":1,\n\"songshuhui\":1,\n\"sosoo\":1,\n\"sosw\":1,\n\"sqjg\":1,\n\"sshr\":1,\n\"ssjy\":1,\n\"stedu\":1,\n\"suedu\":1,\n\"sunkf\":1,\n\"superlib\":1,\n\"supfree\":1,\n\"sxcm\":1,\n\"sxif\":1,\n\"sxinfo\":1,\n\"sxny\":1,\n\"sxri\":1,\n\"sxsedu\":1,\n\"sxxw\":1,\n\"syhouse\":1,\n\"syrcw\":1,\n\"syzxsx\":1,\n\"szeat\":1,\n\"szedu\":1,\n\"szol\":1,\n\"szonline\":1,\n\"szsti\":1,\n\"szykj\":1,\n\"t56\":1,\n\"tabanjia\":1,\n\"tainfo\":1,\n\"tajd\":1,\n\"taqc\":1,\n\"tczx\":1,\n\"tech110\":1,\n\"tengfang\":1,\n\"texrc\":1,\n\"tianya168\":1,\n\"tibetculture\":1,\n\"tieliren\":1,\n\"tiexue\":1,\n\"tigercity\":1,\n\"tingclass\":1,\n\"tjwang\":1,\n\"tlfw\":1,\n\"tmcdn\":1,\n\"tobosu\":1,\n\"togogo\":1,\n\"tongxiehui\":1,\n\"tourjob\":1,\n\"tqedu\":1,\n\"tqschool\":1,\n\"tripc\":1,\n\"tripsz\":1,\n\"trueland\":1,\n\"tsinghua-sz\":1,\n\"tt65\":1,\n\"tuanshan\":1,\n\"tuifu\":1,\n\"tulaomao\":1,\n\"tuoliji\":1,\n\"tuoxian\":1,\n\"tzhledu\":1,\n\"tzinfo\":1,\n\"u-start\":1,\n\"u148\":1,\n\"u520\":1,\n\"uker\":1,\n\"upweb\":1,\n\"usaedu\":1,\n\"v007\":1,\n\"vicp\":1,\n\"wanrendai\":1,\n\"wanxuan\":1,\n\"wddj\":1,\n\"weizhang\":1,\n\"wems\":1,\n\"wen8\":1,\n\"wgszq\":1,\n\"whedu\":1,\n\"whir\":1,\n\"whjy\":1,\n\"whjzw\":1,\n\"whxedu\":1,\n\"wjedu\":1,\n\"woai3d\":1,\n\"woja\":1,\n\"worldmr\":1,\n\"wrsa\":1,\n\"wrzc\":1,\n\"wto168\":1,\n\"wuca\":1,\n\"wufun\":1,\n\"wxtxgj\":1,\n\"wygf\":1,\n\"wz16\":1,\n\"wzdsb\":1,\n\"wzer\":1,\n\"wzjky\":1,\n\"wzjygh\":1,\n\"wzrc\":1,\n\"xamama\":1,\n\"xarc\":1,\n\"xbedu\":1,\n\"xcedu\":1,\n\"xdkb\":1,\n\"xfjw\":1,\n\"xhby\":1,\n\"xhedu\":1,\n\"xiangyang\":1,\n\"xiaomayi\":1,\n\"xichu\":1,\n\"xici\":1,\n\"xieso\":1,\n\"xingtai\":1,\n\"xinxijie\":1,\n\"xiusheji\":1,\n\"xiziwang\":1,\n\"xjauto\":1,\n\"xmmh\":1,\n\"xpjy\":1,\n\"xpsy\":1,\n\"xs163\":1,\n\"xsjk\":1,\n\"xsmp\":1,\n\"xtjob\":1,\n\"xtly\":1,\n\"xue\":1,\n\"xueche\":1,\n\"xuefo\":1,\n\"xunch\":1,\n\"xuqinghua\":1,\n\"xwcm\":1,\n\"xxsy\":1,\n\"xyrc\":1,\n\"xz120\":1,\n\"xzzp\":1,\n\"y80s\":1,\n\"yalj\":1,\n\"ybrc\":1,\n\"yc5\":1,\n\"ycdata\":1,\n\"yeah\":1,\n\"ygfishing\":1,\n\"yhjy\":1,\n\"yjhy\":1,\n\"ykedu\":1,\n\"ylsw\":1,\n\"ynedu\":1,\n\"yodak\":1,\n\"yongyao\":1,\n\"youxi5\":1,\n\"yoyone\":1,\n\"yx618\":1,\n\"yxjy\":1,\n\"yxol\":1,\n\"yyzs\":1,\n\"yzedu\":1,\n\"yzwb\":1,\n\"zailine\":1,\n\"zajy\":1,\n\"zbedu\":1,\n\"zbinfo\":1,\n\"zbnews\":1,\n\"zdic\":1,\n\"zg163\":1,\n\"zgcqxs\":1,\n\"zglbw\":1,\n\"zgnt\":1,\n\"zgwys\":1,\n\"zhangli\":1,\n\"zhaokao\":1,\n\"zhaoshang\":1,\n\"zhecheng\":1,\n\"zhige\":1,\n\"zhjy\":1,\n\"zhmmw\":1,\n\"zhnews\":1,\n\"zhong-yao\":1,\n\"zhongjiao\":1,\n\"zhongsou\":1,\n\"zhsti\":1,\n\"zhxww\":1,\n\"zhyw\":1,\n\"ziuziu\":1,\n\"zjcyts\":1,\n\"zjfishing\":1,\n\"zjk169\":1,\n\"zjkinfo\":1,\n\"zjnw\":1,\n\"zjtcm\":1,\n\"zjwu\":1,\n\"zjzj\":1,\n\"zjzs\":1,\n\"zk789\":1,\n\"zljob\":1,\n\"zoosnet\":1,\n\"zoossoft\":1,\n\"zprc\":1,\n\"zq8\":1,\n\"zsedu\":1,\n\"zssl\":1,\n\"ztnews\":1,\n\"ztsfc\":1,\n\"zy169\":1,\n\"zyrc\":1,\n\"zzdd\":1,\n\"zzhmw\":1,\n\"zzist\":1,\n\"zzjs\":1,\n\"zzph\":1,\n\"zzrc\":1\n},\"org\":{\n\"0513\":1,\n\"1000plan\":1,\n\"1203\":1,\n\"21gold\":1,\n\"50bang\":1,\n\"51honest\":1,\n\"60851\":1,\n\"7188\":1,\n\"8855\":1,\n\"8hy\":1,\n\"8lw\":1,\n\"96399\":1,\n\"acftu\":1,\n\"ailaba\":1,\n\"ambafrance-cn\":1,\n\"ankang06\":1,\n\"anquan\":1,\n\"antong\":1,\n\"aqbz\":1,\n\"baiquean\":1,\n\"banyuetan\":1,\n\"baomi\":1,\n\"bj148\":1,\n\"bjcdc\":1,\n\"bjjubao\":1,\n\"bjsdr\":1,\n\"btv\":1,\n\"btvu\":1,\n\"bznews\":1,\n\"ca-sme\":1,\n\"caderm\":1,\n\"caeexpo\":1,\n\"caexpo\":1,\n\"caiep\":1,\n\"campingchina\":1,\n\"canjiren\":1,\n\"ccpit\":1,\n\"ccpitnb\":1,\n\"cfachina\":1,\n\"chahua\":1,\n\"chengdu56\":1,\n\"china-consulate\":1,\n\"china-cotton\":1,\n\"china-embassy\":1,\n\"china10\":1,\n\"chinaasc\":1,\n\"chinacct\":1,\n\"chinacitywater\":1,\n\"chinacourt\":1,\n\"chinacses\":1,\n\"chinaculture\":1,\n\"chinadmoz\":1,\n\"chinaeda\":1,\n\"chinagwy\":1,\n\"chinagwyw\":1,\n\"chinaielts\":1,\n\"chinaiiss\":1,\n\"chinaleather\":1,\n\"chinanotary\":1,\n\"chinaports\":1,\n\"chinaql\":1,\n\"chinataiwan\":1,\n\"chinatruck\":1,\n\"chinaww\":1,\n\"chinazy\":1,\n\"chinca\":1,\n\"chineseconsulate\":1,\n\"chineseembassy\":1,\n\"chunni\":1,\n\"ci-bo\":1,\n\"cieccpa\":1,\n\"ciftis\":1,\n\"cltt\":1,\n\"cmes\":1,\n\"cn-ny\":1,\n\"cncma\":1,\n\"cncourt\":1,\n\"cnenergy\":1,\n\"cnfxj\":1,\n\"cngold\":1,\n\"cnlist\":1,\n\"cnqr\":1,\n\"cnsb\":1,\n\"cocos2d-x\":1,\n\"cottonchina\":1,\n\"cq315\":1,\n\"cqgh\":1,\n\"cqzx\":1,\n\"crgk\":1,\n\"csmes\":1,\n\"cxwy\":1,\n\"cxwz\":1,\n\"cyedu\":1,\n\"donglin\":1,\n\"dtjy\":1,\n\"duchang\":1,\n\"dxyq\":1,\n\"eccsp\":1,\n\"eguilin\":1,\n\"fjcyl\":1,\n\"fjkx\":1,\n\"flzxw\":1,\n\"foxue\":1,\n\"fyedu\":1,\n\"gazx\":1,\n\"gdql\":1,\n\"gedu\":1,\n\"gjgwy\":1,\n\"globalbook\":1,\n\"gming\":1,\n\"gsean\":1,\n\"guigu\":1,\n\"gwfk\":1,\n\"gxjubao\":1,\n\"gzlib\":1,\n\"gzredcross\":1,\n\"gzzyz\":1,\n\"hafxw\":1,\n\"hainanredcross\":1,\n\"hainei\":1,\n\"hanban\":1,\n\"hbcourt\":1,\n\"hbsfgk\":1,\n\"hdavec\":1,\n\"hebgcc\":1,\n\"hebgh\":1,\n\"hebpingan\":1,\n\"hebredcross\":1,\n\"hefei123\":1,\n\"henanredcross\":1,\n\"hengfeng\":1,\n\"hfib\":1,\n\"hljgh\":1,\n\"hlnmg\":1,\n\"hncourt\":1,\n\"hndpf\":1,\n\"hngh\":1,\n\"hnswtzb\":1,\n\"hnszgh\":1,\n\"hqfb\":1,\n\"hrsalon\":1,\n\"html5cn\":1,\n\"htzx\":1,\n\"humanrights-china\":1,\n\"huocheshikebiao\":1,\n\"hxfz\":1,\n\"hykaoyan\":1,\n\"hynews\":1,\n\"hzgh\":1,\n\"infx\":1,\n\"it-home\":1,\n\"jiaj\":1,\n\"jiangshi\":1,\n\"jiangsugqt\":1,\n\"jiansuji\":1,\n\"jinde\":1,\n\"jingjia\":1,\n\"jsfxh\":1,\n\"jsgh\":1,\n\"jsvolunteer\":1,\n\"jxtyzx\":1,\n\"keywin\":1,\n\"kvov\":1,\n\"liangjing\":1,\n\"liaotuo\":1,\n\"linjiang\":1,\n\"lmzm\":1,\n\"lnszgh\":1,\n\"lnwomen\":1,\n\"lohcn\":1,\n\"lygredcross\":1,\n\"meixun\":1,\n\"mghf\":1,\n\"mobiletrain\":1,\n\"namoc\":1,\n\"nanjing2014\":1,\n\"newchannel\":1,\n\"neworiental\":1,\n\"neworiental-k12\":1,\n\"neworientalgroup\":1,\n\"newssc\":1,\n\"ninghai\":1,\n\"njgh\":1,\n\"njxzzx\":1,\n\"nuli\":1,\n\"patachina\":1,\n\"pinggu\":1,\n\"puduw\":1,\n\"punchbox\":1,\n\"qhcl\":1,\n\"qhfx\":1,\n\"qinglian\":1,\n\"qqwangming\":1,\n\"qusu\":1,\n\"rainbowsoft\":1,\n\"rczp\":1,\n\"redcross-sha\":1,\n\"rfidchina\":1,\n\"rtsac\":1,\n\"sae-china\":1,\n\"scgh\":1,\n\"sclf\":1,\n\"sclib\":1,\n\"shidi\":1,\n\"shmould\":1,\n\"showchina\":1,\n\"shtour\":1,\n\"shufa\":1,\n\"shuzixiaoyuan\":1,\n\"shzgh\":1,\n\"smedu\":1,\n\"solidot\":1,\n\"sqzx\":1,\n\"staticfile\":1,\n\"suiw\":1,\n\"swchina\":1,\n\"sxly\":1,\n\"szfw\":1,\n\"taiwandao\":1,\n\"tielu\":1,\n\"trustutn\":1,\n\"ttedu\":1,\n\"tzedu\":1,\n\"visapro\":1,\n\"w3\":1,\n\"wanjia\":1,\n\"wcedu\":1,\n\"whgh\":1,\n\"whxz\":1,\n\"wooyun\":1,\n\"wopus\":1,\n\"world-culture\":1,\n\"wwfchina\":1,\n\"wx6\":1,\n\"wzgh\":1,\n\"xiaoxiaotong\":1,\n\"xinhua\":1,\n\"xinzhou\":1,\n\"xjcourt\":1,\n\"xjedu\":1,\n\"xnfw\":1,\n\"xuancheng\":1,\n\"xuetian\":1,\n\"xwjy\":1,\n\"xzass\":1,\n\"xzqh\":1,\n\"yaolu\":1,\n\"yczjda\":1,\n\"yeeyan\":1,\n\"ygym\":1,\n\"yhgh\":1,\n\"yylm\":1,\n\"zaoyang\":1,\n\"zgba\":1,\n\"zgjm\":1,\n\"zgjy\":1,\n\"zgjzy\":1,\n\"zgshfljjh\":1,\n\"zhaokuaidi\":1,\n\"zhaopinhui\":1,\n\"zhaoyang\":1,\n\"zhifujing\":1,\n\"zhongzhuan\":1,\n\"zhzyw\":1,\n\"zj315\":1,\n\"zjedu\":1,\n\"zjftu\":1,\n\"zjgqt\":1,\n\"zjjd\":1,\n\"zjjys\":1,\n\"zjlsedu\":1,\n\"zjmj\":1,\n\"zjscedu\":1,\n\"zjtxedu\":1,\n\"zjzj\":1,\n\"zkpeace\":1,\n\"zunhua\":1,\n\"zwbk\":1,\n\"zx110\":1,\n\"zycq\":1,\n\"zyxuan\":1,\n\"zzbm\":1\n},\"sg\":{\n\"iedu\":1\n},\"sh\":{\n\"sge\":1\n},\"so\":{\n\"haorenyuan\":1,\n\"lietou\":1,\n\"luyi\":1,\n\"shengqian\":1,\n\"soutudi\":1,\n\"wangxiao\":1\n},\"tm\":{\n\"stone\":1\n},\"tv\":{\n\"005\":1,\n\"0438\":1,\n\"0916\":1,\n\"1819\":1,\n\"1866\":1,\n\"1988\":1,\n\"19888\":1,\n\"2588\":1,\n\"3456\":1,\n\"5588\":1,\n\"5666\":1,\n\"5888\":1,\n\"5999\":1,\n\"7999\":1,\n\"9555\":1,\n\"9928\":1,\n\"9998\":1,\n\"acg\":1,\n\"bilibili\":1,\n\"caoxian\":1,\n\"cnnl\":1,\n\"cnsb\":1,\n\"dengzhou\":1,\n\"dydh\":1,\n\"dztv\":1,\n\"efang\":1,\n\"gamehome\":1,\n\"hao315\":1,\n\"hntv\":1,\n\"hoolo\":1,\n\"huaihai\":1,\n\"imgo\":1,\n\"jiyou\":1,\n\"jnnews\":1,\n\"liaozhai\":1,\n\"ocar\":1,\n\"pengzhou\":1,\n\"pps\":1,\n\"qbj\":1,\n\"shiqian\":1,\n\"wasu\":1,\n\"weihai\":1,\n\"zhenping\":1,\n\"zohi\":1\n},\"tw\":{\n\"hexun.com\":1,\n\"taiwandao\":1\n},\"us\":{\n\"pangu\":1\n},\"ws\":{\n\"0798\":1\n},\"xn--fiqs8s\":{\n\"\":1\n}\n};\n\nvar subnetIpRangeList = [\n0,1,\n167772160,184549376,\t//10.0.0.0/8\n2886729728,2887778304,\t//172.16.0.0/12\n3232235520,3232301056,\t//192.168.0.0/16\n2130706432,2130706688\t//127.0.0.0/24\n];\n\nvar hasOwnProperty = Object.hasOwnProperty;\n\nfunction check_ipv4(host) {\n\t// check if the ipv4 format (TODO: ipv6)\n\t//   http://home.deds.nl/~aeron/regex/\n\tvar re_ipv4 = /^\\d+\\.\\d+\\.\\d+\\.\\d+$/g;\n\tif (re_ipv4.test(host)) {\n\t\t// in theory, we can add chnroutes test here.\n\t\t// but that is probably too much an overkill.\n\t\treturn true;\n\t}\n}\nfunction convertAddress(ipchars) {\n\tvar bytes = ipchars.split('.');\n\tvar result = (bytes[0] << 24) |\n\t(bytes[1] << 16) |\n\t(bytes[2] << 8) |\n\t(bytes[3]);\n\treturn result >>> 0;\n}\nfunction isInSubnetRange(ipRange, intIp) {\n\tfor ( var i = 0; i < 10; i += 2 ) {\n\t\tif ( ipRange[i] <= intIp && intIp < ipRange[i+1] )\n\t\t\treturn true;\n\t}\n}\nfunction getProxyFromDirectIP(strIp) {\n\tvar intIp = convertAddress(strIp);\n\tif ( isInSubnetRange(subnetIpRangeList, intIp) ) {\n\t\treturn direct;\n\t}\n\treturn ip_proxy;\n}\nfunction isInDomains(domain_dict, host) {\n\tvar suffix;\n\tvar pos1 = host.lastIndexOf('.');\n\n\tsuffix = host.substring(pos1 + 1);\n\tif (suffix == \"cn\") {\n\t\treturn true;\n\t}\n\n\tvar domains = domain_dict[suffix];\n\tif ( domains === undefined ) {\n\t\treturn false;\n\t}\n\thost = host.substring(0, pos1);\n\tvar pos = host.lastIndexOf('.');\n\n\twhile(1) {\n\t\tif (pos <= 0) {\n\t\t\tif (hasOwnProperty.call(domains, host)) {\n\t\t\t\treturn true;\n\t\t\t} else {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\tsuffix = host.substring(pos + 1);\n\t\tif (hasOwnProperty.call(domains, suffix)) {\n\t\t\treturn true;\n\t\t}\n\t\tpos = host.lastIndexOf('.', pos - 1);\n\t}\n}\nfunction FindProxyForURL(url, host) {\n\tif ( isPlainHostName(host) === true ) {\n\t\treturn direct;\n\t}\n\tif ( check_ipv4(host) === true ) {\n\t\treturn getProxyFromDirectIP(host);\n\t}\n\tif ( isInDomains(white_domains, host) === true ) {\n\t\treturn nowall_proxy;\n\t}\n\treturn wall_proxy;\n}\n\n"
  },
  {
    "path": "Trojan/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>$(DEVELOPMENT_LANGUAGE)</string>\n\t<key>CFBundleExecutable</key>\n\t<string>$(EXECUTABLE_NAME)</string>\n\t<key>CFBundleIconFile</key>\n\t<string></string>\n\t<key>CFBundleIdentifier</key>\n\t<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundleName</key>\n\t<string>$(PRODUCT_NAME)</string>\n\t<key>CFBundlePackageType</key>\n\t<string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>2.1</string>\n\t<key>CFBundleVersion</key>\n\t<string>1</string>\n\t<key>LSApplicationCategoryType</key>\n\t<string>public.app-category.developer-tools</string>\n\t<key>LSMinimumSystemVersion</key>\n\t<string>$(MACOSX_DEPLOYMENT_TARGET)</string>\n\t<key>LSUIElement</key>\n\t<true/>\n\t<key>NSHumanReadableCopyright</key>\n\t<string>Copyright © 2020 ParadiseDuo. All rights reserved.</string>\n\t<key>NSMainNibFile</key>\n\t<string>MainMenu</string>\n\t<key>NSPrincipalClass</key>\n\t<string>NSApplication</string>\n\t<key>NSSupportsAutomaticTermination</key>\n\t<true/>\n\t<key>NSSupportsSuddenTermination</key>\n\t<true/>\n</dict>\n</plist>\n"
  },
  {
    "path": "Trojan/InstallHelper/install_helper.sh",
    "content": "#!/bin/sh\n\ncd \"$(dirname \"${BASH_SOURCE[0]}\")\"\nsudo mkdir -p \"/Library/Application Support/Trojan/\"\nsudo cp ProxyConfHelper \"/Library/Application Support/Trojan/\"\nsudo chown root:admin \"/Library/Application Support/Trojan/ProxyConfHelper\"\nsudo chmod +s \"/Library/Application Support/Trojan/ProxyConfHelper\"\n\necho done\n"
  },
  {
    "path": "Trojan/InstallHelper/install_privoxy.sh",
    "content": "#!/bin/sh\n\ncd \"$(dirname \"${BASH_SOURCE[0]}\")\"\nprivoxyVersion=3.0.28.static\nmkdir -p \"$HOME/Library/Application Support/Trojan/privoxy-$privoxyVersion\"\ncp -f privoxy \"$HOME/Library/Application Support/Trojan/privoxy-$privoxyVersion/\"\ncp -f libpcre.1.dylib \"$HOME/Library/Application Support/Trojan/privoxy-$privoxyVersion/\"\nrm -f \"$HOME/Library/Application Support/Trojan/privoxy\"\nln -s \"$HOME/Library/Application Support/Trojan/privoxy-$privoxyVersion/privoxy\" \"$HOME/Library/Application Support/Trojan/privoxy\"\nln -sf \"$HOME/Library/Application Support/Trojan/privoxy-$privoxyVersion/libpcre.1.dylib\" \"$HOME/Library/Application Support/Trojan/libpcre.1.dylib\"\necho done\n"
  },
  {
    "path": "Trojan/InstallHelper/install_trojan.sh",
    "content": "#!/bin/sh\n\ncd \"$(dirname \"${BASH_SOURCE[0]}\")\"\ntrojanVersion=1.16.0\nmkdir -p \"$HOME/Library/Application Support/Trojan/trojan-$trojanVersion\"\ncp -f trojan \"$HOME/Library/Application Support/Trojan/trojan-$trojanVersion/\"\nrm -f \"$HOME/Library/Application Support/Trojan/trojan\"\nln -s \"$HOME/Library/Application Support/Trojan/trojan-$trojanVersion/trojan\" \"$HOME/Library/Application Support/Trojan/trojan\"\n\necho done\n"
  },
  {
    "path": "Trojan/InstallHelper/privoxy.config.example",
    "content": "listen-address {http}\ntoggle  1\nenable-remote-toggle 1\nenable-remote-http-toggle 1\nenable-edit-actions 0\nenforce-blocks 0\nbuffer-limit 4096\nforwarded-connect-retries  0\naccept-intercepted-requests 0\nallow-cgi-request-crunching 0\nsplit-large-forms 0\nkeep-alive-timeout 5\nsocket-timeout 60\n\nforward-socks5 / {socks5} .\nforward         192.168.*.*/     .\nforward         10.*.*.*/        .\nforward         127.*.*.*/       .\n"
  },
  {
    "path": "Trojan/InstallHelper/reload_conf_privoxy.sh",
    "content": "#!/bin/sh\n\nlaunchctl unload \"$HOME/Library/LaunchAgents/MacOS.Trojan.http.plist\"\nlaunchctl load \"$HOME/Library/LaunchAgents/MacOS.Trojan.http.plist\"\n"
  },
  {
    "path": "Trojan/InstallHelper/reload_conf_trojan.sh",
    "content": "#!/bin/sh\n\n\nlaunchctl unload \"$HOME/Library/LaunchAgents/MacOS.Trojan.local.plist\"\nlaunchctl load \"$HOME/Library/LaunchAgents/MacOS.Trojan.local.plist\"\n"
  },
  {
    "path": "Trojan/InstallHelper/remove_privoxy.sh",
    "content": "#!/bin/sh\n\nrm -rf \"$HOME/Library/LaunchAgents/MacOS.Trojan.http.plist\"\n\n"
  },
  {
    "path": "Trojan/InstallHelper/remove_trojan.sh",
    "content": "#!/bin/sh\n\nrm -f \"$HOME/Library/LaunchAgents/MacOS.Trojan.local.plist\"\n\n"
  },
  {
    "path": "Trojan/InstallHelper/start_privoxy.sh",
    "content": "#!/bin/sh\n\nlaunchctl load \"$HOME/Library/LaunchAgents/MacOS.Trojan.http.plist\"\n"
  },
  {
    "path": "Trojan/InstallHelper/start_trojan.sh",
    "content": "#!/bin/sh\n\nlaunchctl load \"$HOME/Library/LaunchAgents/MacOS.Trojan.local.plist\"\n"
  },
  {
    "path": "Trojan/InstallHelper/stop_privoxy.sh",
    "content": "#!/bin/sh\n\nlaunchctl unload \"$HOME/Library/LaunchAgents/MacOS.Trojan.http.plist\"\n"
  },
  {
    "path": "Trojan/InstallHelper/stop_trojan.sh",
    "content": "#!/bin/sh\n\nlaunchctl unload \"$HOME/Library/LaunchAgents/MacOS.Trojan.local.plist\"\n"
  },
  {
    "path": "Trojan/LaunchAgentHelper.swift",
    "content": "//\n//  LaunchAgentHelper.swift\n//  Trojan\n//\n//  Created by ParadiseDuo on 2020/5/5.\n//  Copyright © 2020 ParadiseDuo. All rights reserved.\n//\n\nimport Foundation\nimport CommonCrypto\n\n\nextension Data {\n    func sha1() -> String {\n        let data = self\n        var digest = [UInt8](repeating: 0, count: Int(CC_SHA1_DIGEST_LENGTH))\n        CC_SHA1((data as NSData).bytes, CC_LONG(data.count), &digest)\n        let hexBytes = digest.map { String(format: \"%02hhx\", $0) }\n        return hexBytes.joined(separator: \"\")\n    }\n}\n\nfunc getFileSHA1Sum(_ filepath: String) -> String {\n    let fileMgr = FileManager.default\n    if fileMgr.fileExists(atPath: filepath) {\n        if let data = try? Data(contentsOf: URL(fileURLWithPath: filepath)) {\n            return data.sha1()\n        }\n    }\n    return \"\"\n}\n\nfunc generateTrojanLauchAgentPlist() -> Bool {\n    let trojanPath = NSHomeDirectory() + APP_SUPPORT_DIR + \"trojan\"\n    let launchAgentDirPath = NSHomeDirectory() + LAUNCH_AGENT_DIR\n    let plistFilepath = launchAgentDirPath + LAUNCH_AGENT_CONF_TROJAN_NAME\n    \n    // Ensure launch agent directory is existed.\n    let fileMgr = FileManager.default\n    if !fileMgr.fileExists(atPath: launchAgentDirPath) {\n        try! fileMgr.createDirectory(atPath: launchAgentDirPath, withIntermediateDirectories: true, attributes: nil)\n    }\n    \n    let oldSha1Sum = getFileSHA1Sum(plistFilepath)\n\n    let arguments = [trojanPath, \"--log\", LOG_PATH, \"--config\", CONFIG_PATH]\n\n    // For a complete listing of the keys, see the launchd.plist manual page.\n    let dict: NSMutableDictionary = [\n        \"Label\": \"MacOS.Trojan.local\",\n        \"WorkingDirectory\": NSHomeDirectory() + APP_SUPPORT_DIR,\n        \"KeepAlive\": true,\n        \"StandardOutPath\": LOG_PATH,\n        \"StandardErrorPath\": LOG_PATH,\n        \"ProgramArguments\": arguments,\n        \"EnvironmentVariables\": [\"DYLD_LIBRARY_PATH\": NSHomeDirectory() + APP_SUPPORT_DIR]\n    ]\n    dict.write(toFile: plistFilepath, atomically: true)\n    let Sha1Sum = getFileSHA1Sum(plistFilepath)\n    if oldSha1Sum != Sha1Sum {\n        return true\n    } else {\n        return false\n    }\n}\n\nfunc InstallTrojanLocal(finish: @escaping(_ success: Bool)->()) {\n    let fileMgr = FileManager.default\n    let homeDir = NSHomeDirectory()\n    let appSupportDir = homeDir+APP_SUPPORT_DIR\n    if !fileMgr.fileExists(atPath: appSupportDir + \"trojan-\\(TROJAN_VERSION)/trojan\") {\n        let bundle = Bundle.main\n        let installerPath = bundle.path(forResource: \"install_trojan.sh\", ofType: nil)\n        let task = Process.launchedProcess(launchPath: installerPath!, arguments: [\"\"])\n        task.waitUntilExit()\n        if task.terminationStatus == 0 {\n            NSLog(\"Install trojan succeeded.\")\n            DispatchQueue.main.async {\n                finish(true)\n            }\n        } else {\n            NSLog(\"Install trojan failed.\")\n            DispatchQueue.main.async {\n                finish(false)\n            }\n        }\n    } else {\n        finish(true)\n    }\n}\n\nfunc ReloadConfTrojan(finish: @escaping(_ success: Bool)->()) {\n    let bundle = Bundle.main\n    let installerPath = bundle.path(forResource: \"reload_conf_trojan.sh\", ofType: nil)\n    let task = Process.launchedProcess(launchPath: installerPath!, arguments: [\"\"])\n    task.waitUntilExit()\n    if task.terminationStatus == 0 {\n        NSLog(\"Reload trojan succeeded.\")\n        DispatchQueue.main.async {\n            finish(true)\n        }\n    } else {\n        NSLog(\"Reload trojan failed.\")\n        DispatchQueue.main.async {\n            finish(false)\n        }\n    }\n}\n\nfunc StartTrojan(finish: @escaping(_ success: Bool)->()) {\n    let bundle = Bundle.main\n    let installerPath = bundle.path(forResource: \"start_trojan.sh\", ofType: nil)\n    let task = Process.launchedProcess(launchPath: installerPath!, arguments: [\"\"])\n    task.waitUntilExit()\n    if task.terminationStatus == 0 {\n        NSLog(\"Start trojan succeeded.\")\n        DispatchQueue.main.async {\n            finish(true)\n        }\n    } else {\n        NSLog(\"Start trojan failed.\")\n        DispatchQueue.main.async {\n            finish(false)\n        }\n    }\n}\n\nfunc StopTrojan(finish: @escaping(_ success: Bool)->()) {\n    let bundle = Bundle.main\n    let installerPath = bundle.path(forResource: \"stop_trojan.sh\", ofType: nil)\n    let task = Process.launchedProcess(launchPath: installerPath!, arguments: [\"\"])\n    task.waitUntilExit()\n    if task.terminationStatus == 0 {\n        NSLog(\"Stop trojan succeeded.\")\n        DispatchQueue.main.async {\n            finish(true)\n        }\n    } else {\n        NSLog(\"Stop trojan failed.\")\n        DispatchQueue.main.async {\n            finish(false)\n        }\n    }\n}\n\n\nfunc RemoveTrojan(finish: @escaping(_ success: Bool)->()) {\n    let bundle = Bundle.main\n    let installerPath = bundle.path(forResource: \"remove_trojan.sh\", ofType: nil)\n    let task = Process.launchedProcess(launchPath: installerPath!, arguments: [\"\"])\n    task.waitUntilExit()\n    if task.terminationStatus == 0 {\n        NSLog(\"Remove trojan succeeded.\")\n        DispatchQueue.main.async {\n            finish(true)\n        }\n    } else {\n        NSLog(\"Remove trojan failed.\")\n        DispatchQueue.main.async {\n            finish(false)\n        }\n    }\n}\n\nfunc writeTrojanConfFile(_ jsonString: String) -> Bool {\n    let url = NSURL.fileURL(withPath: CONFIG_PATH)\n    do {\n        let oldSum = getFileSHA1Sum(CONFIG_PATH)\n        try FileManager.default.removeItem(atPath: CONFIG_PATH)\n        \n        try jsonString.write(to: url, atomically: true, encoding: String.Encoding.utf8)\n        let newSum = getFileSHA1Sum(CONFIG_PATH)\n        DispatchQueue.main.asyncAfter(deadline: DispatchTime.now()+0.5) {\n            Profiles.shared.save()\n        }\n        \n        if oldSum == newSum {\n            return false\n        }\n        return true\n    } catch let error {\n        print(\"saveProfile: \", error)\n    }\n    return false\n}\n\nfunc SyncTrojan(finish: @escaping(_ success: Bool)->()) {\n    func Sync(_ suc: Bool){\n        SyncPrivoxy {\n            SyncPac()\n            finish(suc)\n        }\n    }\n    var changed: Bool = false\n    changed = changed || generateTrojanLauchAgentPlist()\n    let mgr = Profile.shared\n    if mgr.client != nil && mgr.client.remote_addr != \"\" {\n        changed = changed || writeTrojanConfFile(Profile.shared.jsonString)\n        if UserDefaults.standard.bool(forKey: USERDEFAULTS_TROJAN_ON) {\n            ReloadConfTrojan { (suc) in\n                Sync(suc)\n            }\n        } else {\n            Sync(true)\n        }\n    } else {\n        StopTrojan { (s) in\n            Sync(true)\n        }\n    }\n}\n\nfunc generatePrivoxyLauchAgentPlist() -> Bool {\n    let privoxyPath = NSHomeDirectory() + APP_SUPPORT_DIR + \"privoxy\"\n    let logFilePath = NSHomeDirectory() + \"/Library/Logs/privoxy.log\"\n    let launchAgentDirPath = NSHomeDirectory() + LAUNCH_AGENT_DIR\n    let plistFilepath = launchAgentDirPath + LAUNCH_AGENT_CONF_PRIVOXY_NAME\n    \n    // Ensure launch agent directory is existed.\n    let fileMgr = FileManager.default\n    if !fileMgr.fileExists(atPath: launchAgentDirPath) {\n        try! fileMgr.createDirectory(atPath: launchAgentDirPath, withIntermediateDirectories: true, attributes: nil)\n    }\n    \n    let oldSha1Sum = getFileSHA1Sum(plistFilepath)\n    \n    let arguments = [privoxyPath, \"--no-daemon\", \"privoxy.config\"]\n    \n    // For a complete listing of the keys, see the launchd.plist manual page.\n    let dict: NSMutableDictionary = [\n        \"Label\": \"MacOS.Trojan.http\",\n        \"WorkingDirectory\": NSHomeDirectory() + APP_SUPPORT_DIR,\n        \"KeepAlive\": true,\n        \"StandardOutPath\": logFilePath,\n        \"StandardErrorPath\": logFilePath,\n        \"ProgramArguments\": arguments,\n        \"EnvironmentVariables\": [\"DYLD_LIBRARY_PATH\": NSHomeDirectory() + APP_SUPPORT_DIR]\n    ]\n    dict.write(toFile: plistFilepath, atomically: true)\n    let Sha1Sum = getFileSHA1Sum(plistFilepath)\n    if oldSha1Sum != Sha1Sum {\n        return true\n    } else {\n        return false\n    }\n}\n\nfunc ReloadConfPrivoxy(finish: @escaping(_ success: Bool)->()) {\n    let bundle = Bundle.main\n    let installerPath = bundle.path(forResource: \"reload_conf_privoxy.sh\", ofType: nil)\n    let task = Process.launchedProcess(launchPath: installerPath!, arguments: [\"\"])\n    task.waitUntilExit()\n    if task.terminationStatus == 0 {\n        NSLog(\"Reload privoxy succeeded.\")\n        DispatchQueue.main.async {\n            finish(true)\n        }\n    } else {\n        NSLog(\"Reload privoxy failed.\")\n        DispatchQueue.main.async {\n            finish(false)\n        }\n    }\n}\n\nfunc StartPrivoxy(finish: @escaping(_ success: Bool)->()) {\n    if generatePrivoxyLauchAgentPlist() {\n        let bundle = Bundle.main\n        let installerPath = bundle.path(forResource: \"start_privoxy.sh\", ofType: nil)\n        let task = Process.launchedProcess(launchPath: installerPath!, arguments: [\"\"])\n        task.waitUntilExit()\n        if task.terminationStatus == 0 {\n            NSLog(\"Start privoxy succeeded.\")\n            DispatchQueue.main.async {\n                finish(true)\n            }\n        } else {\n            NSLog(\"Start privoxy failed.\")\n            DispatchQueue.main.async {\n                finish(false)\n            }\n        }\n    } else {\n        NSLog(\"Start privoxy failed.\")\n        DispatchQueue.main.async {\n            finish(false)\n        }\n    }\n}\n\nfunc StopPrivoxy(finish: @escaping(_ success: Bool)->()) {\n    let bundle = Bundle.main\n    let installerPath = bundle.path(forResource: \"stop_privoxy.sh\", ofType: nil)\n    let task = Process.launchedProcess(launchPath: installerPath!, arguments: [\"\"])\n    task.waitUntilExit()\n    if task.terminationStatus == 0 {\n        NSLog(\"Stop privoxy succeeded.\")\n        DispatchQueue.main.async {\n            finish(true)\n        }\n    } else {\n        NSLog(\"Stop privoxy failed.\")\n        DispatchQueue.main.async {\n            finish(false)\n        }\n    }\n}\n\nfunc InstallPrivoxy(finish: @escaping(_ success: Bool)->()) {\n    let fileMgr = FileManager.default\n    let homeDir = NSHomeDirectory()\n    let appSupportDir = homeDir+APP_SUPPORT_DIR\n    if !fileMgr.fileExists(atPath: appSupportDir + \"privoxy-\\(PRIVOXY_VERSION)/privoxy\") || !fileMgr.fileExists(atPath: appSupportDir + \"libpcre.1.dylib\") {\n        let bundle = Bundle.main\n        let installerPath = bundle.path(forResource: \"install_privoxy.sh\", ofType: nil)\n        let task = Process.launchedProcess(launchPath: installerPath!, arguments: [\"\"])\n        task.waitUntilExit()\n        if task.terminationStatus == 0 {\n            NSLog(\"Install privoxy succeeded.\")\n            DispatchQueue.main.async {\n                finish(true)\n            }\n        } else {\n            NSLog(\"Install privoxy failed.\")\n            DispatchQueue.main.async {\n                finish(false)\n            }\n        }\n    } else {\n        finish(true)\n    }\n}\n\nfunc RemovePrivoxy(finish: @escaping(_ success: Bool)->()) {\n    let bundle = Bundle.main\n    let installerPath = bundle.path(forResource: \"remove_privoxy.sh\", ofType: nil)\n    let task = Process.launchedProcess(launchPath: installerPath!, arguments: [\"\"])\n    task.waitUntilExit()\n    if task.terminationStatus == 0 {\n        NSLog(\"Remove privoxy succeeded.\")\n        DispatchQueue.main.async {\n            finish(true)\n        }\n    } else {\n        NSLog(\"Remove privoxy failed.\")\n        DispatchQueue.main.async {\n            finish(false)\n        }\n    }\n}\n\nfunc writePrivoxyConfFile() -> Bool {\n    do {\n        let defaults = UserDefaults.standard\n        let bundle = Bundle.main\n        let examplePath = bundle.path(forResource: \"privoxy.config.example\", ofType: nil)\n        var example = try String(contentsOfFile: examplePath!, encoding: .utf8)\n        example = example.replacingOccurrences(of: \"{http}\", with: defaults.string(forKey: USERDEFAULTS_LOCAL_HTTP_LISTEN_ADDRESS)! + \":\" + String(defaults.integer(forKey: USERDEFAULTS_LOCAL_HTTP_LISTEN_PORT)))\n        example = example.replacingOccurrences(of: \"{socks5}\", with: defaults.string(forKey: USERDEFAULTS_LOCAL_SOCKS5_LISTEN_ADDRESS)! + \":\" + String(defaults.integer(forKey: USERDEFAULTS_LOCAL_SOCKS5_LISTEN_PORT)))\n        let data = example.data(using: .utf8)\n        \n        let filepath = NSHomeDirectory() + APP_SUPPORT_DIR + \"privoxy.config\"\n        \n        let oldSum = getFileSHA1Sum(filepath)\n        try data?.write(to: URL(fileURLWithPath: filepath), options: .atomic)\n        let newSum = getFileSHA1Sum(filepath)\n        \n        if oldSum == newSum {\n            return false\n        }\n        \n        return true\n    } catch {\n        NSLog(\"Write privoxy file failed.\")\n    }\n    return false\n}\n\nfunc removePrivoxyConfFile() {\n    do {\n        let filepath = NSHomeDirectory() + APP_SUPPORT_DIR + \"privoxy.config\"\n        try FileManager.default.removeItem(atPath: filepath)\n    } catch {\n        \n    }\n}\n\nfunc SyncPrivoxy(finish: @escaping()->()) {\n    var changed: Bool = false\n    changed = changed || generatePrivoxyLauchAgentPlist()\n    let mgr = Profile.shared\n    if mgr.client != nil && mgr.client.remote_addr != \"\" {\n        changed = changed || writePrivoxyConfFile()\n        \n        let on = UserDefaults.standard.bool(forKey: USERDEFAULTS_LOCAL_HTTP_ON) && UserDefaults.standard.bool(forKey: USERDEFAULTS_TROJAN_ON)\n        if on {\n            ReloadConfPrivoxy { (success) in\n                finish()\n            }\n        } else {\n            StopPrivoxy { (success) in\n                removePrivoxyConfFile()\n                finish()\n            }\n        }\n    } else {\n        finish()\n    }\n}\n"
  },
  {
    "path": "Trojan/LoginServiceKit.swift",
    "content": "//\n//  LoginServiceKit.swift\n//\n//  LoginServiceKit\n//  GitHub: https://github.com/clipy\n//  HP: https://clipy-app.com\n//\n//  Copyright © 2015-2019 Clipy Project.\n//\n\n//\n//  Some code copyright 2009 Naotaka Morimoto.\n//\n//    Much of this code was taken and adapted from GTMLoginItems of Google\n//    Toolbox for Mac and QSBPreferenceWindowController of Quick Search Box\n//    for the Mac by Google Inc.\n//    This code is also released under Apache License, Version 2.0.\n//\n\n//  Copyright (c) 2008-2009 Google Inc. All rights reserved.\n//\n//  Redistribution and use in source and binary forms, with or without\n//  modification, are permitted provided that the following conditions are\n//  met:\n//\n//    * Redistributions of source code must retain the above copyright\n//  notice, this list of conditions and the following disclaimer.\n//    * Redistributions in binary form must reproduce the above\n//  copyright notice, this list of conditions and the following disclaimer\n//  in the documentation and/or other materials provided with the\n//  distribution.\n//    * Neither the name of Google Inc. nor the names of its\n//  contributors may be used to endorse or promote products derived from\n//  this software without specific prior written permission.\n//\n//  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n//  \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n//  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n//  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n//  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n//  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n//  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n//  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n//  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n//  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n//  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n//\n\nimport Cocoa\n\npublic final class LoginServiceKit: NSObject {}\n\npublic extension LoginServiceKit {\n    static func isExistLoginItems(at path: String = Bundle.main.bundlePath) -> Bool {\n        return (loginItem(at: path) != nil)\n    }\n\n    @discardableResult\n    static func addLoginItems(at path: String = Bundle.main.bundlePath) -> Bool {\n        guard !isExistLoginItems(at: path) else { return false }\n\n        guard let sharedFileList = LSSharedFileListCreate(nil, kLSSharedFileListSessionLoginItems.takeRetainedValue(), nil) else { return false }\n        let loginItemList = sharedFileList.takeRetainedValue()\n        let url = URL(fileURLWithPath: path)\n        LSSharedFileListInsertItemURL(loginItemList, kLSSharedFileListItemBeforeFirst.takeRetainedValue(), nil, nil, url as CFURL, nil, nil)\n        return true\n    }\n\n    @discardableResult\n    static func removeLoginItems(at path: String = Bundle.main.bundlePath) -> Bool {\n        guard isExistLoginItems(at: path) else { return false }\n\n        guard let sharedFileList = LSSharedFileListCreate(nil, kLSSharedFileListSessionLoginItems.takeRetainedValue(), nil) else { return false }\n        let loginItemList = sharedFileList.takeRetainedValue()\n        let url = URL(fileURLWithPath: path)\n        let loginItemsListSnapshot: NSArray = LSSharedFileListCopySnapshot(loginItemList, nil).takeRetainedValue()\n        guard let loginItems = loginItemsListSnapshot as? [LSSharedFileListItem] else { return false }\n        for loginItem in loginItems {\n            guard let resolvedUrl = LSSharedFileListItemCopyResolvedURL(loginItem, 0, nil) else { continue }\n            let itemUrl = resolvedUrl.takeRetainedValue() as URL\n            guard url.absoluteString == itemUrl.absoluteString else { continue }\n            LSSharedFileListItemRemove(loginItemList, loginItem)\n        }\n        return true\n    }\n}\n\nprivate extension LoginServiceKit {\n    static func loginItem(at path: String) -> LSSharedFileListItem? {\n        guard !path.isEmpty else { return nil }\n\n        guard let sharedFileList = LSSharedFileListCreate(nil, kLSSharedFileListSessionLoginItems.takeRetainedValue(), nil) else { return nil }\n        let loginItemList = sharedFileList.takeRetainedValue()\n        let url = URL(fileURLWithPath: path)\n        let loginItemsListSnapshot: NSArray = LSSharedFileListCopySnapshot(loginItemList, nil).takeRetainedValue()\n        guard let loginItems = loginItemsListSnapshot as? [LSSharedFileListItem] else { return nil }\n        for loginItem in loginItems {\n            guard let resolvedUrl = LSSharedFileListItemCopyResolvedURL(loginItem, 0, nil) else { continue }\n            let itemUrl = resolvedUrl.takeRetainedValue() as URL\n            guard url.absoluteString == itemUrl.absoluteString else { continue }\n            return loginItem\n        }\n        return nil\n    }\n}\n"
  },
  {
    "path": "Trojan/ModeSwitcher.swift",
    "content": "//\n//  ModeSwitch.swift\n//  Trojan\n//\n//  Created by ParadiseDuo on 2020/5/12.\n//  Copyright © 2020 MacClient. All rights reserved.\n//\n\nimport Foundation\n\n\nenum Mode {\n    case PAC\n    case GLOBAL\n    case ACLAUTO\n    case WHITELIST\n    case MANUAL\n    case CHINA\n    \n    static func switchTo(_ mode: Mode) {\n        let d = UserDefaults.standard\n        if let currentMode = d.string(forKey: USERDEFAULTS_RUNNING_MODE), let acl = d.string(forKey: USERDEFAULTS_ACL_FILE_NAME) {\n            switch mode {\n            case .PAC:\n                if currentMode == \"auto\" { return }\n            case .GLOBAL:\n                if currentMode == \"global\" { return }\n            case .ACLAUTO:\n                if currentMode == \"whiteList\" && acl == \"gfwlist.acl\" { return }\n            case .WHITELIST:\n                if currentMode == \"whiteList\" && acl == \"chn.acl\" { return }\n            case .MANUAL:\n                if currentMode == \"manual\" { return }\n            case .CHINA:\n                if currentMode == \"whiteList\" && acl == \"backchn.acl\" { return }\n            }\n        }\n        switch mode {\n        case .PAC:\n            d.setValue(\"auto\", forKey: USERDEFAULTS_RUNNING_MODE)\n            d.setValue(\"\", forKey: USERDEFAULTS_ACL_FILE_NAME)\n            break\n        case .GLOBAL:\n            d.setValue(\"global\", forKey: USERDEFAULTS_RUNNING_MODE)\n            d.setValue(\"\", forKey: USERDEFAULTS_ACL_FILE_NAME)\n            break\n        case .ACLAUTO:\n            d.setValue(\"whiteList\", forKey: USERDEFAULTS_RUNNING_MODE)\n            d.setValue(\"gfwlist.acl\", forKey: USERDEFAULTS_ACL_FILE_NAME)\n            break\n        case .WHITELIST:\n            d.setValue(\"whiteList\", forKey: USERDEFAULTS_RUNNING_MODE)\n            d.setValue(\"chn.acl\", forKey: USERDEFAULTS_ACL_FILE_NAME)\n            break\n        case .MANUAL:\n            d.setValue(\"manual\", forKey: USERDEFAULTS_RUNNING_MODE)\n            d.setValue(\"\", forKey: USERDEFAULTS_ACL_FILE_NAME)\n            break\n        case .CHINA:\n            d.setValue(\"whiteList\", forKey: USERDEFAULTS_RUNNING_MODE)\n            d.setValue(\"backchn.acl\", forKey: USERDEFAULTS_ACL_FILE_NAME)\n            break\n        }\n        d.synchronize()\n        SyncTrojan { (suc) in\n            StatusMenuManager.applyConfig { (suc) in\n                NotificationCenter.default.post(name: NOTIFY_UPDATE_RUNNING_MODE_MENU, object: nil)\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Trojan/NetworkMonitor/NetSpeedMonitor.h",
    "content": "//\n//  NetSpeedMonitor.h\n//  Test\n//\n//  Created by ParadiseDuo on 2020/3/22.\n//  Copyright © 2020 ParadiseDuo. All rights reserved.\n//\n\n#import <Foundation/Foundation.h>\n\nNS_ASSUME_NONNULL_BEGIN\n\n@interface NetSpeedMonitor : NSObject\n+ (NSString *)primaryInterface;\n- (void)timeInterval:(NSTimeInterval)interval downloadAndUploadSpeed:(void (^)(double, double))speeds;\n@end\n\nNS_ASSUME_NONNULL_END\n"
  },
  {
    "path": "Trojan/NetworkMonitor/NetSpeedMonitor.m",
    "content": "//\n//  NetSpeedMonitor.m\n//  Test\n//\n//  Created by ParadiseDuo on 2020/3/22.\n//  Copyright © 2020 ParadiseDuo. All rights reserved.\n//\n\n#import \"NetSpeedMonitor.h\"\n#import <sys/sysctl.h>\n#import <sys/socket.h>\n#import <net/if.h>\n#import <net/if_dl.h>\n#import <net/route.h>\n#import <SystemConfiguration/SCDynamicStore.h>\n\n@interface NetSpeedMonitor()\n@property(nonatomic, copy) NSMutableDictionary * lastData;\n@property(nonatomic) size_t sysctlBufferSize;\n@property(nonatomic) uint8_t *sysctlBuffer;\n@end\n\n@implementation NetSpeedMonitor\n\nvoid SystemProxyChangeCallBack(SCDynamicStoreRef store, CFArrayRef changedKeys,void *info){\n    [NetSpeedMonitor primaryInterface];\n}\n\n- (instancetype)init {\n    if (self = [super init]) {\n        [NetSpeedMonitor primaryInterface];\n        [self addPrimaryInterfaceObserver];\n        \n        self.lastData = [[NSMutableDictionary alloc] init];\n        self.sysctlBufferSize = 0;\n        self.sysctlBuffer = malloc(self.sysctlBufferSize);\n        [self netStatsForInterval:1.0];\n        return self;\n    }\n    return nil;\n}\n\n- (NSMutableDictionary *)netStatsForInterval:(NSTimeInterval)sampleInterval {\n    int mib[] = {CTL_NET, PF_ROUTE, 0, 0, NET_RT_IFLIST,0};\n    size_t currentSize = 0;\n    if (sysctl(mib, 6, NULL, &currentSize, NULL, 0) !=  0) {\n        return nil;\n    }\n    \n    if (!self.sysctlBuffer || (currentSize > self.sysctlBufferSize)) {\n        if (self.sysctlBuffer) {\n            free(self.sysctlBuffer);\n        }\n        self.sysctlBufferSize = 0;\n        self.sysctlBuffer = malloc(currentSize);\n        if (!self.sysctlBuffer) {\n            return nil;\n        }\n        self.sysctlBufferSize = currentSize;\n    }\n    \n    if (sysctl(mib, 6, self.sysctlBuffer, &currentSize, NULL, 0) != 0) {\n        return nil;\n    }\n    \n    uint8_t *currentData = self.sysctlBuffer;\n    uint8_t *currentDataEnd = self.sysctlBuffer + currentSize;\n    NSMutableDictionary    *newStats = [NSMutableDictionary dictionary];\n    while (currentData < currentDataEnd) {\n        // Expecting interface data\n        struct if_msghdr *ifmsg = (struct if_msghdr *)currentData;\n        if (ifmsg->ifm_type != RTM_IFINFO) {\n            currentData += ifmsg->ifm_msglen;\n            continue;\n        }\n        // Must not be loopback\n        if (ifmsg->ifm_flags & IFF_LOOPBACK) {\n            currentData += ifmsg->ifm_msglen;\n            continue;\n        }\n        // Only look at link layer items\n        struct sockaddr_dl *sdl = (struct sockaddr_dl *)(ifmsg + 1);\n        if (sdl->sdl_family != AF_LINK) {\n            currentData += ifmsg->ifm_msglen;\n            continue;\n        }\n        // Build the interface name to string so we can key off it\n        NSString *interfaceName = [[NSString alloc] initWithBytes:sdl->sdl_data length:sdl->sdl_nlen encoding:NSASCIIStringEncoding];\n        if (!interfaceName) {\n            currentData += ifmsg->ifm_msglen;\n            continue;\n        }\n        // Load in old statistics for this interface\n        NSDictionary *oldStats = [self.lastData objectForKey:interfaceName];\n        \n        if (oldStats && (ifmsg->ifm_flags & IFF_UP)) {\n            // Non-PPP data is sized at u_long, which means we need to deal\n            // with 32-bit and 64-bit differently\n            uint64_t lastTotalIn = [[oldStats objectForKey:@\"totalin\"] unsignedLongLongValue];\n            uint64_t lastTotalOut = [[oldStats objectForKey:@\"totalout\"] unsignedLongLongValue];\n            // New totals\n            uint64_t totalIn = 0, totalOut = 0;\n            // Values are always 32 bit and can overflow\n            uint32_t lastifIn = [[oldStats objectForKey:@\"ifin\"] unsignedIntValue];\n            uint32_t lastifOut = [[oldStats objectForKey:@\"ifout\"] unsignedIntValue];\n            if (lastifIn > ifmsg->ifm_data.ifi_ibytes) {\n                totalIn = lastTotalIn + ifmsg->ifm_data.ifi_ibytes + UINT_MAX - lastifIn + 1;\n            } else {\n                totalIn = lastTotalIn + (ifmsg->ifm_data.ifi_ibytes - lastifIn);\n            }\n            if (lastifOut > ifmsg->ifm_data.ifi_obytes) {\n                totalOut = lastTotalOut + ifmsg->ifm_data.ifi_obytes + UINT_MAX - lastifOut + 1;\n            } else {\n                totalOut = lastTotalOut + (ifmsg->ifm_data.ifi_obytes - lastifOut);\n            }\n            // New deltas (64-bit overflow guard, full paranoia)\n            uint64_t deltaIn = (totalIn > lastTotalIn) ? (totalIn - lastTotalIn)>>1 : 0;\n            uint64_t deltaOut = (totalOut > lastTotalOut) ? (totalOut - lastTotalOut)>>1 : 0;\n            [newStats setObject:[NSDictionary dictionaryWithObjectsAndKeys:\n                        [NSNumber numberWithUnsignedInt:ifmsg->ifm_data.ifi_ibytes],\n                        @\"ifin\",\n                        [NSNumber numberWithUnsignedInt:ifmsg->ifm_data.ifi_obytes],\n                        @\"ifout\",\n                        [NSNumber numberWithUnsignedLongLong:deltaIn],\n                        @\"deltain\",\n                        [NSNumber numberWithUnsignedLongLong:deltaOut],\n                        @\"deltaout\",\n                        [NSNumber numberWithUnsignedLongLong:totalIn],\n                        @\"totalin\",\n                        [NSNumber numberWithUnsignedLongLong:totalOut],\n                        @\"totalout\",\n                        nil]\n                    forKey:interfaceName];\n        } else {\n            [newStats setObject:[NSDictionary dictionaryWithObjectsAndKeys:\n                            // Paranoia, is this where the neg numbers came from?\n                            [NSNumber numberWithUnsignedInt:ifmsg->ifm_data.ifi_ibytes],\n                            @\"ifin\",\n                            [NSNumber numberWithUnsignedInt:ifmsg->ifm_data.ifi_obytes],\n                            @\"ifout\",\n                            [NSNumber numberWithUnsignedLongLong:ifmsg->ifm_data.ifi_ibytes],\n                            @\"totalin\",\n                            [NSNumber numberWithUnsignedLongLong:ifmsg->ifm_data.ifi_obytes],\n                            @\"totalout\",\n                            nil]\n            forKey:interfaceName];\n        }\n        // Continue on\n        currentData += ifmsg->ifm_msglen;\n    }\n    // Store and return\n    self.lastData = [[NSMutableDictionary alloc] initWithDictionary:newStats];\n    return newStats;\n}\n\n+ (NSString *)primaryInterface {\n#if TARGET_OS_IPHONE\n#if !TARGET_IPHONE_SIMULATOR && !TARGET_OS_TV\n    const char* primaryInterface = \"en0\";  // WiFi interface on iOS\n#endif\n#else\n    const char* primaryInterface = NULL;\n    SCDynamicStoreRef store = SCDynamicStoreCreate(kCFAllocatorDefault, CFSTR(\"Trojan\"), NULL, NULL);\n    if (store) {\n        CFPropertyListRef info = SCDynamicStoreCopyValue(store, CFSTR(\"State:/Network/Global/IPv4\"));\n        if (info) {\n            NSString* interface = [(__bridge NSDictionary*)info objectForKey:@\"PrimaryInterface\"];\n            if (interface) {\n                primaryInterface = [[NSString stringWithString:interface] UTF8String];\n            }\n            CFRelease(info);\n        }\n        CFRelease(store);\n    }\n    if (primaryInterface == NULL) {\n        primaryInterface = \"lo0\";\n    }\n#endif\n    NSString * result = [NSString stringWithCString:primaryInterface encoding:NSUTF8StringEncoding];\n    [[NSUserDefaults standardUserDefaults] setObject:result forKey:@\"primaryInterface\"];\n    [[NSUserDefaults standardUserDefaults] synchronize];\n    return result;\n}\n\n- (void)addPrimaryInterfaceObserver {\n    //https://developer.apple.com/library/archive/documentation/Networking/Conceptual/SystemConfigFrameworks/SC_UnderstandSchema/SC_UnderstandSchema.html\n    SCDynamicStoreContext context = {0, (__bridge void * _Nullable)(self), NULL, NULL, NULL};\n    SCDynamicStoreRef dynStore = SCDynamicStoreCreate(kCFAllocatorDefault, CFBundleGetIdentifier(CFBundleGetMainBundle()), SystemProxyChangeCallBack, &context);\n    const CFStringRef keys[3] = {CFSTR(\"State:/Network/Global/IPv4\")};\n    CFArrayRef watchedKeys = CFArrayCreate(kCFAllocatorDefault, (const void **)keys, 1, &kCFTypeArrayCallBacks);\n    if (SCDynamicStoreSetNotificationKeys(dynStore, NULL, watchedKeys)) {\n        CFRelease(watchedKeys);\n        CFRunLoopSourceRef rlSrc = SCDynamicStoreCreateRunLoopSource(kCFAllocatorDefault, dynStore, 0);\n        CFRunLoopAddSource(CFRunLoopGetCurrent(), rlSrc, kCFRunLoopDefaultMode);\n        CFRelease(rlSrc);\n    }else {\n        CFRelease(watchedKeys);\n        CFRelease(dynStore);\n        dynStore = NULL;\n    }\n}\n\n- (void)timeInterval:(NSTimeInterval)interval downloadAndUploadSpeed:(void (^)(double, double))speeds {\n    double down = 0.0, up = 0.0;\n    NSMutableDictionary * result = [self netStatsForInterval:interval];\n    NSString * primaryInterface = [[NSUserDefaults standardUserDefaults] objectForKey:@\"primaryInterface\"];\n    NSDictionary * dic = nil;\n    if (primaryInterface) {\n        dic = [NSDictionary dictionaryWithDictionary:result[primaryInterface]];\n    }\n    if (dic) {\n        NSNumber * deltain = dic[@\"deltain\"];\n        NSNumber * deltaout = dic[@\"deltaout\"];\n        //这里返回的是字节，我把他转成了最小单位为kb，右移十位相当于除以1024，位运算速度快\n        down = deltain.intValue >> 10;\n        up = deltaout.intValue >> 10;\n    }\n    speeds(down, up);\n}\n\n- (void)dealloc {\n    if (self.sysctlBuffer) {\n        free(self.sysctlBuffer);\n    }\n}\n@end\n"
  },
  {
    "path": "Trojan/NetworkMonitor/SpeedTools.swift",
    "content": "//\n//  SpeedTools.swift\n//  Trojan\n//\n//  Created by ParadiseDuo on 2020/5/1.\n//  Copyright © 2020 MacClient. All rights reserved.\n//\n\nimport Foundation\n\nclass SpeedTools {\n    static let KB:Float = 1\n    static let MB:Float = KB*1024\n    static let GB:Float = MB*1024\n    static let TB:Float = GB*1024\n    \n    static var statusBarTextAttributes : [NSAttributedString.Key : Any] {\n        let paragraphStyle = NSMutableParagraphStyle()\n        paragraphStyle.maximumLineHeight = 10\n        paragraphStyle.paragraphSpacing = -7\n        paragraphStyle.alignment = .right\n        return [\n            NSAttributedString.Key.font : NSFont.monospacedDigitSystemFont(ofSize: 9, weight: NSFont.Weight.medium),\n            NSAttributedString.Key.paragraphStyle: paragraphStyle\n        ] as [NSAttributedString.Key : Any]\n    }\n    \n    static func formatRateData(_ data:Float) -> String {\n        var result:Float\n        var unit: String\n        \n        if data < SpeedTools.KB {\n            result = 0\n            return \"0 KB/s\"\n        }\n            \n        else if data < SpeedTools.MB {\n            result = data/SpeedTools.KB\n            unit = \" KB/s\"\n            return String(format: \"%0.0f\", result) + unit\n        }\n            \n        else if data < SpeedTools.GB {\n            result = data/SpeedTools.MB\n            unit = \" MB/s\"\n        }\n            \n        else if data < SpeedTools.TB {\n            result = data/SpeedTools.GB\n            unit = \" GB/s\"\n        }\n            \n        else {\n            result = 1023\n            unit = \" GB/s\"\n        }\n        \n        if result < 100 {\n            return String(format: \"%0.2f\", result) + unit\n        }\n        else if result < 999 {\n            return String(format: \"%0.1f\", result) + unit\n        }\n        else {\n            return String(format: \"%0.0f\", result) + unit\n        }\n    }\n    \n    static func speedAttributedString(up: Double, down: Double) -> NSAttributedString {\n        return NSAttributedString(string: \"\\n\\(SpeedTools.formatRateData(Float(up))) ↑\\n\\(SpeedTools.formatRateData(Float(down))) ↓\", attributes: SpeedTools.statusBarTextAttributes)\n    }\n}\n"
  },
  {
    "path": "Trojan/PAC.swift",
    "content": "//\n//  PAC.swift\n//  Trojan\n//\n//  Created by ParadiseDuo on 2020/5/4.\n//  Copyright © 2020 ParadiseDuo. All rights reserved.\n//\n\nimport Foundation\n\nfunc SyncPac() {\n    var needGenerate = false\n    \n    let nowSocks5Port = UserDefaults.standard.integer(forKey: USERDEFAULTS_LOCAL_SOCKS5_LISTEN_PORT)\n    let oldSocks5Port = UserDefaults.standard.integer(forKey: USERDEFAULTS_LOCAL_SOCKS5_LISTEN_PORT_OLD)\n    if nowSocks5Port != oldSocks5Port {\n        needGenerate = true\n        UserDefaults.standard.set(nowSocks5Port, forKey: USERDEFAULTS_LOCAL_SOCKS5_LISTEN_PORT_OLD)\n        UserDefaults.standard.synchronize()\n    }\n    \n    let fileMgr = FileManager.default\n    if !fileMgr.fileExists(atPath: PACRulesDirPath) {\n        needGenerate = true\n    }\n    \n    if !fileMgr.fileExists(atPath: ACLWhiteListFilePath) && !fileMgr.fileExists(atPath: ACLBackCHNFilePath) {\n        needGenerate = true\n    }\n    \n    if needGenerate {\n        if !GeneratePACFile() {\n            NSLog(\"GeneratePACFile failed!\")\n        }\n    }\n}\n\nfunc GeneratePACFile() -> Bool {\n    let fileMgr = FileManager.default\n    // Maker the dir if rulesDirPath is not exesited.\n    if !fileMgr.fileExists(atPath: PACRulesDirPath) {\n        try! fileMgr.createDirectory(atPath: PACRulesDirPath, withIntermediateDirectories: true, attributes: nil)\n    }\n    \n    // If gfwlist.txt is not exsited, copy from bundle\n    if !fileMgr.fileExists(atPath: GFWListFilePath) {\n        let src = Bundle.main.path(forResource: \"gfwlist\", ofType: \"txt\")\n        try! fileMgr.copyItem(atPath: src!, toPath: GFWListFilePath)\n    }\n    \n    // If user-rule.txt is not exsited, copy from bundle\n    if !fileMgr.fileExists(atPath: PACUserRuleFilePath) {\n        let src = Bundle.main.path(forResource: \"user-rule\", ofType: \"txt\")\n        try! fileMgr.copyItem(atPath: src!, toPath: PACUserRuleFilePath)\n    }\n    \n    // If chn.acl is not exsited, copy from bundle\n    if !fileMgr.fileExists(atPath: ACLWhiteListFilePath) {\n        let src = Bundle.main.path(forResource: \"chn\", ofType: \"acl\")\n        try! fileMgr.copyItem(atPath: src!, toPath: ACLWhiteListFilePath)\n    }\n    \n    // If backchn is not exsited, copy from bundle\n    if !fileMgr.fileExists(atPath: ACLBackCHNFilePath) {\n        let src = Bundle.main.path(forResource: \"backchn\", ofType: \"acl\")\n        try! fileMgr.copyItem(atPath: src!, toPath: ACLBackCHNFilePath)\n\n    }\n    // If chn.acl\n    if !fileMgr.fileExists(atPath: ACLGFWListFilePath) {\n        let src = Bundle.main.path(forResource: \"gfwlist\", ofType: \"acl\")\n        try! fileMgr.copyItem(atPath: src!, toPath: ACLGFWListFilePath)\n        \n    }\n    \n    let socks5Port = UserDefaults.standard.integer(forKey: USERDEFAULTS_LOCAL_SOCKS5_LISTEN_PORT)\n    \n    do {\n        let gfwlist = try String(contentsOfFile: GFWListFilePath, encoding: String.Encoding.utf8)\n        if let data = Data(base64Encoded: gfwlist, options: .ignoreUnknownCharacters) {\n            let str = String(data: data, encoding: String.Encoding.utf8)\n            var lines = str!.components(separatedBy: CharacterSet.newlines)\n            \n            do {\n                let userRuleStr = try String(contentsOfFile: PACUserRuleFilePath, encoding: String.Encoding.utf8)\n                let userRuleLines = userRuleStr.components(separatedBy: CharacterSet.newlines)\n                \n                lines = userRuleLines + lines.filter { (line) in\n                    // 如果用户为相同的网址提供相同的规则，则忽略来自gwf的规则\n                    var i = line.startIndex\n                    while i < line.endIndex {\n                        if line[i] == \"@\" || line[i] == \"|\" {\n                            i = line.index(after: i)\n                            continue\n                        }\n                        break\n                    }\n                    if i == line.startIndex {\n                        return !userRuleLines.contains(line)\n                    }\n                    return !userRuleLines.contains(String(line[i...]))\n                }\n                ACLFromUserRule(userRuleLines: userRuleLines)\n            } catch {\n                NSLog(\"Not found user-rule.txt\")\n            }\n            \n            // Filter empty and comment lines\n            lines = lines.filter({ (s: String) -> Bool in\n                if s.isEmpty {\n                    return false\n                }\n                let c = s[s.startIndex]\n                if c == \"!\" || c == \"[\" {\n                    return false\n                }\n                return true\n            })\n            \n            do {\n                // rule lines to json array\n                let rulesJsonData: Data\n                    = try JSONSerialization.data(withJSONObject: lines, options: .prettyPrinted)\n                let rulesJsonStr = String(data: rulesJsonData, encoding: String.Encoding.utf8)\n                \n                // Get raw pac js\n                let jsPath = Bundle.main.url(forResource: \"abp\", withExtension: \"js\")\n                let jsData = try? Data(contentsOf: jsPath!)\n                var jsStr = String(data: jsData!, encoding: String.Encoding.utf8)\n                \n                // Replace rules placeholder in pac js\n                jsStr = jsStr!.replacingOccurrences(of: \"__RULES__\"\n                    , with: rulesJsonStr!)\n                // Replace __SOCKS5PORT__ palcholder in pac js\n                let result = jsStr!.replacingOccurrences(of: \"__SOCKS5PORT__\"\n                    , with: \"\\(socks5Port)\")\n                \n                // Write the pac js to file.\n                try result.data(using: String.Encoding.utf8)?\n                    .write(to: URL(fileURLWithPath: PACFilePath), options: .atomic)\n                \n                return true\n            } catch {\n                \n            }\n        }\n        \n    } catch {\n        NSLog(\"Not found gfwlist.txt\")\n    }\n    return false\n}\n\nfunc ACLFromUserRule(userRuleLines:[String]){\n    do {\n        var AutoACL = try String(contentsOfFile: ACLGFWListFilePath, encoding: String.Encoding.utf8)\n        var WhiteACL = try String(contentsOfFile: ACLWhiteListFilePath, encoding: String.Encoding.utf8)\n        let rule = userRuleLines.filter({ (s: String) -> Bool in\n            if s.isEmpty {\n                return false\n            }\n            let c = s[s.startIndex]\n            if c == \"!\" || c == \"[\" {\n                return false\n            }\n            return true\n        })\n        rule.forEach({ (s: String) -> Void in\n            // add the @@ to whitelist and other to GFWList\n            if (s.hasPrefix(\"@@\")){\n                let str = s.replacingOccurrences(of: \"@@\", with: \"\").components(separatedBy: \".\").joined(separator:\"\\\\.\").replacingOccurrences(of: \"*\\\\.\", with: \"^(.*\\\\.)?\")\n                if (!WhiteACL.contains(str)){\n                    WhiteACL += (str + \"$\\n\")\n\n                }\n            }\n            if (s.hasPrefix(\"||\")){\n                let str = s.replacingOccurrences(of: \"||\", with: \"\").components(separatedBy: \".\").joined(separator:\"\\\\.\").replacingOccurrences(of: \"*\\\\.\", with: \"^(.*\\\\.)?\")\n                if (!AutoACL.contains(str)){\n                    AutoACL += (str + \"$\\n\")\n                }\n            }\n        })\n        // write file back to ACL\n        try WhiteACL.data(using: String.Encoding.utf8)?\n            .write(to: URL(fileURLWithPath: ACLWhiteListFilePath), options: .atomic)\n        try AutoACL.data(using: String.Encoding.utf8)?\n            .write(to: URL(fileURLWithPath: ACLGFWListFilePath), options: .atomic)\n    } catch {\n        \n    }\n}\n"
  },
  {
    "path": "Trojan/Profile/Configuration.swift",
    "content": "//\n//  Configuration.swift\n//  Trojan\n//\n//  Created by ParadiseDuo on 2020/4/2.\n//  Copyright © 2020 Mac. All rights reserved.\n//\n\nimport Foundation\n\nextension String {\n    var localized: String {\n        return NSLocalizedString(self, tableName: nil, bundle: Bundle.main, value: \"\", comment: \"\")\n    }\n}\n\n// Trojan Helper\nlet TROJAN_START = Notification.Name(\"TROJAN_START\")\nlet TROJAN_STOP = Notification.Name(\"TROJAN_STOP\")\nlet USERDEFAULTS_TROJAN_ON = \"TROJAN_ON\"\nlet USERDEFAULTS_PROFILE = \"Profile\"\nlet CONFIG_PATH = NSHomeDirectory()+\"/Documents/Trojan/trojan_client.json\"\nlet CONFIG_PATH_OLD = NSHomeDirectory()+\"/Documents/trojan_client.json\"\n\n// Version Checker Helper\nlet _VERSION_XML_URL = \"https://raw.githubusercontent.com/paradiseduo/Trojan/master/Trojan/Info.plist\"\nlet _VERSION_XML_LOCAL:String = Bundle.main.bundlePath + \"/Contents/Info.plist\"\n\n// Log Helper\nlet LOG_PATH = \"/usr/local/var/log/trojan\"\nlet LOG_CLEAN_FINISH = Notification.Name(\"LOG_CLEAN_FINISH\")\n\nlet ISSUES_URL = \"https://github.com/paradiseduo/Trojan/issues\"\nlet RELEASE_URL = \"https://github.com/paradiseduo/Trojan/releases\"\n\nlet PACRulesDirPath = NSHomeDirectory() + \"/Documents/Trojan/\"\nlet PACUserRuleFilePath = PACRulesDirPath + \"user-rule.txt\"\nlet PACFilePath = PACRulesDirPath + \"gfwlist.js\"\nlet GFWListFilePath = PACRulesDirPath + \"gfwlist.txt\"\n\nlet ACLWhiteListFilePath = PACRulesDirPath + \"chn.acl\"\nlet ACLBackCHNFilePath = PACRulesDirPath + \"backchn.acl\"\nlet ACLGFWListFilePath = PACRulesDirPath + \"gfwlist.acl\"\n\nlet PRIVOXY_VERSION = \"3.0.28.static\"\nlet APP_SUPPORT_DIR = \"/Library/Application Support/Trojan/\"\nlet LAUNCH_AGENT_DIR = \"/Library/LaunchAgents/\"\nlet LAUNCH_AGENT_CONF_PRIVOXY_NAME = \"MacOS.Trojan.http.plist\"\n\nlet TROJAN_VERSION = \"1.16.0\"\nlet LAUNCH_AGENT_CONF_TROJAN_NAME = \"MacOS.Trojan.local.plist\"\n\nlet NOTIFY_HTTP_CONF_CHANGED = Notification.Name(\"NOTIFY_HTTP_CONF_CHANGED\")\n\nlet NOTIFY_UPDATE_RUNNING_MODE_MENU = Notification.Name(\"NOTIFY_UPDATE_RUNNING_MODE_MENU\")\n\nlet NOTIFY_SERVER_PROFILES_CHANGED = Notification.Name(\"NOTIFY_SERVER_PROFILES_CHANGED\")\n\nlet NOTIFY_SHOW_NETWORK_MONITOR = Notification.Name(\"NOTIFY_SHOW_NETWORK_MONITOR\")\n\nlet NOTIFY_REFRESH_SERVERS = Notification.Name(\"NOTIFY_REFRESH_SERVERS\")\n"
  },
  {
    "path": "Trojan/Profile/DefaultsConfig.h",
    "content": "//\n//  DefaultsConfig.h\n//  Trojan\n//\n//  Created by ParadiseDuo on 2020/5/4.\n//  Copyright © 2020 ParadiseDuo. All rights reserved.\n//\n\n#ifndef DefaultsConfig_h\n#define DefaultsConfig_h\n\nstatic NSString * const USERDEFAULTS_GFW_LIST_URL = @\"GFWListURL\";\nstatic NSString * const USERDEFAULTS_ACL_WHITE_LIST_URL = @\"ACLWhiteListURL\";\nstatic NSString * const USERDEFAULTS_ACL_AUTO_LIST_URL = @\"ACLAutoListURL\";\nstatic NSString * const USERDEFAULTS_ACL_PROXY_BACK_CHN_URL = @\"ACLProxyBackCHNURL\";\nstatic NSString * const USERDEFAULTS_RUNNING_MODE = @\"RunningMode\";\nstatic NSString * const USERDEFAULTS_ACL_FILE_NAME = @\"ACLFileName\";\nstatic NSString * const USERDEFAULTS_LOCAL_SOCKS5_LISTEN_PORT = @\"LocalSocks5.ListenPort\";\nstatic NSString * const USERDEFAULTS_LOCAL_SOCKS5_LISTEN_ADDRESS = @\"LocalSocks5.ListenAddress\";\nstatic NSString * const USERDEFAULTS_LOCAL_HTTP_LISTEN_ADDRESS = @\"LocalHTTP.ListenAddress\";\nstatic NSString * const USERDEFAULTS_LOCAL_HTTP_LISTEN_PORT = @\"LocalHTTP.ListenPort\";\nstatic NSString * const USERDEFAULTS_LOCAL_SOCKS5_LISTEN_PORT_OLD = @\"LocalSocks5.ListenPort.Old\";\nstatic NSString * const USERDEFAULTS_PAC_SERVER_LISTEN_ADDRESS = @\"PacServer.ListenAddress\";\nstatic NSString * const USERDEFAULTS_PAC_SERVER_LISTEN_PORT = @\"PacServer.ListenPort\";\nstatic NSString * const USERDEFAULTS_LOCAL_HTTP_ON = @\"LocalHTTPOn\";\nstatic NSString * const USERDEFAULTS_LOCAL_HTTP_FOLLOW_GLOBAL = @\"LocalHTTP.FollowGlobal\";\nstatic NSString * const USERDEFAULTS_AUTO_CONFIGURE_NETWORK_SERVICES = @\"AutoConfigureNetworkServices\";\nstatic NSString * const USERDEFAULTS_PROXY4_NETWORK_SERVICES = @\"Proxy4NetworkServices\";\nstatic NSString * const USERDEFAULTS_AUTO_CHECK_UPDATE = @\"USERDEFAULTS_AUTO_CHECK_UPDATE\";\nstatic NSString * const USERDEFAULTS_ENABLE_SHOW_SPEED = @\"USERDEFAULTS_ENABLE_SHOW_SPEED\";\nstatic NSString * const USERDEFAULTS_FIXED_NETWORK_SPEED_VIEW_WIDTH = @\"USERDEFAULTS_FIXED_NETWORK_SPEED_VIEW_WIDTH\";\nstatic NSString * const USERDEFAULTS_SUBSCRIBES = @\"USERDEFAULTS_SUBSCRIBES\";\nstatic NSString * const USERDEFAULTS_SPEED_TEST_AFTER_SUBSCRIPTION = @\"USERDEFAULTS_SPEED_TEST_AFTER_SUBSCRIPTION\";\nstatic NSString * const USERDEFAULTS_FASTEST_NODE = @\"USERDEFAULTS_FASTEST_NODE\";\n#endif /* DefaultsConfig_h */\n"
  },
  {
    "path": "Trojan/Profile/Json.swift",
    "content": "//\n//  Json.swift\n//  TrojanMac\n//\n//  Created by ParadiseDuo on 2020/4/7.\n//  Copyright © 2020 ParadiseDuo. All rights reserved.\n//\n\nimport Foundation\n\nstruct Client: Codable {\n    var run_type: String\n    var local_addr: String\n    var local_port: Int\n    var password: [String]\n    var remote_addr: String\n    var remote_port: Int\n    var log_level: Int?\n    var ssl: SSL\n    var tcp: TCP\n    var uuid: String\n    var group: String\n\n    private enum CodingKeys: String, CodingKey {\n        case run_type = \"run_type\"\n        case local_addr = \"local_addr\"\n        case local_port = \"local_port\"\n        case remote_addr = \"remote_addr\"\n        case remote_port = \"remote_port\"\n        case password = \"password\"\n        case log_level = \"log_level\"\n        case ssl = \"ssl\"\n        case tcp = \"tcp\"\n        case uuid = \"uuid\"\n        case group = \"group\"\n    }\n    \n    func json() -> [String: AnyObject] {\n        let c = self\n        \n        let ssl: [String: AnyObject] = [\"verify\": NSNumber(value: c.ssl.verify ?? true) as AnyObject,\n                                        \"verify_hostname\": NSNumber(value: c.ssl.verify_hostname ?? true) as AnyObject,\n                                        \"cert\": c.ssl.cert as AnyObject,\n                                        \"cipher\": c.ssl.cipher as AnyObject,\n                                        \"cipher_tls13\": c.ssl.cipher_tls13 as AnyObject,\n                                        \"sni\": c.ssl.sni as AnyObject,\n                                        \"alpn\": c.ssl.alpn as AnyObject,\n                                        \"reuse_session\": NSNumber(value: c.ssl.reuse_session ?? true) as AnyObject,\n                                        \"session_ticket\": NSNumber(value: c.ssl.session_ticket ?? false) as AnyObject,\n                                        \"curves\": c.ssl.curves as AnyObject,\n                                        \"plain_http_response\": c.ssl.plain_http_response as AnyObject,\n                                        \"dhparam\": c.ssl.dhparam as AnyObject,\n                                        \"prefer_server_cipher\": NSNumber(value: c.ssl.prefer_server_cipher ?? true) as AnyObject\n                                       ]\n        \n        let tcp: [String: AnyObject] = [\"no_delay\": NSNumber(value: c.tcp.no_delay ?? true) as AnyObject,\n                                        \"keep_alive\": NSNumber(value: c.tcp.keep_alive ?? true) as AnyObject,\n                                        \"reuse_port\": NSNumber(value: c.tcp.reuse_port ?? false) as AnyObject,\n                                        \"fast_open\": NSNumber(value: c.tcp.fast_open ?? false) as AnyObject,\n                                        \"fast_open_qlen\": NSNumber(value: c.tcp.fast_open_qlen ?? 20) as AnyObject\n                                       ]\n        var uuid = UUID().uuidString\n        if c.uuid.count > 0 {\n            uuid = c.uuid\n        }\n        let conf: [String: AnyObject] = [\"run_type\": c.run_type as AnyObject,\n                                         \"local_addr\": c.local_addr as AnyObject,\n                                         \"local_port\": NSNumber(value: c.local_port) as AnyObject,\n                                         \"remote_addr\": c.remote_addr as AnyObject,\n                                         \"remote_port\": NSNumber(value: c.remote_port) as AnyObject,\n                                         \"password\": c.password as AnyObject,\n                                         \"log_level\": NSNumber(value: c.log_level ?? 1) as AnyObject,\n                                         \"ssl\": ssl as AnyObject,\n                                         \"tcp\": tcp as AnyObject,\n                                         \"uuid\": uuid as AnyObject,\n                                         \"group\": c.group as AnyObject\n                                        ]\n        \n        return conf\n    }\n    \n    func jsonString() -> String {\n        do {\n            var data: Data\n            if #available(OSX 10.13, *) {\n                data =  try JSONSerialization.data(withJSONObject: self.json(), options: [.prettyPrinted, .sortedKeys])\n            } else {\n                data =  try JSONSerialization.data(withJSONObject: self.json(), options: [.prettyPrinted])\n            }\n            let convertedString = String(data: data, encoding: String.Encoding.utf8)\n            return convertedString ?? \"\"\n        } catch let myJSONError {\n            print(myJSONError)\n        }\n        return \"\"\n    }\n}\n\n\nstruct SSL: Codable {\n    var verify: Bool?\n    var verify_hostname: Bool?\n    var cert: String?\n    var cipher: String?\n    var cipher_tls13: String?\n    var sni: String?\n    var alpn: [String]?\n    var reuse_session: Bool?\n    var session_ticket: Bool?\n    var curves: String?\n    var plain_http_response: String?\n    var dhparam: String?\n    var prefer_server_cipher: Bool?\n    \n    private enum CodingKeys: String, CodingKey {\n        case verify = \"verify\"\n        case verify_hostname = \"verify_hostname\"\n        case cert = \"cert\"\n        case cipher = \"cipher\"\n        case cipher_tls13 = \"cipher_tls13\"\n        case sni = \"sni\"\n        case alpn = \"alpn\"\n        case reuse_session = \"reuse_session\"\n        case session_ticket = \"session_ticket\"\n        case curves = \"curves\"\n        case plain_http_response = \"plain_http_response\"\n        case dhparam = \"dhparam\"\n        case prefer_server_cipher = \"prefer_server_cipher\"\n    }\n}\n\n\nstruct TCP: Codable {\n    var no_delay: Bool?\n    var keep_alive: Bool?\n    var reuse_port: Bool?\n    var fast_open: Bool?\n    var fast_open_qlen: Int?\n\n    private enum CodingKeys: String, CodingKey {\n        case no_delay = \"no_delay\"\n        case keep_alive = \"keep_alive\"\n        case reuse_port = \"reuse_port\"\n        case fast_open = \"fast_open\"\n        case fast_open_qlen = \"fast_open_qlen\"\n    }\n}\n"
  },
  {
    "path": "Trojan/Profile/Profile.swift",
    "content": "//\n//  Profile.swift\n//  Trojan\n//\n//  Created by ParadiseDuo on 2020/3/31.\n//  Copyright © 2020 MacClient. All rights reserved.\n//\n\nimport Foundation\n//当前选中的Profile\nclass Profile {\n    \n    static let shared = Profile()\n    \n    var client: Client!\n    var name = \"Default\"\n    var latency = NSNumber(value: Double.infinity)\n    \n    var json: [String: AnyObject] {\n        get {\n            return self.client.json()\n        }\n    }\n    \n    var jsonString: String {\n        get {\n            return self.client.jsonString()\n        }\n    }\n    \n    func saveProfile() {\n        UserDefaults.standard.setValue(self.client.local_addr, forKey: USERDEFAULTS_LOCAL_SOCKS5_LISTEN_ADDRESS)\n        UserDefaults.standard.setValue(NSNumber(value: self.client.local_port), forKey: USERDEFAULTS_LOCAL_SOCKS5_LISTEN_PORT)\n        UserDefaults.standard.synchronize()\n        let manager = FileManager.default\n        if manager.fileExists(atPath: CONFIG_PATH) {\n            do {\n                try self.jsonString.write(toFile: CONFIG_PATH, atomically: true, encoding: String.Encoding.utf8)\n            } catch let e {\n                print(\"saveProfile error\", e)\n            }\n        } else {\n            manager.createFile(atPath: CONFIG_PATH, contents: nil, attributes: nil)\n            do {\n                try self.jsonString.write(toFile: CONFIG_PATH, atomically: true, encoding: String.Encoding.utf8)\n            } catch let e {\n                print(\"saveProfile error\", e)\n            }\n        }\n    }\n    \n    func loadProfile() {\n        let manager = FileManager.default\n        if manager.fileExists(atPath: CONFIG_PATH) {\n            do {\n                if let data = manager.contents(atPath: CONFIG_PATH) {\n                    let f = try JSONDecoder().decode(Client.self, from: data)\n                    self.client = f\n                    Profiles.shared.getName(profile: self) { (n) in\n                        self.name = n\n                    }\n                } else {\n                    self.loadDefaultProfile()\n                }\n            }catch let error {\n                print(\"loadProfile: \", error)\n                self.loadDefaultProfile()\n            }\n        } else {\n            self.loadDefaultProfile()\n        }\n        self.saveProfile()\n    }\n    \n    func loadDefaultProfile() {\n        let run_type: String = \"client\"\n        let local_addr: String = \"127.0.0.1\"\n        let local_port: Int = 10800\n        let remote_addr: String = \"usol97.ovod.me\"\n        let remote_port: Int = 443\n        let password: [String] = [\"WxUUph\"]\n        let log_level: Int = 1\n        let verify: Bool = true\n        let verify_hostname: Bool = true\n        let cert: String = \"\"\n        let cipher: String = \"ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES128-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA:AES128-SHA:AES256-SHA:DES-CBC3-SHA\"\n        let cipher_tls13: String = \"TLS_AES_128_GCM_SHA256:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_256_GCM_SHA384\"\n        let sni: String = \"\"\n        let alpn: [String] = [\"h2\",\"http/1.1\"]\n        let reuse_session: Bool = true\n        let session_ticket: Bool = false\n        let curves: String = \"\"\n        let no_delay: Bool = true\n        let keep_alive: Bool = true\n        let reuse_port: Bool = false\n        let fast_open: Bool = false\n        let fast_open_qlen: Int = 20\n        let dhparam: String = \"\"\n        let plain_http_response: String = \"\"\n        let prefer_server_cipher: Bool = true\n        \n        let tcp = TCP(no_delay: no_delay, keep_alive: keep_alive, reuse_port: reuse_port, fast_open: fast_open, fast_open_qlen: fast_open_qlen)\n        let ssl = SSL(verify: verify, verify_hostname: verify_hostname, cert: cert, cipher: cipher, cipher_tls13: cipher_tls13, sni: sni, alpn: alpn, reuse_session: reuse_session, session_ticket: session_ticket, curves: curves, plain_http_response: plain_http_response, dhparam: dhparam, prefer_server_cipher: prefer_server_cipher)\n        let c = Client(run_type: run_type, local_addr: local_addr, local_port: local_port, password: password, remote_addr: remote_addr, remote_port: remote_port, log_level: log_level, ssl: ssl, tcp: tcp, uuid: UUID().uuidString, group: \"\")\n        self.client = c\n        self.name = \"Default\"\n    }\n    \n    func arguments() -> [String] {\n        return [\"--log\", LOG_PATH, \"--config\", CONFIG_PATH]\n    }\n    \n    func equal(profile: Profile) -> Bool {\n        return (client.remote_addr == profile.client.remote_addr && client.remote_port == profile.client.remote_port && client.password == profile.client.password)\n    }\n}\n\n\nclass Profiles {\n    static let shared = Profiles()\n    private var p = [Profile]()\n    var profiles: [Profile] {\n        get {\n            return self.p.sorted { (p1, p2) -> Bool in\n                return p1.name < p2.name\n            }\n        }\n        set(newValue) {\n            self.p = newValue\n        }\n    }\n    \n    var speeds = [String: String]()\n    \n    func count() -> Int {\n        return profiles.count\n    }\n    \n    func getName(profile: Profile, name: (String)->()) {\n        for item in profiles {\n            if item.equal(profile: profile) {\n                name(item.name)\n            }\n        }\n    }\n    \n    func itemAtIndex(_ index: Int) -> Profile? {\n        if index < profiles.count {\n            return profiles[index]\n        }\n        return nil\n    }\n    \n    func update(_ profile: Profile) {\n        for (i, item) in profiles.enumerated() {\n            if item.equal(profile: profile) {\n                profiles[i] = profile\n                break\n            }\n        }\n    }\n    \n    @discardableResult func add(_ profile: Profile) -> Bool {\n        if profiles.contains(where: { (p) -> Bool in\n            return p.equal(profile: profile)\n        }) {\n            return false\n        } else {\n            profiles.append(profile)\n            return true\n        }\n    }\n    \n    @discardableResult func remove(_ profile: Profile) -> Bool {\n        if profiles.contains(where: { (p) -> Bool in\n            return p.equal(profile: profile)\n        }) {\n            profiles.removeAll { (p) -> Bool in\n                return p.equal(profile: profile)\n            }\n            return true\n        } else {\n            return false\n        }\n    }\n    \n    func remove(at index: Int) -> Profile {\n        return profiles.remove(at: index)\n    }\n    \n    func insert(_ newElement: Profile, at i: Int) {\n        profiles.insert(newElement, at: i)\n    }\n    \n    func save() {\n        var dic = [String: String]()\n        for item in profiles {\n            dic[item.name] = item.jsonString\n        }\n        UserDefaults.standard.set(dic, forKey: USERDEFAULTS_PROFILE)\n        UserDefaults.standard.synchronize()\n    }\n    \n    func load() {\n        profiles.removeAll(keepingCapacity: true)\n        if let dic = UserDefaults.standard.object(forKey: USERDEFAULTS_PROFILE) as? [String: String], dic.keys.count > 0 {\n            for key in dic.keys {\n                let profileString = dic[key]\n                do {\n                    if let d = profileString!.data(using: String.Encoding.utf8) {\n                        let f = try JSONDecoder().decode(Client.self, from: d)\n                        let p = Profile()\n                        p.client = f\n                        p.name = key\n                        profiles.append(p)\n                    }\n                }catch let e {\n                    print(\"Profiles load: \", e)\n                }\n            }\n            Profile.shared.loadProfile()\n        } else {\n            Profile.shared.loadProfile()\n            profiles.append(Profile.shared)\n        }\n    }\n    \n    static func isDuplicatedOrExists(_ profile: Profile) -> (Bool, Bool, Int) {\n        for (i, value) in Profiles.shared.profiles.enumerated() {\n            if value.equal(profile: profile) {\n                //相同节点(不需要更新配置)\n                return (true, true, i)\n            } else if (value.client.remote_addr == profile.client.remote_addr && value.client.remote_port == profile.client.remote_port) {\n                //存在节点(但是更新了配置)\n                return (true, false, i)\n            }\n        }\n        return (false, false, -1)\n    }\n}\n"
  },
  {
    "path": "Trojan/ProxyConfHelper.h",
    "content": "//\n//  ProxyConfHelper.h\n//  Trojan\n//\n//  Created by ParadiseDuo on 2020/5/3.\n//  Copyright © 2020 ParadiseDuo. All rights reserved.\n//\n\n#import <Foundation/Foundation.h>\n#import <GCDWebServer/GCDWebServer.h>\n#import <GCDWebServer/GCDWebServerDataResponse.h>\n\n@interface ProxyConfHelper : NSObject\n\n+ (BOOL)isVersionOk;\n\n+ (void)install;\n\n+ (void)enablePACProxy:(NSString*) PACFilePath;\n\n+ (void)enableGlobalProxy;\n\n+ (void)disableProxy:(NSString*) PACFilePath;\n\n+ (NSString*)startPACServer:(NSString*) PACFilePath;\n\n+ (void)stopPACServer;\n\n+ (void)enableWhiteListProxy;\n\n@end\n"
  },
  {
    "path": "Trojan/ProxyConfHelper.m",
    "content": "//\n//  ProxyConfHelper.m\n//  Trojan\n//\n//  Created by ParadiseDuo on 2020/5/3.\n//  Copyright © 2020 ParadiseDuo. All rights reserved.\n//\n\n#import \"ProxyConfHelper.h\"\n#import \"DefaultsConfig.h\"\n#import \"../ProxyConfHelper/version.h\"\n#define kTrojanHelper @\"/Library/Application Support/Trojan/ProxyConfHelper\"\n\n@implementation ProxyConfHelper\n\nGCDWebServer *webServer = nil;\n\n+ (BOOL)isVersionOk {\n    NSTask *task;\n    task = [[NSTask alloc] init];\n    [task setLaunchPath:kTrojanHelper];\n    \n    NSArray *args;\n    args = [NSArray arrayWithObjects:@\"-v\", nil];\n    [task setArguments: args];\n    \n    NSPipe *pipe;\n    pipe = [NSPipe pipe];\n    [task setStandardOutput:pipe];\n    \n    NSFileHandle *fd;\n    fd = [pipe fileHandleForReading];\n    \n    [task launch];\n    \n    NSData *data;\n    data = [fd readDataToEndOfFile];\n    \n    NSString *str;\n    str = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];\n    \n    if (![str isEqualToString:kProxyConfHelperVersion]) {\n        return NO;\n    }\n    return YES;\n}\n\n+ (void)install {\n    NSFileManager *fileManager = [NSFileManager defaultManager];\n    if (![fileManager fileExistsAtPath:kTrojanHelper] || ![self isVersionOk]) {\n        NSString *helperPath = [NSString stringWithFormat:@\"%@/%@\", [[NSBundle mainBundle] resourcePath], @\"install_helper.sh\"];\n        NSLog(@\"run install script: %@\", helperPath);\n        NSDictionary *error;\n        NSString *script = [NSString stringWithFormat:@\"do shell script \\\"bash %@\\\" with administrator privileges\", helperPath];\n        NSAppleScript *appleScript = [[NSAppleScript new] initWithSource:script];\n        if ([appleScript executeAndReturnError:&error]) {\n            NSLog(@\"installation success\");\n        } else {\n            NSLog(@\"installation failure\");\n        }\n    }\n}\n\n+ (void)callHelper:(NSArray*) arguments {\n    NSTask *task;\n    task = [[NSTask alloc] init];\n    [task setLaunchPath:kTrojanHelper];\n    \n    // this log is very important\n    NSLog(@\"run Trojan helper: %@ %@\", kTrojanHelper, arguments);\n    [task setArguments:arguments];\n\n    NSPipe *stdoutpipe;\n    stdoutpipe = [NSPipe pipe];\n    [task setStandardOutput:stdoutpipe];\n\n    NSPipe *stderrpipe;\n    stderrpipe = [NSPipe pipe];\n    [task setStandardError:stderrpipe];\n\n    NSFileHandle *file;\n    file = [stdoutpipe fileHandleForReading];\n\n    [task launch];\n\n    NSData *data;\n    data = [file readDataToEndOfFile];\n\n    NSString *string;\n    string = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];\n    if (string.length > 0) {\n        NSLog(@\"%@\", string);\n    }\n\n    file = [stderrpipe fileHandleForReading];\n    data = [file readDataToEndOfFile];\n    string = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];\n    if (string.length > 0) {\n        NSLog(@\"%@\", string);\n    }\n}\n\n+ (void)addArguments4ManualSpecifyNetworkServices:(NSMutableArray*) args {\n    NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];\n    \n    if (![defaults boolForKey:USERDEFAULTS_AUTO_CONFIGURE_NETWORK_SERVICES]) {\n        NSArray* serviceKeys = [defaults arrayForKey:USERDEFAULTS_PROXY4_NETWORK_SERVICES];\n        if (serviceKeys) {\n            for (NSString* key in serviceKeys) {\n                [args addObject:@\"--network-service\"];\n                [args addObject:key];\n            }\n        }\n    }\n}\n\n+ (void)enablePACProxy:(NSString*) PACFilePath {\n    //start server here and then using the string next line\n    //next two lines can open gcdwebserver and work around pac file\n    NSString *PACURLString = [self startPACServer: PACFilePath];//hi 可以切换成定制pac文件路径来达成使用定制文件路径\n    NSURL* url = [NSURL URLWithString: PACURLString];\n    NSMutableArray* args = [@[@\"--mode\", @\"auto\", @\"--pac-url\", [url absoluteString]]mutableCopy];\n    \n    [self addArguments4ManualSpecifyNetworkServices:args];\n    [self callHelper:args];\n}\n\n+ (void)enableGlobalProxy {\n    NSUInteger port = [[NSUserDefaults standardUserDefaults] integerForKey:USERDEFAULTS_LOCAL_SOCKS5_LISTEN_PORT];\n    \n    NSMutableArray* args = [@[@\"--mode\", @\"global\", @\"--port\", [NSString stringWithFormat:@\"%lu\", (unsigned long)port]]mutableCopy];\n    \n    if ([[NSUserDefaults standardUserDefaults] boolForKey:USERDEFAULTS_LOCAL_HTTP_ON] && [[NSUserDefaults standardUserDefaults] boolForKey:USERDEFAULTS_LOCAL_HTTP_FOLLOW_GLOBAL]) {\n        NSUInteger privoxyPort = [[NSUserDefaults standardUserDefaults]integerForKey:USERDEFAULTS_LOCAL_HTTP_LISTEN_PORT];\n\n        [args addObject:@\"--privoxy-port\"];\n        [args addObject:[NSString stringWithFormat:@\"%lu\", (unsigned long)privoxyPort]];\n    }\n    \n    [self addArguments4ManualSpecifyNetworkServices:args];\n    [self callHelper:args];\n    [self stopPACServer];\n}\n\n+ (void)enableWhiteListProxy {\n    // 基于全局socks5代理下使用ACL文件来进行白名单代理 不需要使用pac文件\n    NSUInteger port = [[NSUserDefaults standardUserDefaults]integerForKey:USERDEFAULTS_LOCAL_SOCKS5_LISTEN_PORT];\n    \n    NSMutableArray* args = [@[@\"--mode\", @\"global\", @\"--port\", [NSString stringWithFormat:@\"%lu\", (unsigned long)port]]mutableCopy];\n    \n    if ([[NSUserDefaults standardUserDefaults] boolForKey:USERDEFAULTS_LOCAL_HTTP_ON] && [[NSUserDefaults standardUserDefaults] boolForKey:USERDEFAULTS_LOCAL_HTTP_FOLLOW_GLOBAL]) {\n        NSUInteger privoxyPort = [[NSUserDefaults standardUserDefaults]integerForKey:USERDEFAULTS_LOCAL_HTTP_LISTEN_PORT];\n        \n        [args addObject:@\"--privoxy-port\"];\n        [args addObject:[NSString stringWithFormat:@\"%lu\", (unsigned long)privoxyPort]];\n    }\n    \n    [self addArguments4ManualSpecifyNetworkServices:args];\n    [self callHelper:args];\n    [self stopPACServer];\n}\n\n+ (void)disableProxy:(NSString*) PACFilePath {\n    NSMutableArray* args = [@[@\"--mode\", @\"off\"]mutableCopy];\n    [self addArguments4ManualSpecifyNetworkServices:args];\n    [self callHelper:args];\n    [self stopPACServer];\n}\n\n+ (NSString*)startPACServer:(NSString*) PACFilePath {\n    //接受参数为以后使用定制PAC文件\n    NSData * originalPACData;\n    NSString * routerPath = @\"/proxy.pac\";\n    if ([PACFilePath isEqual: @\"hi\"]) {//用默认路径来代替\n        PACFilePath = [NSString stringWithFormat:@\"%@/%@\", NSHomeDirectory(), @\"/Documents/Trojan/gfwlist.js\"];\n        originalPACData = [NSData dataWithContentsOfFile: [NSString stringWithFormat:@\"%@/%@\", NSHomeDirectory(), @\"/Documents/Trojan/gfwlist.js\"]];\n    }else{//用定制路径来代替\n        originalPACData = [NSData dataWithContentsOfFile: [NSString stringWithFormat:@\"%@/%@/%@\", NSHomeDirectory(), @\".Trojan\", PACFilePath]];\n        routerPath = [NSString stringWithFormat:@\"/%@\",PACFilePath];\n    }\n    [self stopPACServer];\n    webServer = [[GCDWebServer alloc] init];\n    [webServer addHandlerForMethod:@\"GET\" path: routerPath requestClass:[GCDWebServerRequest class] processBlock:^GCDWebServerResponse *(GCDWebServerRequest *request) {\n        return [GCDWebServerDataResponse responseWithData: originalPACData contentType:@\"application/Trojan-proxy-autoconfig\"];\n    }];\n    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];\n    NSString * address = [defaults stringForKey:USERDEFAULTS_PAC_SERVER_LISTEN_ADDRESS];\n    int port = (short)[defaults integerForKey:USERDEFAULTS_PAC_SERVER_LISTEN_PORT];\n\n    [webServer startWithOptions:@{@\"BindToLocalhost\":@YES, @\"Port\":@(port)} error:nil];\n\n    return [NSString stringWithFormat:@\"%@%@:%d%@\",@\"http://\",address,port,routerPath];\n}\n\n+ (void)stopPACServer {\n    if ([webServer isRunning]) {\n        [webServer stop];\n    }\n}\n\n@end\n"
  },
  {
    "path": "Trojan/StatusMenuManager.swift",
    "content": "//\n//  StatusMenuManager.swift\n//  Trojan\n//\n//  Created by ParadiseDuo on 2020/3/31.\n//  Copyright © 2020 Mac. All rights reserved.\n//\n\nimport Cocoa\n\nclass StatusMenuManager: NSObject {\n    let statusItem = NSStatusBar.system.statusItem(withLength: NSStatusItem.variableLength)\n    var speedItem = NSStatusBar.system.statusItem(withLength: NSStatusItem.variableLength)\n    \n    @IBOutlet weak var statusMenu: NSMenu!\n    @IBOutlet weak var switchLabel: NSMenuItem!\n    @IBOutlet weak var toggleRunning: NSMenuItem!\n    @IBOutlet weak var copyCommandItem: NSMenuItem!\n    \n    @IBOutlet weak var pacItem: NSMenuItem!\n    @IBOutlet weak var whiteListItem: NSMenuItem!\n    @IBOutlet weak var globalItem: NSMenuItem!\n    @IBOutlet weak var manualItem: NSMenuItem!\n    @IBOutlet weak var aclAutoItem: NSMenuItem!\n    @IBOutlet weak var backChinaItem: NSMenuItem!\n    @IBOutlet weak var aclModeItem: NSMenuItem!\n    \n    @IBOutlet weak var speedMenu: NSMenu!\n    @IBOutlet weak var fixedWidth: NSMenuItem!\n    \n    @IBOutlet weak var serversMenuItem: NSMenuItem!\n    \n    var settingW: SettingWindowController!\n    var settingsW: SettingsWIndowController!\n    var logW: LogWindowController!\n    var toastW: ToastWindowController!\n    var subscribePreferenceWinCtrl: SubscribePreferenceWindowController!\n    \n    var speedMonitor:NetSpeedMonitor?\n    var speedTimer:Timer?\n    let repeatTimeinterval: TimeInterval = 2.0\n    \n    override func awakeFromNib() {\n        updateApplicationConfig()\n        \n        NotificationCenter.default.addObserver(forName: NOTIFY_HTTP_CONF_CHANGED, object: nil, queue: OperationQueue.main) { (noti) in\n            SyncPrivoxy {\n                StatusMenuManager.applyConfig { (s) in\n                    self.refresh()\n                }\n            }\n        }\n        NotificationCenter.default.addObserver(forName: NOTIFY_UPDATE_RUNNING_MODE_MENU, object: nil, queue: OperationQueue.main) { (noti) in\n            self.updateRunningModeMenu()\n        }\n        NotificationCenter.default.addObserver(forName: NOTIFY_SERVER_PROFILES_CHANGED, object: nil, queue: OperationQueue.main) { (noti) in\n            if Profiles.shared.count() > 0 {\n                if !UserDefaults.standard.bool(forKey: USERDEFAULTS_TROJAN_ON) {\n                    self.toggle { (suc) in\n                        self.refresh()\n                    }\n                } else {\n                    SyncTrojan { (s) in\n                        self.refresh()\n                    }\n                }\n            }\n        }\n        NotificationCenter.default.addObserver(forName: NOTIFY_SHOW_NETWORK_MONITOR, object: nil, queue: OperationQueue.main) { (noti) in\n            self.showSpeed()\n        }\n        NotificationCenter.default.addObserver(forName: NOTIFY_REFRESH_SERVERS, object: nil, queue: OperationQueue.main) { (noti) in\n            self.updateServersMenu()\n        }\n    }\n    \n    private func updateApplicationConfig() {\n        let defaults = UserDefaults.standard\n        defaults.register(defaults: [\n            USERDEFAULTS_RUNNING_MODE: \"auto\",\n            USERDEFAULTS_LOCAL_SOCKS5_LISTEN_ADDRESS: \"127.0.0.1\",\n            USERDEFAULTS_LOCAL_SOCKS5_LISTEN_PORT: NSNumber(value: 10800 as UInt16),\n            USERDEFAULTS_LOCAL_HTTP_LISTEN_ADDRESS: \"127.0.0.1\",\n            USERDEFAULTS_LOCAL_HTTP_LISTEN_PORT: NSNumber(value: 10801 as UInt16),\n            USERDEFAULTS_PAC_SERVER_LISTEN_ADDRESS: \"127.0.0.1\",\n            USERDEFAULTS_PAC_SERVER_LISTEN_PORT:NSNumber(value: 8090 as UInt16),\n            USERDEFAULTS_GFW_LIST_URL: \"https://raw.githubusercontent.com/gfwlist/gfwlist/master/gfwlist.txt\",\n            USERDEFAULTS_ACL_WHITE_LIST_URL: \"https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/banAD.acl\",\n            USERDEFAULTS_ACL_AUTO_LIST_URL: \"https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/gfwlist-banAD.acl\",\n            USERDEFAULTS_ACL_PROXY_BACK_CHN_URL:\"https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/backcn-banAD.acl\",\n            USERDEFAULTS_AUTO_CONFIGURE_NETWORK_SERVICES: NSNumber(value: true as Bool),\n            USERDEFAULTS_LOCAL_HTTP_ON: true,\n            USERDEFAULTS_LOCAL_HTTP_FOLLOW_GLOBAL: true,\n            USERDEFAULTS_ACL_FILE_NAME: \"chn.acl\",\n            USERDEFAULTS_AUTO_CHECK_UPDATE:false,\n            USERDEFAULTS_ENABLE_SHOW_SPEED:false,\n            USERDEFAULTS_FIXED_NETWORK_SPEED_VIEW_WIDTH:false\n        ])\n        \n        let fileMgr = FileManager.default\n        if fileMgr.fileExists(atPath: CONFIG_PATH_OLD) {\n            do {\n                try fileMgr.moveItem(atPath: CONFIG_PATH_OLD, toPath: CONFIG_PATH)\n            } catch {\n                \n            }\n        }\n        self.showSpeed()\n        Profiles.shared.load()\n        InstallTrojanLocal { (s) in\n            InstallPrivoxy { (suc) in\n                ProxyConfHelper.install()\n                SyncPac()\n\n                StatusMenuManager.applyConfig { (s) in\n                    self.refresh()\n                }\n                \n                if UserDefaults.standard.bool(forKey: USERDEFAULTS_AUTO_CHECK_UPDATE) {\n                    self.checkUpdate(showAlert: false)\n                }\n            }\n        }\n    }\n    \n    private func refresh() {\n        DispatchQueue.main.async {\n            self.updateMainMenu()\n            self.updateRunningModeMenu()\n            self.updateServersMenu()\n        }\n    }\n    \n    func updateMainMenu() {\n        let defaults = UserDefaults.standard\n        let isOn = defaults.bool(forKey: USERDEFAULTS_TROJAN_ON)\n        if isOn {\n            switchLabel.title = \"Trojan: On\".localized\n            switchLabel.image = NSImage(named: NSImage.statusAvailableName)\n            toggleRunning.title = \"Turn Trojan Off\".localized\n            \n            let icon = NSImage(named: \"open\")\n            statusItem.button?.image = icon\n            statusItem.menu = statusMenu\n            if Profiles.shared.count() > 0 {\n                copyCommandItem.isHidden = false\n            }\n        } else {\n            switchLabel.title = \"Trojan: Off\".localized\n            switchLabel.image = NSImage(named: NSImage.statusUnavailableName)\n            toggleRunning.title = \"Turn Trojan On\".localized\n            \n            let icon = NSImage(named: \"close\")\n            statusItem.button?.image = icon\n            statusItem.menu = statusMenu\n            copyCommandItem.isHidden = true\n        }\n        statusItem.image?.isTemplate = true\n    }\n    \n    func showSpeed() {\n        if UserDefaults.standard.bool(forKey: USERDEFAULTS_ENABLE_SHOW_SPEED) {\n            speedItem = NSStatusBar.system.statusItem(withLength: NSStatusItem.variableLength)\n            speedItem.menu = speedMenu\n            if UserDefaults.standard.bool(forKey: USERDEFAULTS_FIXED_NETWORK_SPEED_VIEW_WIDTH) {\n                self.fixedSpeedItemWidth(true)\n                self.fixedWidth.state = NSControl.StateValue.on\n            } else {\n                self.fixedSpeedItemWidth(false)\n                self.fixedWidth.state = NSControl.StateValue.off\n            }\n            if let b = speedItem.button {\n                b.attributedTitle = SpeedTools.speedAttributedString(up: 0.0, down: 0.0)\n            }\n            if speedMonitor == nil{\n                speedMonitor = NetSpeedMonitor()\n            }\n            if speedTimer == nil {\n                speedTimer = Timer(timeInterval: repeatTimeinterval, repeats: true) {[weak self] (timer) in\n                    guard let w = self else {return}\n                    w.speedMonitor?.timeInterval(w.repeatTimeinterval, downloadAndUploadSpeed: { (down, up) in\n                        if let b = w.speedItem.button {\n                            b.attributedTitle = SpeedTools.speedAttributedString(up: up, down: down)\n                        }\n                    })\n                }\n                RunLoop.main.add(speedTimer!, forMode: RunLoop.Mode.common)\n            }\n        } else {\n            speedItem.attributedTitle = NSAttributedString(string: \"\")\n            NSStatusBar.system.removeStatusItem(speedItem)\n            speedTimer?.invalidate()\n            speedTimer = nil\n            speedMonitor = nil\n        }\n    }\n    \n    func updateServersMenu() {\n        serversMenuItem.title = Profile.shared.name\n        serversMenuItem.submenu?.removeAllItems()\n        var i = 0\n        var fastTime = \"\"\n        if let t = UserDefaults.standard.object(forKey: USERDEFAULTS_FASTEST_NODE) as? String {\n            fastTime = t\n        }\n        for p in Profiles.shared.profiles {\n            let item = NSMenuItem(title: p.name, action: #selector(StatusMenuManager.selectServer), keyEquivalent: \"\")\n            item.tag = i\n            item.target = self\n            \n            let nf = NumberFormatter.three(p.latency)\n            if p.latency.doubleValue != Double.infinity {\n                item.title += \"  - \\(nf)ms\"\n                if nf == fastTime {\n                    let dic = [NSAttributedString.Key.foregroundColor : NSColor.green]\n                    let attStr = NSAttributedString(string: item.title, attributes: dic)\n                    item.attributedTitle = attStr\n                }\n            } else {\n                if !nerverTestBefore {\n                    item.title += \"  - failed\"\n                    let dic = [NSAttributedString.Key.foregroundColor : NSColor.red]\n                    let attStr = NSAttributedString(string: item.title, attributes: dic)\n                    item.attributedTitle = attStr\n                }\n            }\n            \n            if p.equal(profile: Profile.shared) {\n                item.state = NSControl.StateValue(rawValue: 1)\n            }\n            serversMenuItem.submenu?.addItem(item)\n            i += 1\n        }\n    }\n    \n    @IBAction func powerSwitch(_ sender: NSMenuItem) {\n        self.toggle { (s) in\n            self.updateMainMenu()\n        }\n    }\n    \n    private func toggle(finish: @escaping(_ success: Bool)->()) {\n        let defaults = UserDefaults.standard\n        let isOn = defaults.bool(forKey: USERDEFAULTS_TROJAN_ON)\n        if isOn {\n            defaults.set(false, forKey: USERDEFAULTS_TROJAN_ON)\n            self.makeToast(\"Trojan: Off\".localized)\n        } else {\n            defaults.set(true, forKey: USERDEFAULTS_TROJAN_ON)\n            self.makeToast(\"Trojan: On\".localized)\n        }\n        defaults.synchronize()\n        StatusMenuManager.applyConfig { (suc) in\n            SyncTrojan { (s) in\n                DispatchQueue.main.async {\n                    finish(true)\n                }\n            }\n        }\n    }\n    \n    @IBAction func quit(_ sender: NSMenuItem) {\n        Profiles.shared.save()\n        AppDelegate.stopTrojan {\n            if AppDelegate.getLauncherStatus() == false {\n                RemovePrivoxy { (s) in\n                    RemoveTrojan { (ss) in\n                        NSApplication.shared.terminate(self)\n                    }\n                }\n            } else {\n                NSApplication.shared.terminate(self)\n            }\n        }\n    }\n    \n    @IBAction func showLog(_ sender: NSMenuItem) {\n        if self.logW != nil {\n            self.logW.close()\n        }\n        let c = LogWindowController(windowNibName: \"LogWindowController\")\n        self.logW = c\n        c.showWindow(self)\n        c.window?.center()\n        c.window?.makeKeyAndOrderFront(self)\n        NSApp.activate(ignoringOtherApps: true)\n    }\n    \n    @IBAction func cleanLogs(_ sender: NSMenuItem) {\n        CommandLine.async(task: Process(), command: \"rm -rf \\(LOG_PATH)\", terminate:  { (finish) in\n            print(\"CleanLog finish\")\n            NotificationCenter.default.post(name: LOG_CLEAN_FINISH, object: nil)\n            self.makeToast(\"Logs Cleand\")\n        })\n    }\n    \n    @IBAction func serversSetting(_ sender: NSMenuItem) {\n        if self.settingW != nil {\n            self.settingW.close()\n        }\n        let c = SettingWindowController(windowNibName: \"SettingWindowController\")\n        self.settingW = c\n        c.showWindow(self)\n        c.window?.center()\n        c.window?.makeKeyAndOrderFront(self)\n        NSApp.activate(ignoringOtherApps: true)\n    }\n    \n    @IBAction func testConnectionDelay(_ sender: NSMenuItem) {\n        ConnectTestigManager.shared.start()\n    }\n    \n    @IBAction func checkUpdate(_ sender: NSMenuItem) {\n        self.checkUpdate(showAlert: true)\n    }\n    \n    @IBAction func settingsTap(_ sender: NSMenuItem) {\n        if self.settingsW != nil {\n            self.settingsW.close()\n        }\n        let c = SettingsWIndowController(windowNibName: \"SettingsWIndowController\")\n        self.settingsW = c\n        c.showWindow(self)\n        c.window?.center()\n        c.window?.makeKeyAndOrderFront(self)\n        NSApp.activate(ignoringOtherApps: true)\n    }\n    \n    func checkUpdate(showAlert: Bool) {\n        let versionChecker = VersionChecker()\n        DispatchQueue.global().async {\n            let newVersion = versionChecker.checkNewVersion()\n            DispatchQueue.main.async {\n                if (showAlert || newVersion[\"newVersion\"] as! Bool){\n                    let alertResult = versionChecker.showAlertView(Title: newVersion[\"Title\"] as! String, SubTitle: newVersion[\"SubTitle\"] as! String, ConfirmBtn: newVersion[\"ConfirmBtn\"] as! String, CancelBtn: newVersion[\"CancelBtn\"] as! String)\n                    if (newVersion[\"newVersion\"] as! Bool && alertResult == 1000){\n                        NSWorkspace.shared.open(URL(string: RELEASE_URL)!)\n                    }\n                }\n            }\n        }\n    }\n    \n    @IBAction func feedbackTap(_ sender: NSMenuItem) {\n        NSWorkspace.shared.open(URL(string: ISSUES_URL)!)\n    }\n    \n    @IBAction func aboutMe(_ sender: NSMenuItem) {\n        NSApp.orderFrontStandardAboutPanel(sender);\n        NSApp.activate(ignoringOtherApps: true)\n    }\n    \n    @IBAction func editSubscribeFeedTao(_ sender: NSMenuItem) {\n        if subscribePreferenceWinCtrl != nil {\n            subscribePreferenceWinCtrl.close()\n        }\n        let ctrl = SubscribePreferenceWindowController(windowNibName: \"SubscribePreferenceWindowController\")\n        subscribePreferenceWinCtrl = ctrl\n        \n        ctrl.showWindow(self)\n        NSApp.activate(ignoringOtherApps: true)\n        ctrl.window?.makeKeyAndOrderFront(self)\n    }\n    \n    @IBAction func updateSubscribeWithProxy(_ sender: NSMenuItem) {\n        SubscribeManager.instance.updateAllServerFromSubscribe(auto: false, useProxy: true)\n    }\n    \n    @IBAction func updateSubscribeWithoutProxy(_ sender: NSMenuItem) {\n        SubscribeManager.instance.updateAllServerFromSubscribe(auto: false, useProxy: false)\n    }\n    \n    @IBAction func copySocks5CommandLineTap(_ sender: NSMenuItem) {\n        // Get the Http proxy config.\n        let defaults = UserDefaults.standard\n        let address = defaults.string(forKey: USERDEFAULTS_LOCAL_SOCKS5_LISTEN_ADDRESS)\n        let port = defaults.integer(forKey: USERDEFAULTS_LOCAL_SOCKS5_LISTEN_PORT)\n        let httpAddress = defaults.string(forKey: USERDEFAULTS_LOCAL_HTTP_LISTEN_ADDRESS)\n        let httpPort = defaults.integer(forKey: USERDEFAULTS_LOCAL_HTTP_LISTEN_PORT)\n        \n        if defaults.bool(forKey: USERDEFAULTS_LOCAL_HTTP_ON) {\n            if let a = httpAddress {\n                let command = \"export http_proxy=http://\\(a):\\(httpPort);export https_proxy=http://\\(a):\\(httpPort);\"\n                \n                // Copy to paste board.\n                NSPasteboard.general.clearContents()\n                NSPasteboard.general.setString(command, forType: NSPasteboard.PasteboardType.string)\n                \n                // Show a toast notification.\n                self.makeToast(\"Export Command Copied.\".localized)\n            } else {\n                self.makeToast(\"Export Command Copied Failed.\".localized)\n            }\n        } else {\n            if let a = address {\n                let command = \"export ALL_PROXY=socks5://\\(a):\\(port);export no_proxy=localhost;\"\n                // Copy to paste board.\n                NSPasteboard.general.clearContents()\n                NSPasteboard.general.setString(command, forType: NSPasteboard.PasteboardType.string)\n                \n                // Show a toast notification.\n                self.makeToast(\"Export Command Copied.\".localized)\n            } else {\n                self.makeToast(\"Export Command Copied Failed.\".localized)\n            }\n        }\n    }\n    \n    @IBAction func pacMode(_ sender: NSMenuItem) {\n        Mode.switchTo(.PAC)\n    }\n    \n    @IBAction func WhiteListMode(_ sender: NSMenuItem) {\n        Mode.switchTo(.WHITELIST)\n    }\n    \n    @IBAction func globalMode(_ sender: NSMenuItem) {\n        Mode.switchTo(.GLOBAL)\n    }\n    \n    @IBAction func manualMode(_ sender: NSMenuItem) {\n        Mode.switchTo(.MANUAL)\n    }\n    \n    @IBAction func aclAutoMode(_ sender: NSMenuItem) {\n        Mode.switchTo(.ACLAUTO)\n    }\n    \n    @IBAction func backChinaMode(_ sender: NSMenuItem) {\n        Mode.switchTo(.CHINA)\n    }\n\n    static func applyConfig(finish: @escaping(_ success: Bool)->()) {\n        let defaults = UserDefaults.standard\n        let isOn = defaults.bool(forKey: USERDEFAULTS_TROJAN_ON)\n        let mode = defaults.string(forKey: USERDEFAULTS_RUNNING_MODE)\n        \n        if isOn {\n            StartTrojan { (s) in\n                if s {\n                    StartPrivoxy { (ss) in\n                        if ss {\n                            if mode == \"auto\" {\n                                ProxyConfHelper.disableProxy(\"hi\")\n                                ProxyConfHelper.enablePACProxy(\"hi\")\n                            } else if mode == \"global\" {\n                                ProxyConfHelper.disableProxy(\"hi\")\n                                ProxyConfHelper.enableGlobalProxy()\n                            } else if mode == \"manual\" {\n                                ProxyConfHelper.disableProxy(\"hi\")\n                            } else if mode == \"whiteList\" {\n                                ProxyConfHelper.disableProxy(\"hi\")\n                                ProxyConfHelper.enableWhiteListProxy()//新白名单基于GlobalMode\n                            }\n                            finish(true)\n                        } else {\n                            finish(false)\n                        }\n                    }\n                } else {\n                    finish(false)\n                }\n            }\n        } else {\n            AppDelegate.stopTrojan {\n                finish(true)\n            }\n        }\n    }\n    \n    func updateRunningModeMenu() {\n        let defaults = UserDefaults.standard\n        let mode = defaults.string(forKey: USERDEFAULTS_RUNNING_MODE)\n\n        pacItem.state = NSControl.StateValue(rawValue: 0)\n        globalItem.state = NSControl.StateValue(rawValue: 0)\n        manualItem.state = NSControl.StateValue(rawValue: 0)\n        whiteListItem.state = NSControl.StateValue(rawValue: 0)\n        backChinaItem.state = NSControl.StateValue(rawValue: 0)\n        aclAutoItem.state = NSControl.StateValue(rawValue: 0)\n        aclModeItem.state = NSControl.StateValue(rawValue: 0)\n        if mode == \"auto\" {\n            pacItem.state = NSControl.StateValue(rawValue: 1)\n        } else if mode == \"global\" {\n            globalItem.state = NSControl.StateValue(rawValue: 1)\n        } else if mode == \"manual\" {\n            manualItem.state = NSControl.StateValue(rawValue: 1)\n        } else if mode == \"whiteList\" {\n            let aclMode = defaults.string(forKey: USERDEFAULTS_ACL_FILE_NAME)!\n            switch aclMode {\n            case \"backchn.acl\":\n                aclModeItem.state = NSControl.StateValue(rawValue: 1)\n                backChinaItem.state = NSControl.StateValue(rawValue: 1)\n                break\n            case \"gfwlist.acl\":\n                aclModeItem.state = NSControl.StateValue(rawValue: 1)\n                aclAutoItem.state = NSControl.StateValue(rawValue: 1)\n                break\n            default:\n                whiteListItem.state = NSControl.StateValue(rawValue: 1)\n            }\n        }\n    }\n    \n    @objc func selectServer(_ sender: NSMenuItem) {\n        let index = sender.tag\n        let spMgr = Profiles.shared\n        let newProfile = spMgr.profiles[index]\n        if newProfile.equal(profile: Profile.shared) {\n            return\n        } else {\n            Profile.shared.client = newProfile.client\n            Profile.shared.name = newProfile.name\n            Profile.shared.saveProfile()\n            NotificationCenter.default.post(name: NOTIFY_SERVER_PROFILES_CHANGED, object: nil)\n        }\n    }\n    \n    func makeToast(_ message: String) {\n        if self.toastW != nil {\n            self.toastW.close()\n        }\n        let c = ToastWindowController.init(windowNibName: \"ToastWindowController\")\n        self.toastW = c\n        c.message = message\n        c.showWindow(self)\n        c.fadeInHud()\n    }\n    \n    //------------------------------------------------------------\n    // MARK: Speed Item Actions\n    @IBAction func fixedWidth(_ sender: NSMenuItem) {\n        sender.state = (sender.state == .on ? .off:.on)\n        let b = sender.state == .on ? true:false\n        UserDefaults.standard.setValue(b, forKey: USERDEFAULTS_FIXED_NETWORK_SPEED_VIEW_WIDTH)\n        UserDefaults.standard.synchronize()\n        self.fixedSpeedItemWidth(b)\n    }\n    \n    @IBAction func closeSpeedItem(_ sender: NSMenuItem) {\n        UserDefaults.standard.setValue(false, forKey: USERDEFAULTS_ENABLE_SHOW_SPEED)\n        UserDefaults.standard.synchronize()\n        NotificationCenter.default.post(Notification(name: NOTIFY_SHOW_NETWORK_MONITOR))\n    }\n    \n    private func fixedSpeedItemWidth(_ fixed: Bool) {\n        if fixed {\n            speedItem.length = 70\n        } else {\n            speedItem.length = NSStatusItem.variableLength\n        }\n    }\n}\n"
  },
  {
    "path": "Trojan/Subscribe/Network.swift",
    "content": "//\n//  Network.swift\n//  Trojan\n//\n//  Created by ParadiseDuo on 2020/4/27.\n//  Copyright © 2020 MacClient. All rights reserved.\n//\n\nimport Cocoa\nimport Alamofire\n\nclass Network {\n    private static let requestQueue = DispatchQueue(label: \"Network\")\n    private static var sharedProxySession = Session(configuration: Network.getProxyConfiguration(), rootQueue: DispatchQueue.main, startRequestsImmediately: true, requestQueue: Network.requestQueue)\n    private static let sharedSession = Session(configuration: Network.getConfiguration(), rootQueue: DispatchQueue.main, startRequestsImmediately: true, requestQueue: Network.requestQueue)\n    \n    static func refreshProxySession() {\n        Network.sharedProxySession = Session(configuration: Network.getProxyConfiguration(), rootQueue: DispatchQueue.main, startRequestsImmediately: true, requestQueue: Network.requestQueue)\n        print(\"&&& Network refreshProxySession &&&\")\n    }\n    \n    static func getProxyConfiguration() -> URLSessionConfiguration {\n        let configuration = URLSessionConfiguration.default\n        configuration.timeoutIntervalForRequest = 5\n        if let a = UserDefaults.standard.string(forKey: USERDEFAULTS_LOCAL_SOCKS5_LISTEN_ADDRESS),\n            let p = UserDefaults.standard.value(forKey: USERDEFAULTS_LOCAL_SOCKS5_LISTEN_PORT) as? NSNumber {\n            let proxyConfiguration: [AnyHashable : Any] = [kCFNetworkProxiesSOCKSEnable : true,\n                                                           kCFNetworkProxiesSOCKSProxy: a,\n                                                           kCFNetworkProxiesSOCKSPort: p.intValue]\n            configuration.connectionProxyDictionary = proxyConfiguration\n        }\n        return configuration\n    }\n    \n    static func getConfiguration() -> URLSessionConfiguration {\n        let configuration = URLSessionConfiguration.default\n        configuration.timeoutIntervalForRequest = 5\n        let proxyConfiguration: [AnyHashable : Any] = [kCFNetworkProxiesSOCKSEnable : false]\n        configuration.connectionProxyDictionary = proxyConfiguration\n        return configuration\n    }\n    \n    static func session(useProxy: Bool) -> Session {\n        if UserDefaults.standard.bool(forKey: USERDEFAULTS_TROJAN_ON) {\n            if useProxy {\n                return sharedProxySession\n            } else {\n                return sharedSession\n            }\n        } else {\n            return sharedSession\n        }\n    }\n}\n"
  },
  {
    "path": "Trojan/Subscribe/Subscribe.swift",
    "content": "//\n//  Subscribe.swift\n//  Trojan\n//\n//  Created by ParadiseDuo on 2020/4/27.\n//  Copyright © 2020 MacClient. All rights reserved.\n//\n\nimport Foundation\nimport Alamofire\n\n@objcMembers class Subscribe: NSObject{\n    \n    var subscribeFeed = \"\"\n    var isActive = true\n    var autoUpdateEnable = true\n    var maxCount = 0 // -1 is not limited\n    var groupName = \"\"\n    var token = \"\"\n    var cache = \"\"\n    var filter = \"\"\n        \n    init(initUrlString:String, initGroupName: String, initToken: String, initFilter: String, initMaxCount: Int, initActive: Bool, initAutoUpdate:Bool){\n        super.init()\n        subscribeFeed = initUrlString\n\n        token = initToken\n        filter = initFilter\n        isActive = initActive\n        \n        autoUpdateEnable = initAutoUpdate\n    \n        setMaxCount(initMaxCount: initMaxCount)\n        setGroupName(newGroupName: initGroupName)\n    }\n    \n    func getFeed() -> String{\n        return subscribeFeed\n    }\n    \n    func setFeed(newFeed: String){\n        subscribeFeed = newFeed\n    }\n    \n    func diactivateSubscribe(){\n        isActive = false\n    }\n    \n    func activateSubscribe(){\n        isActive = true\n    }\n    \n    func enableAutoUpdate(){\n        autoUpdateEnable = true\n    }\n    \n    func disableAutoUpdate(){\n        autoUpdateEnable = false\n    }\n    \n    func getAutoUpdateEnable() -> Bool {\n        return autoUpdateEnable\n    }\n    \n    func getFilter() -> String {\n        return filter\n    }\n    \n    func setFilter(filter: String) {\n        self.filter = filter.trimmingCharacters(in: CharacterSet.whitespaces)\n    }\n    \n    func setGroupName(newGroupName: String) {\n        if newGroupName != \"\" {\n            groupName = newGroupName\n            return\n        }\n        if self.cache != \"\" {\n            getTrojanURLsFromRes(resString: cache)\n            return\n        }\n    }\n    \n    func getGroupName() -> String {\n        return groupName\n    }\n    \n    func getMaxCount() -> Int {\n        return maxCount\n    }\n    \n    static func fromDictionary(_ data:[String:AnyObject]) -> Subscribe {\n        var feed:String = \"\"\n        var group:String = \"\"\n        var token:String = \"\"\n        var maxCount:Int = -1\n        var isActive:Bool = true\n        var autoUpdateEnable:Bool = true\n        var filter:String = \"\"\n        \n        for (key, value) in data {\n            switch key {\n            case \"feed\":\n                feed = value as! String\n            case \"group\":\n                group = value as! String\n            case \"token\":\n                token = value as! String\n            case \"maxCount\":\n                maxCount = value as! Int\n            case \"isActive\":\n                isActive = value as! Bool\n            case \"autoUpdateEnable\":\n                autoUpdateEnable = value as! Bool\n            case \"filter\":\n                filter = value as! String\n            default:\n                print(\"\")\n            }\n        }\n        return Subscribe(initUrlString: feed, initGroupName: group, initToken: token, initFilter: filter, initMaxCount: maxCount,initActive: isActive,initAutoUpdate: autoUpdateEnable)\n    }\n    \n    static func toDictionary(_ data: Subscribe) -> [String: AnyObject] {\n        var ret : [String: AnyObject] = [:]\n        ret[\"feed\"] = data.subscribeFeed as AnyObject\n        ret[\"group\"] = data.groupName as AnyObject\n        ret[\"token\"] = data.token as AnyObject\n        ret[\"maxCount\"] = data.maxCount as AnyObject\n        ret[\"isActive\"] = data.isActive as AnyObject\n        ret[\"autoUpdateEnable\"] = data.autoUpdateEnable as AnyObject\n        ret[\"filter\"] = data.filter as AnyObject\n        return ret\n    }\n    \n    fileprivate func sendRequest(url: String, options: Any, useProxy: Bool = true, callback: @escaping (String) -> Void) {\n        if url.isEmpty { return }\n        let headers: HTTPHeaders = [\n            \"Cache-control\": \"no-cache\",\n            \"token\": self.token,\n            \"User-Agent\": \"Trojan \" + (getLocalInfo()[\"CFBundleShortVersionString\"] as! String) + \" Version \" + (getLocalInfo()[\"CFBundleVersion\"] as! String)\n        ]\n        \n        Network.session(useProxy: useProxy).request(url, headers: headers).responseString{ response in\n            do {\n                let value = try response.result.get()\n                callback(value)\n            } catch {\n                callback(\"\")\n                self.pushNotification(title: \"请求失败\", subtitle: \"\", info: \"发送到\\(url)的请求失败，请检查您的网络\")\n            }\n        }\n    }\n    \n    func setMaxCount(initMaxCount: Int) {\n        func getMaxFromRes(resString: String) {\n            let maxCountReg = \"MAX=[0-9]+\"\n            let decodeRes = resString.base64Decoded()\n            let range = decodeRes.range(of: maxCountReg, options: .regularExpression)\n            if let r = range {\n                self.maxCount = Int(decodeRes[r].replacingOccurrences(of: \"MAX=\", with: \"\"))!\n            }\n            else{\n                self.maxCount = -1\n            }\n        }\n        if initMaxCount != 0 { return self.maxCount = initMaxCount }\n        if cache != \"\" { return getMaxFromRes(resString: cache) }\n        sendRequest(url: self.subscribeFeed, options: \"\", callback: { resString in\n            if resString == \"\" { return }// Also should hold if token is wrong feedback\n            getMaxFromRes(resString: resString)\n            self.cache = resString\n        })\n    }\n    \n    func updateServerFromFeed(useProxy: Bool, handle: @escaping ()->()) {\n        func updateServerHandler(resString: String) {\n            let urls = self.getTrojanURLsFromRes(resString: resString)\n            // hold if user fill a maxCount larger then server return\n            // Should push a notification about it and correct the user filled maxCount?\n            let maxN = (self.maxCount > urls.count) ? urls.count : (self.maxCount == -1) ? urls.count: self.maxCount\n\n            // 存一下原有group中的 profile ，为了计算下列数量\n            let oldNodes = Profiles.shared.profiles.filter { $0.client.group == self.getGroupName()}\n            // 原有的 group 中的 profile 全部清除\n            Profiles.shared.profiles = Profiles.shared.profiles.filter { $0.client.group != self.getGroupName()}\n\n            //更新对应4种情况：\n            //1.节点原来存在，更新后被删除\n            //2.节点原来不存在，更新后增加\n            //3.节点原来存在，并且更新完之后啥也不用干（本地节点信息跟服务端已经一致）\n            //4.节点原来存在，只更新内容（本地节点与服务端信息不一致，比如密码换了）\n            var subCount = 0\n            var addCount = 0\n            var dupCount = 0\n            var existCount = 0\n            var filterCount = 0\n            //这里处理后三种情况\n            var newNodes = [Profile]()\n            for index in 0..<maxN {\n                if let profile = ParseAppURLSchemes(url: urls[index]) {\n                    profile.client.group = self.getGroupName()\n                    newNodes.append(profile)\n                    let (exists, duplicated, _) = Profiles.isDuplicatedOrExists(profile)\n                    if duplicated {\n                        dupCount += 1\n                    } else if exists {\n                        existCount += 1\n                    } else {\n                        addCount += 1\n                    }\n                } else {\n                    print(\"\\(index), \\(urls[index]) ParseAppURLSchemes Error!\")\n                }\n            }\n            //这里处理第一种情况\n            for item in oldNodes {\n                if !newNodes.contains(where: { (s) -> Bool in\n                    return item.equal(profile: s)\n                }) {\n                    subCount += 1\n                }\n            }\n            //将更新后的节点加回原来的数组\n            for item in newNodes {\n                Profiles.shared.add(item)\n            }\n            //用户添加了过滤条件的话，在这里过滤\n            var regex: NSRegularExpression?\n            if self.filter.count > 0 {\n                do {\n                    regex = try NSRegularExpression(pattern: self.filter, options:.caseInsensitive)\n                }catch{\n                    regex = nil\n                }\n            }\n            Profiles.shared.profiles = Profiles.shared.profiles.filter { (p) -> Bool in\n                let remark = p.client.group\n                let result = regex?.numberOfMatches(in: remark, options: .reportCompletion, range: NSMakeRange(0, remark.count))\n                if let r = result, r > 0 {\n                    if remark == self.groupName {\n                        filterCount += 1\n                        return false\n                    }\n                }\n                return true\n            }\n            Profiles.shared.save()\n            DispatchQueue.main.async {\n                var message = \"节点总数:\\(maxN)\"\n                if dupCount > 0 {\n                    message += \" 无需更新:\\(dupCount)\"\n                }\n                if existCount > 0 {\n                    message += \" 更新:\\(existCount)\"\n                }\n                if addCount > 0 {\n                    message += \" 新增:\\(addCount)\"\n                }\n                if subCount > 0 {\n                    message += \" 删除:\\(subCount)\"\n                }\n                if filterCount > 0 {\n                    message += \" 过滤:\\(filterCount)\"\n                }\n                self.pushNotification(title: \"成功更新订阅\", subtitle: message, info: \"更新来自\\(self.subscribeFeed)的订阅\")\n                NotificationCenter.default.post(name: NOTIFY_SERVER_PROFILES_CHANGED, object: nil)\n                handle()\n            }\n        }\n\n        if !isActive {\n            handle()\n            return\n        }\n\n        sendRequest(url: self.subscribeFeed, options: \"\", useProxy: useProxy, callback: { resString in\n            if resString == \"\" {\n                handle()\n                return\n            }\n            updateServerHandler(resString: resString)\n            self.cache = resString\n        })\n    }\n    \n    @discardableResult func getTrojanURLsFromRes(resString: String) -> [String] {\n        let decodeRes = resString.base64Decoded()\n        let decodeURL = decodeRes.urlDecode()\n        let arr = decodeURL.components(separatedBy: \"\\n\")\n        if arr.count >= 2 {\n            let s = arr[1].components(separatedBy: \"=\")\n            if s.count == 2 {\n                self.groupName = s[1]\n            }\n        }\n        var urls = [String]()\n        for item in arr {\n            if item.contains(\"trojan://\") {\n                urls.append(item)\n            }\n        }\n        return urls\n    }\n    \n    func feedValidator() -> Bool{\n        let feedRegExp = \"http[s]?://[A-Za-z0-9-_/.=?]*\"\n        return subscribeFeed.range(of:feedRegExp, options: .regularExpression) != nil\n    }\n    \n    fileprivate func pushNotification(title: String, subtitle: String, info: String){\n        let userNote = NSUserNotification()\n        userNote.title = title\n        userNote.subtitle = subtitle\n        userNote.informativeText = info\n        userNote.soundName = NSUserNotificationDefaultSoundName\n        NSUserNotificationCenter.default.deliver(userNote);\n    }\n    \n    class func isSame(source: Subscribe, target: Subscribe) -> Bool {\n        return source.subscribeFeed == target.subscribeFeed && source.token == target.token && source.maxCount == target.maxCount\n    }\n    \n    func isExist(_ target: Subscribe) -> Bool {\n        return self.subscribeFeed == target.subscribeFeed\n    }\n}\n"
  },
  {
    "path": "Trojan/Subscribe/SubscribeManager.swift",
    "content": "//\n//  SubscribeManager.swift\n//  Trojan\n//\n//  Created by ParadiseDuo on 2020/3/31.\n//  Copyright © 2020 MacClient. All rights reserved.\n//\n\nimport Foundation\n\nclass SubscribeManager:NSObject{\n    static let instance:SubscribeManager = SubscribeManager()\n    \n    var subscribes:[Subscribe]\n    var subscribesDefault : [[String: AnyObject]]\n    let defaults = UserDefaults.standard\n    \n    fileprivate override init() {\n        subscribes = []\n        subscribesDefault = [[:]]\n        if let subscribesDefault = defaults.array(forKey: USERDEFAULTS_SUBSCRIBES) {\n            for value in subscribesDefault{\n                subscribes.append(Subscribe.fromDictionary(value as! [String : AnyObject]))\n            }\n        }\n    }\n    \n    func addSubscribe(oneSubscribe: Subscribe) -> Bool {\n        for (index, value) in subscribes.enumerated() {\n            if Subscribe.isSame(source: oneSubscribe, target: value) {\n                return true\n            }\n            if value.isExist(oneSubscribe) {\n                subscribes.replaceSubrange((index..<index + 1), with: [oneSubscribe])\n                return true\n            }\n        }\n        subscribes.append(oneSubscribe)\n        return true\n    }\n    \n    func deleteSubscribe(atIndex: Int) -> Subscribe {\n        return subscribes.remove(at: atIndex)\n    }\n    \n    func save() {\n        defaults.set(subscribesToDefaults(data: subscribes), forKey: USERDEFAULTS_SUBSCRIBES)\n        defaults.synchronize()\n    }\n    \n    func reload() {\n        subscribes.removeAll()\n        \n        if let subscribesDefault = defaults.array(forKey: USERDEFAULTS_SUBSCRIBES) {\n            for value in subscribesDefault{\n                subscribes.append(Subscribe.fromDictionary(value as! [String : AnyObject]))\n            }\n        }\n    }\n    \n    fileprivate func subscribesToDefaults(data: [Subscribe]) -> [[String: AnyObject]]{\n        var ret : [[String: AnyObject]] = []\n        for value in data {\n            ret.append(Subscribe.toDictionary(value))\n        }\n        return ret\n    }\n    \n    fileprivate func DefaultsToSubscribes(data:[[String: AnyObject]]) -> [Subscribe] {\n        var ret : [Subscribe] = []\n        for value in data{\n            ret.append(Subscribe.fromDictionary(value))\n        }\n        return ret\n    }\n    \n    func updateAllServerFromSubscribe(auto: Bool, useProxy: Bool = true) {\n        let group = DispatchGroup()\n        let queue = DispatchQueue.global(qos: DispatchQoS.QoSClass.userInteractive)\n        for item in subscribes {\n            if item.isActive {\n                group.enter()\n                queue.async(group: group) {\n                    if !auto {\n                        item.updateServerFromFeed(useProxy: useProxy) {\n                            group.leave()\n                        }\n                    } else {\n                        if item.getAutoUpdateEnable() {\n                            item.updateServerFromFeed(useProxy: useProxy) {\n                                group.leave()\n                            }\n                        } else {\n                            group.leave()\n                        }\n                    }\n                }\n            }\n        }\n        //每次更新订阅后自动测试延时\n        group.notify(queue: DispatchQueue.main) {\n            //更新订阅后存一下组名\n            self.save()\n            if UserDefaults.standard.bool(forKey: USERDEFAULTS_SPEED_TEST_AFTER_SUBSCRIPTION) {\n//                ConnectTestigManager.shared.start()\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Trojan/Subscribe/Utils.swift",
    "content": "//\n//  Utils.swift\n//  Trojan\n//\n//  Created by ParadiseDuo on 2020/10/9.\n//  Copyright © 2020 ParadiseDuo. All rights reserved.\n//\n\nimport Foundation\n\nfunc getLocalInfo() -> [String: Any] {\n    let InfoDict = Bundle.main.infoDictionary\n    return InfoDict!\n}\n\nfunc splitor(url: String, regexp: String) -> [String] {\n    var ret: [String] = []\n    var ssrUrl = url\n    while ssrUrl.range(of:regexp, options: .regularExpression) != nil {\n        if let range = ssrUrl.range(of:regexp, options: .regularExpression) {\n            let result = String(ssrUrl[range])\n            ssrUrl.replaceSubrange(range, with: \"\")\n            ret.append(result)\n        }\n    }\n    return ret\n}\n\nfunc ParseAppURLSchemes(url: String) -> Profile? {\n    if url.contains(\"trojan://\") {\n        return ParseTrojanURL(url: url)\n    }\n    return nil\n}\n\n// base64(urlEncode(trojan://password@domain:port?peer=name))\nfunc ParseTrojanURL(url: String) -> Profile? {\n    let p1 = url.components(separatedBy: \"trojan://\")[1]\n    let password = p1.components(separatedBy: \"@\")[0]\n    let p2 = url.components(separatedBy: \"trojan://\"+password+\"@\")[1]\n    let domain = p2.components(separatedBy: \":\")[0]\n    let p3 = url.components(separatedBy: \"trojan://\"+password+\"@\"+domain+\":\")[1]\n    let port = p3.components(separatedBy: \"?\")[0]\n    var name = url.components(separatedBy: \"?peer=\")[1]\n    if name.contains(\"#\") {\n        name = name.components(separatedBy: \"#\")[1]\n    }\n    let p = Profile()\n    p.loadDefaultProfile()\n    p.client.remote_addr = String(domain)\n    p.client.remote_port = Int(port) ?? 443\n    p.client.password = [String(password)]\n    p.name = String(name)\n    return p\n}\n\nextension String {\n    func base64Encoded() -> String {\n        return data(using: .utf8)?.base64EncodedString() ?? self\n    }\n\n    func base64Decoded() -> String {\n        guard let data = Data(base64Encoded: self) else { return self }\n        return String(data: data, encoding: .utf8) ?? self\n    }\n    \n    func urlEncode() -> String {\n        let customAllowedSet = NSCharacterSet(charactersIn:\"=\\\"#%/<>?@\\\\^`{|}&;:,.\").inverted\n        return self.addingPercentEncoding(withAllowedCharacters: customAllowedSet) ?? self\n    }\n    \n    func urlDecode() -> String {\n        return self.removingPercentEncoding ?? self\n    }\n}\n\nextension NSTextField {\n    open override func performKeyEquivalent(with event: NSEvent) -> Bool {\n        switch event.charactersIgnoringModifiers {\n        case \"a\":\n            return NSApp.sendAction(#selector(NSText.selectAll(_:)), to: self.window?.firstResponder, from: self)\n        case \"c\":\n            return NSApp.sendAction(#selector(NSText.copy(_:)), to: self.window?.firstResponder, from: self)\n        case \"v\":\n            return NSApp.sendAction(#selector(NSText.paste(_:)), to: self.window?.firstResponder, from: self)\n        case \"x\":\n            return NSApp.sendAction(#selector(NSText.cut(_:)), to: self.window?.firstResponder, from: self)\n        default:\n            return super.performKeyEquivalent(with: event)\n        }\n    }\n}\n"
  },
  {
    "path": "Trojan/Trojan-Bridging-Header.h",
    "content": "//\n//  Use this file to import your target's public headers that you would like to expose to Swift.\n//\n\n#import \"ProxyConfHelper.h\"\n#import \"DefaultsConfig.h\"\n#import \"NetSpeedMonitor.h\"\n#import \"GCDAsyncSocket.h\"\n"
  },
  {
    "path": "Trojan/Trojan.entitlements",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict/>\n</plist>\n"
  },
  {
    "path": "Trojan/VersionChecker.swift",
    "content": "//\n//  VersionChecker.swift\n//  Trojan\n//\n//  Created by ParadiseDuo on 2020/3/31.\n//  Copyright © 2020 Mac. All rights reserved.\n//\n\nimport Cocoa\n\nclass VersionChecker: NSObject {\n    var haveNewVersion: Bool = false\n    enum versionError: Error {\n        case CanNotGetOnlineData\n    }\n\n    func showAlertView(Title: String, SubTitle: String, ConfirmBtn: String, CancelBtn: String) -> Int {\n        let alertView = NSAlert()\n        alertView.messageText = Title\n        alertView.informativeText = SubTitle\n        alertView.addButton(withTitle: ConfirmBtn)\n        if CancelBtn != \"\" {\n            alertView.addButton(withTitle: CancelBtn)\n        }\n        let action = alertView.runModal()\n        return action.rawValue\n    }\n    \n    func parserVersionString(strIn: String) -> Int {\n        var strTmp = strIn\n        if let index = strIn.range(of: \"-\")?.lowerBound {\n            strTmp = String(strIn[..<index])\n        }\n        if !strTmp.hasSuffix(\".\") {\n            strTmp += \".\"\n        }\n        var ret = [Int]()\n        \n        repeat {\n            if let index = strTmp.range(of: \".\")?.lowerBound, let num = Int(String(strTmp[..<index])) {\n                ret.append(num)\n                print(String(strTmp[..<index]))\n            }\n            if let index = strTmp.range(of: \".\")?.upperBound {\n                strTmp = String(strTmp[index...])\n            }\n        } while(strTmp.range(of: \".\") != nil);\n        var sum = 0\n        var i = 100\n        for item in ret {\n            sum += item*i\n            i /= 10\n        }\n        return sum\n    }\n    \n    func checkNewVersion() -> [String:Any] {\n        func getOnlineData() throws -> NSDictionary{\n            guard NSDictionary(contentsOf: URL(string:_VERSION_XML_URL)!) != nil else {\n                throw versionError.CanNotGetOnlineData\n            }\n            return NSDictionary(contentsOf: URL(string:_VERSION_XML_URL)!)!\n        }\n        \n        var localData: NSDictionary = NSDictionary()\n        var onlineData: NSDictionary = NSDictionary()\n        \n        localData = NSDictionary(contentsOfFile: _VERSION_XML_LOCAL)!\n        do{\n            try onlineData = getOnlineData()\n        }catch{\n            return [\"newVersion\" : false,\n                    \"error\": \"network error\",\n                    \"Title\": \"网络错误\",\n                    \"SubTitle\": \"由于网络错误无法检查更新\",\n                    \"ConfirmBtn\": \"确认\",\n                    \"CancelBtn\": \"\"\n            ]\n        }\n        \n        let versionString:String = onlineData[\"CFBundleShortVersionString\"] as! String\n        let buildString:String = onlineData[\"CFBundleVersion\"] as! String\n        let currentVersionString:String = localData[\"CFBundleShortVersionString\"] as! String\n        let currentBuildString:String = localData[\"CFBundleVersion\"] as! String\n        var subtitle:String\n        if (versionString == currentVersionString){\n            \n            if buildString == currentBuildString {\n\n                subtitle = \"当前版本 \" + currentVersionString + \" build \" + currentBuildString\n                return [\"newVersion\" : false,\n                        \"error\": \"\",\n                        \"Title\": \"已是最新版本！\",\n                        \"SubTitle\": subtitle,\n                        \"ConfirmBtn\": \"确认\",\n                        \"CancelBtn\": \"\"\n                ]\n            }\n            else {\n                haveNewVersion = true\n                \n                subtitle = \"新版本为 \" + versionString + \" build \" + buildString + \"\\n\" + \"当前版本 \" + currentVersionString + \" build \" + currentBuildString\n                return [\"newVersion\" : true,\n                        \"error\": \"\",\n                        \"Title\": \"软件有更新！\",\n                        \"SubTitle\": subtitle,\n                        \"ConfirmBtn\": \"前往下载\",\n                        \"CancelBtn\": \"取消\"\n                ]\n            }\n        }\n        else{\n            // 处理如果本地版本竟然比远程还新\n            \n            let version = parserVersionString(strIn: onlineData[\"CFBundleShortVersionString\"] as! String)\n            let currentVersion = parserVersionString(strIn: localData[\"CFBundleShortVersionString\"] as! String)\n            \n            if currentVersion < version {\n                haveNewVersion = true\n                subtitle = \"新版本为 \" + versionString + \" build \" + buildString + \"\\n\" + \"当前版本 \" + currentVersionString + \" build \" + currentBuildString\n                return [\"newVersion\" : true,\n                        \"error\": \"\",\n                        \"Title\": \"软件有更新！\",\n                        \"SubTitle\": subtitle,\n                        \"ConfirmBtn\": \"前往下载\",\n                        \"CancelBtn\": \"取消\"\n                ]\n            } else {\n                subtitle = \"当前版本 \" + currentVersionString + \" build \" + currentBuildString + \"\\n\" + \"远端版本 \" + versionString + \" build \" + buildString\n                return [\"newVersion\" : false,\n                        \"error\": \"\",\n                        \"Title\": \"已是最新版本！\",\n                        \"SubTitle\": subtitle,\n                        \"ConfirmBtn\": \"确认\",\n                        \"CancelBtn\": \"\"\n                ]\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Trojan/WIndows/Base.lproj/SettingWindowController.xib",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.Cocoa.XIB\" version=\"3.0\" toolsVersion=\"16096\" targetRuntime=\"MacOSX.Cocoa\" propertyAccessControl=\"none\" useAutolayout=\"YES\" customObjectInstantitationMethod=\"direct\">\n    <dependencies>\n        <deployment identifier=\"macosx\"/>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.CocoaPlugin\" version=\"16096\"/>\n        <capability name=\"documents saved in the Xcode 8 format\" minToolsVersion=\"8.0\"/>\n    </dependencies>\n    <objects>\n        <customObject id=\"-2\" userLabel=\"File's Owner\" customClass=\"SettingWindowController\" customModule=\"Trojan\" customModuleProvider=\"target\">\n            <connections>\n                <outlet property=\"copyButton\" destination=\"t16-22-wdD\" id=\"hV4-vR-WcT\"/>\n                <outlet property=\"localAddress\" destination=\"JgP-gw-NCr\" id=\"I5Y-0e-INO\"/>\n                <outlet property=\"localPort\" destination=\"YbA-ca-i0R\" id=\"AjC-MV-o8F\"/>\n                <outlet property=\"password\" destination=\"uZf-a8-9s3\" id=\"jD7-Kj-HJP\"/>\n                <outlet property=\"profilesTableView\" destination=\"0FI-9q-yQj\" id=\"2Zn-CK-suT\"/>\n                <outlet property=\"remoteAddress\" destination=\"JDR-BN-61o\" id=\"BmB-Qg-8NY\"/>\n                <outlet property=\"remotePort\" destination=\"TGT-Nk-FWX\" id=\"mfB-5E-A9V\"/>\n                <outlet property=\"removeButton\" destination=\"7Ly-TN-TUc\" id=\"H8K-z7-LNy\"/>\n                <outlet property=\"scroll\" destination=\"ecl-6w-wbc\" id=\"LEZ-V5-mWm\"/>\n                <outlet property=\"textView\" destination=\"PhX-aK-38j\" id=\"1x7-Vt-y5x\"/>\n                <outlet property=\"window\" destination=\"F0z-JX-Cv5\" id=\"gIp-Ho-8D9\"/>\n            </connections>\n        </customObject>\n        <customObject id=\"-1\" userLabel=\"First Responder\" customClass=\"FirstResponder\"/>\n        <customObject id=\"-3\" userLabel=\"Application\" customClass=\"NSObject\"/>\n        <window title=\"Setting\" allowsToolTipsWhenApplicationIsInactive=\"NO\" autorecalculatesKeyViewLoop=\"NO\" releasedWhenClosed=\"NO\" animationBehavior=\"default\" id=\"F0z-JX-Cv5\">\n            <windowStyleMask key=\"styleMask\" titled=\"YES\" closable=\"YES\" miniaturizable=\"YES\" resizable=\"YES\"/>\n            <windowPositionMask key=\"initialPositionMask\" leftStrut=\"YES\" rightStrut=\"YES\" topStrut=\"YES\" bottomStrut=\"YES\"/>\n            <rect key=\"contentRect\" x=\"196\" y=\"240\" width=\"700\" height=\"650\"/>\n            <rect key=\"screenRect\" x=\"0.0\" y=\"0.0\" width=\"1680\" height=\"1027\"/>\n            <view key=\"contentView\" id=\"se5-gp-TjO\">\n                <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"700\" height=\"650\"/>\n                <autoresizingMask key=\"autoresizingMask\"/>\n                <subviews>\n                    <scrollView borderType=\"none\" autohidesScrollers=\"YES\" horizontalLineScroll=\"10\" horizontalPageScroll=\"10\" verticalLineScroll=\"10\" verticalPageScroll=\"10\" hasHorizontalScroller=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"ecl-6w-wbc\">\n                        <rect key=\"frame\" x=\"240\" y=\"70\" width=\"440\" height=\"438\"/>\n                        <clipView key=\"contentView\" drawsBackground=\"NO\" copiesOnScroll=\"NO\" id=\"4nf-he-Fkp\">\n                            <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"440\" height=\"438\"/>\n                            <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                            <subviews>\n                                <textView importsGraphics=\"NO\" richText=\"NO\" verticallyResizable=\"YES\" usesFontPanel=\"YES\" continuousSpellChecking=\"YES\" allowsUndo=\"YES\" usesRuler=\"YES\" spellingCorrection=\"YES\" smartInsertDelete=\"YES\" id=\"PhX-aK-38j\" customClass=\"EditableNSTextView\" customModule=\"Trojan\" customModuleProvider=\"target\">\n                                    <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"440\" height=\"438\"/>\n                                    <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                                    <color key=\"textColor\" name=\"textColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                    <color key=\"backgroundColor\" name=\"textBackgroundColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                    <size key=\"minSize\" width=\"440\" height=\"438\"/>\n                                    <size key=\"maxSize\" width=\"440\" height=\"10000000\"/>\n                                    <color key=\"insertionPointColor\" name=\"textColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                </textView>\n                            </subviews>\n                        </clipView>\n                        <constraints>\n                            <constraint firstAttribute=\"width\" constant=\"440\" id=\"Igl-Z4-6wG\"/>\n                        </constraints>\n                        <scroller key=\"horizontalScroller\" hidden=\"YES\" wantsLayer=\"YES\" verticalHuggingPriority=\"750\" horizontal=\"YES\" id=\"vYt-QT-nrS\">\n                            <rect key=\"frame\" x=\"-100\" y=\"-100\" width=\"425\" height=\"15\"/>\n                            <autoresizingMask key=\"autoresizingMask\"/>\n                        </scroller>\n                        <scroller key=\"verticalScroller\" hidden=\"YES\" wantsLayer=\"YES\" verticalHuggingPriority=\"750\" horizontal=\"NO\" id=\"wIe-sx-nxw\">\n                            <rect key=\"frame\" x=\"424\" y=\"0.0\" width=\"16\" height=\"426\"/>\n                            <autoresizingMask key=\"autoresizingMask\"/>\n                        </scroller>\n                    </scrollView>\n                    <button verticalHuggingPriority=\"750\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"Rl6-T5-zAY\">\n                        <rect key=\"frame\" x=\"604\" y=\"13\" width=\"82\" height=\"32\"/>\n                        <constraints>\n                            <constraint firstAttribute=\"height\" constant=\"21\" id=\"Bj0-yZ-4bz\"/>\n                            <constraint firstAttribute=\"width\" constant=\"70\" id=\"kwM-2n-xZt\"/>\n                        </constraints>\n                        <buttonCell key=\"cell\" type=\"push\" title=\"Cancel\" bezelStyle=\"rounded\" alignment=\"center\" borderStyle=\"border\" imageScaling=\"proportionallyDown\" inset=\"2\" id=\"yh5-3a-s5u\">\n                            <behavior key=\"behavior\" pushIn=\"YES\" lightByBackground=\"YES\" lightByGray=\"YES\"/>\n                            <font key=\"font\" metaFont=\"system\"/>\n                            <string key=\"keyEquivalent\" base64-UTF8=\"YES\">\nGw\n</string>\n                        </buttonCell>\n                        <connections>\n                            <action selector=\"cancelTap:\" target=\"-2\" id=\"zBj-Sl-OAE\"/>\n                        </connections>\n                    </button>\n                    <scrollView focusRingType=\"none\" autohidesScrollers=\"YES\" horizontalLineScroll=\"19\" horizontalPageScroll=\"10\" verticalLineScroll=\"19\" verticalPageScroll=\"10\" usesPredominantAxisScrolling=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"eQb-5j-lgO\">\n                        <rect key=\"frame\" x=\"20\" y=\"87\" width=\"212\" height=\"543\"/>\n                        <clipView key=\"contentView\" focusRingType=\"none\" id=\"5nv-kQ-JTM\">\n                            <rect key=\"frame\" x=\"1\" y=\"1\" width=\"210\" height=\"541\"/>\n                            <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                            <subviews>\n                                <tableView focusRingType=\"none\" verticalHuggingPriority=\"750\" allowsExpansionToolTips=\"YES\" columnAutoresizingStyle=\"lastColumnOnly\" columnReordering=\"NO\" columnSelection=\"YES\" multipleSelection=\"NO\" emptySelection=\"NO\" autosaveColumns=\"NO\" id=\"0FI-9q-yQj\">\n                                    <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"210\" height=\"541\"/>\n                                    <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                                    <size key=\"intercellSpacing\" width=\"3\" height=\"2\"/>\n                                    <color key=\"backgroundColor\" name=\"controlBackgroundColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                    <color key=\"gridColor\" name=\"gridColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                    <tableColumns>\n                                        <tableColumn identifier=\"status\" width=\"20\" minWidth=\"10\" maxWidth=\"3.4028234663852886e+38\" id=\"dYQ-1D-MO7\">\n                                            <tableHeaderCell key=\"headerCell\" lineBreakMode=\"truncatingTail\" borderStyle=\"border\" alignment=\"left\">\n                                                <color key=\"textColor\" name=\"headerTextColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                <color key=\"backgroundColor\" white=\"0.0\" alpha=\"0.0\" colorSpace=\"calibratedWhite\"/>\n                                            </tableHeaderCell>\n                                            <imageCell key=\"dataCell\" refusesFirstResponder=\"YES\" alignment=\"left\" identifier=\"status\" imageScaling=\"proportionallyDown\" id=\"Nfc-aN-sRB\"/>\n                                            <tableColumnResizingMask key=\"resizingMask\" resizeWithTable=\"YES\" userResizable=\"YES\"/>\n                                        </tableColumn>\n                                        <tableColumn identifier=\"main\" width=\"184\" minWidth=\"40\" maxWidth=\"1000\" id=\"Dyh-22-X7C\">\n                                            <tableHeaderCell key=\"headerCell\" lineBreakMode=\"truncatingTail\" borderStyle=\"border\">\n                                                <color key=\"textColor\" name=\"headerTextColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                <color key=\"backgroundColor\" name=\"headerColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                            </tableHeaderCell>\n                                            <textFieldCell key=\"dataCell\" lineBreakMode=\"truncatingTail\" selectable=\"YES\" editable=\"YES\" sendsActionOnEndEditing=\"YES\" identifier=\"main\" title=\"Text\" id=\"GBD-1J-aUY\">\n                                                <font key=\"font\" metaFont=\"system\"/>\n                                                <color key=\"textColor\" name=\"controlTextColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                <color key=\"backgroundColor\" name=\"controlColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                            </textFieldCell>\n                                            <tableColumnResizingMask key=\"resizingMask\" resizeWithTable=\"YES\" userResizable=\"YES\"/>\n                                        </tableColumn>\n                                    </tableColumns>\n                                </tableView>\n                            </subviews>\n                        </clipView>\n                        <scroller key=\"horizontalScroller\" hidden=\"YES\" wantsLayer=\"YES\" verticalHuggingPriority=\"750\" horizontal=\"YES\" id=\"J7H-51-pQj\">\n                            <rect key=\"frame\" x=\"1\" y=\"206\" width=\"163\" height=\"15\"/>\n                            <autoresizingMask key=\"autoresizingMask\"/>\n                        </scroller>\n                        <scroller key=\"verticalScroller\" hidden=\"YES\" wantsLayer=\"YES\" verticalHuggingPriority=\"750\" horizontal=\"NO\" id=\"pFJ-6Z-Bmc\">\n                            <rect key=\"frame\" x=\"224\" y=\"17\" width=\"15\" height=\"102\"/>\n                            <autoresizingMask key=\"autoresizingMask\"/>\n                        </scroller>\n                    </scrollView>\n                    <box boxType=\"custom\" borderType=\"none\" title=\"Box\" titlePosition=\"noTitle\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"IxW-2H-8rV\">\n                        <rect key=\"frame\" x=\"20\" y=\"70\" width=\"212\" height=\"20\"/>\n                        <view key=\"contentView\" id=\"X2Y-iT-2rP\">\n                            <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"212\" height=\"20\"/>\n                            <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                            <subviews>\n                                <button verticalHuggingPriority=\"750\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"GYs-ly-VQV\">\n                                    <rect key=\"frame\" x=\"0.0\" y=\"1\" width=\"22\" height=\"20\"/>\n                                    <constraints>\n                                        <constraint firstAttribute=\"width\" constant=\"22\" id=\"LGW-hD-aZL\"/>\n                                    </constraints>\n                                    <buttonCell key=\"cell\" type=\"smallSquare\" bezelStyle=\"smallSquare\" image=\"NSAddTemplate\" imagePosition=\"overlaps\" alignment=\"center\" lineBreakMode=\"truncatingTail\" state=\"on\" borderStyle=\"border\" imageScaling=\"proportionallyDown\" inset=\"2\" id=\"RH1-1r-86Q\">\n                                        <behavior key=\"behavior\" pushIn=\"YES\" lightByBackground=\"YES\" lightByGray=\"YES\"/>\n                                        <font key=\"font\" metaFont=\"system\"/>\n                                    </buttonCell>\n                                    <connections>\n                                        <action selector=\"addTap:\" target=\"-2\" id=\"Xfb-2g-wgr\"/>\n                                    </connections>\n                                </button>\n                                <button verticalHuggingPriority=\"750\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"7Ly-TN-TUc\">\n                                    <rect key=\"frame\" x=\"41\" y=\"1\" width=\"22\" height=\"20\"/>\n                                    <constraints>\n                                        <constraint firstAttribute=\"width\" constant=\"22\" id=\"A2u-2v-ayb\"/>\n                                    </constraints>\n                                    <buttonCell key=\"cell\" type=\"smallSquare\" bezelStyle=\"smallSquare\" image=\"NSRemoveTemplate\" imagePosition=\"overlaps\" alignment=\"center\" lineBreakMode=\"truncatingTail\" state=\"on\" borderStyle=\"border\" imageScaling=\"proportionallyDown\" inset=\"2\" id=\"X1x-Cf-cJ9\">\n                                        <behavior key=\"behavior\" pushIn=\"YES\" lightByBackground=\"YES\" lightByGray=\"YES\"/>\n                                        <font key=\"font\" metaFont=\"system\"/>\n                                    </buttonCell>\n                                    <connections>\n                                        <action selector=\"removeTap:\" target=\"-2\" id=\"cbd-ey-FJf\"/>\n                                    </connections>\n                                </button>\n                                <button verticalHuggingPriority=\"750\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"t16-22-wdD\">\n                                    <rect key=\"frame\" x=\"20\" y=\"1\" width=\"22\" height=\"20\"/>\n                                    <buttonCell key=\"cell\" type=\"smallSquare\" bezelStyle=\"smallSquare\" image=\"copy\" imagePosition=\"overlaps\" alignment=\"center\" borderStyle=\"border\" imageScaling=\"proportionallyDown\" inset=\"2\" id=\"Nel-Z1-BoU\">\n                                        <behavior key=\"behavior\" pushIn=\"YES\" lightByBackground=\"YES\" lightByGray=\"YES\"/>\n                                        <font key=\"font\" metaFont=\"system\"/>\n                                    </buttonCell>\n                                    <connections>\n                                        <action selector=\"copyTap:\" target=\"-2\" id=\"aC2-HF-f0e\"/>\n                                    </connections>\n                                </button>\n                            </subviews>\n                            <constraints>\n                                <constraint firstItem=\"GYs-ly-VQV\" firstAttribute=\"leading\" secondItem=\"X2Y-iT-2rP\" secondAttribute=\"leading\" id=\"D2g-BA-OVD\"/>\n                                <constraint firstItem=\"t16-22-wdD\" firstAttribute=\"width\" secondItem=\"GYs-ly-VQV\" secondAttribute=\"width\" id=\"LGj-ep-Zyj\"/>\n                                <constraint firstItem=\"t16-22-wdD\" firstAttribute=\"top\" secondItem=\"GYs-ly-VQV\" secondAttribute=\"top\" id=\"POy-0X-3c8\"/>\n                                <constraint firstItem=\"t16-22-wdD\" firstAttribute=\"height\" secondItem=\"GYs-ly-VQV\" secondAttribute=\"height\" id=\"cZU-E1-yTA\"/>\n                                <constraint firstItem=\"7Ly-TN-TUc\" firstAttribute=\"leading\" secondItem=\"X2Y-iT-2rP\" secondAttribute=\"leading\" constant=\"41\" id=\"cyW-qN-llb\"/>\n                                <constraint firstItem=\"GYs-ly-VQV\" firstAttribute=\"top\" secondItem=\"X2Y-iT-2rP\" secondAttribute=\"top\" id=\"ioy-Lz-pUY\"/>\n                                <constraint firstItem=\"t16-22-wdD\" firstAttribute=\"leading\" secondItem=\"X2Y-iT-2rP\" secondAttribute=\"leading\" constant=\"20\" symbolic=\"YES\" id=\"qOl-90-1hb\"/>\n                                <constraint firstItem=\"GYs-ly-VQV\" firstAttribute=\"baseline\" secondItem=\"7Ly-TN-TUc\" secondAttribute=\"baseline\" id=\"rHw-uO-O7I\"/>\n                                <constraint firstItem=\"7Ly-TN-TUc\" firstAttribute=\"width\" secondItem=\"GYs-ly-VQV\" secondAttribute=\"width\" id=\"wYm-nk-IMW\"/>\n                                <constraint firstItem=\"7Ly-TN-TUc\" firstAttribute=\"height\" secondItem=\"GYs-ly-VQV\" secondAttribute=\"height\" id=\"yed-qP-z3H\"/>\n                            </constraints>\n                        </view>\n                        <color key=\"fillColor\" red=\"1\" green=\"1\" blue=\"1\" alpha=\"0.59999999999999998\" colorSpace=\"calibratedRGB\"/>\n                    </box>\n                    <button verticalHuggingPriority=\"750\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"Q9A-Lo-rva\">\n                        <rect key=\"frame\" x=\"522\" y=\"13\" width=\"82\" height=\"32\"/>\n                        <constraints>\n                            <constraint firstAttribute=\"height\" constant=\"21\" id=\"EPQ-MA-DRC\"/>\n                            <constraint firstAttribute=\"width\" constant=\"70\" id=\"cpQ-Yf-rFa\"/>\n                        </constraints>\n                        <buttonCell key=\"cell\" type=\"push\" title=\"Save\" bezelStyle=\"rounded\" alignment=\"center\" borderStyle=\"border\" imageScaling=\"proportionallyDown\" inset=\"2\" id=\"xO8-VQ-N2V\">\n                            <behavior key=\"behavior\" pushIn=\"YES\" lightByBackground=\"YES\" lightByGray=\"YES\"/>\n                            <font key=\"font\" metaFont=\"system\"/>\n                            <string key=\"keyEquivalent\" base64-UTF8=\"YES\">\nDQ\n</string>\n                        </buttonCell>\n                        <connections>\n                            <action selector=\"saveTap:\" target=\"-2\" id=\"TFu-kF-5zV\"/>\n                        </connections>\n                    </button>\n                    <textField verticalHuggingPriority=\"750\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"JDR-BN-61o\">\n                        <rect key=\"frame\" x=\"357\" y=\"612\" width=\"155\" height=\"21\"/>\n                        <constraints>\n                            <constraint firstAttribute=\"height\" constant=\"21\" id=\"P61-XJ-uaY\"/>\n                            <constraint firstAttribute=\"width\" constant=\"155\" id=\"xwc-kC-BdW\"/>\n                        </constraints>\n                        <textFieldCell key=\"cell\" scrollable=\"YES\" lineBreakMode=\"clipping\" selectable=\"YES\" editable=\"YES\" sendsActionOnEndEditing=\"YES\" borderStyle=\"bezel\" drawsBackground=\"YES\" id=\"RVW-og-G9Z\">\n                            <font key=\"font\" metaFont=\"system\"/>\n                            <color key=\"textColor\" name=\"controlTextColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                            <color key=\"backgroundColor\" name=\"textBackgroundColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                        </textFieldCell>\n                    </textField>\n                    <textField horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"750\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"iOl-8u-RkW\">\n                        <rect key=\"frame\" x=\"246\" y=\"614\" width=\"104\" height=\"16\"/>\n                        <constraints>\n                            <constraint firstAttribute=\"height\" constant=\"16\" id=\"FYM-bf-7M3\"/>\n                            <constraint firstAttribute=\"width\" constant=\"100\" id=\"cgu-Q3-LF8\"/>\n                        </constraints>\n                        <textFieldCell key=\"cell\" lineBreakMode=\"clipping\" title=\"Remote Address\" id=\"fli-dh-s7u\">\n                            <font key=\"font\" metaFont=\"system\"/>\n                            <color key=\"textColor\" name=\"labelColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                            <color key=\"backgroundColor\" name=\"textBackgroundColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                        </textFieldCell>\n                    </textField>\n                    <textField verticalHuggingPriority=\"750\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"TGT-Nk-FWX\">\n                        <rect key=\"frame\" x=\"619\" y=\"612\" width=\"60\" height=\"21\"/>\n                        <constraints>\n                            <constraint firstAttribute=\"height\" constant=\"21\" id=\"GQk-g6-Iny\"/>\n                            <constraint firstAttribute=\"width\" constant=\"60\" id=\"dVr-Xc-pbW\"/>\n                        </constraints>\n                        <textFieldCell key=\"cell\" scrollable=\"YES\" lineBreakMode=\"clipping\" selectable=\"YES\" editable=\"YES\" sendsActionOnEndEditing=\"YES\" borderStyle=\"bezel\" drawsBackground=\"YES\" id=\"e8x-te-QKe\">\n                            <font key=\"font\" metaFont=\"system\"/>\n                            <color key=\"textColor\" name=\"controlTextColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                            <color key=\"backgroundColor\" name=\"textBackgroundColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                        </textFieldCell>\n                    </textField>\n                    <textField horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"750\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"4AJ-Cf-cOt\">\n                        <rect key=\"frame\" x=\"533\" y=\"614\" width=\"80\" height=\"16\"/>\n                        <constraints>\n                            <constraint firstAttribute=\"height\" constant=\"16\" id=\"0rU-Kl-Jcn\"/>\n                            <constraint firstAttribute=\"width\" constant=\"76\" id=\"SOv-TV-BJ5\"/>\n                        </constraints>\n                        <textFieldCell key=\"cell\" lineBreakMode=\"clipping\" title=\"Remote Port\" id=\"bvj-l8-8ET\">\n                            <font key=\"font\" metaFont=\"system\"/>\n                            <color key=\"textColor\" name=\"labelColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                            <color key=\"backgroundColor\" name=\"textBackgroundColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                        </textFieldCell>\n                    </textField>\n                    <textField verticalHuggingPriority=\"750\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"uZf-a8-9s3\">\n                        <rect key=\"frame\" x=\"357\" y=\"568\" width=\"155\" height=\"21\"/>\n                        <constraints>\n                            <constraint firstAttribute=\"width\" constant=\"155\" id=\"Dwp-gB-fKC\"/>\n                            <constraint firstAttribute=\"height\" constant=\"21\" id=\"oZD-yL-PE7\"/>\n                        </constraints>\n                        <textFieldCell key=\"cell\" scrollable=\"YES\" lineBreakMode=\"clipping\" selectable=\"YES\" editable=\"YES\" sendsActionOnEndEditing=\"YES\" borderStyle=\"bezel\" drawsBackground=\"YES\" id=\"Bjr-Gt-A11\">\n                            <font key=\"font\" metaFont=\"system\"/>\n                            <color key=\"textColor\" name=\"controlTextColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                            <color key=\"backgroundColor\" name=\"textBackgroundColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                        </textFieldCell>\n                    </textField>\n                    <textField horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"750\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"2XM-zV-Zrh\">\n                        <rect key=\"frame\" x=\"246\" y=\"570\" width=\"64\" height=\"16\"/>\n                        <constraints>\n                            <constraint firstAttribute=\"width\" constant=\"60\" id=\"5JM-YL-Ohw\"/>\n                            <constraint firstAttribute=\"height\" constant=\"16\" id=\"6jt-Gy-53R\"/>\n                        </constraints>\n                        <textFieldCell key=\"cell\" lineBreakMode=\"clipping\" title=\"Password\" id=\"i0D-9V-Vbd\">\n                            <font key=\"font\" metaFont=\"system\"/>\n                            <color key=\"textColor\" name=\"labelColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                            <color key=\"backgroundColor\" name=\"textBackgroundColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                        </textFieldCell>\n                    </textField>\n                    <textField verticalHuggingPriority=\"750\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"JgP-gw-NCr\">\n                        <rect key=\"frame\" x=\"357\" y=\"524\" width=\"155\" height=\"21\"/>\n                        <constraints>\n                            <constraint firstAttribute=\"width\" constant=\"155\" id=\"2CP-UC-y2Y\"/>\n                            <constraint firstAttribute=\"height\" constant=\"21\" id=\"N9S-wK-hyi\"/>\n                        </constraints>\n                        <textFieldCell key=\"cell\" scrollable=\"YES\" lineBreakMode=\"clipping\" selectable=\"YES\" editable=\"YES\" sendsActionOnEndEditing=\"YES\" borderStyle=\"bezel\" drawsBackground=\"YES\" id=\"Q5T-m2-BAe\">\n                            <font key=\"font\" metaFont=\"system\"/>\n                            <color key=\"textColor\" name=\"controlTextColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                            <color key=\"backgroundColor\" name=\"textBackgroundColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                        </textFieldCell>\n                    </textField>\n                    <textField horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"750\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"KmJ-qq-EKj\">\n                        <rect key=\"frame\" x=\"246\" y=\"526\" width=\"90\" height=\"16\"/>\n                        <constraints>\n                            <constraint firstAttribute=\"width\" constant=\"86\" id=\"0Ho-fZ-frt\"/>\n                            <constraint firstAttribute=\"height\" constant=\"16\" id=\"OLq-Ad-pkv\"/>\n                        </constraints>\n                        <textFieldCell key=\"cell\" lineBreakMode=\"clipping\" title=\"Local Address\" id=\"Wei-TG-x93\">\n                            <font key=\"font\" metaFont=\"system\"/>\n                            <color key=\"textColor\" name=\"labelColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                            <color key=\"backgroundColor\" name=\"textBackgroundColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                        </textFieldCell>\n                    </textField>\n                    <textField verticalHuggingPriority=\"750\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"YbA-ca-i0R\">\n                        <rect key=\"frame\" x=\"619\" y=\"524\" width=\"60\" height=\"21\"/>\n                        <constraints>\n                            <constraint firstAttribute=\"height\" constant=\"21\" id=\"Qx9-81-MF4\"/>\n                            <constraint firstAttribute=\"width\" constant=\"60\" id=\"cbI-hR-6Rn\"/>\n                        </constraints>\n                        <textFieldCell key=\"cell\" scrollable=\"YES\" lineBreakMode=\"clipping\" selectable=\"YES\" editable=\"YES\" sendsActionOnEndEditing=\"YES\" borderStyle=\"bezel\" drawsBackground=\"YES\" id=\"hgf-yE-dNp\">\n                            <font key=\"font\" metaFont=\"system\"/>\n                            <color key=\"textColor\" name=\"controlTextColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                            <color key=\"backgroundColor\" name=\"textBackgroundColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                        </textFieldCell>\n                    </textField>\n                    <textField horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"750\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"B0q-Kd-2XP\">\n                        <rect key=\"frame\" x=\"533\" y=\"526\" width=\"66\" height=\"16\"/>\n                        <constraints>\n                            <constraint firstAttribute=\"height\" constant=\"16\" id=\"50d-aT-nmF\"/>\n                            <constraint firstAttribute=\"width\" constant=\"62\" id=\"u1i-Rx-ai3\"/>\n                        </constraints>\n                        <textFieldCell key=\"cell\" lineBreakMode=\"clipping\" title=\"Local Port\" id=\"Gyu-fJ-ZES\">\n                            <font key=\"font\" metaFont=\"system\"/>\n                            <color key=\"textColor\" name=\"labelColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                            <color key=\"backgroundColor\" name=\"textBackgroundColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                        </textFieldCell>\n                    </textField>\n                </subviews>\n                <constraints>\n                    <constraint firstItem=\"KmJ-qq-EKj\" firstAttribute=\"leading\" secondItem=\"eQb-5j-lgO\" secondAttribute=\"trailing\" constant=\"16\" id=\"CKc-p3-X6K\"/>\n                    <constraint firstItem=\"4AJ-Cf-cOt\" firstAttribute=\"centerY\" secondItem=\"iOl-8u-RkW\" secondAttribute=\"centerY\" id=\"E8x-64-9Qq\"/>\n                    <constraint firstItem=\"JDR-BN-61o\" firstAttribute=\"leading\" secondItem=\"iOl-8u-RkW\" secondAttribute=\"trailing\" constant=\"9\" id=\"GZJ-ZT-d2q\"/>\n                    <constraint firstItem=\"IxW-2H-8rV\" firstAttribute=\"top\" secondItem=\"se5-gp-TjO\" secondAttribute=\"top\" constant=\"560\" id=\"HfB-ub-dFR\"/>\n                    <constraint firstItem=\"4AJ-Cf-cOt\" firstAttribute=\"leading\" secondItem=\"JDR-BN-61o\" secondAttribute=\"trailing\" constant=\"23\" id=\"I8Y-xB-Iij\"/>\n                    <constraint firstItem=\"iOl-8u-RkW\" firstAttribute=\"leading\" secondItem=\"eQb-5j-lgO\" secondAttribute=\"trailing\" constant=\"16\" id=\"IwU-Oy-qo1\"/>\n                    <constraint firstAttribute=\"trailing\" secondItem=\"Rl6-T5-zAY\" secondAttribute=\"trailing\" constant=\"20\" id=\"JO9-CK-5Vf\"/>\n                    <constraint firstItem=\"TGT-Nk-FWX\" firstAttribute=\"centerY\" secondItem=\"iOl-8u-RkW\" secondAttribute=\"centerY\" id=\"Kgc-or-JwJ\"/>\n                    <constraint firstItem=\"Rl6-T5-zAY\" firstAttribute=\"leading\" secondItem=\"Q9A-Lo-rva\" secondAttribute=\"trailing\" constant=\"12\" id=\"Oip-U7-AKv\"/>\n                    <constraint firstItem=\"eQb-5j-lgO\" firstAttribute=\"top\" secondItem=\"se5-gp-TjO\" secondAttribute=\"top\" constant=\"20\" id=\"RBp-85-9Cs\"/>\n                    <constraint firstItem=\"Rl6-T5-zAY\" firstAttribute=\"top\" secondItem=\"ecl-6w-wbc\" secondAttribute=\"bottom\" constant=\"29\" id=\"WUi-GA-5Iy\"/>\n                    <constraint firstItem=\"IxW-2H-8rV\" firstAttribute=\"leading\" secondItem=\"se5-gp-TjO\" secondAttribute=\"leading\" constant=\"20\" id=\"Y0F-7u-36m\"/>\n                    <constraint firstItem=\"JDR-BN-61o\" firstAttribute=\"centerY\" secondItem=\"iOl-8u-RkW\" secondAttribute=\"centerY\" id=\"YIY-Vn-obZ\"/>\n                    <constraint firstItem=\"uZf-a8-9s3\" firstAttribute=\"centerY\" secondItem=\"2XM-zV-Zrh\" secondAttribute=\"centerY\" id=\"aFi-6B-6Ll\"/>\n                    <constraint firstItem=\"ecl-6w-wbc\" firstAttribute=\"leading\" secondItem=\"IxW-2H-8rV\" secondAttribute=\"trailing\" constant=\"8\" id=\"bem-dc-oka\"/>\n                    <constraint firstItem=\"B0q-Kd-2XP\" firstAttribute=\"leading\" secondItem=\"JgP-gw-NCr\" secondAttribute=\"trailing\" constant=\"23\" id=\"boZ-oZ-3uR\"/>\n                    <constraint firstItem=\"TGT-Nk-FWX\" firstAttribute=\"leading\" secondItem=\"4AJ-Cf-cOt\" secondAttribute=\"trailing\" constant=\"8\" id=\"cWs-ea-drV\"/>\n                    <constraint firstAttribute=\"bottom\" secondItem=\"Rl6-T5-zAY\" secondAttribute=\"bottom\" constant=\"20\" id=\"g3G-OP-OP7\"/>\n                    <constraint firstAttribute=\"bottom\" secondItem=\"eQb-5j-lgO\" secondAttribute=\"bottom\" constant=\"87\" id=\"g3T-QB-WW7\"/>\n                    <constraint firstItem=\"2XM-zV-Zrh\" firstAttribute=\"top\" secondItem=\"iOl-8u-RkW\" secondAttribute=\"bottom\" constant=\"28\" id=\"gC9-T8-KnA\"/>\n                    <constraint firstItem=\"ecl-6w-wbc\" firstAttribute=\"top\" secondItem=\"JgP-gw-NCr\" secondAttribute=\"bottom\" constant=\"16\" id=\"gN9-cb-38R\"/>\n                    <constraint firstItem=\"YbA-ca-i0R\" firstAttribute=\"centerY\" secondItem=\"KmJ-qq-EKj\" secondAttribute=\"centerY\" id=\"h0W-SY-ah8\"/>\n                    <constraint firstItem=\"B0q-Kd-2XP\" firstAttribute=\"centerY\" secondItem=\"KmJ-qq-EKj\" secondAttribute=\"centerY\" id=\"hMP-I3-io3\"/>\n                    <constraint firstAttribute=\"bottom\" secondItem=\"Q9A-Lo-rva\" secondAttribute=\"bottom\" constant=\"20\" id=\"hlg-qo-NEL\"/>\n                    <constraint firstAttribute=\"trailing\" secondItem=\"ecl-6w-wbc\" secondAttribute=\"trailing\" constant=\"20\" id=\"hsH-aX-dwc\"/>\n                    <constraint firstItem=\"JgP-gw-NCr\" firstAttribute=\"leading\" secondItem=\"KmJ-qq-EKj\" secondAttribute=\"trailing\" constant=\"23\" id=\"k9m-3I-AZO\"/>\n                    <constraint firstItem=\"eQb-5j-lgO\" firstAttribute=\"leading\" secondItem=\"se5-gp-TjO\" secondAttribute=\"leading\" constant=\"20\" id=\"pEP-z1-GaP\"/>\n                    <constraint firstItem=\"iOl-8u-RkW\" firstAttribute=\"top\" secondItem=\"se5-gp-TjO\" secondAttribute=\"top\" constant=\"20\" id=\"rPm-LX-Yxu\"/>\n                    <constraint firstItem=\"2XM-zV-Zrh\" firstAttribute=\"leading\" secondItem=\"eQb-5j-lgO\" secondAttribute=\"trailing\" constant=\"16\" id=\"swr-fB-3Nl\"/>\n                    <constraint firstItem=\"YbA-ca-i0R\" firstAttribute=\"leading\" secondItem=\"B0q-Kd-2XP\" secondAttribute=\"trailing\" constant=\"22\" id=\"thG-2p-wVL\"/>\n                    <constraint firstItem=\"JgP-gw-NCr\" firstAttribute=\"centerY\" secondItem=\"KmJ-qq-EKj\" secondAttribute=\"centerY\" id=\"u3g-0a-kmF\"/>\n                    <constraint firstItem=\"ecl-6w-wbc\" firstAttribute=\"leading\" secondItem=\"eQb-5j-lgO\" secondAttribute=\"trailing\" constant=\"8\" id=\"uMe-Eb-HBM\"/>\n                    <constraint firstItem=\"KmJ-qq-EKj\" firstAttribute=\"top\" secondItem=\"2XM-zV-Zrh\" secondAttribute=\"bottom\" constant=\"28\" id=\"uZ8-c7-wCj\"/>\n                    <constraint firstAttribute=\"bottom\" secondItem=\"IxW-2H-8rV\" secondAttribute=\"bottom\" constant=\"70\" id=\"vda-7a-n6v\"/>\n                    <constraint firstItem=\"uZf-a8-9s3\" firstAttribute=\"leading\" secondItem=\"2XM-zV-Zrh\" secondAttribute=\"trailing\" constant=\"49\" id=\"zyp-I6-bLs\"/>\n                </constraints>\n            </view>\n            <connections>\n                <outlet property=\"delegate\" destination=\"-2\" id=\"0bl-1N-AYu\"/>\n            </connections>\n            <point key=\"canvasLocation\" x=\"139\" y=\"147\"/>\n        </window>\n    </objects>\n    <resources>\n        <image name=\"NSAddTemplate\" width=\"11\" height=\"11\"/>\n        <image name=\"NSRemoveTemplate\" width=\"11\" height=\"11\"/>\n        <image name=\"copy\" width=\"36\" height=\"36\"/>\n    </resources>\n</document>\n"
  },
  {
    "path": "Trojan/WIndows/Base.lproj/SettingsWIndowController.xib",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.Cocoa.XIB\" version=\"3.0\" toolsVersion=\"17156\" targetRuntime=\"MacOSX.Cocoa\" propertyAccessControl=\"none\" useAutolayout=\"YES\" customObjectInstantitationMethod=\"direct\">\n    <dependencies>\n        <deployment identifier=\"macosx\"/>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.CocoaPlugin\" version=\"17156\"/>\n        <capability name=\"documents saved in the Xcode 8 format\" minToolsVersion=\"8.0\"/>\n    </dependencies>\n    <objects>\n        <customObject id=\"-2\" userLabel=\"File's Owner\" customClass=\"SettingsWIndowController\" customModule=\"Trojan\" customModuleProvider=\"target\">\n            <connections>\n                <outlet property=\"httpAddress\" destination=\"vWG-uB-UQR\" id=\"KVG-aF-mTn\"/>\n                <outlet property=\"httpPort\" destination=\"zad-zc-9c3\" id=\"VVz-qL-Zvi\"/>\n                <outlet property=\"launchAtLogin\" destination=\"41P-Mt-mI2\" id=\"hUS-XX-dGf\"/>\n                <outlet property=\"tabView\" destination=\"PZ1-fj-GVi\" id=\"5i5-i8-5UQ\"/>\n                <outlet property=\"toolbar\" destination=\"9If-lu-dbi\" id=\"ca1-KX-PN3\"/>\n                <outlet property=\"window\" destination=\"F0z-JX-Cv5\" id=\"gIp-Ho-8D9\"/>\n            </connections>\n        </customObject>\n        <customObject id=\"-1\" userLabel=\"First Responder\" customClass=\"FirstResponder\"/>\n        <customObject id=\"-3\" userLabel=\"Application\" customClass=\"NSObject\"/>\n        <window title=\"Settings\" allowsToolTipsWhenApplicationIsInactive=\"NO\" autorecalculatesKeyViewLoop=\"NO\" releasedWhenClosed=\"NO\" animationBehavior=\"default\" id=\"F0z-JX-Cv5\">\n            <windowStyleMask key=\"styleMask\" titled=\"YES\" closable=\"YES\" miniaturizable=\"YES\"/>\n            <windowPositionMask key=\"initialPositionMask\" leftStrut=\"YES\" rightStrut=\"YES\" topStrut=\"YES\" bottomStrut=\"YES\"/>\n            <rect key=\"contentRect\" x=\"196\" y=\"240\" width=\"271\" height=\"251\"/>\n            <rect key=\"screenRect\" x=\"0.0\" y=\"0.0\" width=\"1680\" height=\"1027\"/>\n            <view key=\"contentView\" id=\"se5-gp-TjO\">\n                <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"271\" height=\"251\"/>\n                <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                <subviews>\n                    <tabView type=\"noTabsNoBorder\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"PZ1-fj-GVi\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"271\" height=\"251\"/>\n                        <font key=\"font\" metaFont=\"system\"/>\n                        <tabViewItems>\n                            <tabViewItem label=\"General\" identifier=\"General\" id=\"u90-Qy-cbH\">\n                                <view key=\"view\" id=\"LCH-tY-Oc3\">\n                                    <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"271\" height=\"251\"/>\n                                    <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                                    <subviews>\n                                        <button verticalHuggingPriority=\"750\" fixedFrame=\"YES\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"41P-Mt-mI2\">\n                                            <rect key=\"frame\" x=\"45\" y=\"215\" width=\"120\" height=\"18\"/>\n                                            <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMinY=\"YES\"/>\n                                            <buttonCell key=\"cell\" type=\"check\" title=\"Launch At Login\" bezelStyle=\"regularSquare\" imagePosition=\"left\" state=\"on\" inset=\"2\" id=\"XRd-gw-sVz\">\n                                                <behavior key=\"behavior\" changeContents=\"YES\" doesNotDimImage=\"YES\" lightByContents=\"YES\"/>\n                                                <font key=\"font\" metaFont=\"system\"/>\n                                            </buttonCell>\n                                        </button>\n                                        <button verticalHuggingPriority=\"750\" fixedFrame=\"YES\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"NsB-6M-mee\">\n                                            <rect key=\"frame\" x=\"45\" y=\"186\" width=\"180\" height=\"18\"/>\n                                            <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMinY=\"YES\"/>\n                                            <buttonCell key=\"cell\" type=\"check\" title=\"Check Updates At Launch\" bezelStyle=\"regularSquare\" imagePosition=\"left\" state=\"on\" inset=\"2\" id=\"2lA-Yb-g5P\">\n                                                <behavior key=\"behavior\" changeContents=\"YES\" doesNotDimImage=\"YES\" lightByContents=\"YES\"/>\n                                                <font key=\"font\" metaFont=\"system\"/>\n                                            </buttonCell>\n                                            <connections>\n                                                <binding destination=\"mNr-ZS-3b7\" name=\"value\" keyPath=\"values.USERDEFAULTS_AUTO_CHECK_UPDATE\" id=\"Hfr-1H-fK2\"/>\n                                            </connections>\n                                        </button>\n                                        <button verticalHuggingPriority=\"750\" fixedFrame=\"YES\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"uow-fs-nhL\">\n                                            <rect key=\"frame\" x=\"45\" y=\"156\" width=\"160\" height=\"18\"/>\n                                            <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMinY=\"YES\"/>\n                                            <buttonCell key=\"cell\" type=\"check\" title=\"Show Network Monitor\" bezelStyle=\"regularSquare\" imagePosition=\"left\" state=\"on\" inset=\"2\" id=\"v88-LG-DJP\">\n                                                <behavior key=\"behavior\" changeContents=\"YES\" doesNotDimImage=\"YES\" lightByContents=\"YES\"/>\n                                                <font key=\"font\" metaFont=\"system\"/>\n                                            </buttonCell>\n                                            <connections>\n                                                <action selector=\"showNetwork:\" target=\"-2\" id=\"Gz1-gA-N9x\"/>\n                                                <binding destination=\"mNr-ZS-3b7\" name=\"value\" keyPath=\"values.USERDEFAULTS_ENABLE_SHOW_SPEED\" id=\"eYa-9C-mOJ\"/>\n                                            </connections>\n                                        </button>\n                                    </subviews>\n                                </view>\n                            </tabViewItem>\n                            <tabViewItem label=\"HTTP\" identifier=\"HTTP\" id=\"9eZ-LB-LAE\">\n                                <view key=\"view\" id=\"AYo-wj-Lcs\">\n                                    <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"271\" height=\"251\"/>\n                                    <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                                    <subviews>\n                                        <button fixedFrame=\"YES\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"QW0-Yl-Ctk\">\n                                            <rect key=\"frame\" x=\"49\" y=\"215\" width=\"138\" height=\"18\"/>\n                                            <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMinY=\"YES\"/>\n                                            <buttonCell key=\"cell\" type=\"check\" title=\"HTTP Proxy Enable\" bezelStyle=\"regularSquare\" imagePosition=\"left\" state=\"on\" inset=\"2\" id=\"ddc-tk-35g\">\n                                                <behavior key=\"behavior\" changeContents=\"YES\" doesNotDimImage=\"YES\" lightByContents=\"YES\"/>\n                                                <font key=\"font\" metaFont=\"system\"/>\n                                            </buttonCell>\n                                            <connections>\n                                                <action selector=\"httpButtonTap:\" target=\"-2\" id=\"l3X-UH-hiy\"/>\n                                                <binding destination=\"mNr-ZS-3b7\" name=\"value\" keyPath=\"values.LocalHTTPOn\" id=\"qKG-fA-gBe\"/>\n                                            </connections>\n                                        </button>\n                                        <button fixedFrame=\"YES\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"lga-Rc-BKs\">\n                                            <rect key=\"frame\" x=\"49\" y=\"187\" width=\"141\" height=\"18\"/>\n                                            <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMinY=\"YES\"/>\n                                            <buttonCell key=\"cell\" type=\"check\" title=\"Follow Global Mode\" bezelStyle=\"regularSquare\" imagePosition=\"left\" state=\"on\" inset=\"2\" id=\"qsk-nQ-vvI\">\n                                                <behavior key=\"behavior\" changeContents=\"YES\" doesNotDimImage=\"YES\" lightByContents=\"YES\"/>\n                                                <font key=\"font\" metaFont=\"system\"/>\n                                            </buttonCell>\n                                            <connections>\n                                                <action selector=\"httpButtonTap:\" target=\"-2\" id=\"7Zc-SG-N3I\"/>\n                                                <binding destination=\"mNr-ZS-3b7\" name=\"value\" keyPath=\"values.LocalHTTP.FollowGlobal\" id=\"6Nb-Nv-Vx5\"/>\n                                            </connections>\n                                        </button>\n                                        <textField horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"750\" fixedFrame=\"YES\" allowsCharacterPickerTouchBarItem=\"YES\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"ARd-qd-vTc\">\n                                            <rect key=\"frame\" x=\"49\" y=\"154\" width=\"173\" height=\"16\"/>\n                                            <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMinY=\"YES\"/>\n                                            <textFieldCell key=\"cell\" scrollable=\"YES\" lineBreakMode=\"clipping\" sendsActionOnEndEditing=\"YES\" title=\"HTTP Proxy Listen Address:\" id=\"7Gu-mk-D4u\">\n                                                <font key=\"font\" metaFont=\"system\"/>\n                                                <color key=\"textColor\" name=\"labelColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                <color key=\"backgroundColor\" name=\"controlColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                            </textFieldCell>\n                                        </textField>\n                                        <textField horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"750\" fixedFrame=\"YES\" allowsCharacterPickerTouchBarItem=\"YES\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"LUq-9V-TN7\">\n                                            <rect key=\"frame\" x=\"49\" y=\"103\" width=\"149\" height=\"16\"/>\n                                            <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMinY=\"YES\"/>\n                                            <textFieldCell key=\"cell\" scrollable=\"YES\" lineBreakMode=\"clipping\" sendsActionOnEndEditing=\"YES\" title=\"HTTP Proxy Listen Port:\" id=\"WJH-fF-F97\">\n                                                <font key=\"font\" metaFont=\"system\"/>\n                                                <color key=\"textColor\" name=\"labelColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                <color key=\"backgroundColor\" name=\"controlColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                            </textFieldCell>\n                                        </textField>\n                                        <textField verticalHuggingPriority=\"750\" fixedFrame=\"YES\" allowsCharacterPickerTouchBarItem=\"YES\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"vWG-uB-UQR\">\n                                            <rect key=\"frame\" x=\"51\" y=\"125\" width=\"169\" height=\"21\"/>\n                                            <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMinY=\"YES\"/>\n                                            <textFieldCell key=\"cell\" scrollable=\"YES\" lineBreakMode=\"clipping\" selectable=\"YES\" editable=\"YES\" sendsActionOnEndEditing=\"YES\" state=\"on\" borderStyle=\"bezel\" drawsBackground=\"YES\" id=\"hJn-lW-Lw9\">\n                                                <font key=\"font\" metaFont=\"system\"/>\n                                                <color key=\"textColor\" name=\"controlTextColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                <color key=\"backgroundColor\" name=\"textBackgroundColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                            </textFieldCell>\n                                            <connections>\n                                                <binding destination=\"mNr-ZS-3b7\" name=\"value\" keyPath=\"values.LocalHTTP.ListenAddress\" id=\"12x-7n-9kD\">\n                                                    <dictionary key=\"options\">\n                                                        <bool key=\"NSContinuouslyUpdatesValue\" value=\"YES\"/>\n                                                    </dictionary>\n                                                </binding>\n                                            </connections>\n                                        </textField>\n                                        <textField verticalHuggingPriority=\"750\" fixedFrame=\"YES\" allowsCharacterPickerTouchBarItem=\"YES\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"zad-zc-9c3\">\n                                            <rect key=\"frame\" x=\"51\" y=\"74\" width=\"169\" height=\"21\"/>\n                                            <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMinY=\"YES\"/>\n                                            <textFieldCell key=\"cell\" scrollable=\"YES\" lineBreakMode=\"clipping\" selectable=\"YES\" editable=\"YES\" sendsActionOnEndEditing=\"YES\" state=\"on\" borderStyle=\"bezel\" drawsBackground=\"YES\" id=\"Sxz-oy-Qop\">\n                                                <font key=\"font\" metaFont=\"system\"/>\n                                                <color key=\"textColor\" name=\"controlTextColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                <color key=\"backgroundColor\" name=\"textBackgroundColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                            </textFieldCell>\n                                            <connections>\n                                                <binding destination=\"mNr-ZS-3b7\" name=\"value\" keyPath=\"values.LocalHTTP.ListenPort\" id=\"har-kg-oqw\">\n                                                    <dictionary key=\"options\">\n                                                        <bool key=\"NSContinuouslyUpdatesValue\" value=\"YES\"/>\n                                                    </dictionary>\n                                                </binding>\n                                            </connections>\n                                        </textField>\n                                        <button verticalHuggingPriority=\"750\" fixedFrame=\"YES\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"FwG-ta-dpl\">\n                                            <rect key=\"frame\" x=\"187\" y=\"13\" width=\"70\" height=\"32\"/>\n                                            <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMinY=\"YES\"/>\n                                            <buttonCell key=\"cell\" type=\"push\" title=\"Save\" bezelStyle=\"rounded\" alignment=\"center\" borderStyle=\"border\" imageScaling=\"proportionallyDown\" inset=\"2\" id=\"UkP-CN-9fg\">\n                                                <behavior key=\"behavior\" pushIn=\"YES\" lightByBackground=\"YES\" lightByGray=\"YES\"/>\n                                                <font key=\"font\" metaFont=\"system\"/>\n                                                <string key=\"keyEquivalent\" base64-UTF8=\"YES\">\nDQ\n</string>\n                                            </buttonCell>\n                                            <connections>\n                                                <action selector=\"onHTTPSaveTap:\" target=\"-2\" id=\"hpb-cw-6D6\"/>\n                                            </connections>\n                                        </button>\n                                    </subviews>\n                                </view>\n                            </tabViewItem>\n                        </tabViewItems>\n                    </tabView>\n                </subviews>\n                <constraints>\n                    <constraint firstAttribute=\"bottom\" secondItem=\"PZ1-fj-GVi\" secondAttribute=\"bottom\" id=\"FY9-kk-ZSi\"/>\n                    <constraint firstItem=\"PZ1-fj-GVi\" firstAttribute=\"top\" secondItem=\"se5-gp-TjO\" secondAttribute=\"top\" id=\"k5u-Kc-CJj\"/>\n                    <constraint firstItem=\"PZ1-fj-GVi\" firstAttribute=\"leading\" secondItem=\"se5-gp-TjO\" secondAttribute=\"leading\" id=\"nGx-GU-vTM\"/>\n                    <constraint firstAttribute=\"trailing\" secondItem=\"PZ1-fj-GVi\" secondAttribute=\"trailing\" id=\"zmC-0g-9Ml\"/>\n                </constraints>\n            </view>\n            <toolbar key=\"toolbar\" implicitIdentifier=\"D03C294B-6321-4D91-9B8B-06824CF45629\" autosavesConfiguration=\"NO\" displayMode=\"iconAndLabel\" sizeMode=\"regular\" id=\"9If-lu-dbi\">\n                <allowedToolbarItems>\n                    <toolbarItem implicitItemIdentifier=\"NSToolbarSpaceItem\" id=\"2z3-PC-mzj\"/>\n                    <toolbarItem implicitItemIdentifier=\"NSToolbarFlexibleSpaceItem\" id=\"3nq-4I-i6r\"/>\n                    <toolbarItem implicitItemIdentifier=\"858EEE9A-899B-4EEA-BA43-6C7693EA2302\" explicitItemIdentifier=\"General\" label=\"General\" paletteLabel=\"General\" tag=\"-1\" image=\"NSPreferencesGeneral\" id=\"PXB-LX-C1I\">\n                        <size key=\"minSize\" width=\"32\" height=\"32\"/>\n                        <size key=\"maxSize\" width=\"32\" height=\"32\"/>\n                        <connections>\n                            <action selector=\"toolbarAction:\" target=\"-2\" id=\"TGG-Bh-KT4\"/>\n                        </connections>\n                    </toolbarItem>\n                    <toolbarItem implicitItemIdentifier=\"05C51350-D778-48BA-A97E-6EFF5992992A\" explicitItemIdentifier=\"HTTP\" label=\"HTTP\" paletteLabel=\"HTTP\" tag=\"-1\" image=\"NSBonjour\" id=\"wfh-Rc-uiw\">\n                        <size key=\"minSize\" width=\"32\" height=\"32\"/>\n                        <size key=\"maxSize\" width=\"32\" height=\"32\"/>\n                        <connections>\n                            <action selector=\"toolbarAction:\" target=\"-2\" id=\"LoJ-rM-g2m\"/>\n                        </connections>\n                    </toolbarItem>\n                </allowedToolbarItems>\n                <defaultToolbarItems>\n                    <toolbarItem reference=\"PXB-LX-C1I\"/>\n                    <toolbarItem reference=\"wfh-Rc-uiw\"/>\n                    <toolbarItem reference=\"3nq-4I-i6r\"/>\n                </defaultToolbarItems>\n            </toolbar>\n            <connections>\n                <outlet property=\"delegate\" destination=\"-2\" id=\"0bl-1N-AYu\"/>\n            </connections>\n            <point key=\"canvasLocation\" x=\"34.5\" y=\"137.5\"/>\n        </window>\n        <userDefaultsController representsSharedInstance=\"YES\" id=\"mNr-ZS-3b7\"/>\n        <numberFormatter formatterBehavior=\"default10_4\" localizesFormat=\"NO\" usesGroupingSeparator=\"NO\" formatWidth=\"-1\" groupingSize=\"0\" minimumIntegerDigits=\"1\" maximumIntegerDigits=\"42\" id=\"LJs-Bg-1KP\" userLabel=\"Port Formatter\">\n            <real key=\"minimum\" value=\"10\"/>\n            <real key=\"maximum\" value=\"65535\"/>\n        </numberFormatter>\n    </objects>\n    <resources>\n        <image name=\"NSBonjour\" width=\"32\" height=\"32\"/>\n        <image name=\"NSPreferencesGeneral\" width=\"32\" height=\"32\"/>\n    </resources>\n</document>\n"
  },
  {
    "path": "Trojan/WIndows/Base.lproj/SubscribePreferenceWindowController.xib",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.Cocoa.XIB\" version=\"3.0\" toolsVersion=\"17156\" targetRuntime=\"MacOSX.Cocoa\" propertyAccessControl=\"none\" useAutolayout=\"YES\" customObjectInstantitationMethod=\"direct\">\n    <dependencies>\n        <deployment identifier=\"macosx\"/>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.CocoaPlugin\" version=\"17156\"/>\n        <capability name=\"documents saved in the Xcode 8 format\" minToolsVersion=\"8.0\"/>\n    </dependencies>\n    <objects>\n        <customObject id=\"-2\" userLabel=\"File's Owner\" customClass=\"SubscribePreferenceWindowController\" customModule=\"Trojan\" customModuleProvider=\"target\">\n            <connections>\n                <outlet property=\"ActiveButton\" destination=\"3ho-wT-wnb\" id=\"2NM-34-5QV\"/>\n                <outlet property=\"AddSubscribeBtn\" destination=\"nzj-fK-Vip\" id=\"Tlt-DM-cZF\"/>\n                <outlet property=\"AutoUpdateButton\" destination=\"OdW-yK-LQ8\" id=\"Vov-RG-fAL\"/>\n                <outlet property=\"DeleteSubscribeBtn\" destination=\"jSv-em-0Gp\" id=\"Ggk-I6-h1H\"/>\n                <outlet property=\"FeedTextField\" destination=\"p1W-Md-Wfw\" id=\"zh0-1b-0zw\"/>\n                <outlet property=\"FilterTextField\" destination=\"j3v-6T-D7k\" id=\"rso-r6-dnC\"/>\n                <outlet property=\"GroupTextField\" destination=\"MrH-Ft-1tn\" id=\"txD-SB-Kpr\"/>\n                <outlet property=\"MaxCountTextField\" destination=\"vQO-bq-Igs\" id=\"feo-Jx-AXK\"/>\n                <outlet property=\"OKButton\" destination=\"rC3-mg-tMh\" id=\"RK5-lm-9qc\"/>\n                <outlet property=\"SubscribeTableView\" destination=\"go8-dc-8a6\" id=\"YOl-2J-3oX\"/>\n                <outlet property=\"TokenTextField\" destination=\"hnP-yo-KBb\" id=\"aDw-vO-ZID\"/>\n                <outlet property=\"window\" destination=\"F0z-JX-Cv5\" id=\"gIp-Ho-8D9\"/>\n            </connections>\n        </customObject>\n        <customObject id=\"-1\" userLabel=\"First Responder\" customClass=\"FirstResponder\"/>\n        <customObject id=\"-3\" userLabel=\"Application\" customClass=\"NSObject\"/>\n        <window title=\"Subscribe Preference\" allowsToolTipsWhenApplicationIsInactive=\"NO\" autorecalculatesKeyViewLoop=\"NO\" releasedWhenClosed=\"NO\" animationBehavior=\"default\" id=\"F0z-JX-Cv5\">\n            <windowStyleMask key=\"styleMask\" titled=\"YES\" closable=\"YES\" miniaturizable=\"YES\"/>\n            <windowPositionMask key=\"initialPositionMask\" leftStrut=\"YES\" rightStrut=\"YES\" topStrut=\"YES\" bottomStrut=\"YES\"/>\n            <rect key=\"contentRect\" x=\"196\" y=\"240\" width=\"480\" height=\"270\"/>\n            <rect key=\"screenRect\" x=\"0.0\" y=\"0.0\" width=\"1680\" height=\"1027\"/>\n            <view key=\"contentView\" wantsLayer=\"YES\" id=\"se5-gp-TjO\">\n                <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"480\" height=\"270\"/>\n                <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                <subviews>\n                    <textField verticalHuggingPriority=\"750\" fixedFrame=\"YES\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"p1W-Md-Wfw\">\n                        <rect key=\"frame\" x=\"236\" y=\"225\" width=\"224\" height=\"21\"/>\n                        <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMinY=\"YES\"/>\n                        <textFieldCell key=\"cell\" scrollable=\"YES\" lineBreakMode=\"clipping\" selectable=\"YES\" editable=\"YES\" sendsActionOnEndEditing=\"YES\" state=\"on\" borderStyle=\"bezel\" drawsBackground=\"YES\" id=\"AuN-e3-13P\">\n                            <font key=\"font\" metaFont=\"system\"/>\n                            <color key=\"textColor\" name=\"controlTextColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                            <color key=\"backgroundColor\" name=\"textBackgroundColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                        </textFieldCell>\n                    </textField>\n                    <textField verticalHuggingPriority=\"750\" fixedFrame=\"YES\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"hnP-yo-KBb\">\n                        <rect key=\"frame\" x=\"236\" y=\"189\" width=\"224\" height=\"21\"/>\n                        <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMinY=\"YES\"/>\n                        <textFieldCell key=\"cell\" scrollable=\"YES\" lineBreakMode=\"clipping\" selectable=\"YES\" editable=\"YES\" sendsActionOnEndEditing=\"YES\" state=\"on\" borderStyle=\"bezel\" placeholderString=\"Optional\" drawsBackground=\"YES\" id=\"ASh-mc-Uyt\">\n                            <font key=\"font\" metaFont=\"system\"/>\n                            <color key=\"textColor\" name=\"controlTextColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                            <color key=\"backgroundColor\" name=\"textBackgroundColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                        </textFieldCell>\n                    </textField>\n                    <textField verticalHuggingPriority=\"750\" fixedFrame=\"YES\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"MrH-Ft-1tn\">\n                        <rect key=\"frame\" x=\"236\" y=\"149\" width=\"224\" height=\"21\"/>\n                        <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMinY=\"YES\"/>\n                        <textFieldCell key=\"cell\" scrollable=\"YES\" lineBreakMode=\"clipping\" selectable=\"YES\" editable=\"YES\" sendsActionOnEndEditing=\"YES\" state=\"on\" borderStyle=\"bezel\" drawsBackground=\"YES\" id=\"3cf-F8-tBI\">\n                            <font key=\"font\" metaFont=\"system\"/>\n                            <color key=\"textColor\" name=\"controlTextColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                            <color key=\"backgroundColor\" name=\"textBackgroundColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                        </textFieldCell>\n                    </textField>\n                    <button verticalHuggingPriority=\"750\" fixedFrame=\"YES\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"nzj-fK-Vip\">\n                        <rect key=\"frame\" x=\"20\" y=\"22\" width=\"20\" height=\"20\"/>\n                        <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMinY=\"YES\"/>\n                        <buttonCell key=\"cell\" type=\"smallSquare\" bezelStyle=\"smallSquare\" image=\"NSAddTemplate\" imagePosition=\"overlaps\" alignment=\"center\" lineBreakMode=\"truncatingTail\" state=\"on\" borderStyle=\"border\" imageScaling=\"proportionallyDown\" inset=\"2\" id=\"Wxc-Ib-fdn\">\n                            <behavior key=\"behavior\" pushIn=\"YES\" lightByBackground=\"YES\" lightByGray=\"YES\"/>\n                            <font key=\"font\" metaFont=\"system\"/>\n                        </buttonCell>\n                        <connections>\n                            <action selector=\"onAdd:\" target=\"-2\" id=\"giW-QT-LEJ\"/>\n                        </connections>\n                    </button>\n                    <button verticalHuggingPriority=\"750\" fixedFrame=\"YES\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"jSv-em-0Gp\">\n                        <rect key=\"frame\" x=\"40\" y=\"22\" width=\"20\" height=\"20\"/>\n                        <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMinY=\"YES\"/>\n                        <buttonCell key=\"cell\" type=\"smallSquare\" bezelStyle=\"smallSquare\" image=\"NSRemoveTemplate\" imagePosition=\"overlaps\" alignment=\"center\" lineBreakMode=\"truncatingTail\" state=\"on\" borderStyle=\"border\" imageScaling=\"proportionallyDown\" inset=\"2\" id=\"IAV-Ta-HLA\">\n                            <behavior key=\"behavior\" pushIn=\"YES\" lightByBackground=\"YES\" lightByGray=\"YES\"/>\n                            <font key=\"font\" metaFont=\"system\"/>\n                        </buttonCell>\n                        <connections>\n                            <action selector=\"onDelete:\" target=\"-2\" id=\"1OX-xh-AJb\"/>\n                        </connections>\n                    </button>\n                    <textField horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"750\" fixedFrame=\"YES\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"uNY-1k-LwL\">\n                        <rect key=\"frame\" x=\"182\" y=\"229\" width=\"30\" height=\"16\"/>\n                        <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMinY=\"YES\"/>\n                        <textFieldCell key=\"cell\" scrollable=\"YES\" lineBreakMode=\"clipping\" sendsActionOnEndEditing=\"YES\" title=\"URL\" id=\"yBp-oB-gbL\">\n                            <font key=\"font\" metaFont=\"system\"/>\n                            <color key=\"textColor\" name=\"labelColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                            <color key=\"backgroundColor\" name=\"controlColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                        </textFieldCell>\n                    </textField>\n                    <textField horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"750\" fixedFrame=\"YES\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"P7L-eo-l3V\">\n                        <rect key=\"frame\" x=\"182\" y=\"192\" width=\"41\" height=\"16\"/>\n                        <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMinY=\"YES\"/>\n                        <textFieldCell key=\"cell\" scrollable=\"YES\" lineBreakMode=\"clipping\" sendsActionOnEndEditing=\"YES\" title=\"Token\" id=\"IrJ-D8-tlX\">\n                            <font key=\"font\" metaFont=\"system\"/>\n                            <color key=\"textColor\" name=\"labelColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                            <color key=\"backgroundColor\" name=\"controlColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                        </textFieldCell>\n                    </textField>\n                    <textField horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"750\" fixedFrame=\"YES\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"Fkq-Nl-5rY\">\n                        <rect key=\"frame\" x=\"182\" y=\"152\" width=\"42\" height=\"16\"/>\n                        <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMinY=\"YES\"/>\n                        <textFieldCell key=\"cell\" scrollable=\"YES\" lineBreakMode=\"clipping\" sendsActionOnEndEditing=\"YES\" title=\"Group\" id=\"f2p-qb-uuE\">\n                            <font key=\"font\" metaFont=\"system\"/>\n                            <color key=\"textColor\" name=\"labelColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                            <color key=\"backgroundColor\" name=\"controlColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                        </textFieldCell>\n                    </textField>\n                    <textField verticalHuggingPriority=\"750\" fixedFrame=\"YES\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"vQO-bq-Igs\">\n                        <rect key=\"frame\" x=\"236\" y=\"111\" width=\"224\" height=\"22\"/>\n                        <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMinY=\"YES\"/>\n                        <textFieldCell key=\"cell\" scrollable=\"YES\" lineBreakMode=\"clipping\" selectable=\"YES\" editable=\"YES\" sendsActionOnEndEditing=\"YES\" state=\"on\" borderStyle=\"bezel\" placeholderString=\"Optional\" drawsBackground=\"YES\" id=\"3kt-n3-uTF\">\n                            <font key=\"font\" metaFont=\"system\"/>\n                            <color key=\"textColor\" name=\"controlTextColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                            <color key=\"backgroundColor\" name=\"textBackgroundColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                        </textFieldCell>\n                    </textField>\n                    <textField horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"750\" fixedFrame=\"YES\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"XLx-TZ-soe\">\n                        <rect key=\"frame\" x=\"182\" y=\"113\" width=\"43\" height=\"18\"/>\n                        <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMinY=\"YES\"/>\n                        <textFieldCell key=\"cell\" scrollable=\"YES\" lineBreakMode=\"clipping\" sendsActionOnEndEditing=\"YES\" title=\"Count\" id=\"wbG-HT-bdN\">\n                            <font key=\"font\" metaFont=\"system\"/>\n                            <color key=\"textColor\" name=\"labelColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                            <color key=\"backgroundColor\" name=\"controlColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                        </textFieldCell>\n                    </textField>\n                    <scrollView focusRingType=\"none\" fixedFrame=\"YES\" autohidesScrollers=\"YES\" horizontalLineScroll=\"19\" horizontalPageScroll=\"10\" verticalLineScroll=\"19\" verticalPageScroll=\"10\" usesPredominantAxisScrolling=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"shT-FD-AWs\">\n                        <rect key=\"frame\" x=\"20\" y=\"49\" width=\"156\" height=\"198\"/>\n                        <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMinY=\"YES\"/>\n                        <clipView key=\"contentView\" focusRingType=\"none\" drawsBackground=\"NO\" id=\"zJf-T0-5ju\">\n                            <rect key=\"frame\" x=\"1\" y=\"1\" width=\"154\" height=\"196\"/>\n                            <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                            <subviews>\n                                <tableView focusRingType=\"none\" verticalHuggingPriority=\"750\" allowsExpansionToolTips=\"YES\" columnAutoresizingStyle=\"lastColumnOnly\" columnReordering=\"NO\" columnSelection=\"YES\" multipleSelection=\"NO\" emptySelection=\"NO\" autosaveColumns=\"NO\" id=\"go8-dc-8a6\">\n                                    <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"154\" height=\"196\"/>\n                                    <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                                    <size key=\"intercellSpacing\" width=\"3\" height=\"2\"/>\n                                    <color key=\"backgroundColor\" name=\"controlBackgroundColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                    <color key=\"gridColor\" name=\"gridColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                    <tableColumns>\n                                        <tableColumn identifier=\"status\" width=\"20\" minWidth=\"10\" maxWidth=\"3.4028234663852886e+38\" id=\"pQE-hc-jk2\">\n                                            <tableHeaderCell key=\"headerCell\" lineBreakMode=\"truncatingTail\" borderStyle=\"border\" alignment=\"left\">\n                                                <color key=\"textColor\" name=\"headerTextColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                <color key=\"backgroundColor\" white=\"0.0\" alpha=\"0.0\" colorSpace=\"calibratedWhite\"/>\n                                            </tableHeaderCell>\n                                            <imageCell key=\"dataCell\" refusesFirstResponder=\"YES\" alignment=\"left\" identifier=\"status\" imageScaling=\"proportionallyDown\" id=\"GWO-Q7-6lA\"/>\n                                            <tableColumnResizingMask key=\"resizingMask\" resizeWithTable=\"YES\" userResizable=\"YES\"/>\n                                        </tableColumn>\n                                        <tableColumn identifier=\"main\" width=\"128\" minWidth=\"40\" maxWidth=\"1000\" id=\"3xd-Hy-qcx\">\n                                            <tableHeaderCell key=\"headerCell\" lineBreakMode=\"truncatingTail\" borderStyle=\"border\">\n                                                <color key=\"textColor\" name=\"headerTextColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                <color key=\"backgroundColor\" name=\"headerColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                            </tableHeaderCell>\n                                            <textFieldCell key=\"dataCell\" lineBreakMode=\"truncatingTail\" selectable=\"YES\" editable=\"YES\" sendsActionOnEndEditing=\"YES\" identifier=\"main\" title=\"Text\" id=\"ik7-wS-gok\">\n                                                <font key=\"font\" metaFont=\"system\"/>\n                                                <color key=\"textColor\" name=\"controlTextColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                <color key=\"backgroundColor\" name=\"controlColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                            </textFieldCell>\n                                            <tableColumnResizingMask key=\"resizingMask\" resizeWithTable=\"YES\" userResizable=\"YES\"/>\n                                        </tableColumn>\n                                    </tableColumns>\n                                    <connections>\n                                        <outlet property=\"dataSource\" destination=\"-2\" id=\"jQk-FD-T8P\"/>\n                                        <outlet property=\"delegate\" destination=\"-2\" id=\"8ZO-Kd-bCj\"/>\n                                    </connections>\n                                </tableView>\n                            </subviews>\n                            <nil key=\"backgroundColor\"/>\n                        </clipView>\n                        <scroller key=\"horizontalScroller\" hidden=\"YES\" wantsLayer=\"YES\" verticalHuggingPriority=\"750\" horizontal=\"YES\" id=\"r2d-RN-LC6\">\n                            <rect key=\"frame\" x=\"1\" y=\"168\" width=\"154\" height=\"16\"/>\n                            <autoresizingMask key=\"autoresizingMask\"/>\n                        </scroller>\n                        <scroller key=\"verticalScroller\" hidden=\"YES\" wantsLayer=\"YES\" verticalHuggingPriority=\"750\" horizontal=\"NO\" id=\"Kag-9R-Vsj\">\n                            <rect key=\"frame\" x=\"224\" y=\"17\" width=\"15\" height=\"102\"/>\n                            <autoresizingMask key=\"autoresizingMask\"/>\n                        </scroller>\n                    </scrollView>\n                    <button verticalHuggingPriority=\"750\" fixedFrame=\"YES\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"rC3-mg-tMh\">\n                        <rect key=\"frame\" x=\"384\" y=\"13\" width=\"82\" height=\"32\"/>\n                        <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMinY=\"YES\"/>\n                        <buttonCell key=\"cell\" type=\"push\" title=\"OK\" bezelStyle=\"rounded\" alignment=\"center\" borderStyle=\"border\" imageScaling=\"proportionallyDown\" inset=\"2\" id=\"CfK-8Y-YNP\">\n                            <behavior key=\"behavior\" pushIn=\"YES\" lightByBackground=\"YES\" lightByGray=\"YES\"/>\n                            <font key=\"font\" metaFont=\"system\"/>\n                            <string key=\"keyEquivalent\" base64-UTF8=\"YES\">\nDQ\n</string>\n                        </buttonCell>\n                        <connections>\n                            <action selector=\"onOk:\" target=\"-2\" id=\"dUz-Tf-zD1\"/>\n                        </connections>\n                    </button>\n                    <button verticalHuggingPriority=\"750\" fixedFrame=\"YES\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"3ho-wT-wnb\">\n                        <rect key=\"frame\" x=\"182\" y=\"47\" width=\"60\" height=\"18\"/>\n                        <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMinY=\"YES\"/>\n                        <buttonCell key=\"cell\" type=\"check\" title=\"Active\" bezelStyle=\"regularSquare\" imagePosition=\"left\" state=\"on\" inset=\"2\" id=\"xDA-ea-y72\">\n                            <behavior key=\"behavior\" changeContents=\"YES\" doesNotDimImage=\"YES\" lightByContents=\"YES\"/>\n                            <font key=\"font\" metaFont=\"system\"/>\n                        </buttonCell>\n                        <connections>\n                            <action selector=\"onActive:\" target=\"-2\" id=\"i6A-3s-dZK\"/>\n                        </connections>\n                    </button>\n                    <button verticalHuggingPriority=\"750\" fixedFrame=\"YES\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"OdW-yK-LQ8\">\n                        <rect key=\"frame\" x=\"367\" y=\"47\" width=\"95\" height=\"18\"/>\n                        <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMinY=\"YES\"/>\n                        <buttonCell key=\"cell\" type=\"check\" title=\"AutoUpdate\" bezelStyle=\"regularSquare\" imagePosition=\"left\" state=\"on\" inset=\"2\" id=\"wAH-F1-KhY\">\n                            <behavior key=\"behavior\" changeContents=\"YES\" doesNotDimImage=\"YES\" lightByContents=\"YES\"/>\n                            <font key=\"font\" metaFont=\"system\"/>\n                        </buttonCell>\n                        <connections>\n                            <action selector=\"onAutoUpdate:\" target=\"-2\" id=\"Pk7-GE-OEs\"/>\n                        </connections>\n                    </button>\n                    <textField verticalHuggingPriority=\"750\" fixedFrame=\"YES\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"j3v-6T-D7k\">\n                        <rect key=\"frame\" x=\"236\" y=\"71\" width=\"224\" height=\"22\"/>\n                        <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMinY=\"YES\"/>\n                        <textFieldCell key=\"cell\" scrollable=\"YES\" lineBreakMode=\"clipping\" selectable=\"YES\" editable=\"YES\" sendsActionOnEndEditing=\"YES\" state=\"on\" borderStyle=\"bezel\" placeholderString=\"Optional\" drawsBackground=\"YES\" id=\"H5J-cK-8xj\">\n                            <font key=\"font\" metaFont=\"system\"/>\n                            <color key=\"textColor\" name=\"controlTextColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                            <color key=\"backgroundColor\" name=\"textBackgroundColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                        </textFieldCell>\n                    </textField>\n                    <textField horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"750\" fixedFrame=\"YES\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"F0S-oz-cLq\">\n                        <rect key=\"frame\" x=\"182\" y=\"73\" width=\"43\" height=\"18\"/>\n                        <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMinY=\"YES\"/>\n                        <textFieldCell key=\"cell\" scrollable=\"YES\" lineBreakMode=\"clipping\" sendsActionOnEndEditing=\"YES\" title=\"Filter\" id=\"VWC-h6-dyf\">\n                            <font key=\"font\" metaFont=\"system\"/>\n                            <color key=\"textColor\" name=\"labelColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                            <color key=\"backgroundColor\" name=\"controlColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                        </textFieldCell>\n                    </textField>\n                    <button verticalHuggingPriority=\"750\" fixedFrame=\"YES\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"y17-6J-Txu\">\n                        <rect key=\"frame\" x=\"302\" y=\"13\" width=\"82\" height=\"32\"/>\n                        <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMinY=\"YES\"/>\n                        <buttonCell key=\"cell\" type=\"push\" title=\"Cancel\" bezelStyle=\"rounded\" alignment=\"center\" borderStyle=\"border\" imageScaling=\"proportionallyDown\" inset=\"2\" id=\"mdP-Aw-g2g\">\n                            <behavior key=\"behavior\" pushIn=\"YES\" lightByBackground=\"YES\" lightByGray=\"YES\"/>\n                            <font key=\"font\" metaFont=\"system\"/>\n                            <string key=\"keyEquivalent\" base64-UTF8=\"YES\">\nGw\n</string>\n                        </buttonCell>\n                        <connections>\n                            <action selector=\"onCalcel:\" target=\"-2\" id=\"3Hm-x8-GzA\"/>\n                        </connections>\n                    </button>\n                </subviews>\n            </view>\n            <connections>\n                <outlet property=\"delegate\" destination=\"-2\" id=\"0bl-1N-AYu\"/>\n            </connections>\n            <point key=\"canvasLocation\" x=\"140\" y=\"136\"/>\n        </window>\n    </objects>\n    <resources>\n        <image name=\"NSAddTemplate\" width=\"11\" height=\"11\"/>\n        <image name=\"NSRemoveTemplate\" width=\"11\" height=\"11\"/>\n    </resources>\n</document>\n"
  },
  {
    "path": "Trojan/WIndows/EditableNSTextView.swift",
    "content": "//\n//  EditableNSTextView.swift\n//  Trojan\n//\n//  Created by ParadiseDuo on 2020/4/7.\n//  Copyright © 2020 ParadiseDuo. All rights reserved.\n//\n\nimport Cocoa\n\nclass EditableNSTextView: NSTextView {\n\n    private let commandKey = NSEvent.ModifierFlags.command.rawValue\n    private let commandShiftKey = NSEvent.ModifierFlags.command.rawValue | NSEvent.ModifierFlags.shift.rawValue\n\n    override func performKeyEquivalent(with event: NSEvent) -> Bool {\n        if event.type == NSEvent.EventType.keyDown {\n            if (event.modifierFlags.rawValue & NSEvent.ModifierFlags.deviceIndependentFlagsMask.rawValue) == commandKey {\n                switch event.charactersIgnoringModifiers! {\n                case \"x\":\n                    if NSApp.sendAction(#selector(NSText.cut(_:)), to: nil, from: self) { return true }\n                case \"c\":\n                    if NSApp.sendAction(#selector(NSText.copy(_:)), to: nil, from: self) { return true }\n                case \"v\":\n                    if NSApp.sendAction(#selector(NSText.paste(_:)), to: nil, from: self) { return true }\n                case \"z\":\n                    if NSApp.sendAction(Selector((\"undo:\")), to: nil, from: self) { return true }\n                case \"a\":\n                    if NSApp.sendAction(#selector(NSResponder.selectAll(_:)), to: nil, from: self) { return true }\n                default:\n                    break\n                }\n            } else if (event.modifierFlags.rawValue & NSEvent.ModifierFlags.deviceIndependentFlagsMask.rawValue) == commandShiftKey {\n                if event.charactersIgnoringModifiers == \"Z\" {\n                    if NSApp.sendAction(Selector((\"redo:\")), to: nil, from: self) { return true }\n                }\n            }\n        }\n        return super.performKeyEquivalent(with: event)\n    }\n}\n"
  },
  {
    "path": "Trojan/WIndows/LogWindowController.swift",
    "content": "//\n//  LogWindowController.swift\n//  Trojan\n//\n//  Created by ParadiseDuo on 2020/3/31.\n//  Copyright © 2020 Mac. All rights reserved.\n//\n\nimport Cocoa\n\nclass LogWindowController: NSWindowController, NSWindowDelegate {\n\n    @IBOutlet weak var scrollView: NSScrollView!\n    @IBOutlet var textView: NSTextView!\n    \n    private var task: Process?\n    \n    override func windowDidLoad() {\n        super.windowDidLoad()\n        self.textView.isEditable = false\n        \n        self.textView.string = \"Log Path: \\(LOG_PATH)\\n\"\n        \n        let fileMgr = FileManager.default\n        if fileMgr.fileExists(atPath: LOG_PATH) {\n            self.tail()\n        } else {\n            NotificationCenter.default.addObserver(forName: TROJAN_START, object: nil, queue: OperationQueue.main) { (noti) in\n                if self.task == nil {\n                    self.tail()\n                }\n            }\n        }\n        NotificationCenter.default.addObserver(forName: LOG_CLEAN_FINISH, object: nil, queue: OperationQueue.main) { (noti) in\n            self.textView.string = \"Log Path: \\(LOG_PATH)\\n\"\n            self.textView.scrollToEndOfDocument(nil)\n        }\n    }\n    \n    private func tail() {\n        self.task = Process()\n        CommandLine.async(task: self.task!, command: \"tail -F -n 26 \\(LOG_PATH)\", output: { (line) in\n            self.textView.string += line\n            self.textView.scrollToEndOfDocument(nil)\n        }) { (finish) in\n            print(\"tail finish\")\n        }\n    }\n    \n    func windowWillClose(_ notification: Notification) {\n        self.task?.interrupt()\n        self.task = nil\n        \n        NotificationCenter.default.removeObserver(self)\n    }\n    \n}\n"
  },
  {
    "path": "Trojan/WIndows/LogWindowController.xib",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.Cocoa.XIB\" version=\"3.0\" toolsVersion=\"16096\" targetRuntime=\"MacOSX.Cocoa\" propertyAccessControl=\"none\" useAutolayout=\"YES\" customObjectInstantitationMethod=\"direct\">\n    <dependencies>\n        <deployment identifier=\"macosx\"/>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.CocoaPlugin\" version=\"16096\"/>\n        <capability name=\"documents saved in the Xcode 8 format\" minToolsVersion=\"8.0\"/>\n    </dependencies>\n    <objects>\n        <customObject id=\"-2\" userLabel=\"File's Owner\" customClass=\"LogWindowController\" customModule=\"Kcptun\" customModuleProvider=\"target\">\n            <connections>\n                <outlet property=\"scrollView\" destination=\"ENg-uG-Kqo\" id=\"OHx-iJ-Ee8\"/>\n                <outlet property=\"textView\" destination=\"gIL-vT-tjY\" id=\"Qvy-C1-kkn\"/>\n                <outlet property=\"window\" destination=\"F0z-JX-Cv5\" id=\"gIp-Ho-8D9\"/>\n            </connections>\n        </customObject>\n        <customObject id=\"-1\" userLabel=\"First Responder\" customClass=\"FirstResponder\"/>\n        <customObject id=\"-3\" userLabel=\"Application\" customClass=\"NSObject\"/>\n        <window title=\"Logs\" allowsToolTipsWhenApplicationIsInactive=\"NO\" autorecalculatesKeyViewLoop=\"NO\" releasedWhenClosed=\"NO\" animationBehavior=\"default\" id=\"F0z-JX-Cv5\">\n            <windowStyleMask key=\"styleMask\" titled=\"YES\" closable=\"YES\" miniaturizable=\"YES\" resizable=\"YES\"/>\n            <windowPositionMask key=\"initialPositionMask\" leftStrut=\"YES\" rightStrut=\"YES\" topStrut=\"YES\" bottomStrut=\"YES\"/>\n            <rect key=\"contentRect\" x=\"196\" y=\"240\" width=\"600\" height=\"600\"/>\n            <rect key=\"screenRect\" x=\"0.0\" y=\"0.0\" width=\"1680\" height=\"1027\"/>\n            <view key=\"contentView\" id=\"se5-gp-TjO\">\n                <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"600\" height=\"600\"/>\n                <autoresizingMask key=\"autoresizingMask\"/>\n                <subviews>\n                    <scrollView borderType=\"none\" horizontalLineScroll=\"10\" horizontalPageScroll=\"10\" verticalLineScroll=\"10\" verticalPageScroll=\"10\" hasHorizontalScroller=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"ENg-uG-Kqo\">\n                        <rect key=\"frame\" x=\"20\" y=\"20\" width=\"560\" height=\"560\"/>\n                        <clipView key=\"contentView\" drawsBackground=\"NO\" copiesOnScroll=\"NO\" id=\"Kbr-o6-7kH\">\n                            <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"545\" height=\"560\"/>\n                            <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                            <subviews>\n                                <textView importsGraphics=\"NO\" richText=\"NO\" verticallyResizable=\"YES\" spellingCorrection=\"YES\" smartInsertDelete=\"YES\" id=\"gIL-vT-tjY\">\n                                    <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"545\" height=\"560\"/>\n                                    <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                                    <color key=\"textColor\" name=\"textColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                    <color key=\"backgroundColor\" name=\"textBackgroundColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                    <size key=\"minSize\" width=\"545\" height=\"560\"/>\n                                    <size key=\"maxSize\" width=\"545\" height=\"10000000\"/>\n                                    <color key=\"insertionPointColor\" name=\"textColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                </textView>\n                            </subviews>\n                        </clipView>\n                        <scroller key=\"horizontalScroller\" hidden=\"YES\" verticalHuggingPriority=\"750\" horizontal=\"YES\" id=\"GYo-V3-LBg\">\n                            <rect key=\"frame\" x=\"-100\" y=\"-100\" width=\"225\" height=\"15\"/>\n                            <autoresizingMask key=\"autoresizingMask\"/>\n                        </scroller>\n                        <scroller key=\"verticalScroller\" verticalHuggingPriority=\"750\" horizontal=\"NO\" id=\"9v3-fc-IoY\">\n                            <rect key=\"frame\" x=\"545\" y=\"0.0\" width=\"15\" height=\"560\"/>\n                            <autoresizingMask key=\"autoresizingMask\"/>\n                        </scroller>\n                    </scrollView>\n                </subviews>\n                <constraints>\n                    <constraint firstAttribute=\"bottom\" secondItem=\"ENg-uG-Kqo\" secondAttribute=\"bottom\" constant=\"20\" id=\"9Gs-04-E3j\"/>\n                    <constraint firstAttribute=\"trailing\" secondItem=\"ENg-uG-Kqo\" secondAttribute=\"trailing\" constant=\"20\" id=\"GxL-h0-JJi\"/>\n                    <constraint firstItem=\"ENg-uG-Kqo\" firstAttribute=\"top\" secondItem=\"se5-gp-TjO\" secondAttribute=\"top\" constant=\"20\" id=\"WtS-lY-2lm\"/>\n                    <constraint firstItem=\"ENg-uG-Kqo\" firstAttribute=\"leading\" secondItem=\"se5-gp-TjO\" secondAttribute=\"leading\" constant=\"20\" id=\"ZNg-je-dsg\"/>\n                </constraints>\n            </view>\n            <connections>\n                <outlet property=\"delegate\" destination=\"-2\" id=\"0bl-1N-AYu\"/>\n            </connections>\n            <point key=\"canvasLocation\" x=\"139\" y=\"147\"/>\n        </window>\n    </objects>\n</document>\n"
  },
  {
    "path": "Trojan/WIndows/SettingWindowController.swift",
    "content": "//\n//  SettingWindowController.swift\n//  TrojanMac\n//\n//  Created by ParadiseDuo on 2020/4/7.\n//  Copyright © 2020 ParadiseDuo. All rights reserved.\n//\n\nimport Cocoa\n\nlet tableViewDragType: String = \"trojan.server.profile.data\"\n\nclass SettingWindowController: NSWindowController, NSWindowDelegate, NSTableViewDataSource, NSTableViewDelegate, NSTextViewDelegate, NSTextFieldDelegate {\n\n    @IBOutlet weak var scroll: NSScrollView!\n    @IBOutlet var textView: EditableNSTextView!\n    \n    @IBOutlet weak var profilesTableView: NSTableView!\n    @IBOutlet weak var copyButton: NSButton!\n    @IBOutlet weak var removeButton: NSButton!\n    \n    @IBOutlet weak var remoteAddress: NSTextField!\n    @IBOutlet weak var remotePort: NSTextField!\n    @IBOutlet weak var password: NSTextField!\n    @IBOutlet weak var localAddress: NSTextField!\n    @IBOutlet weak var localPort: NSTextField!\n    \n    private var closeFromSave = false\n    private var selectedProfile = Profile.shared\n    \n    private var selectClient: Client!\n    \n    override func windowDidLoad() {\n        super.windowDidLoad()\n        self.profilesTableView.delegate = self\n        self.profilesTableView.dataSource = self\n        self.textView.isAutomaticQuoteSubstitutionEnabled = false\n        self.textView.delegate = self\n        if let p = Profiles.shared.itemAtIndex(0) {\n            self.textView.string = p.jsonString\n        }\n        // Implement this method to handle any initialization after your window controller's window has been loaded from its nib file.\n        self.remoteAddress.delegate = self\n        self.remotePort.delegate = self\n        self.password.delegate = self\n        self.localPort.delegate = self\n        self.localAddress.delegate = self\n    }\n    \n    private func updateWithClient(c: Client) {\n        self.selectClient = c\n        self.remoteAddress.stringValue = c.remote_addr\n        self.remotePort.stringValue = \"\\(c.remote_port)\"\n        self.password.stringValue = c.password.first ?? \"\"\n        self.localAddress.stringValue = c.local_addr\n        self.localPort.stringValue = \"\\(c.local_port)\"\n    }\n    \n    private func decodeJSON(handle: (_ client: Client)->()) {\n        do {\n            if let d = self.textView.string.data(using: String.Encoding.utf8) {\n                let f = try JSONDecoder().decode(Client.self, from: d)\n                if f.local_port > 65535 || f.remote_port > 65535 || f.local_port < 1 || f.remote_port < 1 {\n                    self.shakeWindows()\n                } else {\n                    handle(f)\n                }\n            } else {\n                self.shakeWindows()\n            }\n        }catch let e {\n            print(\"decodeJSON\", e)\n            self.shakeWindows()\n        }\n    }\n    \n    @IBAction func saveTap(_ sender: NSButton) {\n        self.decodeJSON {[weak self] (c) in\n            guard let w = self else {return}\n            w.selectedProfile.client = c\n            Profiles.shared.update(w.selectedProfile)\n            Profiles.shared.save()\n            w.closeFromSave = true\n            if w.selectedProfile.equal(profile: Profile.shared) {\n                Profile.shared.client = c\n                Profile.shared.name = w.selectedProfile.name\n                NotificationCenter.default.post(name: NOTIFY_SERVER_PROFILES_CHANGED, object: nil)\n            } else {\n                NotificationCenter.default.post(name: NOTIFY_REFRESH_SERVERS, object: nil)\n            }\n        }\n    }\n    \n    @IBAction func cancelTap(_ sender: NSButton) {\n        self.window?.close()\n    }\n    \n    func updateProfileBoxVisible() {\n        if Profiles.shared.count() <= 1 {\n            removeButton.isEnabled = false\n        }else{\n            removeButton.isEnabled = true\n        }\n    }\n    \n    @IBAction func addTap(_ sender: NSButton) {\n        self.decodeJSON {[weak self] (c) in\n            guard let w = self else {return}\n            w.profilesTableView.beginUpdates()\n            let p = Profile()\n            p.name = \"New Server\\(Profiles.shared.count())\"\n            p.client = c\n            p.client.remote_port = 443\n            p.client.remote_addr = \"NewServer\\(Profiles.shared.count())\"\n            p.client.password = [\"NewServer\\(Profiles.shared.count())\"]\n            w.selectedProfile = p\n            if Profiles.shared.add(p) {\n                let index = IndexSet(integer: Profiles.shared.count()-1)\n                w.profilesTableView.insertRows(at: index, withAnimation: .effectFade)\n                w.profilesTableView.scrollRowToVisible(Profiles.shared.count()-1)\n                w.profilesTableView.selectRowIndexes(index, byExtendingSelection: false)\n                w.profilesTableView.endUpdates()\n            } else {\n                w.shakeWindows()\n            }\n        }\n    }\n    \n    @IBAction func copyTap(_ sender: NSButton) {\n        \n    }\n    \n    @IBAction func removeTap(_ sender: NSButton) {\n        if Profiles.shared.count() > 1 {\n            let index = IndexSet(integer: self.profilesTableView.selectedRow)\n            let p = Profiles.shared.itemAtIndex(self.profilesTableView.selectedRow)\n            if Profile.shared.equal(profile: p!) {\n                self.shakeWindows()\n                return\n            }\n            self.profilesTableView.beginUpdates()\n            Profiles.shared.remove(self.selectedProfile)\n            self.profilesTableView.removeRows(at: index, withAnimation: .effectFade)\n            self.profilesTableView.selectRowIndexes(index, byExtendingSelection: false)\n            self.profilesTableView.endUpdates()\n        } else {\n            self.shakeWindows()\n        }\n    }\n    \n    //--------------------------------------------------\n    // MARK: For NSTableViewDataSource\n    \n    func numberOfRows(in tableView: NSTableView) -> Int {\n        return Profiles.shared.count()\n    }\n    \n    func tableView(_ tableView: NSTableView, objectValueFor tableColumn: NSTableColumn?, row: Int) -> Any? {\n        let (title, isActive) = self.getDataAtRow(row)\n        if tableColumn?.identifier == NSUserInterfaceItemIdentifier(\"main\") {\n            return title\n        } else if tableColumn?.identifier == NSUserInterfaceItemIdentifier(\"status\") {\n            if isActive {\n                return NSImage(named: NSImage.Name(\"NSMenuOnStateTemplate\"))\n            } else {\n                return nil\n            }\n        }\n        return \"\"\n    }\n    \n    func tableView(_ tableView: NSTableView, setObjectValue object: Any?, for tableColumn: NSTableColumn?, row: Int) {\n        let p = Profiles.shared.itemAtIndex(row)\n        if p != nil {\n            self.selectedProfile.name = object as! String\n            self.selectedProfile.client = p!.client\n        }\n    }\n    \n    // MARK: Drag & Drop reorder rows\n    \n    func tableView(_ tableView: NSTableView, pasteboardWriterForRow row: Int) -> NSPasteboardWriting? {\n        let item = NSPasteboardItem()\n        item.setString(String(row), forType: NSPasteboard.PasteboardType(rawValue: tableViewDragType))\n        return item\n    }\n    \n    func tableView(_ tableView: NSTableView, validateDrop info: NSDraggingInfo, proposedRow row: Int, proposedDropOperation dropOperation: NSTableView.DropOperation) -> NSDragOperation {\n        if dropOperation == .above {\n            return .move\n        }\n        return NSDragOperation()\n    }\n    \n    func tableView(_ tableView: NSTableView, acceptDrop info: NSDraggingInfo, row: Int, dropOperation: NSTableView.DropOperation) -> Bool {\n        var oldIndexes = [Int]()\n        info.enumerateDraggingItems(options: [], for: tableView, classes: [NSPasteboardItem.self], searchOptions: [:], using: {\n            (draggingItem: NSDraggingItem, idx: Int, stop: UnsafeMutablePointer<ObjCBool>) in\n            if let str = (draggingItem.item as! NSPasteboardItem).string(forType: NSPasteboard.PasteboardType(rawValue: tableViewDragType)), let index = Int(str) {\n                oldIndexes.append(index)\n            }\n        })\n        var oldIndexOffset = 0\n        var newIndexOffset = 0\n        \n        tableView.beginUpdates()\n        let mgr = Profiles.shared\n        for oldIndex in oldIndexes {\n            if oldIndex < row {\n                let o = mgr.remove(at: oldIndex + oldIndexOffset)\n                mgr.insert(o, at:row - 1)\n                tableView.moveRow(at: oldIndex + oldIndexOffset, to: row - 1)\n                oldIndexOffset -= 1\n            } else {\n                let o = mgr.remove(at: oldIndex)\n                mgr.insert(o, at:row + newIndexOffset)\n                tableView.moveRow(at: oldIndex, to: row + newIndexOffset)\n                newIndexOffset += 1\n            }\n        }\n        tableView.endUpdates()\n        \n        return true\n    }\n    \n    //--------------------------------------------------\n    // For NSTableViewDelegate\n    \n    func tableView(_ tableView: NSTableView, shouldEdit tableColumn: NSTableColumn?, row: Int) -> Bool {\n        return true\n    }\n    \n    func tableView(_ tableView: NSTableView, shouldSelectRow row: Int) -> Bool {\n        return true\n    }\n    \n    func tableViewSelectionDidChange(_ notification: Notification) {\n        if self.profilesTableView.selectedRow >= 0 {\n            let s = Profiles.shared.itemAtIndex(self.profilesTableView.selectedRow)\n            if s != nil {\n                self.selectedProfile = s!\n                self.textView.string = s!.jsonString\n                self.decodeJSON { [weak self] (c) in\n                    guard let w = self else {return}\n                    w.updateWithClient(c: c)\n                }\n            }\n        } else {\n            let index = IndexSet(integer: Profiles.shared.count()-1)\n            self.profilesTableView.selectRowIndexes(index, byExtendingSelection: false)\n        }\n    }\n    \n    private func getDataAtRow(_ index:Int) -> (String, Bool) {\n        let profile = Profiles.shared.itemAtIndex(index)\n        if profile != nil {\n            return (profile!.name, Profile.shared.equal(profile: profile!))\n        } else {\n            return (\"\", false)\n        }\n    }\n    \n    func shakeWindows() {\n        let numberOfShakes:Int = 8\n        let durationOfShake:Float = 0.5\n        let vigourOfShake:Float = 0.05\n        \n        let frame:CGRect = (window?.frame)!\n        let shakeAnimation = CAKeyframeAnimation()\n        \n        let shakePath = CGMutablePath()\n        \n        shakePath.move(to: CGPoint(x:NSMinX(frame), y:NSMinY(frame)))\n        \n        for _ in 1...numberOfShakes{\n            shakePath.addLine(to: CGPoint(x: NSMinX(frame) - frame.size.width * CGFloat(vigourOfShake), y: NSMinY(frame)))\n            shakePath.addLine(to: CGPoint(x: NSMinX(frame) + frame.size.width * CGFloat(vigourOfShake), y: NSMinY(frame)))\n        }\n        \n        shakePath.closeSubpath()\n        shakeAnimation.path = shakePath\n        shakeAnimation.duration = CFTimeInterval(durationOfShake)\n        window?.animations = [\"frameOrigin\":shakeAnimation]\n        window?.animator().setFrameOrigin(window!.frame.origin)\n    }\n    \n    func windowWillClose(_ notification: Notification) {\n        if !self.closeFromSave {\n            Profiles.shared.load()\n        }\n    }\n    \n    func textDidChange(_ notification: Notification) {\n        if let _ = notification.object as? NSTextView {\n            self.decodeJSON { [weak self] (c) in\n                guard let w = self else {return}\n                w.updateWithClient(c: c)\n            }\n        }\n    }\n    \n    func controlTextDidChange(_ obj: Notification) {\n        if let t = obj.object as? NSTextField {\n            switch t {\n            case self.remoteAddress:\n                self.selectClient.remote_addr = self.remoteAddress.stringValue\n                break\n            case self.remotePort:\n                if let p = Int(self.remotePort.stringValue) {\n                    self.selectClient.remote_port = p\n                } else {\n                    self.shakeWindows()\n                    return\n                }\n                break\n            case self.password:\n                self.selectClient.password = [self.password.stringValue]\n                break\n            case self.localAddress:\n                self.selectClient.local_addr = self.localAddress.stringValue\n                break\n            case self.localPort:\n                if let p = Int(self.localPort.stringValue) {\n                    self.selectClient.local_port = p\n                } else {\n                    self.shakeWindows()\n                    return\n                }\n                break\n            default:\n                break\n            }\n            self.textView.string = self.selectClient.jsonString()\n        }\n    }\n}\n"
  },
  {
    "path": "Trojan/WIndows/SettingsWIndowController.swift",
    "content": "//\n//  SettingsWIndowController.swift\n//  Trojan\n//\n//  Created by ParadiseDuo on 2020/5/23.\n//  Copyright © 2020 ParadiseDuo. All rights reserved.\n//\n\nimport Cocoa\n\nclass SettingsWIndowController: NSWindowController, NSWindowDelegate, NSTextFieldDelegate {\n    \n    @IBOutlet weak var toolbar: NSToolbar!\n    @IBOutlet weak var tabView: NSTabView!\n    \n    @IBOutlet weak var launchAtLogin: NSButton!\n    \n    @IBOutlet weak var httpAddress: NSTextField!\n    @IBOutlet weak var httpPort: NSTextField!\n    \n    private var httpHasChanged = false\n    \n    override func windowDidLoad() {\n        super.windowDidLoad()\n\n        window?.delegate = self\n        launchAtLogin.state = AppDelegate.getLauncherStatus() ? .on:.off\n        \n        httpAddress.delegate = self\n        httpPort.delegate = self\n    }\n    \n    override func awakeFromNib() {\n        super.awakeFromNib()\n        window?.center()\n    }\n    \n    func controlTextDidChange(_ obj: Notification) {\n        if let t = obj.object as? NSTextField {\n            switch t {\n            case httpPort, httpAddress:\n                httpHasChanged = true\n                break\n            default:\n                break\n            }\n        }\n    }\n    \n    @IBAction func toolbarAction(_ sender: NSToolbarItem) {\n        tabView.selectTabViewItem(withIdentifier: sender.itemIdentifier)\n    }\n    \n    @IBAction func onHTTPSaveTap(_ sender: NSButton) {\n        if httpHasChanged {\n            NotificationCenter.default.post(name: NOTIFY_HTTP_CONF_CHANGED, object: nil)\n        }\n    }\n    \n    @IBAction func showNetwork(_ sender: NSButton) {\n        NotificationCenter.default.post(Notification(name: NOTIFY_SHOW_NETWORK_MONITOR))\n    }\n    \n    @IBAction func httpButtonTap(_ sender: NSButton) {\n        httpHasChanged = true\n    }\n    \n    func windowWillClose(_ notification: Notification) {\n        AppDelegate.setLauncherStatus(open: launchAtLogin.state == .on ? true:false)\n    }\n}\n"
  },
  {
    "path": "Trojan/WIndows/SubscribePreferenceWindowController.swift",
    "content": "//\n//  SubscribePreferenceWindowController.swift\n//  Trojan\n//\n//  Created by ParadiseDuo on 2020/10/9.\n//  Copyright © 2020 Mac. All rights reserved.\n//\n\nimport Cocoa\n\nclass SubscribePreferenceWindowController: NSWindowController, NSTableViewDataSource, NSTableViewDelegate {\n\n    @IBOutlet weak var FilterTextField: NSTextField!\n    @IBOutlet weak var OKButton: NSButton!\n\n    @IBOutlet weak var ActiveButton: NSButton!\n    @IBOutlet weak var AutoUpdateButton: NSButton!\n    \n    @IBOutlet weak var FeedTextField: NSTextField!\n    @IBOutlet weak var TokenTextField: NSTextField!\n    @IBOutlet weak var GroupTextField: NSTextField!\n    @IBOutlet weak var MaxCountTextField: NSTextField!\n    @IBOutlet weak var SubscribeTableView: NSTableView!\n\n    @IBOutlet weak var AddSubscribeBtn: NSButton!\n    @IBOutlet weak var DeleteSubscribeBtn: NSButton!\n    \n    var sbMgr: SubscribeManager!\n    var defaults: UserDefaults!\n    let tableViewDragType: String = \"subscribe.host\"\n    var editingSubscribe: Subscribe!\n    \n    override func windowDidLoad() {\n        super.windowDidLoad()\n\n        sbMgr = SubscribeManager.instance\n        defaults = UserDefaults.standard\n        SubscribeTableView.reloadData()\n        updateSubscribeBoxVisible()\n    }\n    \n    override func awakeFromNib() {\n        super.awakeFromNib()\n        SubscribeTableView.registerForDraggedTypes(convertToNSPasteboardPasteboardTypeArray([tableViewDragType]))\n        SubscribeTableView.allowsMultipleSelection = true\n        window?.center()\n    }\n    \n    @IBAction func onOk(_ sender: NSButton) {\n        if editingSubscribe != nil {\n            if !editingSubscribe.feedValidator() {\n                // Done Shake window\n                shakeWindows()\n                return\n            }\n            \n            if editingSubscribe.isActive{\n                editingSubscribe.updateServerFromFeed(useProxy: true) {\n                    DispatchQueue.main.async {\n                        if UserDefaults.standard.bool(forKey: USERDEFAULTS_SPEED_TEST_AFTER_SUBSCRIPTION) {\n//                            ConnectTestigManager.shared.start()\n                        }\n                    }\n                }\n            }\n        }\n        sbMgr.save()\n        window?.performClose(self)\n    }\n    \n    @IBAction func onCalcel(_ sender: NSButton) {\n        sbMgr.reload()\n        window?.performClose(self)\n    }\n    \n    @IBAction func onActive(_ sender: NSButton){\n        if editingSubscribe != nil {\n            if sender.state == .off {\n                editingSubscribe.diactivateSubscribe()\n                AutoUpdateButton.isEnabled = false\n            }else{\n                editingSubscribe.activateSubscribe()\n                AutoUpdateButton.isEnabled = true\n            }\n        }\n    }\n    \n    @IBAction func onAutoUpdate(_ sender: NSButton){\n        if editingSubscribe != nil {\n            if sender.state == .off {\n                editingSubscribe.disableAutoUpdate()\n            }else{\n                editingSubscribe.enableAutoUpdate()\n            }\n        }\n    }\n\n    \n    @IBAction func onAdd(_ sender: NSButton) {\n        if editingSubscribe != nil && !editingSubscribe.feedValidator(){\n            shakeWindows()\n            return\n        }\n        SubscribeTableView.beginUpdates()\n        let subscribe = Subscribe(initUrlString: \"\", initGroupName: \"\", initToken: \"\", initFilter: \"\", initMaxCount: -1, initActive: true,initAutoUpdate: true)\n        sbMgr.subscribes.append(subscribe)\n        \n        let index = IndexSet(integer: sbMgr.subscribes.count-1)\n        SubscribeTableView.insertRows(at: index, withAnimation: .effectFade)\n        \n        self.SubscribeTableView.scrollRowToVisible(self.sbMgr.subscribes.count-1)\n        self.SubscribeTableView.selectRowIndexes(index, byExtendingSelection: false)\n        SubscribeTableView.endUpdates()\n        updateSubscribeBoxVisible()\n    }\n    \n    @IBAction func onDelete(_ sender: NSButton) {\n        let index = Int(SubscribeTableView.selectedRowIndexes.first!)\n        var deleteCount = 0\n        var deleteGroupName = [String]()\n        if index >= 0 {\n            SubscribeTableView.beginUpdates()\n            for (_, toDeleteIndex) in SubscribeTableView.selectedRowIndexes.enumerated() {\n                let s = sbMgr.deleteSubscribe(atIndex: toDeleteIndex - deleteCount)\n                deleteGroupName.append(s.groupName)\n                SubscribeTableView.removeRows(at: IndexSet(integer: toDeleteIndex - deleteCount), withAnimation: .effectFade)\n                deleteCount += 1\n                if sbMgr.subscribes.count == 0 {\n                    cleanField()\n                }\n            }\n            SubscribeTableView.endUpdates()\n        }\n        self.SubscribeTableView.scrollRowToVisible(index - 1)\n        self.SubscribeTableView.selectRowIndexes(IndexSet(integer: index - 1), byExtendingSelection: false)\n        updateSubscribeBoxVisible()\n//        if UserDefaults.standard.bool(forKey: USERDEFAULTS_REMOVE_NODE_AFTER_DELETE_SUBSCRIPTION) {\n//            for g in deleteGroupName {\n//                if g.count > 0 {\n//                    ServerProfileManager.instance.profiles = ServerProfileManager.instance.profiles.filter { $0.ssrGroup != g}\n//                    print(g, ServerProfileManager.instance.profiles.count)\n//                }\n//            }\n//            ServerProfileManager.instance.save()\n//            NotificationCenter.default.post(name: NOTIFY_UPDATE_MAINMENU, object: nil)\n//        }\n    }\n    \n    func updateSubscribeBoxVisible() {\n        if sbMgr.subscribes.count <= 0 {\n            DeleteSubscribeBtn.isEnabled = false\n            FeedTextField.isEnabled = false\n            TokenTextField.isEnabled = false\n            GroupTextField.isEnabled = false\n            MaxCountTextField.isEnabled = false\n            ActiveButton.isEnabled = false\n            AutoUpdateButton.isEnabled = false\n            FilterTextField.isEnabled = false\n        }else{\n            DeleteSubscribeBtn.isEnabled = true\n            FeedTextField.isEnabled = true\n            TokenTextField.isEnabled = true\n            GroupTextField.isEnabled = true\n            MaxCountTextField.isEnabled = true\n            ActiveButton.isEnabled = true\n            AutoUpdateButton.isEnabled = true\n            FilterTextField.isEnabled = true\n        }\n    }\n    \n    func bindSubscribe(_ index:Int) {\n        if index >= 0 && index < sbMgr.subscribes.count {\n            editingSubscribe = sbMgr.subscribes[index]\n            \n            FeedTextField.bind(NSBindingName(rawValue: \"value\"), to: editingSubscribe!, withKeyPath: \"subscribeFeed\", options: convertToOptionalNSBindingOptionDictionary([convertFromNSBindingOption(NSBindingOption.continuouslyUpdatesValue): true]))\n            TokenTextField.bind(NSBindingName(rawValue: \"value\"), to: editingSubscribe!, withKeyPath: \"token\", options: convertToOptionalNSBindingOptionDictionary([convertFromNSBindingOption(NSBindingOption.continuouslyUpdatesValue): true]))\n            GroupTextField.bind(NSBindingName(rawValue: \"value\"), to: editingSubscribe!, withKeyPath: \"groupName\", options: convertToOptionalNSBindingOptionDictionary([convertFromNSBindingOption(NSBindingOption.continuouslyUpdatesValue): true]))\n            MaxCountTextField.bind(NSBindingName(rawValue: \"value\"), to: editingSubscribe!, withKeyPath: \"maxCount\", options: convertToOptionalNSBindingOptionDictionary([convertFromNSBindingOption(NSBindingOption.continuouslyUpdatesValue): true]))\n            ActiveButton.bind(NSBindingName(rawValue: \"value\"), to: editingSubscribe!, withKeyPath: \"isActive\", options: convertToOptionalNSBindingOptionDictionary([convertFromNSBindingOption(NSBindingOption.continuouslyUpdatesValue): true]))\n            AutoUpdateButton.bind(NSBindingName(rawValue: \"value\"), to: editingSubscribe!, withKeyPath: \"autoUpdateEnable\", options: convertToOptionalNSBindingOptionDictionary([convertFromNSBindingOption(NSBindingOption.continuouslyUpdatesValue): true]))\n            FilterTextField.bind(NSBindingName(rawValue: \"value\"), to: editingSubscribe!, withKeyPath: \"filter\", options: convertToOptionalNSBindingOptionDictionary([convertFromNSBindingOption(NSBindingOption.continuouslyUpdatesValue): true]))\n            \n        } else {\n            editingSubscribe = nil\n            FeedTextField.unbind(convertToNSBindingName(\"value\"))\n            TokenTextField.unbind(convertToNSBindingName(\"value\"))\n            GroupTextField.unbind(convertToNSBindingName(\"value\"))\n            MaxCountTextField.unbind(convertToNSBindingName(\"value\"))\n            ActiveButton.unbind(convertToNSBindingName(\"value\"))\n            AutoUpdateButton.unbind(convertToNSBindingName(\"value\"))\n            FilterTextField.unbind(convertToNSBindingName(\"value\"))\n        }\n    }\n    \n    func getDataAtRow(_ index:Int) -> String {\n        if index >= sbMgr.subscribes.count {\n            return \"\"\n        }\n        if sbMgr.subscribes[index].groupName != \"\" {\n            return sbMgr.subscribes[index].groupName\n        }\n        return sbMgr.subscribes[index].subscribeFeed\n    }\n    \n    // MARK: For NSTableViewDataSource\n    \n    func numberOfRows(in tableView: NSTableView) -> Int {\n        if let mgr = sbMgr {\n            return mgr.subscribes.count\n        }\n        return 0\n    }\n    \n    func tableView(_ tableView: NSTableView\n        , objectValueFor tableColumn: NSTableColumn?\n        , row: Int) -> Any? {\n        \n        let title = getDataAtRow(row)\n        \n        if tableColumn?.identifier == NSUserInterfaceItemIdentifier(\"main\") {\n            if title != \"\" {return title}\n            else {return \"S\"}\n        } else if tableColumn?.identifier == NSUserInterfaceItemIdentifier(\"status\") {\n\n            return NSImage(named: NSImage.Name(\"menu_icon\"))\n\n        }\n\n        return \"\"\n    }\n    \n    // MARK: Drag & Drop reorder rows\n    \n    func tableView(_ tableView: NSTableView, pasteboardWriterForRow row: Int) -> NSPasteboardWriting? {\n        let item = NSPasteboardItem()\n        item.setString(String(row), forType: convertToNSPasteboardPasteboardType(tableViewDragType))\n        return item\n    }\n    \n    func tableView(_ tableView: NSTableView, validateDrop info: NSDraggingInfo, proposedRow row: Int\n        , proposedDropOperation dropOperation: NSTableView.DropOperation) -> NSDragOperation {\n        if dropOperation == .above {\n            return .move\n        }\n        return NSDragOperation()\n    }\n    \n    func tableView(_ tableView: NSTableView, acceptDrop info: NSDraggingInfo\n        , row: Int, dropOperation: NSTableView.DropOperation) -> Bool {\n        if let mgr = sbMgr {\n            var oldIndexes = [Int]()\n            info.enumerateDraggingItems(options: [], for: tableView, classes: [NSPasteboardItem.self], searchOptions: [:], using: {\n                (draggingItem: NSDraggingItem, idx: Int, stop: UnsafeMutablePointer<ObjCBool>) in\n                if let str = (draggingItem.item as! NSPasteboardItem).string(forType: NSPasteboard.PasteboardType(rawValue: self.tableViewDragType)), let index = Int(str) {\n                    oldIndexes.append(index)\n                }\n            })\n            \n            var oldIndexOffset = 0\n            var newIndexOffset = 0\n            \n            // For simplicity, the code below uses `tableView.moveRowAtIndex` to move rows around directly.\n            // You may want to move rows in your content array and then call `tableView.reloadData()` instead.\n            tableView.beginUpdates()\n            for oldIndex in oldIndexes {\n                if oldIndex < row {\n                    let o = mgr.subscribes.remove(at: oldIndex + oldIndexOffset)\n                    mgr.subscribes.insert(o, at:row - 1)\n                    tableView.moveRow(at: oldIndex + oldIndexOffset, to: row - 1)\n                    oldIndexOffset -= 1\n                } else {\n                    let o = mgr.subscribes.remove(at: oldIndex)\n                    mgr.subscribes.insert(o, at:row + newIndexOffset)\n                    tableView.moveRow(at: oldIndex, to: row + newIndexOffset)\n                    newIndexOffset += 1\n                }\n            }\n            tableView.endUpdates()\n            \n            return true\n        }\n        return false\n    }\n    \n    //--------------------------------------------------\n    // For NSTableViewDelegate\n    \n    func tableView(_ tableView: NSTableView\n        , shouldEdit tableColumn: NSTableColumn?, row: Int) -> Bool {\n        return false\n    }\n    \n    func tableView(_ tableView: NSTableView, shouldSelectRow row: Int) -> Bool {\n        if row < 0 {\n            editingSubscribe = nil\n            return true\n        }\n        return true\n    }\n    \n    func tableViewSelectionDidChange(_ notification: Notification) {\n        if SubscribeTableView.selectedRow >= 0 {\n            bindSubscribe(SubscribeTableView.selectedRow)\n            if !editingSubscribe.isActive{\n                AutoUpdateButton.isEnabled = false\n            }\n        } else {\n            if !sbMgr.subscribes.isEmpty {\n                let index = IndexSet(integer: sbMgr.subscribes.count - 1)\n                SubscribeTableView.selectRowIndexes(index, byExtendingSelection: false)\n            }\n        }\n    }\n    \n    func cleanField(){\n        FeedTextField.stringValue = \"\"\n        TokenTextField.stringValue = \"\"\n        GroupTextField.stringValue = \"\"\n        MaxCountTextField.stringValue = \"\"\n        FilterTextField.stringValue = \"\"\n    }\n    \n    func shakeWindows(){\n        let numberOfShakes:Int = 8\n        let durationOfShake:Float = 0.5\n        let vigourOfShake:Float = 0.05\n        \n        let frame:CGRect = (window?.frame)!\n        let shakeAnimation = CAKeyframeAnimation()\n        \n        let shakePath = CGMutablePath()\n        \n        shakePath.move(to: CGPoint(x:NSMinX(frame), y:NSMinY(frame)))\n        \n        for _ in 1...numberOfShakes{\n            shakePath.addLine(to: CGPoint(x: NSMinX(frame) - frame.size.width * CGFloat(vigourOfShake), y: NSMinY(frame)))\n            shakePath.addLine(to: CGPoint(x: NSMinX(frame) + frame.size.width * CGFloat(vigourOfShake), y: NSMinY(frame)))\n        }\n        \n        shakePath.closeSubpath()\n        shakeAnimation.path = shakePath\n        shakeAnimation.duration = CFTimeInterval(durationOfShake)\n        window?.animations = [\"frameOrigin\":shakeAnimation]\n        window?.animator().setFrameOrigin(window!.frame.origin)\n    }\n}\n\n// Helper function inserted by Swift 4.2 migrator.\nfileprivate func convertToNSPasteboardPasteboardTypeArray(_ input: [String]) -> [NSPasteboard.PasteboardType] {\n\treturn input.map { key in NSPasteboard.PasteboardType(key) }\n}\n\n// Helper function inserted by Swift 4.2 migrator.\nfileprivate func convertToOptionalNSBindingOptionDictionary(_ input: [String: Any]?) -> [NSBindingOption: Any]? {\n\tguard let input = input else { return nil }\n\treturn Dictionary(uniqueKeysWithValues: input.map { key, value in (NSBindingOption(rawValue: key), value)})\n}\n\n// Helper function inserted by Swift 4.2 migrator.\nfileprivate func convertFromNSBindingOption(_ input: NSBindingOption) -> String {\n\treturn input.rawValue\n}\n\n// Helper function inserted by Swift 4.2 migrator.\nfileprivate func convertToNSBindingName(_ input: String) -> NSBindingName {\n\treturn NSBindingName(rawValue: input)\n}\n\n// Helper function inserted by Swift 4.2 migrator.\nfileprivate func convertFromNSUserInterfaceItemIdentifier(_ input: NSUserInterfaceItemIdentifier) -> String {\n\treturn input.rawValue\n}\n\n// Helper function inserted by Swift 4.2 migrator.\nfileprivate func convertToNSPasteboardPasteboardType(_ input: String) -> NSPasteboard.PasteboardType {\n\treturn NSPasteboard.PasteboardType(rawValue: input)\n}\n"
  },
  {
    "path": "Trojan/WIndows/ToastWindowController.swift",
    "content": "//\n//  ToastWindowController.swift\n//  Trojan\n//\n//  Created by ParadiseDuo on 2019/11/6.\n//  Copyright © 2020 ParadiseDuo. All rights reserved.\n//\n\nimport Cocoa\n\nclass ToastWindowController: NSWindowController {\n\n    var message: String = \"\"\n    \n    @IBOutlet weak var titleTextField: NSTextField!\n    @IBOutlet weak var panelView: NSView!\n    \n    let kHudFadeInDuration: Double = 0.35\n    let kHudFadeOutDuration: Double = 0.35\n    let kHudDisplayDuration: Double = 1.2\n\n    let kHudAlphaValue: CGFloat = 0.75\n    let kHudCornerRadius: CGFloat = 18.0\n    let kHudHorizontalMargin: CGFloat = 30\n    let kHudHeight: CGFloat = 90.0\n    \n    var timerToFadeOut: Timer? = nil\n    var fadingOut: Bool = false\n\n    override func windowDidLoad() {\n        super.windowDidLoad()\n\n        self.shouldCascadeWindows = false\n\n        // Implement this method to handle any initialization after your window controller's window has been loaded from its nib file.\n        if let win = self.window {\n            win.isOpaque = false\n            win.backgroundColor = .clear\n            win.styleMask = NSWindow.StyleMask.borderless\n            win.hidesOnDeactivate = false\n            win.collectionBehavior = NSWindow.CollectionBehavior.canJoinAllSpaces\n            win.level = NSWindow.Level(rawValue: Int(CGWindowLevelForKey(.floatingWindow)))\n            win.orderFrontRegardless()\n        }\n\n        let viewLayer: CALayer = CALayer()\n        viewLayer.backgroundColor = CGColor.init(red: 0.05, green: 0.05, blue: 0.05, alpha: kHudAlphaValue)\n        viewLayer.cornerRadius = kHudCornerRadius\n        panelView.wantsLayer = true\n        panelView.layer = viewLayer\n        panelView.layer?.opacity = 0.0\n        \n        self.titleTextField.stringValue = self.message\n        \n        setupHud()\n    }\n    \n    func setupHud() -> Void {\n        titleTextField.sizeToFit()\n\n        var labelFrame: CGRect = titleTextField.frame\n        var hudWindowFrame: CGRect = self.window!.frame\n        hudWindowFrame.size.width = labelFrame.size.width + kHudHorizontalMargin * 2\n        hudWindowFrame.size.height = kHudHeight\n\n        let screenRect: NSRect = NSScreen.screens[0].visibleFrame\n        hudWindowFrame.origin.x = (screenRect.size.width - hudWindowFrame.size.width) / 2\n        hudWindowFrame.origin.y = (screenRect.size.height - hudWindowFrame.size.height) / 2\n        self.window!.setFrame(hudWindowFrame, display: true)\n\n        var viewFrame: NSRect = hudWindowFrame;\n        viewFrame.origin.x = 0\n        viewFrame.origin.y = 0\n        panelView.frame = viewFrame\n\n        labelFrame.origin.x = kHudHorizontalMargin\n        labelFrame.origin.y = (hudWindowFrame.size.height - labelFrame.size.height) / 2\n        titleTextField.frame = labelFrame\n    }\n    \n    func fadeInHud() -> Void {\n        if timerToFadeOut != nil {\n            timerToFadeOut?.invalidate()\n            timerToFadeOut = nil\n        }\n\n        fadingOut = false\n\n        CATransaction.begin()\n        CATransaction.setAnimationDuration(kHudFadeInDuration)\n        CATransaction.setCompletionBlock { self.didFadeIn() }\n        panelView.layer?.opacity = 1.0\n        CATransaction.commit()\n    }\n\n    func didFadeIn() -> Void {\n        timerToFadeOut = Timer.scheduledTimer(\n            timeInterval: kHudDisplayDuration,\n            target: self,\n            selector: #selector(fadeOutHud),\n            userInfo: nil,\n            repeats: false)\n    }\n\n    @objc func fadeOutHud() -> Void {\n        fadingOut = true\n\n        CATransaction.begin()\n        CATransaction.setAnimationDuration(kHudFadeOutDuration)\n        CATransaction.setCompletionBlock { self.didFadeOut() }\n        panelView.layer?.opacity = 0.0\n        CATransaction.commit()\n    }\n\n    func didFadeOut() -> Void {\n        if fadingOut {\n            self.window?.orderOut(self)\n        }\n        fadingOut = false\n    }\n\n}\n"
  },
  {
    "path": "Trojan/WIndows/ToastWindowController.xib",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.Cocoa.XIB\" version=\"3.0\" toolsVersion=\"15505\" targetRuntime=\"MacOSX.Cocoa\" propertyAccessControl=\"none\" useAutolayout=\"YES\" customObjectInstantitationMethod=\"direct\">\n    <dependencies>\n        <deployment identifier=\"macosx\"/>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.CocoaPlugin\" version=\"15505\"/>\n        <capability name=\"documents saved in the Xcode 8 format\" minToolsVersion=\"8.0\"/>\n    </dependencies>\n    <objects>\n        <customObject id=\"-2\" userLabel=\"File's Owner\" customClass=\"ToastWindowController\" customModule=\"ShadowsocksX_NG\" customModuleProvider=\"target\">\n            <connections>\n                <outlet property=\"panelView\" destination=\"KRY-zc-8By\" id=\"go9-Mv-Gqx\"/>\n                <outlet property=\"titleTextField\" destination=\"scG-hz-bja\" id=\"lhB-0o-xOZ\"/>\n                <outlet property=\"window\" destination=\"kRK-Pd-y69\" id=\"pHW-35-GCT\"/>\n            </connections>\n        </customObject>\n        <customObject id=\"-1\" userLabel=\"First Responder\" customClass=\"FirstResponder\"/>\n        <customObject id=\"-3\" userLabel=\"Application\" customClass=\"NSObject\"/>\n        <window title=\"Window\" allowsToolTipsWhenApplicationIsInactive=\"NO\" autorecalculatesKeyViewLoop=\"NO\" hidesOnDeactivate=\"YES\" visibleAtLaunch=\"NO\" animationBehavior=\"default\" id=\"kRK-Pd-y69\" customClass=\"NSPanel\">\n            <windowStyleMask key=\"styleMask\" closable=\"YES\" miniaturizable=\"YES\" resizable=\"YES\" utility=\"YES\"/>\n            <rect key=\"contentRect\" x=\"139\" y=\"81\" width=\"300\" height=\"100\"/>\n            <rect key=\"screenRect\" x=\"0.0\" y=\"0.0\" width=\"1440\" height=\"877\"/>\n            <value key=\"minSize\" type=\"size\" width=\"200\" height=\"100\"/>\n            <view key=\"contentView\" id=\"KRY-zc-8By\" userLabel=\"Panel View\">\n                <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"300\" height=\"100\"/>\n                <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMinY=\"YES\"/>\n                <subviews>\n                    <textField verticalHuggingPriority=\"750\" fixedFrame=\"YES\" allowsCharacterPickerTouchBarItem=\"YES\" preferredMaxLayoutWidth=\"162\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"scG-hz-bja\" userLabel=\"Is Name\">\n                        <rect key=\"frame\" x=\"24\" y=\"33\" width=\"258\" height=\"31\"/>\n                        <autoresizingMask key=\"autoresizingMask\" flexibleMinX=\"YES\" flexibleMaxX=\"YES\" flexibleMinY=\"YES\" flexibleMaxY=\"YES\"/>\n                        <textFieldCell key=\"cell\" sendsActionOnEndEditing=\"YES\" alignment=\"center\" title=\"Label\" usesSingleLineMode=\"YES\" id=\"eQL-ri-Y7Z\">\n                            <font key=\"font\" metaFont=\"system\" size=\"24\"/>\n                            <color key=\"textColor\" white=\"1\" alpha=\"1\" colorSpace=\"calibratedWhite\"/>\n                            <color key=\"backgroundColor\" name=\"alternateSelectedControlColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                        </textFieldCell>\n                    </textField>\n                </subviews>\n            </view>\n            <point key=\"canvasLocation\" x=\"-2348\" y=\"174\"/>\n        </window>\n    </objects>\n</document>\n"
  },
  {
    "path": "Trojan/WIndows/zh-Hans.lproj/SettingWindowController.strings",
    "content": "\n/* Class = \"NSWindow\"; title = \"Setting\"; ObjectID = \"F0z-JX-Cv5\"; */\n\"F0z-JX-Cv5.title\" = \"设置\";\n\n/* Class = \"NSTextFieldCell\"; title = \"Text\"; ObjectID = \"GBD-1J-aUY\"; */\n\"GBD-1J-aUY.title\" = \"Text\";\n\n/* Class = \"NSTextFieldCell\"; title = \"Local Port\"; ObjectID = \"Gyu-fJ-ZES\"; */\n\"Gyu-fJ-ZES.title\" = \"本地端口\";\n\n/* Class = \"NSBox\"; title = \"Box\"; ObjectID = \"IxW-2H-8rV\"; */\n\"IxW-2H-8rV.title\" = \"Box\";\n\n/* Class = \"NSTextFieldCell\"; title = \"Local Address\"; ObjectID = \"Wei-TG-x93\"; */\n\"Wei-TG-x93.title\" = \"本地监听地址\";\n\n/* Class = \"NSTextFieldCell\"; title = \"Remote Port\"; ObjectID = \"bvj-l8-8ET\"; */\n\"bvj-l8-8ET.title\" = \"服务器端口\";\n\n/* Class = \"NSTextFieldCell\"; title = \"Remote Address\"; ObjectID = \"fli-dh-s7u\"; */\n\"fli-dh-s7u.title\" = \"服务器地址\";\n\n/* Class = \"NSTextFieldCell\"; title = \"Password\"; ObjectID = \"i0D-9V-Vbd\"; */\n\"i0D-9V-Vbd.title\" = \"密码\";\n\n/* Class = \"NSButtonCell\"; title = \"Save\"; ObjectID = \"xO8-VQ-N2V\"; */\n\"xO8-VQ-N2V.title\" = \"保存\";\n\n/* Class = \"NSButtonCell\"; title = \"Cancel\"; ObjectID = \"yh5-3a-s5u\"; */\n\"yh5-3a-s5u.title\" = \"取消\";\n"
  },
  {
    "path": "Trojan/WIndows/zh-Hans.lproj/SettingsWIndowController.strings",
    "content": "\n/* Class = \"NSButtonCell\"; title = \"Check Updates At Launch\"; ObjectID = \"2lA-Yb-g5P\"; */\n\"2lA-Yb-g5P.title\" = \"打开后自动检查更新\";\n\n/* Class = \"NSTextFieldCell\"; title = \"HTTP Proxy Listen Address:\"; ObjectID = \"7Gu-mk-D4u\"; */\n\"7Gu-mk-D4u.title\" = \"HTTP代理监听地址:\";\n\n/* Class = \"NSTabViewItem\"; label = \"HTTP\"; ObjectID = \"9eZ-LB-LAE\"; */\n\"9eZ-LB-LAE.label\" = \"HTTP\";\n\n/* Class = \"NSWindow\"; title = \"Settings\"; ObjectID = \"F0z-JX-Cv5\"; */\n\"F0z-JX-Cv5.title\" = \"设置\";\n\n/* Class = \"NSToolbarItem\"; label = \"General\"; ObjectID = \"PXB-LX-C1I\"; */\n\"PXB-LX-C1I.label\" = \"常规设置\";\n\n/* Class = \"NSToolbarItem\"; paletteLabel = \"General\"; ObjectID = \"PXB-LX-C1I\"; */\n\"PXB-LX-C1I.paletteLabel\" = \"常规设置\";\n\n/* Class = \"NSButtonCell\"; title = \"Save\"; ObjectID = \"UkP-CN-9fg\"; */\n\"UkP-CN-9fg.title\" = \"保存\";\n\n/* Class = \"NSTextFieldCell\"; title = \"HTTP Proxy Listen Port:\"; ObjectID = \"WJH-fF-F97\"; */\n\"WJH-fF-F97.title\" = \"HTTP代理监听端口:\";\n\n/* Class = \"NSButtonCell\"; title = \"Launch At Login\"; ObjectID = \"XRd-gw-sVz\"; */\n\"XRd-gw-sVz.title\" = \"登录后自动启动\";\n\n/* Class = \"NSButtonCell\"; title = \"HTTP Proxy Enable\"; ObjectID = \"ddc-tk-35g\"; */\n\"ddc-tk-35g.title\" = \"开启HTTP代理\";\n\n/* Class = \"NSButtonCell\"; title = \"Follow Global Mode\"; ObjectID = \"qsk-nQ-vvI\"; */\n\"qsk-nQ-vvI.title\" = \"跟随全局模式\";\n\n/* Class = \"NSTabViewItem\"; label = \"General\"; ObjectID = \"u90-Qy-cbH\"; */\n\"u90-Qy-cbH.label\" = \"常规设置\";\n\n/* Class = \"NSToolbarItem\"; label = \"HTTP\"; ObjectID = \"wfh-Rc-uiw\"; */\n\"wfh-Rc-uiw.label\" = \"HTTP\";\n\n/* Class = \"NSToolbarItem\"; paletteLabel = \"HTTP\"; ObjectID = \"wfh-Rc-uiw\"; */\n\"wfh-Rc-uiw.paletteLabel\" = \"HTTP\";\n\n\"v88-LG-DJP.title\" = \"显示网速\";\n"
  },
  {
    "path": "Trojan/WIndows/zh-Hans.lproj/SubscribePreferenceWindowController.strings",
    "content": "\n/* Class = \"NSTextFieldCell\"; placeholderString = \"Optional\"; ObjectID = \"3kt-n3-uTF\"; */\n\"3kt-n3-uTF.placeholderString\" = \"可选\";\n\n/* Class = \"NSTextFieldCell\"; placeholderString = \"Optional\"; ObjectID = \"ASh-mc-Uyt\"; */\n\"ASh-mc-Uyt.placeholderString\" = \"可选\";\n\n/* Class = \"NSButtonCell\"; title = \"OK\"; ObjectID = \"CfK-8Y-YNP\"; */\n\"CfK-8Y-YNP.title\" = \"确定\";\n\n/* Class = \"NSWindow\"; title = \"Subscribe Preference\"; ObjectID = \"F0z-JX-Cv5\"; */\n\"F0z-JX-Cv5.title\" = \"订阅设置\";\n\n/* Class = \"NSTextFieldCell\"; placeholderString = \"Optional\"; ObjectID = \"H5J-cK-8xj\"; */\n\"H5J-cK-8xj.placeholderString\" = \"可选\";\n\n/* Class = \"NSTextFieldCell\"; title = \"Token\"; ObjectID = \"IrJ-D8-tlX\"; */\n\"IrJ-D8-tlX.title\" = \"Token\";\n\n/* Class = \"NSTextFieldCell\"; title = \"Filter\"; ObjectID = \"VWC-h6-dyf\"; */\n\"VWC-h6-dyf.title\" = \"过滤\";\n\n/* Class = \"NSTextFieldCell\"; title = \"Group\"; ObjectID = \"f2p-qb-uuE\"; */\n\"f2p-qb-uuE.title\" = \"组名\";\n\n/* Class = \"NSTextFieldCell\"; title = \"Text\"; ObjectID = \"ik7-wS-gok\"; */\n\"ik7-wS-gok.title\" = \"Text\";\n\n/* Class = \"NSButtonCell\"; title = \"Cancel\"; ObjectID = \"mdP-Aw-g2g\"; */\n\"mdP-Aw-g2g.title\" = \"取消\";\n\n/* Class = \"NSButtonCell\"; title = \"AutoUpdate\"; ObjectID = \"wAH-F1-KhY\"; */\n\"wAH-F1-KhY.title\" = \"自动更新\";\n\n/* Class = \"NSTextFieldCell\"; title = \"Count\"; ObjectID = \"wbG-HT-bdN\"; */\n\"wbG-HT-bdN.title\" = \"最大数\";\n\n/* Class = \"NSButtonCell\"; title = \"Active\"; ObjectID = \"xDA-ea-y72\"; */\n\"xDA-ea-y72.title\" = \"激活\";\n\n/* Class = \"NSTextFieldCell\"; title = \"URL\"; ObjectID = \"yBp-oB-gbL\"; */\n\"yBp-oB-gbL.title\" = \"订阅\";\n"
  },
  {
    "path": "Trojan/en.lproj/Localizable.strings",
    "content": "/* \n  Localizable.strings\n  Trojan\n\n  Created by Paradiseduo on 2020/6/19.\n  Copyright © 2020 ParadiseDuo. All rights reserved.\n*/\n\n\"Turn Trojan On\" = \"Turn Trojan On\";\n\"Turn Trojan Off\" = \"Turn Trojan Off\";\n\"Trojan: Off\" = \"Trojan: Off\";\n\"Trojan: On\" = \"Trojan: On\";\n\"Export Command Copied.\" = \"Export Command Copied\";\n\"Export Command Copied Failed.\" = \"Export Command Copied Failed\";\n\"Logs Cleand\" = \"Logs Cleand\";\n"
  },
  {
    "path": "Trojan/tcping/ConnectTestigManager.swift",
    "content": "//\n//  ConnectTestigManager.swift\n//  Trojan\n//\n//  Created by YouShaoduo on 2020/10/9.\n//  Copyright © 2020 ParadiseDuo. All rights reserved.\n//\n\nimport Foundation\n\nvar isTesting:Bool = false\nvar nerverTestBefore = true\n\nclass ConnectTestigManager {\n    static let shared = ConnectTestigManager()\n    \n    private var tcping: Tcping?\n    \n    func start() {\n        if !isTesting {\n            isTesting = true\n            self.tcping = Tcping()\n            self.tcping!.ping {\n                isTesting = false\n                NotificationCenter.default.post(name: NOTIFY_REFRESH_SERVERS, object: nil)\n                self.tcping = nil\n            }\n        }\n    }\n}\n\nextension NumberFormatter {\n    static func three(_ number: NSNumber) -> String {\n        let nf = NumberFormatter()\n        nf.numberStyle = .decimal\n        nf.maximumFractionDigits = 3\n        \n        return nf.string(from: number) ?? \"failed\"\n    }\n}\n"
  },
  {
    "path": "Trojan/tcping/GCDAsyncSocket.h",
    "content": "//  \n//  GCDAsyncSocket.h\n//  \n//  This class is in the public domain.\n//  Originally created by Robbie Hanson in Q3 2010.\n//  Updated and maintained by Deusty LLC and the Apple development community.\n//  \n//  https://github.com/robbiehanson/CocoaAsyncSocket\n//\n\n#import <Foundation/Foundation.h>\n#import <Security/Security.h>\n#import <Security/SecureTransport.h>\n#import <dispatch/dispatch.h>\n#import <Availability.h>\n\n#include <sys/socket.h> // AF_INET, AF_INET6\n\n@class GCDAsyncReadPacket;\n@class GCDAsyncWritePacket;\n@class GCDAsyncSocketPreBuffer;\n@protocol GCDAsyncSocketDelegate;\n\nNS_ASSUME_NONNULL_BEGIN\n\nextern NSString *const GCDAsyncSocketException;\nextern NSString *const GCDAsyncSocketErrorDomain;\n\nextern NSString *const GCDAsyncSocketQueueName;\nextern NSString *const GCDAsyncSocketThreadName;\n\nextern NSString *const GCDAsyncSocketManuallyEvaluateTrust;\n#if TARGET_OS_IPHONE\nextern NSString *const GCDAsyncSocketUseCFStreamForTLS;\n#endif\n#define GCDAsyncSocketSSLPeerName     (NSString *)kCFStreamSSLPeerName\n#define GCDAsyncSocketSSLCertificates (NSString *)kCFStreamSSLCertificates\n#define GCDAsyncSocketSSLIsServer     (NSString *)kCFStreamSSLIsServer\nextern NSString *const GCDAsyncSocketSSLPeerID;\nextern NSString *const GCDAsyncSocketSSLProtocolVersionMin;\nextern NSString *const GCDAsyncSocketSSLProtocolVersionMax;\nextern NSString *const GCDAsyncSocketSSLSessionOptionFalseStart;\nextern NSString *const GCDAsyncSocketSSLSessionOptionSendOneByteRecord;\nextern NSString *const GCDAsyncSocketSSLCipherSuites;\n#if !TARGET_OS_IPHONE\nextern NSString *const GCDAsyncSocketSSLDiffieHellmanParameters;\n#endif\n\n#define GCDAsyncSocketLoggingContext 65535\n\n\ntypedef NS_ERROR_ENUM(GCDAsyncSocketErrorDomain, GCDAsyncSocketError) {\n\tGCDAsyncSocketNoError = 0,           // Never used\n\tGCDAsyncSocketBadConfigError,        // Invalid configuration\n\tGCDAsyncSocketBadParamError,         // Invalid parameter was passed\n\tGCDAsyncSocketConnectTimeoutError,   // A connect operation timed out\n\tGCDAsyncSocketReadTimeoutError,      // A read operation timed out\n\tGCDAsyncSocketWriteTimeoutError,     // A write operation timed out\n\tGCDAsyncSocketReadMaxedOutError,     // Reached set maxLength without completing\n\tGCDAsyncSocketClosedError,           // The remote peer closed the connection\n\tGCDAsyncSocketOtherError,            // Description provided in userInfo\n};\n\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n#pragma mark -\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\n\n@interface GCDAsyncSocket : NSObject\n\n/**\n * GCDAsyncSocket uses the standard delegate paradigm,\n * but executes all delegate callbacks on a given delegate dispatch queue.\n * This allows for maximum concurrency, while at the same time providing easy thread safety.\n * \n * You MUST set a delegate AND delegate dispatch queue before attempting to\n * use the socket, or you will get an error.\n * \n * The socket queue is optional.\n * If you pass NULL, GCDAsyncSocket will automatically create it's own socket queue.\n * If you choose to provide a socket queue, the socket queue must not be a concurrent queue.\n * If you choose to provide a socket queue, and the socket queue has a configured target queue,\n * then please see the discussion for the method markSocketQueueTargetQueue.\n * \n * The delegate queue and socket queue can optionally be the same.\n**/\n- (instancetype)init;\n- (instancetype)initWithSocketQueue:(nullable dispatch_queue_t)sq;\n- (instancetype)initWithDelegate:(nullable id<GCDAsyncSocketDelegate>)aDelegate delegateQueue:(nullable dispatch_queue_t)dq;\n- (instancetype)initWithDelegate:(nullable id<GCDAsyncSocketDelegate>)aDelegate delegateQueue:(nullable dispatch_queue_t)dq socketQueue:(nullable dispatch_queue_t)sq NS_DESIGNATED_INITIALIZER;\n\n/**\n * Create GCDAsyncSocket from already connect BSD socket file descriptor\n**/\n+ (nullable instancetype)socketFromConnectedSocketFD:(int)socketFD socketQueue:(nullable dispatch_queue_t)sq error:(NSError**)error;\n\n+ (nullable instancetype)socketFromConnectedSocketFD:(int)socketFD delegate:(nullable id<GCDAsyncSocketDelegate>)aDelegate delegateQueue:(nullable dispatch_queue_t)dq error:(NSError**)error;\n\n+ (nullable instancetype)socketFromConnectedSocketFD:(int)socketFD delegate:(nullable id<GCDAsyncSocketDelegate>)aDelegate delegateQueue:(nullable dispatch_queue_t)dq socketQueue:(nullable dispatch_queue_t)sq error:(NSError **)error;\n\n#pragma mark Configuration\n\n@property (atomic, weak, readwrite, nullable) id<GCDAsyncSocketDelegate> delegate;\n#if OS_OBJECT_USE_OBJC\n@property (atomic, strong, readwrite, nullable) dispatch_queue_t delegateQueue;\n#else\n@property (atomic, assign, readwrite, nullable) dispatch_queue_t delegateQueue;\n#endif\n\n- (void)getDelegate:(id<GCDAsyncSocketDelegate> __nullable * __nullable)delegatePtr delegateQueue:(dispatch_queue_t __nullable * __nullable)delegateQueuePtr;\n- (void)setDelegate:(nullable id<GCDAsyncSocketDelegate>)delegate delegateQueue:(nullable dispatch_queue_t)delegateQueue;\n\n/**\n * If you are setting the delegate to nil within the delegate's dealloc method,\n * you may need to use the synchronous versions below.\n**/\n- (void)synchronouslySetDelegate:(nullable id<GCDAsyncSocketDelegate>)delegate;\n- (void)synchronouslySetDelegateQueue:(nullable dispatch_queue_t)delegateQueue;\n- (void)synchronouslySetDelegate:(nullable id<GCDAsyncSocketDelegate>)delegate delegateQueue:(nullable dispatch_queue_t)delegateQueue;\n\n/**\n * By default, both IPv4 and IPv6 are enabled.\n * \n * For accepting incoming connections, this means GCDAsyncSocket automatically supports both protocols,\n * and can simulataneously accept incoming connections on either protocol.\n * \n * For outgoing connections, this means GCDAsyncSocket can connect to remote hosts running either protocol.\n * If a DNS lookup returns only IPv4 results, GCDAsyncSocket will automatically use IPv4.\n * If a DNS lookup returns only IPv6 results, GCDAsyncSocket will automatically use IPv6.\n * If a DNS lookup returns both IPv4 and IPv6 results, the preferred protocol will be chosen.\n * By default, the preferred protocol is IPv4, but may be configured as desired.\n**/\n\n@property (atomic, assign, readwrite, getter=isIPv4Enabled) BOOL IPv4Enabled;\n@property (atomic, assign, readwrite, getter=isIPv6Enabled) BOOL IPv6Enabled;\n\n@property (atomic, assign, readwrite, getter=isIPv4PreferredOverIPv6) BOOL IPv4PreferredOverIPv6;\n\n/** \n * When connecting to both IPv4 and IPv6 using Happy Eyeballs (RFC 6555) https://tools.ietf.org/html/rfc6555\n * this is the delay between connecting to the preferred protocol and the fallback protocol.\n *\n * Defaults to 300ms.\n**/\n@property (atomic, assign, readwrite) NSTimeInterval alternateAddressDelay;\n\n/**\n * User data allows you to associate arbitrary information with the socket.\n * This data is not used internally by socket in any way.\n**/\n@property (atomic, strong, readwrite, nullable) id userData;\n\n#pragma mark Accepting\n\n/**\n * Tells the socket to begin listening and accepting connections on the given port.\n * When a connection is accepted, a new instance of GCDAsyncSocket will be spawned to handle it,\n * and the socket:didAcceptNewSocket: delegate method will be invoked.\n * \n * The socket will listen on all available interfaces (e.g. wifi, ethernet, etc)\n**/\n- (BOOL)acceptOnPort:(uint16_t)port error:(NSError **)errPtr;\n\n/**\n * This method is the same as acceptOnPort:error: with the\n * additional option of specifying which interface to listen on.\n * \n * For example, you could specify that the socket should only accept connections over ethernet,\n * and not other interfaces such as wifi.\n * \n * The interface may be specified by name (e.g. \"en1\" or \"lo0\") or by IP address (e.g. \"192.168.4.34\").\n * You may also use the special strings \"localhost\" or \"loopback\" to specify that\n * the socket only accept connections from the local machine.\n * \n * You can see the list of interfaces via the command line utility \"ifconfig\",\n * or programmatically via the getifaddrs() function.\n * \n * To accept connections on any interface pass nil, or simply use the acceptOnPort:error: method.\n**/\n- (BOOL)acceptOnInterface:(nullable NSString *)interface port:(uint16_t)port error:(NSError **)errPtr;\n\n/**\n * Tells the socket to begin listening and accepting connections on the unix domain at the given url.\n * When a connection is accepted, a new instance of GCDAsyncSocket will be spawned to handle it,\n * and the socket:didAcceptNewSocket: delegate method will be invoked.\n *\n * The socket will listen on all available interfaces (e.g. wifi, ethernet, etc)\n **/\n- (BOOL)acceptOnUrl:(NSURL *)url error:(NSError **)errPtr;\n\n#pragma mark Connecting\n\n/**\n * Connects to the given host and port.\n * \n * This method invokes connectToHost:onPort:viaInterface:withTimeout:error:\n * and uses the default interface, and no timeout.\n**/\n- (BOOL)connectToHost:(NSString *)host onPort:(uint16_t)port error:(NSError **)errPtr;\n\n/**\n * Connects to the given host and port with an optional timeout.\n * \n * This method invokes connectToHost:onPort:viaInterface:withTimeout:error: and uses the default interface.\n**/\n- (BOOL)connectToHost:(NSString *)host\n               onPort:(uint16_t)port\n          withTimeout:(NSTimeInterval)timeout\n                error:(NSError **)errPtr;\n\n/**\n * Connects to the given host & port, via the optional interface, with an optional timeout.\n * \n * The host may be a domain name (e.g. \"deusty.com\") or an IP address string (e.g. \"192.168.0.2\").\n * The host may also be the special strings \"localhost\" or \"loopback\" to specify connecting\n * to a service on the local machine.\n * \n * The interface may be a name (e.g. \"en1\" or \"lo0\") or the corresponding IP address (e.g. \"192.168.4.35\").\n * The interface may also be used to specify the local port (see below).\n * \n * To not time out use a negative time interval.\n * \n * This method will return NO if an error is detected, and set the error pointer (if one was given).\n * Possible errors would be a nil host, invalid interface, or socket is already connected.\n * \n * If no errors are detected, this method will start a background connect operation and immediately return YES.\n * The delegate callbacks are used to notify you when the socket connects, or if the host was unreachable.\n * \n * Since this class supports queued reads and writes, you can immediately start reading and/or writing.\n * All read/write operations will be queued, and upon socket connection,\n * the operations will be dequeued and processed in order.\n * \n * The interface may optionally contain a port number at the end of the string, separated by a colon.\n * This allows you to specify the local port that should be used for the outgoing connection. (read paragraph to end)\n * To specify both interface and local port: \"en1:8082\" or \"192.168.4.35:2424\".\n * To specify only local port: \":8082\".\n * Please note this is an advanced feature, and is somewhat hidden on purpose.\n * You should understand that 99.999% of the time you should NOT specify the local port for an outgoing connection.\n * If you think you need to, there is a very good chance you have a fundamental misunderstanding somewhere.\n * Local ports do NOT need to match remote ports. In fact, they almost never do.\n * This feature is here for networking professionals using very advanced techniques.\n**/\n- (BOOL)connectToHost:(NSString *)host\n               onPort:(uint16_t)port\n         viaInterface:(nullable NSString *)interface\n          withTimeout:(NSTimeInterval)timeout\n                error:(NSError **)errPtr;\n\n/**\n * Connects to the given address, specified as a sockaddr structure wrapped in a NSData object.\n * For example, a NSData object returned from NSNetService's addresses method.\n * \n * If you have an existing struct sockaddr you can convert it to a NSData object like so:\n * struct sockaddr sa  -> NSData *dsa = [NSData dataWithBytes:&remoteAddr length:remoteAddr.sa_len];\n * struct sockaddr *sa -> NSData *dsa = [NSData dataWithBytes:remoteAddr length:remoteAddr->sa_len];\n * \n * This method invokes connectToAddress:remoteAddr viaInterface:nil withTimeout:-1 error:errPtr.\n**/\n- (BOOL)connectToAddress:(NSData *)remoteAddr error:(NSError **)errPtr;\n\n/**\n * This method is the same as connectToAddress:error: with an additional timeout option.\n * To not time out use a negative time interval, or simply use the connectToAddress:error: method.\n**/\n- (BOOL)connectToAddress:(NSData *)remoteAddr withTimeout:(NSTimeInterval)timeout error:(NSError **)errPtr;\n\n/**\n * Connects to the given address, using the specified interface and timeout.\n * \n * The address is specified as a sockaddr structure wrapped in a NSData object.\n * For example, a NSData object returned from NSNetService's addresses method.\n * \n * If you have an existing struct sockaddr you can convert it to a NSData object like so:\n * struct sockaddr sa  -> NSData *dsa = [NSData dataWithBytes:&remoteAddr length:remoteAddr.sa_len];\n * struct sockaddr *sa -> NSData *dsa = [NSData dataWithBytes:remoteAddr length:remoteAddr->sa_len];\n * \n * The interface may be a name (e.g. \"en1\" or \"lo0\") or the corresponding IP address (e.g. \"192.168.4.35\").\n * The interface may also be used to specify the local port (see below).\n * \n * The timeout is optional. To not time out use a negative time interval.\n * \n * This method will return NO if an error is detected, and set the error pointer (if one was given).\n * Possible errors would be a nil host, invalid interface, or socket is already connected.\n * \n * If no errors are detected, this method will start a background connect operation and immediately return YES.\n * The delegate callbacks are used to notify you when the socket connects, or if the host was unreachable.\n * \n * Since this class supports queued reads and writes, you can immediately start reading and/or writing.\n * All read/write operations will be queued, and upon socket connection,\n * the operations will be dequeued and processed in order.\n * \n * The interface may optionally contain a port number at the end of the string, separated by a colon.\n * This allows you to specify the local port that should be used for the outgoing connection. (read paragraph to end)\n * To specify both interface and local port: \"en1:8082\" or \"192.168.4.35:2424\".\n * To specify only local port: \":8082\".\n * Please note this is an advanced feature, and is somewhat hidden on purpose.\n * You should understand that 99.999% of the time you should NOT specify the local port for an outgoing connection.\n * If you think you need to, there is a very good chance you have a fundamental misunderstanding somewhere.\n * Local ports do NOT need to match remote ports. In fact, they almost never do.\n * This feature is here for networking professionals using very advanced techniques.\n**/\n- (BOOL)connectToAddress:(NSData *)remoteAddr\n            viaInterface:(nullable NSString *)interface\n             withTimeout:(NSTimeInterval)timeout\n                   error:(NSError **)errPtr;\n/**\n * Connects to the unix domain socket at the given url, using the specified timeout.\n */\n- (BOOL)connectToUrl:(NSURL *)url withTimeout:(NSTimeInterval)timeout error:(NSError **)errPtr;\n\n/**\n * Iterates over the given NetService's addresses in order, and invokes connectToAddress:error:. Stops at the\n * first invocation that succeeds and returns YES; otherwise returns NO.\n */\n- (BOOL)connectToNetService:(NSNetService *)netService error:(NSError **)errPtr;\n\n#pragma mark Disconnecting\n\n/**\n * Disconnects immediately (synchronously). Any pending reads or writes are dropped.\n * \n * If the socket is not already disconnected, an invocation to the socketDidDisconnect:withError: delegate method\n * will be queued onto the delegateQueue asynchronously (behind any previously queued delegate methods).\n * In other words, the disconnected delegate method will be invoked sometime shortly after this method returns.\n * \n * Please note the recommended way of releasing a GCDAsyncSocket instance (e.g. in a dealloc method)\n * [asyncSocket setDelegate:nil];\n * [asyncSocket disconnect];\n * [asyncSocket release];\n * \n * If you plan on disconnecting the socket, and then immediately asking it to connect again,\n * you'll likely want to do so like this:\n * [asyncSocket setDelegate:nil];\n * [asyncSocket disconnect];\n * [asyncSocket setDelegate:self];\n * [asyncSocket connect...];\n**/\n- (void)disconnect;\n\n/**\n * Disconnects after all pending reads have completed.\n * After calling this, the read and write methods will do nothing.\n * The socket will disconnect even if there are still pending writes.\n**/\n- (void)disconnectAfterReading;\n\n/**\n * Disconnects after all pending writes have completed.\n * After calling this, the read and write methods will do nothing.\n * The socket will disconnect even if there are still pending reads.\n**/\n- (void)disconnectAfterWriting;\n\n/**\n * Disconnects after all pending reads and writes have completed.\n * After calling this, the read and write methods will do nothing.\n**/\n- (void)disconnectAfterReadingAndWriting;\n\n#pragma mark Diagnostics\n\n/**\n * Returns whether the socket is disconnected or connected.\n * \n * A disconnected socket may be recycled.\n * That is, it can be used again for connecting or listening.\n * \n * If a socket is in the process of connecting, it may be neither disconnected nor connected.\n**/\n@property (atomic, readonly) BOOL isDisconnected;\n@property (atomic, readonly) BOOL isConnected;\n\n/**\n * Returns the local or remote host and port to which this socket is connected, or nil and 0 if not connected.\n * The host will be an IP address.\n**/\n@property (atomic, readonly, nullable) NSString *connectedHost;\n@property (atomic, readonly) uint16_t  connectedPort;\n@property (atomic, readonly, nullable) NSURL    *connectedUrl;\n\n@property (atomic, readonly, nullable) NSString *localHost;\n@property (atomic, readonly) uint16_t  localPort;\n\n/**\n * Returns the local or remote address to which this socket is connected,\n * specified as a sockaddr structure wrapped in a NSData object.\n * \n * @seealso connectedHost\n * @seealso connectedPort\n * @seealso localHost\n * @seealso localPort\n**/\n@property (atomic, readonly, nullable) NSData *connectedAddress;\n@property (atomic, readonly, nullable) NSData *localAddress;\n\n/**\n * Returns whether the socket is IPv4 or IPv6.\n * An accepting socket may be both.\n**/\n@property (atomic, readonly) BOOL isIPv4;\n@property (atomic, readonly) BOOL isIPv6;\n\n/**\n * Returns whether or not the socket has been secured via SSL/TLS.\n * \n * See also the startTLS method.\n**/\n@property (atomic, readonly) BOOL isSecure;\n\n#pragma mark Reading\n\n// The readData and writeData methods won't block (they are asynchronous).\n// \n// When a read is complete the socket:didReadData:withTag: delegate method is dispatched on the delegateQueue.\n// When a write is complete the socket:didWriteDataWithTag: delegate method is dispatched on the delegateQueue.\n// \n// You may optionally set a timeout for any read/write operation. (To not timeout, use a negative time interval.)\n// If a read/write opertion times out, the corresponding \"socket:shouldTimeout...\" delegate method\n// is called to optionally allow you to extend the timeout.\n// Upon a timeout, the \"socket:didDisconnectWithError:\" method is called\n// \n// The tag is for your convenience.\n// You can use it as an array index, step number, state id, pointer, etc.\n\n/**\n * Reads the first available bytes that become available on the socket.\n * \n * If the timeout value is negative, the read operation will not use a timeout.\n**/\n- (void)readDataWithTimeout:(NSTimeInterval)timeout tag:(long)tag;\n\n/**\n * Reads the first available bytes that become available on the socket.\n * The bytes will be appended to the given byte buffer starting at the given offset.\n * The given buffer will automatically be increased in size if needed.\n * \n * If the timeout value is negative, the read operation will not use a timeout.\n * If the buffer is nil, the socket will create a buffer for you.\n * \n * If the bufferOffset is greater than the length of the given buffer,\n * the method will do nothing, and the delegate will not be called.\n * \n * If you pass a buffer, you must not alter it in any way while the socket is using it.\n * After completion, the data returned in socket:didReadData:withTag: will be a subset of the given buffer.\n * That is, it will reference the bytes that were appended to the given buffer via\n * the method [NSData dataWithBytesNoCopy:length:freeWhenDone:NO].\n**/\n- (void)readDataWithTimeout:(NSTimeInterval)timeout\n\t\t\t\t\t buffer:(nullable NSMutableData *)buffer\n\t\t\t   bufferOffset:(NSUInteger)offset\n\t\t\t\t\t\ttag:(long)tag;\n\n/**\n * Reads the first available bytes that become available on the socket.\n * The bytes will be appended to the given byte buffer starting at the given offset.\n * The given buffer will automatically be increased in size if needed.\n * A maximum of length bytes will be read.\n * \n * If the timeout value is negative, the read operation will not use a timeout.\n * If the buffer is nil, a buffer will automatically be created for you.\n * If maxLength is zero, no length restriction is enforced.\n * \n * If the bufferOffset is greater than the length of the given buffer,\n * the method will do nothing, and the delegate will not be called.\n * \n * If you pass a buffer, you must not alter it in any way while the socket is using it.\n * After completion, the data returned in socket:didReadData:withTag: will be a subset of the given buffer.\n * That is, it will reference the bytes that were appended to the given buffer  via\n * the method [NSData dataWithBytesNoCopy:length:freeWhenDone:NO].\n**/\n- (void)readDataWithTimeout:(NSTimeInterval)timeout\n                     buffer:(nullable NSMutableData *)buffer\n               bufferOffset:(NSUInteger)offset\n                  maxLength:(NSUInteger)length\n                        tag:(long)tag;\n\n/**\n * Reads the given number of bytes.\n * \n * If the timeout value is negative, the read operation will not use a timeout.\n * \n * If the length is 0, this method does nothing and the delegate is not called.\n**/\n- (void)readDataToLength:(NSUInteger)length withTimeout:(NSTimeInterval)timeout tag:(long)tag;\n\n/**\n * Reads the given number of bytes.\n * The bytes will be appended to the given byte buffer starting at the given offset.\n * The given buffer will automatically be increased in size if needed.\n * \n * If the timeout value is negative, the read operation will not use a timeout.\n * If the buffer is nil, a buffer will automatically be created for you.\n * \n * If the length is 0, this method does nothing and the delegate is not called.\n * If the bufferOffset is greater than the length of the given buffer,\n * the method will do nothing, and the delegate will not be called.\n * \n * If you pass a buffer, you must not alter it in any way while AsyncSocket is using it.\n * After completion, the data returned in socket:didReadData:withTag: will be a subset of the given buffer.\n * That is, it will reference the bytes that were appended to the given buffer via\n * the method [NSData dataWithBytesNoCopy:length:freeWhenDone:NO].\n**/\n- (void)readDataToLength:(NSUInteger)length\n             withTimeout:(NSTimeInterval)timeout\n                  buffer:(nullable NSMutableData *)buffer\n            bufferOffset:(NSUInteger)offset\n                     tag:(long)tag;\n\n/**\n * Reads bytes until (and including) the passed \"data\" parameter, which acts as a separator.\n * \n * If the timeout value is negative, the read operation will not use a timeout.\n * \n * If you pass nil or zero-length data as the \"data\" parameter,\n * the method will do nothing (except maybe print a warning), and the delegate will not be called.\n * \n * To read a line from the socket, use the line separator (e.g. CRLF for HTTP, see below) as the \"data\" parameter.\n * If you're developing your own custom protocol, be sure your separator can not occur naturally as\n * part of the data between separators.\n * For example, imagine you want to send several small documents over a socket.\n * Using CRLF as a separator is likely unwise, as a CRLF could easily exist within the documents.\n * In this particular example, it would be better to use a protocol similar to HTTP with\n * a header that includes the length of the document.\n * Also be careful that your separator cannot occur naturally as part of the encoding for a character.\n * \n * The given data (separator) parameter should be immutable.\n * For performance reasons, the socket will retain it, not copy it.\n * So if it is immutable, don't modify it while the socket is using it.\n**/\n- (void)readDataToData:(nullable NSData *)data withTimeout:(NSTimeInterval)timeout tag:(long)tag;\n\n/**\n * Reads bytes until (and including) the passed \"data\" parameter, which acts as a separator.\n * The bytes will be appended to the given byte buffer starting at the given offset.\n * The given buffer will automatically be increased in size if needed.\n * \n * If the timeout value is negative, the read operation will not use a timeout.\n * If the buffer is nil, a buffer will automatically be created for you.\n * \n * If the bufferOffset is greater than the length of the given buffer,\n * the method will do nothing (except maybe print a warning), and the delegate will not be called.\n * \n * If you pass a buffer, you must not alter it in any way while the socket is using it.\n * After completion, the data returned in socket:didReadData:withTag: will be a subset of the given buffer.\n * That is, it will reference the bytes that were appended to the given buffer via\n * the method [NSData dataWithBytesNoCopy:length:freeWhenDone:NO].\n * \n * To read a line from the socket, use the line separator (e.g. CRLF for HTTP, see below) as the \"data\" parameter.\n * If you're developing your own custom protocol, be sure your separator can not occur naturally as\n * part of the data between separators.\n * For example, imagine you want to send several small documents over a socket.\n * Using CRLF as a separator is likely unwise, as a CRLF could easily exist within the documents.\n * In this particular example, it would be better to use a protocol similar to HTTP with\n * a header that includes the length of the document.\n * Also be careful that your separator cannot occur naturally as part of the encoding for a character.\n * \n * The given data (separator) parameter should be immutable.\n * For performance reasons, the socket will retain it, not copy it.\n * So if it is immutable, don't modify it while the socket is using it.\n**/\n- (void)readDataToData:(NSData *)data\n           withTimeout:(NSTimeInterval)timeout\n                buffer:(nullable NSMutableData *)buffer\n          bufferOffset:(NSUInteger)offset\n                   tag:(long)tag;\n\n/**\n * Reads bytes until (and including) the passed \"data\" parameter, which acts as a separator.\n * \n * If the timeout value is negative, the read operation will not use a timeout.\n * \n * If maxLength is zero, no length restriction is enforced.\n * Otherwise if maxLength bytes are read without completing the read,\n * it is treated similarly to a timeout - the socket is closed with a GCDAsyncSocketReadMaxedOutError.\n * The read will complete successfully if exactly maxLength bytes are read and the given data is found at the end.\n * \n * If you pass nil or zero-length data as the \"data\" parameter,\n * the method will do nothing (except maybe print a warning), and the delegate will not be called.\n * If you pass a maxLength parameter that is less than the length of the data parameter,\n * the method will do nothing (except maybe print a warning), and the delegate will not be called.\n * \n * To read a line from the socket, use the line separator (e.g. CRLF for HTTP, see below) as the \"data\" parameter.\n * If you're developing your own custom protocol, be sure your separator can not occur naturally as\n * part of the data between separators.\n * For example, imagine you want to send several small documents over a socket.\n * Using CRLF as a separator is likely unwise, as a CRLF could easily exist within the documents.\n * In this particular example, it would be better to use a protocol similar to HTTP with\n * a header that includes the length of the document.\n * Also be careful that your separator cannot occur naturally as part of the encoding for a character.\n * \n * The given data (separator) parameter should be immutable.\n * For performance reasons, the socket will retain it, not copy it.\n * So if it is immutable, don't modify it while the socket is using it.\n**/\n- (void)readDataToData:(NSData *)data withTimeout:(NSTimeInterval)timeout maxLength:(NSUInteger)length tag:(long)tag;\n\n/**\n * Reads bytes until (and including) the passed \"data\" parameter, which acts as a separator.\n * The bytes will be appended to the given byte buffer starting at the given offset.\n * The given buffer will automatically be increased in size if needed.\n * \n * If the timeout value is negative, the read operation will not use a timeout.\n * If the buffer is nil, a buffer will automatically be created for you.\n * \n * If maxLength is zero, no length restriction is enforced.\n * Otherwise if maxLength bytes are read without completing the read,\n * it is treated similarly to a timeout - the socket is closed with a GCDAsyncSocketReadMaxedOutError.\n * The read will complete successfully if exactly maxLength bytes are read and the given data is found at the end.\n * \n * If you pass a maxLength parameter that is less than the length of the data (separator) parameter,\n * the method will do nothing (except maybe print a warning), and the delegate will not be called.\n * If the bufferOffset is greater than the length of the given buffer,\n * the method will do nothing (except maybe print a warning), and the delegate will not be called.\n * \n * If you pass a buffer, you must not alter it in any way while the socket is using it.\n * After completion, the data returned in socket:didReadData:withTag: will be a subset of the given buffer.\n * That is, it will reference the bytes that were appended to the given buffer via\n * the method [NSData dataWithBytesNoCopy:length:freeWhenDone:NO].\n * \n * To read a line from the socket, use the line separator (e.g. CRLF for HTTP, see below) as the \"data\" parameter.\n * If you're developing your own custom protocol, be sure your separator can not occur naturally as\n * part of the data between separators.\n * For example, imagine you want to send several small documents over a socket.\n * Using CRLF as a separator is likely unwise, as a CRLF could easily exist within the documents.\n * In this particular example, it would be better to use a protocol similar to HTTP with\n * a header that includes the length of the document.\n * Also be careful that your separator cannot occur naturally as part of the encoding for a character.\n * \n * The given data (separator) parameter should be immutable.\n * For performance reasons, the socket will retain it, not copy it.\n * So if it is immutable, don't modify it while the socket is using it.\n**/\n- (void)readDataToData:(NSData *)data\n           withTimeout:(NSTimeInterval)timeout\n                buffer:(nullable NSMutableData *)buffer\n          bufferOffset:(NSUInteger)offset\n             maxLength:(NSUInteger)length\n                   tag:(long)tag;\n\n/**\n * Returns progress of the current read, from 0.0 to 1.0, or NaN if no current read (use isnan() to check).\n * The parameters \"tag\", \"done\" and \"total\" will be filled in if they aren't NULL.\n**/\n- (float)progressOfReadReturningTag:(nullable long *)tagPtr bytesDone:(nullable NSUInteger *)donePtr total:(nullable NSUInteger *)totalPtr;\n\n#pragma mark Writing\n\n/**\n * Writes data to the socket, and calls the delegate when finished.\n * \n * If you pass in nil or zero-length data, this method does nothing and the delegate will not be called.\n * If the timeout value is negative, the write operation will not use a timeout.\n * \n * Thread-Safety Note:\n * If the given data parameter is mutable (NSMutableData) then you MUST NOT alter the data while\n * the socket is writing it. In other words, it's not safe to alter the data until after the delegate method\n * socket:didWriteDataWithTag: is invoked signifying that this particular write operation has completed.\n * This is due to the fact that GCDAsyncSocket does NOT copy the data. It simply retains it.\n * This is for performance reasons. Often times, if NSMutableData is passed, it is because\n * a request/response was built up in memory. Copying this data adds an unwanted/unneeded overhead.\n * If you need to write data from an immutable buffer, and you need to alter the buffer before the socket\n * completes writing the bytes (which is NOT immediately after this method returns, but rather at a later time\n * when the delegate method notifies you), then you should first copy the bytes, and pass the copy to this method.\n**/\n- (void)writeData:(nullable NSData *)data withTimeout:(NSTimeInterval)timeout tag:(long)tag;\n\n/**\n * Returns progress of the current write, from 0.0 to 1.0, or NaN if no current write (use isnan() to check).\n * The parameters \"tag\", \"done\" and \"total\" will be filled in if they aren't NULL.\n**/\n- (float)progressOfWriteReturningTag:(nullable long *)tagPtr bytesDone:(nullable NSUInteger *)donePtr total:(nullable NSUInteger *)totalPtr;\n\n#pragma mark Security\n\n/**\n * Secures the connection using SSL/TLS.\n * \n * This method may be called at any time, and the TLS handshake will occur after all pending reads and writes\n * are finished. This allows one the option of sending a protocol dependent StartTLS message, and queuing\n * the upgrade to TLS at the same time, without having to wait for the write to finish.\n * Any reads or writes scheduled after this method is called will occur over the secured connection.\n *\n * ==== The available TOP-LEVEL KEYS are:\n * \n * - GCDAsyncSocketManuallyEvaluateTrust\n *     The value must be of type NSNumber, encapsulating a BOOL value.\n *     If you set this to YES, then the underlying SecureTransport system will not evaluate the SecTrustRef of the peer.\n *     Instead it will pause at the moment evaulation would typically occur,\n *     and allow us to handle the security evaluation however we see fit.\n *     So GCDAsyncSocket will invoke the delegate method socket:shouldTrustPeer: passing the SecTrustRef.\n *\n *     Note that if you set this option, then all other configuration keys are ignored.\n *     Evaluation will be completely up to you during the socket:didReceiveTrust:completionHandler: delegate method.\n *\n *     For more information on trust evaluation see:\n *     Apple's Technical Note TN2232 - HTTPS Server Trust Evaluation\n *     https://developer.apple.com/library/ios/technotes/tn2232/_index.html\n *     \n *     If unspecified, the default value is NO.\n *\n * - GCDAsyncSocketUseCFStreamForTLS (iOS only)\n *     The value must be of type NSNumber, encapsulating a BOOL value.\n *     By default GCDAsyncSocket will use the SecureTransport layer to perform encryption.\n *     This gives us more control over the security protocol (many more configuration options),\n *     plus it allows us to optimize things like sys calls and buffer allocation.\n *     \n *     However, if you absolutely must, you can instruct GCDAsyncSocket to use the old-fashioned encryption\n *     technique by going through the CFStream instead. So instead of using SecureTransport, GCDAsyncSocket\n *     will instead setup a CFRead/CFWriteStream. And then set the kCFStreamPropertySSLSettings property\n *     (via CFReadStreamSetProperty / CFWriteStreamSetProperty) and will pass the given options to this method.\n *     \n *     Thus all the other keys in the given dictionary will be ignored by GCDAsyncSocket,\n *     and will passed directly CFReadStreamSetProperty / CFWriteStreamSetProperty.\n *     For more infomation on these keys, please see the documentation for kCFStreamPropertySSLSettings.\n *\n *     If unspecified, the default value is NO.\n *\n * ==== The available CONFIGURATION KEYS are:\n *\n * - kCFStreamSSLPeerName\n *     The value must be of type NSString.\n *     It should match the name in the X.509 certificate given by the remote party.\n *     See Apple's documentation for SSLSetPeerDomainName.\n *\n * - kCFStreamSSLCertificates\n *     The value must be of type NSArray.\n *     See Apple's documentation for SSLSetCertificate.\n *\n * - kCFStreamSSLIsServer\n *     The value must be of type NSNumber, encapsulationg a BOOL value.\n *     See Apple's documentation for SSLCreateContext for iOS.\n *     This is optional for iOS. If not supplied, a NO value is the default.\n *     This is not needed for Mac OS X, and the value is ignored.\n *\n * - GCDAsyncSocketSSLPeerID\n *     The value must be of type NSData.\n *     You must set this value if you want to use TLS session resumption.\n *     See Apple's documentation for SSLSetPeerID.\n *\n * - GCDAsyncSocketSSLProtocolVersionMin\n * - GCDAsyncSocketSSLProtocolVersionMax\n *     The value(s) must be of type NSNumber, encapsulting a SSLProtocol value.\n *     See Apple's documentation for SSLSetProtocolVersionMin & SSLSetProtocolVersionMax.\n *     See also the SSLProtocol typedef.\n * \n * - GCDAsyncSocketSSLSessionOptionFalseStart\n *     The value must be of type NSNumber, encapsulating a BOOL value.\n *     See Apple's documentation for kSSLSessionOptionFalseStart.\n * \n * - GCDAsyncSocketSSLSessionOptionSendOneByteRecord\n *     The value must be of type NSNumber, encapsulating a BOOL value.\n *     See Apple's documentation for kSSLSessionOptionSendOneByteRecord.\n * \n * - GCDAsyncSocketSSLCipherSuites\n *     The values must be of type NSArray.\n *     Each item within the array must be a NSNumber, encapsulating an SSLCipherSuite.\n *     See Apple's documentation for SSLSetEnabledCiphers.\n *     See also the SSLCipherSuite typedef.\n *\n * - GCDAsyncSocketSSLDiffieHellmanParameters (Mac OS X only)\n *     The value must be of type NSData.\n *     See Apple's documentation for SSLSetDiffieHellmanParams.\n * \n * ==== The following UNAVAILABLE KEYS are: (with throw an exception)\n * \n * - kCFStreamSSLAllowsAnyRoot (UNAVAILABLE)\n *     You MUST use manual trust evaluation instead (see GCDAsyncSocketManuallyEvaluateTrust).\n *     Corresponding deprecated method: SSLSetAllowsAnyRoot\n * \n * - kCFStreamSSLAllowsExpiredRoots (UNAVAILABLE)\n *     You MUST use manual trust evaluation instead (see GCDAsyncSocketManuallyEvaluateTrust).\n *     Corresponding deprecated method: SSLSetAllowsExpiredRoots\n *\n * - kCFStreamSSLAllowsExpiredCertificates (UNAVAILABLE)\n *     You MUST use manual trust evaluation instead (see GCDAsyncSocketManuallyEvaluateTrust).\n *     Corresponding deprecated method: SSLSetAllowsExpiredCerts\n *\n * - kCFStreamSSLValidatesCertificateChain (UNAVAILABLE)\n *     You MUST use manual trust evaluation instead (see GCDAsyncSocketManuallyEvaluateTrust).\n *     Corresponding deprecated method: SSLSetEnableCertVerify\n *\n * - kCFStreamSSLLevel (UNAVAILABLE)\n *     You MUST use GCDAsyncSocketSSLProtocolVersionMin & GCDAsyncSocketSSLProtocolVersionMin instead.\n *     Corresponding deprecated method: SSLSetProtocolVersionEnabled\n *\n * \n * Please refer to Apple's documentation for corresponding SSLFunctions.\n *\n * If you pass in nil or an empty dictionary, the default settings will be used.\n * \n * IMPORTANT SECURITY NOTE:\n * The default settings will check to make sure the remote party's certificate is signed by a\n * trusted 3rd party certificate agency (e.g. verisign) and that the certificate is not expired.\n * However it will not verify the name on the certificate unless you\n * give it a name to verify against via the kCFStreamSSLPeerName key.\n * The security implications of this are important to understand.\n * Imagine you are attempting to create a secure connection to MySecureServer.com,\n * but your socket gets directed to MaliciousServer.com because of a hacked DNS server.\n * If you simply use the default settings, and MaliciousServer.com has a valid certificate,\n * the default settings will not detect any problems since the certificate is valid.\n * To properly secure your connection in this particular scenario you\n * should set the kCFStreamSSLPeerName property to \"MySecureServer.com\".\n * \n * You can also perform additional validation in socketDidSecure.\n**/\n- (void)startTLS:(nullable NSDictionary <NSString*,NSObject*>*)tlsSettings;\n\n#pragma mark Advanced\n\n/**\n * Traditionally sockets are not closed until the conversation is over.\n * However, it is technically possible for the remote enpoint to close its write stream.\n * Our socket would then be notified that there is no more data to be read,\n * but our socket would still be writeable and the remote endpoint could continue to receive our data.\n * \n * The argument for this confusing functionality stems from the idea that a client could shut down its\n * write stream after sending a request to the server, thus notifying the server there are to be no further requests.\n * In practice, however, this technique did little to help server developers.\n * \n * To make matters worse, from a TCP perspective there is no way to tell the difference from a read stream close\n * and a full socket close. They both result in the TCP stack receiving a FIN packet. The only way to tell\n * is by continuing to write to the socket. If it was only a read stream close, then writes will continue to work.\n * Otherwise an error will be occur shortly (when the remote end sends us a RST packet).\n * \n * In addition to the technical challenges and confusion, many high level socket/stream API's provide\n * no support for dealing with the problem. If the read stream is closed, the API immediately declares the\n * socket to be closed, and shuts down the write stream as well. In fact, this is what Apple's CFStream API does.\n * It might sound like poor design at first, but in fact it simplifies development.\n * \n * The vast majority of the time if the read stream is closed it's because the remote endpoint closed its socket.\n * Thus it actually makes sense to close the socket at this point.\n * And in fact this is what most networking developers want and expect to happen.\n * However, if you are writing a server that interacts with a plethora of clients,\n * you might encounter a client that uses the discouraged technique of shutting down its write stream.\n * If this is the case, you can set this property to NO,\n * and make use of the socketDidCloseReadStream delegate method.\n * \n * The default value is YES.\n**/\n@property (atomic, assign, readwrite) BOOL autoDisconnectOnClosedReadStream;\n\n/**\n * GCDAsyncSocket maintains thread safety by using an internal serial dispatch_queue.\n * In most cases, the instance creates this queue itself.\n * However, to allow for maximum flexibility, the internal queue may be passed in the init method.\n * This allows for some advanced options such as controlling socket priority via target queues.\n * However, when one begins to use target queues like this, they open the door to some specific deadlock issues.\n * \n * For example, imagine there are 2 queues:\n * dispatch_queue_t socketQueue;\n * dispatch_queue_t socketTargetQueue;\n * \n * If you do this (pseudo-code):\n * socketQueue.targetQueue = socketTargetQueue;\n * \n * Then all socketQueue operations will actually get run on the given socketTargetQueue.\n * This is fine and works great in most situations.\n * But if you run code directly from within the socketTargetQueue that accesses the socket,\n * you could potentially get deadlock. Imagine the following code:\n * \n * - (BOOL)socketHasSomething\n * {\n *     __block BOOL result = NO;\n *     dispatch_block_t block = ^{\n *         result = [self someInternalMethodToBeRunOnlyOnSocketQueue];\n *     }\n *     if (is_executing_on_queue(socketQueue))\n *         block();\n *     else\n *         dispatch_sync(socketQueue, block);\n *     \n *     return result;\n * }\n * \n * What happens if you call this method from the socketTargetQueue? The result is deadlock.\n * This is because the GCD API offers no mechanism to discover a queue's targetQueue.\n * Thus we have no idea if our socketQueue is configured with a targetQueue.\n * If we had this information, we could easily avoid deadlock.\n * But, since these API's are missing or unfeasible, you'll have to explicitly set it.\n * \n * IF you pass a socketQueue via the init method,\n * AND you've configured the passed socketQueue with a targetQueue,\n * THEN you should pass the end queue in the target hierarchy.\n * \n * For example, consider the following queue hierarchy:\n * socketQueue -> ipQueue -> moduleQueue\n *\n * This example demonstrates priority shaping within some server.\n * All incoming client connections from the same IP address are executed on the same target queue.\n * And all connections for a particular module are executed on the same target queue.\n * Thus, the priority of all networking for the entire module can be changed on the fly.\n * Additionally, networking traffic from a single IP cannot monopolize the module.\n * \n * Here's how you would accomplish something like that:\n * - (dispatch_queue_t)newSocketQueueForConnectionFromAddress:(NSData *)address onSocket:(GCDAsyncSocket *)sock\n * {\n *     dispatch_queue_t socketQueue = dispatch_queue_create(\"\", NULL);\n *     dispatch_queue_t ipQueue = [self ipQueueForAddress:address];\n *     \n *     dispatch_set_target_queue(socketQueue, ipQueue);\n *     dispatch_set_target_queue(iqQueue, moduleQueue);\n *     \n *     return socketQueue;\n * }\n * - (void)socket:(GCDAsyncSocket *)sock didAcceptNewSocket:(GCDAsyncSocket *)newSocket\n * {\n *     [clientConnections addObject:newSocket];\n *     [newSocket markSocketQueueTargetQueue:moduleQueue];\n * }\n * \n * Note: This workaround is ONLY needed if you intend to execute code directly on the ipQueue or moduleQueue.\n * This is often NOT the case, as such queues are used solely for execution shaping.\n**/\n- (void)markSocketQueueTargetQueue:(dispatch_queue_t)socketQueuesPreConfiguredTargetQueue;\n- (void)unmarkSocketQueueTargetQueue:(dispatch_queue_t)socketQueuesPreviouslyConfiguredTargetQueue;\n\n/**\n * It's not thread-safe to access certain variables from outside the socket's internal queue.\n * \n * For example, the socket file descriptor.\n * File descriptors are simply integers which reference an index in the per-process file table.\n * However, when one requests a new file descriptor (by opening a file or socket),\n * the file descriptor returned is guaranteed to be the lowest numbered unused descriptor.\n * So if we're not careful, the following could be possible:\n * \n * - Thread A invokes a method which returns the socket's file descriptor.\n * - The socket is closed via the socket's internal queue on thread B.\n * - Thread C opens a file, and subsequently receives the file descriptor that was previously the socket's FD.\n * - Thread A is now accessing/altering the file instead of the socket.\n * \n * In addition to this, other variables are not actually objects,\n * and thus cannot be retained/released or even autoreleased.\n * An example is the sslContext, of type SSLContextRef, which is actually a malloc'd struct.\n * \n * Although there are internal variables that make it difficult to maintain thread-safety,\n * it is important to provide access to these variables\n * to ensure this class can be used in a wide array of environments.\n * This method helps to accomplish this by invoking the current block on the socket's internal queue.\n * The methods below can be invoked from within the block to access\n * those generally thread-unsafe internal variables in a thread-safe manner.\n * The given block will be invoked synchronously on the socket's internal queue.\n * \n * If you save references to any protected variables and use them outside the block, you do so at your own peril.\n**/\n- (void)performBlock:(dispatch_block_t)block;\n\n/**\n * These methods are only available from within the context of a performBlock: invocation.\n * See the documentation for the performBlock: method above.\n * \n * Provides access to the socket's file descriptor(s).\n * If the socket is a server socket (is accepting incoming connections),\n * it might actually have multiple internal socket file descriptors - one for IPv4 and one for IPv6.\n**/\n- (int)socketFD;\n- (int)socket4FD;\n- (int)socket6FD;\n\n#if TARGET_OS_IPHONE\n\n/**\n * These methods are only available from within the context of a performBlock: invocation.\n * See the documentation for the performBlock: method above.\n * \n * Provides access to the socket's internal CFReadStream/CFWriteStream.\n * \n * These streams are only used as workarounds for specific iOS shortcomings:\n * \n * - Apple has decided to keep the SecureTransport framework private is iOS.\n *   This means the only supplied way to do SSL/TLS is via CFStream or some other API layered on top of it.\n *   Thus, in order to provide SSL/TLS support on iOS we are forced to rely on CFStream,\n *   instead of the preferred and faster and more powerful SecureTransport.\n * \n * - If a socket doesn't have backgrounding enabled, and that socket is closed while the app is backgrounded,\n *   Apple only bothers to notify us via the CFStream API.\n *   The faster and more powerful GCD API isn't notified properly in this case.\n * \n * See also: (BOOL)enableBackgroundingOnSocket\n**/\n- (nullable CFReadStreamRef)readStream;\n- (nullable CFWriteStreamRef)writeStream;\n\n/**\n * This method is only available from within the context of a performBlock: invocation.\n * See the documentation for the performBlock: method above.\n * \n * Configures the socket to allow it to operate when the iOS application has been backgrounded.\n * In other words, this method creates a read & write stream, and invokes:\n * \n * CFReadStreamSetProperty(readStream, kCFStreamNetworkServiceType, kCFStreamNetworkServiceTypeVoIP);\n * CFWriteStreamSetProperty(writeStream, kCFStreamNetworkServiceType, kCFStreamNetworkServiceTypeVoIP);\n * \n * Returns YES if successful, NO otherwise.\n * \n * Note: Apple does not officially support backgrounding server sockets.\n * That is, if your socket is accepting incoming connections, Apple does not officially support\n * allowing iOS applications to accept incoming connections while an app is backgrounded.\n * \n * Example usage:\n * \n * - (void)socket:(GCDAsyncSocket *)sock didConnectToHost:(NSString *)host port:(uint16_t)port\n * {\n *     [asyncSocket performBlock:^{\n *         [asyncSocket enableBackgroundingOnSocket];\n *     }];\n * }\n**/\n- (BOOL)enableBackgroundingOnSocket;\n\n#endif\n\n/**\n * This method is only available from within the context of a performBlock: invocation.\n * See the documentation for the performBlock: method above.\n * \n * Provides access to the socket's SSLContext, if SSL/TLS has been started on the socket.\n**/\n- (nullable SSLContextRef)sslContext;\n\n#pragma mark Utilities\n\n/**\n * The address lookup utility used by the class.\n * This method is synchronous, so it's recommended you use it on a background thread/queue.\n * \n * The special strings \"localhost\" and \"loopback\" return the loopback address for IPv4 and IPv6.\n * \n * @returns\n *   A mutable array with all IPv4 and IPv6 addresses returned by getaddrinfo.\n *   The addresses are specifically for TCP connections.\n *   You can filter the addresses, if needed, using the other utility methods provided by the class.\n**/\n+ (nullable NSMutableArray *)lookupHost:(NSString *)host port:(uint16_t)port error:(NSError **)errPtr;\n\n/**\n * Extracting host and port information from raw address data.\n**/\n\n+ (nullable NSString *)hostFromAddress:(NSData *)address;\n+ (uint16_t)portFromAddress:(NSData *)address;\n\n+ (BOOL)isIPv4Address:(NSData *)address;\n+ (BOOL)isIPv6Address:(NSData *)address;\n\n+ (BOOL)getHost:( NSString * __nullable * __nullable)hostPtr port:(nullable uint16_t *)portPtr fromAddress:(NSData *)address;\n\n+ (BOOL)getHost:(NSString * __nullable * __nullable)hostPtr port:(nullable uint16_t *)portPtr family:(nullable sa_family_t *)afPtr fromAddress:(NSData *)address;\n\n/**\n * A few common line separators, for use with the readDataToData:... methods.\n**/\n+ (NSData *)CRLFData;   // 0x0D0A\n+ (NSData *)CRData;     // 0x0D\n+ (NSData *)LFData;     // 0x0A\n+ (NSData *)ZeroData;   // 0x00\n\n@end\n\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n#pragma mark -\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\n@protocol GCDAsyncSocketDelegate <NSObject>\n@optional\n\n/**\n * This method is called immediately prior to socket:didAcceptNewSocket:.\n * It optionally allows a listening socket to specify the socketQueue for a new accepted socket.\n * If this method is not implemented, or returns NULL, the new accepted socket will create its own default queue.\n * \n * Since you cannot autorelease a dispatch_queue,\n * this method uses the \"new\" prefix in its name to specify that the returned queue has been retained.\n * \n * Thus you could do something like this in the implementation:\n * return dispatch_queue_create(\"MyQueue\", NULL);\n * \n * If you are placing multiple sockets on the same queue,\n * then care should be taken to increment the retain count each time this method is invoked.\n * \n * For example, your implementation might look something like this:\n * dispatch_retain(myExistingQueue);\n * return myExistingQueue;\n**/\n- (nullable dispatch_queue_t)newSocketQueueForConnectionFromAddress:(NSData *)address onSocket:(GCDAsyncSocket *)sock;\n\n/**\n * Called when a socket accepts a connection.\n * Another socket is automatically spawned to handle it.\n * \n * You must retain the newSocket if you wish to handle the connection.\n * Otherwise the newSocket instance will be released and the spawned connection will be closed.\n * \n * By default the new socket will have the same delegate and delegateQueue.\n * You may, of course, change this at any time.\n**/\n- (void)socket:(GCDAsyncSocket *)sock didAcceptNewSocket:(GCDAsyncSocket *)newSocket;\n\n/**\n * Called when a socket connects and is ready for reading and writing.\n * The host parameter will be an IP address, not a DNS name.\n**/\n- (void)socket:(GCDAsyncSocket *)sock didConnectToHost:(NSString *)host port:(uint16_t)port;\n\n/**\n * Called when a socket connects and is ready for reading and writing.\n * The host parameter will be an IP address, not a DNS name.\n **/\n- (void)socket:(GCDAsyncSocket *)sock didConnectToUrl:(NSURL *)url;\n\n/**\n * Called when a socket has completed reading the requested data into memory.\n * Not called if there is an error.\n**/\n- (void)socket:(GCDAsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag;\n\n/**\n * Called when a socket has read in data, but has not yet completed the read.\n * This would occur if using readToData: or readToLength: methods.\n * It may be used for things such as updating progress bars.\n**/\n- (void)socket:(GCDAsyncSocket *)sock didReadPartialDataOfLength:(NSUInteger)partialLength tag:(long)tag;\n\n/**\n * Called when a socket has completed writing the requested data. Not called if there is an error.\n**/\n- (void)socket:(GCDAsyncSocket *)sock didWriteDataWithTag:(long)tag;\n\n/**\n * Called when a socket has written some data, but has not yet completed the entire write.\n * It may be used for things such as updating progress bars.\n**/\n- (void)socket:(GCDAsyncSocket *)sock didWritePartialDataOfLength:(NSUInteger)partialLength tag:(long)tag;\n\n/**\n * Called if a read operation has reached its timeout without completing.\n * This method allows you to optionally extend the timeout.\n * If you return a positive time interval (> 0) the read's timeout will be extended by the given amount.\n * If you don't implement this method, or return a non-positive time interval (<= 0) the read will timeout as usual.\n * \n * The elapsed parameter is the sum of the original timeout, plus any additions previously added via this method.\n * The length parameter is the number of bytes that have been read so far for the read operation.\n * \n * Note that this method may be called multiple times for a single read if you return positive numbers.\n**/\n- (NSTimeInterval)socket:(GCDAsyncSocket *)sock shouldTimeoutReadWithTag:(long)tag\n                                                                 elapsed:(NSTimeInterval)elapsed\n                                                               bytesDone:(NSUInteger)length;\n\n/**\n * Called if a write operation has reached its timeout without completing.\n * This method allows you to optionally extend the timeout.\n * If you return a positive time interval (> 0) the write's timeout will be extended by the given amount.\n * If you don't implement this method, or return a non-positive time interval (<= 0) the write will timeout as usual.\n * \n * The elapsed parameter is the sum of the original timeout, plus any additions previously added via this method.\n * The length parameter is the number of bytes that have been written so far for the write operation.\n * \n * Note that this method may be called multiple times for a single write if you return positive numbers.\n**/\n- (NSTimeInterval)socket:(GCDAsyncSocket *)sock shouldTimeoutWriteWithTag:(long)tag\n                                                                  elapsed:(NSTimeInterval)elapsed\n                                                                bytesDone:(NSUInteger)length;\n\n/**\n * Conditionally called if the read stream closes, but the write stream may still be writeable.\n * \n * This delegate method is only called if autoDisconnectOnClosedReadStream has been set to NO.\n * See the discussion on the autoDisconnectOnClosedReadStream method for more information.\n**/\n- (void)socketDidCloseReadStream:(GCDAsyncSocket *)sock;\n\n/**\n * Called when a socket disconnects with or without error.\n * \n * If you call the disconnect method, and the socket wasn't already disconnected,\n * then an invocation of this delegate method will be enqueued on the delegateQueue\n * before the disconnect method returns.\n * \n * Note: If the GCDAsyncSocket instance is deallocated while it is still connected,\n * and the delegate is not also deallocated, then this method will be invoked,\n * but the sock parameter will be nil. (It must necessarily be nil since it is no longer available.)\n * This is a generally rare, but is possible if one writes code like this:\n * \n * asyncSocket = nil; // I'm implicitly disconnecting the socket\n * \n * In this case it may preferrable to nil the delegate beforehand, like this:\n * \n * asyncSocket.delegate = nil; // Don't invoke my delegate method\n * asyncSocket = nil; // I'm implicitly disconnecting the socket\n * \n * Of course, this depends on how your state machine is configured.\n**/\n- (void)socketDidDisconnect:(GCDAsyncSocket *)sock withError:(nullable NSError *)err;\n\n/**\n * Called after the socket has successfully completed SSL/TLS negotiation.\n * This method is not called unless you use the provided startTLS method.\n * \n * If a SSL/TLS negotiation fails (invalid certificate, etc) then the socket will immediately close,\n * and the socketDidDisconnect:withError: delegate method will be called with the specific SSL error code.\n**/\n- (void)socketDidSecure:(GCDAsyncSocket *)sock;\n\n/**\n * Allows a socket delegate to hook into the TLS handshake and manually validate the peer it's connecting to.\n *\n * This is only called if startTLS is invoked with options that include:\n * - GCDAsyncSocketManuallyEvaluateTrust == YES\n *\n * Typically the delegate will use SecTrustEvaluate (and related functions) to properly validate the peer.\n * \n * Note from Apple's documentation:\n *   Because [SecTrustEvaluate] might look on the network for certificates in the certificate chain,\n *   [it] might block while attempting network access. You should never call it from your main thread;\n *   call it only from within a function running on a dispatch queue or on a separate thread.\n * \n * Thus this method uses a completionHandler block rather than a normal return value.\n * The completionHandler block is thread-safe, and may be invoked from a background queue/thread.\n * It is safe to invoke the completionHandler block even if the socket has been closed.\n**/\n- (void)socket:(GCDAsyncSocket *)sock didReceiveTrust:(SecTrustRef)trust\n                                    completionHandler:(void (^)(BOOL shouldTrustPeer))completionHandler;\n\n@end\nNS_ASSUME_NONNULL_END\n"
  },
  {
    "path": "Trojan/tcping/GCDAsyncSocket.m",
    "content": "//\n//  GCDAsyncSocket.m\n//  \n//  This class is in the public domain.\n//  Originally created by Robbie Hanson in Q4 2010.\n//  Updated and maintained by Deusty LLC and the Apple development community.\n//\n//  https://github.com/robbiehanson/CocoaAsyncSocket\n//\n\n#import \"GCDAsyncSocket.h\"\n\n#if TARGET_OS_IPHONE\n#import <CFNetwork/CFNetwork.h>\n#endif\n\n#import <TargetConditionals.h>\n#import <arpa/inet.h>\n#import <fcntl.h>\n#import <ifaddrs.h>\n#import <netdb.h>\n#import <netinet/in.h>\n#import <net/if.h>\n#import <sys/socket.h>\n#import <sys/types.h>\n#import <sys/ioctl.h>\n#import <sys/poll.h>\n#import <sys/uio.h>\n#import <sys/un.h>\n#import <unistd.h>\n\n#if ! __has_feature(objc_arc)\n#warning This file must be compiled with ARC. Use -fobjc-arc flag (or convert project to ARC).\n// For more information see: https://github.com/robbiehanson/CocoaAsyncSocket/wiki/ARC\n#endif\n\n\n#ifndef GCDAsyncSocketLoggingEnabled\n#define GCDAsyncSocketLoggingEnabled 0\n#endif\n\n#if GCDAsyncSocketLoggingEnabled\n\n// Logging Enabled - See log level below\n\n// Logging uses the CocoaLumberjack framework (which is also GCD based).\n// https://github.com/robbiehanson/CocoaLumberjack\n// \n// It allows us to do a lot of logging without significantly slowing down the code.\n#import \"DDLog.h\"\n\n#define LogAsync   YES\n#define LogContext GCDAsyncSocketLoggingContext\n\n#define LogObjc(flg, frmt, ...) LOG_OBJC_MAYBE(LogAsync, logLevel, flg, LogContext, frmt, ##__VA_ARGS__)\n#define LogC(flg, frmt, ...)    LOG_C_MAYBE(LogAsync, logLevel, flg, LogContext, frmt, ##__VA_ARGS__)\n\n#define LogError(frmt, ...)     LogObjc(LOG_FLAG_ERROR,   (@\"%@: \" frmt), THIS_FILE, ##__VA_ARGS__)\n#define LogWarn(frmt, ...)      LogObjc(LOG_FLAG_WARN,    (@\"%@: \" frmt), THIS_FILE, ##__VA_ARGS__)\n#define LogInfo(frmt, ...)      LogObjc(LOG_FLAG_INFO,    (@\"%@: \" frmt), THIS_FILE, ##__VA_ARGS__)\n#define LogVerbose(frmt, ...)   LogObjc(LOG_FLAG_VERBOSE, (@\"%@: \" frmt), THIS_FILE, ##__VA_ARGS__)\n\n#define LogCError(frmt, ...)    LogC(LOG_FLAG_ERROR,   (@\"%@: \" frmt), THIS_FILE, ##__VA_ARGS__)\n#define LogCWarn(frmt, ...)     LogC(LOG_FLAG_WARN,    (@\"%@: \" frmt), THIS_FILE, ##__VA_ARGS__)\n#define LogCInfo(frmt, ...)     LogC(LOG_FLAG_INFO,    (@\"%@: \" frmt), THIS_FILE, ##__VA_ARGS__)\n#define LogCVerbose(frmt, ...)  LogC(LOG_FLAG_VERBOSE, (@\"%@: \" frmt), THIS_FILE, ##__VA_ARGS__)\n\n#define LogTrace()              LogObjc(LOG_FLAG_VERBOSE, @\"%@: %@\", THIS_FILE, THIS_METHOD)\n#define LogCTrace()             LogC(LOG_FLAG_VERBOSE, @\"%@: %s\", THIS_FILE, __FUNCTION__)\n\n#ifndef GCDAsyncSocketLogLevel\n#define GCDAsyncSocketLogLevel LOG_LEVEL_VERBOSE\n#endif\n\n// Log levels : off, error, warn, info, verbose\nstatic const int logLevel = GCDAsyncSocketLogLevel;\n\n#else\n\n// Logging Disabled\n\n#define LogError(frmt, ...)     {}\n#define LogWarn(frmt, ...)      {}\n#define LogInfo(frmt, ...)      {}\n#define LogVerbose(frmt, ...)   {}\n\n#define LogCError(frmt, ...)    {}\n#define LogCWarn(frmt, ...)     {}\n#define LogCInfo(frmt, ...)     {}\n#define LogCVerbose(frmt, ...)  {}\n\n#define LogTrace()              {}\n#define LogCTrace(frmt, ...)    {}\n\n#endif\n\n/**\n * Seeing a return statements within an inner block\n * can sometimes be mistaken for a return point of the enclosing method.\n * This makes inline blocks a bit easier to read.\n**/\n#define return_from_block  return\n\n/**\n * A socket file descriptor is really just an integer.\n * It represents the index of the socket within the kernel.\n * This makes invalid file descriptor comparisons easier to read.\n**/\n#define SOCKET_NULL -1\n\n\nNSString *const GCDAsyncSocketException = @\"GCDAsyncSocketException\";\nNSString *const GCDAsyncSocketErrorDomain = @\"GCDAsyncSocketErrorDomain\";\n\nNSString *const GCDAsyncSocketQueueName = @\"GCDAsyncSocket\";\nNSString *const GCDAsyncSocketThreadName = @\"GCDAsyncSocket-CFStream\";\n\nNSString *const GCDAsyncSocketManuallyEvaluateTrust = @\"GCDAsyncSocketManuallyEvaluateTrust\";\n#if TARGET_OS_IPHONE\nNSString *const GCDAsyncSocketUseCFStreamForTLS = @\"GCDAsyncSocketUseCFStreamForTLS\";\n#endif\nNSString *const GCDAsyncSocketSSLPeerID = @\"GCDAsyncSocketSSLPeerID\";\nNSString *const GCDAsyncSocketSSLProtocolVersionMin = @\"GCDAsyncSocketSSLProtocolVersionMin\";\nNSString *const GCDAsyncSocketSSLProtocolVersionMax = @\"GCDAsyncSocketSSLProtocolVersionMax\";\nNSString *const GCDAsyncSocketSSLSessionOptionFalseStart = @\"GCDAsyncSocketSSLSessionOptionFalseStart\";\nNSString *const GCDAsyncSocketSSLSessionOptionSendOneByteRecord = @\"GCDAsyncSocketSSLSessionOptionSendOneByteRecord\";\nNSString *const GCDAsyncSocketSSLCipherSuites = @\"GCDAsyncSocketSSLCipherSuites\";\n#if !TARGET_OS_IPHONE\nNSString *const GCDAsyncSocketSSLDiffieHellmanParameters = @\"GCDAsyncSocketSSLDiffieHellmanParameters\";\n#endif\n\nenum GCDAsyncSocketFlags\n{\n\tkSocketStarted                 = 1 <<  0,  // If set, socket has been started (accepting/connecting)\n\tkConnected                     = 1 <<  1,  // If set, the socket is connected\n\tkForbidReadsWrites             = 1 <<  2,  // If set, no new reads or writes are allowed\n\tkReadsPaused                   = 1 <<  3,  // If set, reads are paused due to possible timeout\n\tkWritesPaused                  = 1 <<  4,  // If set, writes are paused due to possible timeout\n\tkDisconnectAfterReads          = 1 <<  5,  // If set, disconnect after no more reads are queued\n\tkDisconnectAfterWrites         = 1 <<  6,  // If set, disconnect after no more writes are queued\n\tkSocketCanAcceptBytes          = 1 <<  7,  // If set, we know socket can accept bytes. If unset, it's unknown.\n\tkReadSourceSuspended           = 1 <<  8,  // If set, the read source is suspended\n\tkWriteSourceSuspended          = 1 <<  9,  // If set, the write source is suspended\n\tkQueuedTLS                     = 1 << 10,  // If set, we've queued an upgrade to TLS\n\tkStartingReadTLS               = 1 << 11,  // If set, we're waiting for TLS negotiation to complete\n\tkStartingWriteTLS              = 1 << 12,  // If set, we're waiting for TLS negotiation to complete\n\tkSocketSecure                  = 1 << 13,  // If set, socket is using secure communication via SSL/TLS\n\tkSocketHasReadEOF              = 1 << 14,  // If set, we have read EOF from socket\n\tkReadStreamClosed              = 1 << 15,  // If set, we've read EOF plus prebuffer has been drained\n\tkDealloc                       = 1 << 16,  // If set, the socket is being deallocated\n#if TARGET_OS_IPHONE\n\tkAddedStreamsToRunLoop         = 1 << 17,  // If set, CFStreams have been added to listener thread\n\tkUsingCFStreamForTLS           = 1 << 18,  // If set, we're forced to use CFStream instead of SecureTransport\n\tkSecureSocketHasBytesAvailable = 1 << 19,  // If set, CFReadStream has notified us of bytes available\n#endif\n};\n\nenum GCDAsyncSocketConfig\n{\n\tkIPv4Disabled              = 1 << 0,  // If set, IPv4 is disabled\n\tkIPv6Disabled              = 1 << 1,  // If set, IPv6 is disabled\n\tkPreferIPv6                = 1 << 2,  // If set, IPv6 is preferred over IPv4\n\tkAllowHalfDuplexConnection = 1 << 3,  // If set, the socket will stay open even if the read stream closes\n};\n\n#if TARGET_OS_IPHONE\n  static NSThread *cfstreamThread;  // Used for CFStreams\n\n\n  static uint64_t cfstreamThreadRetainCount;   // setup & teardown\n  static dispatch_queue_t cfstreamThreadSetupQueue; // setup & teardown\n#endif\n\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n#pragma mark -\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A PreBuffer is used when there is more data available on the socket\n * than is being requested by current read request.\n * In this case we slurp up all data from the socket (to minimize sys calls),\n * and store additional yet unread data in a \"prebuffer\".\n * \n * The prebuffer is entirely drained before we read from the socket again.\n * In other words, a large chunk of data is written is written to the prebuffer.\n * The prebuffer is then drained via a series of one or more reads (for subsequent read request(s)).\n * \n * A ring buffer was once used for this purpose.\n * But a ring buffer takes up twice as much memory as needed (double the size for mirroring).\n * In fact, it generally takes up more than twice the needed size as everything has to be rounded up to vm_page_size.\n * And since the prebuffer is always completely drained after being written to, a full ring buffer isn't needed.\n * \n * The current design is very simple and straight-forward, while also keeping memory requirements lower.\n**/\n\n@interface GCDAsyncSocketPreBuffer : NSObject\n{\n\tuint8_t *preBuffer;\n\tsize_t preBufferSize;\n\t\n\tuint8_t *readPointer;\n\tuint8_t *writePointer;\n}\n\n- (instancetype)initWithCapacity:(size_t)numBytes NS_DESIGNATED_INITIALIZER;\n\n- (void)ensureCapacityForWrite:(size_t)numBytes;\n\n- (size_t)availableBytes;\n- (uint8_t *)readBuffer;\n\n- (void)getReadBuffer:(uint8_t **)bufferPtr availableBytes:(size_t *)availableBytesPtr;\n\n- (size_t)availableSpace;\n- (uint8_t *)writeBuffer;\n\n- (void)getWriteBuffer:(uint8_t **)bufferPtr availableSpace:(size_t *)availableSpacePtr;\n\n- (void)didRead:(size_t)bytesRead;\n- (void)didWrite:(size_t)bytesWritten;\n\n- (void)reset;\n\n@end\n\n@implementation GCDAsyncSocketPreBuffer\n\n// Cover the superclass' designated initializer\n- (instancetype)init NS_UNAVAILABLE\n{\n\tNSAssert(0, @\"Use the designated initializer\");\n\treturn nil;\n}\n\n- (instancetype)initWithCapacity:(size_t)numBytes\n{\n\tif ((self = [super init]))\n\t{\n\t\tpreBufferSize = numBytes;\n\t\tpreBuffer = malloc(preBufferSize);\n\t\t\n\t\treadPointer = preBuffer;\n\t\twritePointer = preBuffer;\n\t}\n\treturn self;\n}\n\n- (void)dealloc\n{\n\tif (preBuffer)\n\t\tfree(preBuffer);\n}\n\n- (void)ensureCapacityForWrite:(size_t)numBytes\n{\n\tsize_t availableSpace = [self availableSpace];\n\t\n\tif (numBytes > availableSpace)\n\t{\n\t\tsize_t additionalBytes = numBytes - availableSpace;\n\t\t\n\t\tsize_t newPreBufferSize = preBufferSize + additionalBytes;\n\t\tuint8_t *newPreBuffer = realloc(preBuffer, newPreBufferSize);\n\t\t\n\t\tsize_t readPointerOffset = readPointer - preBuffer;\n\t\tsize_t writePointerOffset = writePointer - preBuffer;\n\t\t\n\t\tpreBuffer = newPreBuffer;\n\t\tpreBufferSize = newPreBufferSize;\n\t\t\n\t\treadPointer = preBuffer + readPointerOffset;\n\t\twritePointer = preBuffer + writePointerOffset;\n\t}\n}\n\n- (size_t)availableBytes\n{\n\treturn writePointer - readPointer;\n}\n\n- (uint8_t *)readBuffer\n{\n\treturn readPointer;\n}\n\n- (void)getReadBuffer:(uint8_t **)bufferPtr availableBytes:(size_t *)availableBytesPtr\n{\n\tif (bufferPtr) *bufferPtr = readPointer;\n\tif (availableBytesPtr) *availableBytesPtr = [self availableBytes];\n}\n\n- (void)didRead:(size_t)bytesRead\n{\n\treadPointer += bytesRead;\n\t\n\tif (readPointer == writePointer)\n\t{\n\t\t// The prebuffer has been drained. Reset pointers.\n\t\treadPointer  = preBuffer;\n\t\twritePointer = preBuffer;\n\t}\n}\n\n- (size_t)availableSpace\n{\n\treturn preBufferSize - (writePointer - preBuffer);\n}\n\n- (uint8_t *)writeBuffer\n{\n\treturn writePointer;\n}\n\n- (void)getWriteBuffer:(uint8_t **)bufferPtr availableSpace:(size_t *)availableSpacePtr\n{\n\tif (bufferPtr) *bufferPtr = writePointer;\n\tif (availableSpacePtr) *availableSpacePtr = [self availableSpace];\n}\n\n- (void)didWrite:(size_t)bytesWritten\n{\n\twritePointer += bytesWritten;\n}\n\n- (void)reset\n{\n\treadPointer  = preBuffer;\n\twritePointer = preBuffer;\n}\n\n@end\n\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n#pragma mark -\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\n/**\n * The GCDAsyncReadPacket encompasses the instructions for any given read.\n * The content of a read packet allows the code to determine if we're:\n *  - reading to a certain length\n *  - reading to a certain separator\n *  - or simply reading the first chunk of available data\n**/\n@interface GCDAsyncReadPacket : NSObject\n{\n  @public\n\tNSMutableData *buffer;\n\tNSUInteger startOffset;\n\tNSUInteger bytesDone;\n\tNSUInteger maxLength;\n\tNSTimeInterval timeout;\n\tNSUInteger readLength;\n\tNSData *term;\n\tBOOL bufferOwner;\n\tNSUInteger originalBufferLength;\n\tlong tag;\n}\n- (instancetype)initWithData:(NSMutableData *)d\n                 startOffset:(NSUInteger)s\n                   maxLength:(NSUInteger)m\n                     timeout:(NSTimeInterval)t\n                  readLength:(NSUInteger)l\n                  terminator:(NSData *)e\n                         tag:(long)i NS_DESIGNATED_INITIALIZER;\n\n- (void)ensureCapacityForAdditionalDataOfLength:(NSUInteger)bytesToRead;\n\n- (NSUInteger)optimalReadLengthWithDefault:(NSUInteger)defaultValue shouldPreBuffer:(BOOL *)shouldPreBufferPtr;\n\n- (NSUInteger)readLengthForNonTermWithHint:(NSUInteger)bytesAvailable;\n- (NSUInteger)readLengthForTermWithHint:(NSUInteger)bytesAvailable shouldPreBuffer:(BOOL *)shouldPreBufferPtr;\n- (NSUInteger)readLengthForTermWithPreBuffer:(GCDAsyncSocketPreBuffer *)preBuffer found:(BOOL *)foundPtr;\n\n- (NSInteger)searchForTermAfterPreBuffering:(ssize_t)numBytes;\n\n@end\n\n@implementation GCDAsyncReadPacket\n\n// Cover the superclass' designated initializer\n- (instancetype)init NS_UNAVAILABLE\n{\n\tNSAssert(0, @\"Use the designated initializer\");\n\treturn nil;\n}\n\n- (instancetype)initWithData:(NSMutableData *)d\n                 startOffset:(NSUInteger)s\n                   maxLength:(NSUInteger)m\n                     timeout:(NSTimeInterval)t\n                  readLength:(NSUInteger)l\n                  terminator:(NSData *)e\n                         tag:(long)i\n{\n\tif((self = [super init]))\n\t{\n\t\tbytesDone = 0;\n\t\tmaxLength = m;\n\t\ttimeout = t;\n\t\treadLength = l;\n\t\tterm = [e copy];\n\t\ttag = i;\n\t\t\n\t\tif (d)\n\t\t{\n\t\t\tbuffer = d;\n\t\t\tstartOffset = s;\n\t\t\tbufferOwner = NO;\n\t\t\toriginalBufferLength = [d length];\n\t\t}\n\t\telse\n\t\t{\n\t\t\tif (readLength > 0)\n\t\t\t\tbuffer = [[NSMutableData alloc] initWithLength:readLength];\n\t\t\telse\n\t\t\t\tbuffer = [[NSMutableData alloc] initWithLength:0];\n\t\t\t\n\t\t\tstartOffset = 0;\n\t\t\tbufferOwner = YES;\n\t\t\toriginalBufferLength = 0;\n\t\t}\n\t}\n\treturn self;\n}\n\n/**\n * Increases the length of the buffer (if needed) to ensure a read of the given size will fit.\n**/\n- (void)ensureCapacityForAdditionalDataOfLength:(NSUInteger)bytesToRead\n{\n\tNSUInteger buffSize = [buffer length];\n\tNSUInteger buffUsed = startOffset + bytesDone;\n\t\n\tNSUInteger buffSpace = buffSize - buffUsed;\n\t\n\tif (bytesToRead > buffSpace)\n\t{\n\t\tNSUInteger buffInc = bytesToRead - buffSpace;\n\t\t\n\t\t[buffer increaseLengthBy:buffInc];\n\t}\n}\n\n/**\n * This method is used when we do NOT know how much data is available to be read from the socket.\n * This method returns the default value unless it exceeds the specified readLength or maxLength.\n * \n * Furthermore, the shouldPreBuffer decision is based upon the packet type,\n * and whether the returned value would fit in the current buffer without requiring a resize of the buffer.\n**/\n- (NSUInteger)optimalReadLengthWithDefault:(NSUInteger)defaultValue shouldPreBuffer:(BOOL *)shouldPreBufferPtr\n{\n\tNSUInteger result;\n\t\n\tif (readLength > 0)\n\t{\n\t\t// Read a specific length of data\n\t\tresult = readLength - bytesDone;\n\t\t\n\t\t// There is no need to prebuffer since we know exactly how much data we need to read.\n\t\t// Even if the buffer isn't currently big enough to fit this amount of data,\n\t\t// it would have to be resized eventually anyway.\n\t\t\n\t\tif (shouldPreBufferPtr)\n\t\t\t*shouldPreBufferPtr = NO;\n\t}\n\telse\n\t{\n\t\t// Either reading until we find a specified terminator,\n\t\t// or we're simply reading all available data.\n\t\t// \n\t\t// In other words, one of:\n\t\t// \n\t\t// - readDataToData packet\n\t\t// - readDataWithTimeout packet\n\t\t\n\t\tif (maxLength > 0)\n\t\t\tresult =  MIN(defaultValue, (maxLength - bytesDone));\n\t\telse\n\t\t\tresult = defaultValue;\n\t\t\n\t\t// Since we don't know the size of the read in advance,\n\t\t// the shouldPreBuffer decision is based upon whether the returned value would fit\n\t\t// in the current buffer without requiring a resize of the buffer.\n\t\t// \n\t\t// This is because, in all likelyhood, the amount read from the socket will be less than the default value.\n\t\t// Thus we should avoid over-allocating the read buffer when we can simply use the pre-buffer instead.\n\t\t\n\t\tif (shouldPreBufferPtr)\n\t\t{\n\t\t\tNSUInteger buffSize = [buffer length];\n\t\t\tNSUInteger buffUsed = startOffset + bytesDone;\n\t\t\t\n\t\t\tNSUInteger buffSpace = buffSize - buffUsed;\n\t\t\t\n\t\t\tif (buffSpace >= result)\n\t\t\t\t*shouldPreBufferPtr = NO;\n\t\t\telse\n\t\t\t\t*shouldPreBufferPtr = YES;\n\t\t}\n\t}\n\t\n\treturn result;\n}\n\n/**\n * For read packets without a set terminator, returns the amount of data\n * that can be read without exceeding the readLength or maxLength.\n * \n * The given parameter indicates the number of bytes estimated to be available on the socket,\n * which is taken into consideration during the calculation.\n * \n * The given hint MUST be greater than zero.\n**/\n- (NSUInteger)readLengthForNonTermWithHint:(NSUInteger)bytesAvailable\n{\n\tNSAssert(term == nil, @\"This method does not apply to term reads\");\n\tNSAssert(bytesAvailable > 0, @\"Invalid parameter: bytesAvailable\");\n\t\n\tif (readLength > 0)\n\t{\n\t\t// Read a specific length of data\n\t\t\n\t\treturn MIN(bytesAvailable, (readLength - bytesDone));\n\t\t\n\t\t// No need to avoid resizing the buffer.\n\t\t// If the user provided their own buffer,\n\t\t// and told us to read a certain length of data that exceeds the size of the buffer,\n\t\t// then it is clear that our code will resize the buffer during the read operation.\n\t\t// \n\t\t// This method does not actually do any resizing.\n\t\t// The resizing will happen elsewhere if needed.\n\t}\n\telse\n\t{\n\t\t// Read all available data\n\t\t\n\t\tNSUInteger result = bytesAvailable;\n\t\t\n\t\tif (maxLength > 0)\n\t\t{\n\t\t\tresult = MIN(result, (maxLength - bytesDone));\n\t\t}\n\t\t\n\t\t// No need to avoid resizing the buffer.\n\t\t// If the user provided their own buffer,\n\t\t// and told us to read all available data without giving us a maxLength,\n\t\t// then it is clear that our code might resize the buffer during the read operation.\n\t\t// \n\t\t// This method does not actually do any resizing.\n\t\t// The resizing will happen elsewhere if needed.\n\t\t\n\t\treturn result;\n\t}\n}\n\n/**\n * For read packets with a set terminator, returns the amount of data\n * that can be read without exceeding the maxLength.\n * \n * The given parameter indicates the number of bytes estimated to be available on the socket,\n * which is taken into consideration during the calculation.\n * \n * To optimize memory allocations, mem copies, and mem moves\n * the shouldPreBuffer boolean value will indicate if the data should be read into a prebuffer first,\n * or if the data can be read directly into the read packet's buffer.\n**/\n- (NSUInteger)readLengthForTermWithHint:(NSUInteger)bytesAvailable shouldPreBuffer:(BOOL *)shouldPreBufferPtr\n{\n\tNSAssert(term != nil, @\"This method does not apply to non-term reads\");\n\tNSAssert(bytesAvailable > 0, @\"Invalid parameter: bytesAvailable\");\n\t\n\t\n\tNSUInteger result = bytesAvailable;\n\t\n\tif (maxLength > 0)\n\t{\n\t\tresult = MIN(result, (maxLength - bytesDone));\n\t}\n\t\n\t// Should the data be read into the read packet's buffer, or into a pre-buffer first?\n\t// \n\t// One would imagine the preferred option is the faster one.\n\t// So which one is faster?\n\t// \n\t// Reading directly into the packet's buffer requires:\n\t// 1. Possibly resizing packet buffer (malloc/realloc)\n\t// 2. Filling buffer (read)\n\t// 3. Searching for term (memcmp)\n\t// 4. Possibly copying overflow into prebuffer (malloc/realloc, memcpy)\n\t// \n\t// Reading into prebuffer first:\n\t// 1. Possibly resizing prebuffer (malloc/realloc)\n\t// 2. Filling buffer (read)\n\t// 3. Searching for term (memcmp)\n\t// 4. Copying underflow into packet buffer (malloc/realloc, memcpy)\n\t// 5. Removing underflow from prebuffer (memmove)\n\t// \n\t// Comparing the performance of the two we can see that reading\n\t// data into the prebuffer first is slower due to the extra memove.\n\t// \n\t// However:\n\t// The implementation of NSMutableData is open source via core foundation's CFMutableData.\n\t// Decreasing the length of a mutable data object doesn't cause a realloc.\n\t// In other words, the capacity of a mutable data object can grow, but doesn't shrink.\n\t// \n\t// This means the prebuffer will rarely need a realloc.\n\t// The packet buffer, on the other hand, may often need a realloc.\n\t// This is especially true if we are the buffer owner.\n\t// Furthermore, if we are constantly realloc'ing the packet buffer,\n\t// and then moving the overflow into the prebuffer,\n\t// then we're consistently over-allocating memory for each term read.\n\t// And now we get into a bit of a tradeoff between speed and memory utilization.\n\t// \n\t// The end result is that the two perform very similarly.\n\t// And we can answer the original question very simply by another means.\n\t// \n\t// If we can read all the data directly into the packet's buffer without resizing it first,\n\t// then we do so. Otherwise we use the prebuffer.\n\t\n\tif (shouldPreBufferPtr)\n\t{\n\t\tNSUInteger buffSize = [buffer length];\n\t\tNSUInteger buffUsed = startOffset + bytesDone;\n\t\t\n\t\tif ((buffSize - buffUsed) >= result)\n\t\t\t*shouldPreBufferPtr = NO;\n\t\telse\n\t\t\t*shouldPreBufferPtr = YES;\n\t}\n\t\n\treturn result;\n}\n\n/**\n * For read packets with a set terminator,\n * returns the amount of data that can be read from the given preBuffer,\n * without going over a terminator or the maxLength.\n * \n * It is assumed the terminator has not already been read.\n**/\n- (NSUInteger)readLengthForTermWithPreBuffer:(GCDAsyncSocketPreBuffer *)preBuffer found:(BOOL *)foundPtr\n{\n\tNSAssert(term != nil, @\"This method does not apply to non-term reads\");\n\tNSAssert([preBuffer availableBytes] > 0, @\"Invoked with empty pre buffer!\");\n\t\n\t// We know that the terminator, as a whole, doesn't exist in our own buffer.\n\t// But it is possible that a _portion_ of it exists in our buffer.\n\t// So we're going to look for the terminator starting with a portion of our own buffer.\n\t// \n\t// Example:\n\t// \n\t// term length      = 3 bytes\n\t// bytesDone        = 5 bytes\n\t// preBuffer length = 5 bytes\n\t// \n\t// If we append the preBuffer to our buffer,\n\t// it would look like this:\n\t// \n\t// ---------------------\n\t// |B|B|B|B|B|P|P|P|P|P|\n\t// ---------------------\n\t// \n\t// So we start our search here:\n\t// \n\t// ---------------------\n\t// |B|B|B|B|B|P|P|P|P|P|\n\t// -------^-^-^---------\n\t// \n\t// And move forwards...\n\t// \n\t// ---------------------\n\t// |B|B|B|B|B|P|P|P|P|P|\n\t// ---------^-^-^-------\n\t// \n\t// Until we find the terminator or reach the end.\n\t// \n\t// ---------------------\n\t// |B|B|B|B|B|P|P|P|P|P|\n\t// ---------------^-^-^-\n\t\n\tBOOL found = NO;\n\t\n\tNSUInteger termLength = [term length];\n\tNSUInteger preBufferLength = [preBuffer availableBytes];\n\t\n\tif ((bytesDone + preBufferLength) < termLength)\n\t{\n\t\t// Not enough data for a full term sequence yet\n\t\treturn preBufferLength;\n\t}\n\t\n\tNSUInteger maxPreBufferLength;\n\tif (maxLength > 0) {\n\t\tmaxPreBufferLength = MIN(preBufferLength, (maxLength - bytesDone));\n\t\t\n\t\t// Note: maxLength >= termLength\n\t}\n\telse {\n\t\tmaxPreBufferLength = preBufferLength;\n\t}\n\t\n\tuint8_t seq[termLength];\n\tconst void *termBuf = [term bytes];\n\t\n\tNSUInteger bufLen = MIN(bytesDone, (termLength - 1));\n\tuint8_t *buf = (uint8_t *)[buffer mutableBytes] + startOffset + bytesDone - bufLen;\n\t\n\tNSUInteger preLen = termLength - bufLen;\n\tconst uint8_t *pre = [preBuffer readBuffer];\n\t\n\tNSUInteger loopCount = bufLen + maxPreBufferLength - termLength + 1; // Plus one. See example above.\n\t\n\tNSUInteger result = maxPreBufferLength;\n\t\n\tNSUInteger i;\n\tfor (i = 0; i < loopCount; i++)\n\t{\n\t\tif (bufLen > 0)\n\t\t{\n\t\t\t// Combining bytes from buffer and preBuffer\n\t\t\t\n\t\t\tmemcpy(seq, buf, bufLen);\n\t\t\tmemcpy(seq + bufLen, pre, preLen);\n\t\t\t\n\t\t\tif (memcmp(seq, termBuf, termLength) == 0)\n\t\t\t{\n\t\t\t\tresult = preLen;\n\t\t\t\tfound = YES;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\t\n\t\t\tbuf++;\n\t\t\tbufLen--;\n\t\t\tpreLen++;\n\t\t}\n\t\telse\n\t\t{\n\t\t\t// Comparing directly from preBuffer\n\t\t\t\n\t\t\tif (memcmp(pre, termBuf, termLength) == 0)\n\t\t\t{\n\t\t\t\tNSUInteger preOffset = pre - [preBuffer readBuffer]; // pointer arithmetic\n\t\t\t\t\n\t\t\t\tresult = preOffset + termLength;\n\t\t\t\tfound = YES;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\t\n\t\t\tpre++;\n\t\t}\n\t}\n\t\n\t// There is no need to avoid resizing the buffer in this particular situation.\n\t\n\tif (foundPtr) *foundPtr = found;\n\treturn result;\n}\n\n/**\n * For read packets with a set terminator, scans the packet buffer for the term.\n * It is assumed the terminator had not been fully read prior to the new bytes.\n * \n * If the term is found, the number of excess bytes after the term are returned.\n * If the term is not found, this method will return -1.\n * \n * Note: A return value of zero means the term was found at the very end.\n * \n * Prerequisites:\n * The given number of bytes have been added to the end of our buffer.\n * Our bytesDone variable has NOT been changed due to the prebuffered bytes.\n**/\n- (NSInteger)searchForTermAfterPreBuffering:(ssize_t)numBytes\n{\n\tNSAssert(term != nil, @\"This method does not apply to non-term reads\");\n\t\n\t// The implementation of this method is very similar to the above method.\n\t// See the above method for a discussion of the algorithm used here.\n\t\n\tuint8_t *buff = [buffer mutableBytes];\n\tNSUInteger buffLength = bytesDone + numBytes;\n\t\n\tconst void *termBuff = [term bytes];\n\tNSUInteger termLength = [term length];\n\t\n\t// Note: We are dealing with unsigned integers,\n\t// so make sure the math doesn't go below zero.\n\t\n\tNSUInteger i = ((buffLength - numBytes) >= termLength) ? (buffLength - numBytes - termLength + 1) : 0;\n\t\n\twhile (i + termLength <= buffLength)\n\t{\n\t\tuint8_t *subBuffer = buff + startOffset + i;\n\t\t\n\t\tif (memcmp(subBuffer, termBuff, termLength) == 0)\n\t\t{\n\t\t\treturn buffLength - (i + termLength);\n\t\t}\n\t\t\n\t\ti++;\n\t}\n\t\n\treturn -1;\n}\n\n\n@end\n\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n#pragma mark -\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\n/**\n * The GCDAsyncWritePacket encompasses the instructions for any given write.\n**/\n@interface GCDAsyncWritePacket : NSObject\n{\n  @public\n\tNSData *buffer;\n\tNSUInteger bytesDone;\n\tlong tag;\n\tNSTimeInterval timeout;\n}\n- (instancetype)initWithData:(NSData *)d timeout:(NSTimeInterval)t tag:(long)i NS_DESIGNATED_INITIALIZER;\n@end\n\n@implementation GCDAsyncWritePacket\n\n// Cover the superclass' designated initializer\n- (instancetype)init NS_UNAVAILABLE\n{\n\tNSAssert(0, @\"Use the designated initializer\");\n\treturn nil;\n}\n\n- (instancetype)initWithData:(NSData *)d timeout:(NSTimeInterval)t tag:(long)i\n{\n\tif((self = [super init]))\n\t{\n\t\tbuffer = d; // Retain not copy. For performance as documented in header file.\n\t\tbytesDone = 0;\n\t\ttimeout = t;\n\t\ttag = i;\n\t}\n\treturn self;\n}\n\n\n@end\n\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n#pragma mark -\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\n/**\n * The GCDAsyncSpecialPacket encompasses special instructions for interruptions in the read/write queues.\n * This class my be altered to support more than just TLS in the future.\n**/\n@interface GCDAsyncSpecialPacket : NSObject\n{\n  @public\n\tNSDictionary *tlsSettings;\n}\n- (instancetype)initWithTLSSettings:(NSDictionary <NSString*,NSObject*>*)settings NS_DESIGNATED_INITIALIZER;\n@end\n\n@implementation GCDAsyncSpecialPacket\n\n// Cover the superclass' designated initializer\n- (instancetype)init NS_UNAVAILABLE\n{\n\tNSAssert(0, @\"Use the designated initializer\");\n\treturn nil;\n}\n\n- (instancetype)initWithTLSSettings:(NSDictionary <NSString*,NSObject*>*)settings\n{\n\tif((self = [super init]))\n\t{\n\t\ttlsSettings = [settings copy];\n\t}\n\treturn self;\n}\n\n\n@end\n\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n#pragma mark -\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\n@implementation GCDAsyncSocket\n{\n\tuint32_t flags;\n\tuint16_t config;\n\t\n\t__weak id<GCDAsyncSocketDelegate> delegate;\n\tdispatch_queue_t delegateQueue;\n\t\n\tint socket4FD;\n\tint socket6FD;\n\tint socketUN;\n\tNSURL *socketUrl;\n\tint stateIndex;\n\tNSData * connectInterface4;\n\tNSData * connectInterface6;\n\tNSData * connectInterfaceUN;\n\t\n\tdispatch_queue_t socketQueue;\n\t\n\tdispatch_source_t accept4Source;\n\tdispatch_source_t accept6Source;\n\tdispatch_source_t acceptUNSource;\n\tdispatch_source_t connectTimer;\n\tdispatch_source_t readSource;\n\tdispatch_source_t writeSource;\n\tdispatch_source_t readTimer;\n\tdispatch_source_t writeTimer;\n\t\n\tNSMutableArray *readQueue;\n\tNSMutableArray *writeQueue;\n\t\n\tGCDAsyncReadPacket *currentRead;\n\tGCDAsyncWritePacket *currentWrite;\n\t\n\tunsigned long socketFDBytesAvailable;\n\t\n\tGCDAsyncSocketPreBuffer *preBuffer;\n\t\t\n#if TARGET_OS_IPHONE\n\tCFStreamClientContext streamContext;\n\tCFReadStreamRef readStream;\n\tCFWriteStreamRef writeStream;\n#endif\n\tSSLContextRef sslContext;\n\tGCDAsyncSocketPreBuffer *sslPreBuffer;\n\tsize_t sslWriteCachedLength;\n\tOSStatus sslErrCode;\n    OSStatus lastSSLHandshakeError;\n\t\n\tvoid *IsOnSocketQueueOrTargetQueueKey;\n\t\n\tid userData;\n    NSTimeInterval alternateAddressDelay;\n}\n\n- (instancetype)init\n{\n\treturn [self initWithDelegate:nil delegateQueue:NULL socketQueue:NULL];\n}\n\n- (instancetype)initWithSocketQueue:(dispatch_queue_t)sq\n{\n\treturn [self initWithDelegate:nil delegateQueue:NULL socketQueue:sq];\n}\n\n- (instancetype)initWithDelegate:(id<GCDAsyncSocketDelegate>)aDelegate delegateQueue:(dispatch_queue_t)dq\n{\n\treturn [self initWithDelegate:aDelegate delegateQueue:dq socketQueue:NULL];\n}\n\n- (instancetype)initWithDelegate:(id<GCDAsyncSocketDelegate>)aDelegate delegateQueue:(dispatch_queue_t)dq socketQueue:(dispatch_queue_t)sq\n{\n\tif((self = [super init]))\n\t{\n\t\tdelegate = aDelegate;\n\t\tdelegateQueue = dq;\n\t\t\n\t\t#if !OS_OBJECT_USE_OBJC\n\t\tif (dq) dispatch_retain(dq);\n\t\t#endif\n\t\t\n\t\tsocket4FD = SOCKET_NULL;\n\t\tsocket6FD = SOCKET_NULL;\n\t\tsocketUN = SOCKET_NULL;\n\t\tsocketUrl = nil;\n\t\tstateIndex = 0;\n\t\t\n\t\tif (sq)\n\t\t{\n\t\t\tNSAssert(sq != dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW, 0),\n\t\t\t         @\"The given socketQueue parameter must not be a concurrent queue.\");\n\t\t\tNSAssert(sq != dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0),\n\t\t\t         @\"The given socketQueue parameter must not be a concurrent queue.\");\n\t\t\tNSAssert(sq != dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0),\n\t\t\t         @\"The given socketQueue parameter must not be a concurrent queue.\");\n\t\t\t\n\t\t\tsocketQueue = sq;\n\t\t\t#if !OS_OBJECT_USE_OBJC\n\t\t\tdispatch_retain(sq);\n\t\t\t#endif\n\t\t}\n\t\telse\n\t\t{\n\t\t\tsocketQueue = dispatch_queue_create([GCDAsyncSocketQueueName UTF8String], NULL);\n\t\t}\n\t\t\n\t\t// The dispatch_queue_set_specific() and dispatch_get_specific() functions take a \"void *key\" parameter.\n\t\t// From the documentation:\n\t\t//\n\t\t// > Keys are only compared as pointers and are never dereferenced.\n\t\t// > Thus, you can use a pointer to a static variable for a specific subsystem or\n\t\t// > any other value that allows you to identify the value uniquely.\n\t\t//\n\t\t// We're just going to use the memory address of an ivar.\n\t\t// Specifically an ivar that is explicitly named for our purpose to make the code more readable.\n\t\t//\n\t\t// However, it feels tedious (and less readable) to include the \"&\" all the time:\n\t\t// dispatch_get_specific(&IsOnSocketQueueOrTargetQueueKey)\n\t\t//\n\t\t// So we're going to make it so it doesn't matter if we use the '&' or not,\n\t\t// by assigning the value of the ivar to the address of the ivar.\n\t\t// Thus: IsOnSocketQueueOrTargetQueueKey == &IsOnSocketQueueOrTargetQueueKey;\n\t\t\n\t\tIsOnSocketQueueOrTargetQueueKey = &IsOnSocketQueueOrTargetQueueKey;\n\t\t\n\t\tvoid *nonNullUnusedPointer = (__bridge void *)self;\n\t\tdispatch_queue_set_specific(socketQueue, IsOnSocketQueueOrTargetQueueKey, nonNullUnusedPointer, NULL);\n\t\t\n\t\treadQueue = [[NSMutableArray alloc] initWithCapacity:5];\n\t\tcurrentRead = nil;\n\t\t\n\t\twriteQueue = [[NSMutableArray alloc] initWithCapacity:5];\n\t\tcurrentWrite = nil;\n\t\t\n\t\tpreBuffer = [[GCDAsyncSocketPreBuffer alloc] initWithCapacity:(1024 * 4)];\n        alternateAddressDelay = 0.3;\n\t}\n\treturn self;\n}\n\n- (void)dealloc\n{\n\tLogInfo(@\"%@ - %@ (start)\", THIS_METHOD, self);\n\t\n\t// Set dealloc flag.\n\t// This is used by closeWithError to ensure we don't accidentally retain ourself.\n\tflags |= kDealloc;\n\t\n\tif (dispatch_get_specific(IsOnSocketQueueOrTargetQueueKey))\n\t{\n\t\t[self closeWithError:nil];\n\t}\n\telse\n\t{\n\t\tdispatch_sync(socketQueue, ^{\n\t\t\t[self closeWithError:nil];\n\t\t});\n\t}\n\t\n\tdelegate = nil;\n\t\n\t#if !OS_OBJECT_USE_OBJC\n\tif (delegateQueue) dispatch_release(delegateQueue);\n\t#endif\n\tdelegateQueue = NULL;\n\t\n\t#if !OS_OBJECT_USE_OBJC\n\tif (socketQueue) dispatch_release(socketQueue);\n\t#endif\n\tsocketQueue = NULL;\n\t\n\tLogInfo(@\"%@ - %@ (finish)\", THIS_METHOD, self);\n}\n\n#pragma mark -\n\n+ (nullable instancetype)socketFromConnectedSocketFD:(int)socketFD socketQueue:(nullable dispatch_queue_t)sq error:(NSError**)error {\n  return [self socketFromConnectedSocketFD:socketFD delegate:nil delegateQueue:NULL socketQueue:sq error:error];\n}\n\n+ (nullable instancetype)socketFromConnectedSocketFD:(int)socketFD delegate:(nullable id<GCDAsyncSocketDelegate>)aDelegate delegateQueue:(nullable dispatch_queue_t)dq error:(NSError**)error {\n  return [self socketFromConnectedSocketFD:socketFD delegate:aDelegate delegateQueue:dq socketQueue:NULL error:error];\n}\n\n+ (nullable instancetype)socketFromConnectedSocketFD:(int)socketFD delegate:(nullable id<GCDAsyncSocketDelegate>)aDelegate delegateQueue:(nullable dispatch_queue_t)dq socketQueue:(nullable dispatch_queue_t)sq error:(NSError* __autoreleasing *)error\n{\n  __block BOOL errorOccured = NO;\n  \n  GCDAsyncSocket *socket = [[[self class] alloc] initWithDelegate:aDelegate delegateQueue:dq socketQueue:sq];\n  \n  dispatch_sync(socket->socketQueue, ^{ @autoreleasepool {\n    struct sockaddr addr;\n    socklen_t addr_size = sizeof(struct sockaddr);\n    int retVal = getpeername(socketFD, (struct sockaddr *)&addr, &addr_size);\n    if (retVal)\n    {\n      NSString *errMsg = NSLocalizedStringWithDefaultValue(@\"GCDAsyncSocketOtherError\",\n                                                           @\"GCDAsyncSocket\", [NSBundle mainBundle],\n                                                           @\"Attempt to create socket from socket FD failed. getpeername() failed\", nil);\n      \n      NSDictionary *userInfo = @{NSLocalizedDescriptionKey : errMsg};\n\n      errorOccured = YES;\n      if (error)\n        *error = [NSError errorWithDomain:GCDAsyncSocketErrorDomain code:GCDAsyncSocketOtherError userInfo:userInfo];\n      return;\n    }\n    \n    if (addr.sa_family == AF_INET)\n    {\n      socket->socket4FD = socketFD;\n    }\n    else if (addr.sa_family == AF_INET6)\n    {\n      socket->socket6FD = socketFD;\n    }\n    else\n    {\n      NSString *errMsg = NSLocalizedStringWithDefaultValue(@\"GCDAsyncSocketOtherError\",\n                                                           @\"GCDAsyncSocket\", [NSBundle mainBundle],\n                                                           @\"Attempt to create socket from socket FD failed. socket FD is neither IPv4 nor IPv6\", nil);\n      \n      NSDictionary *userInfo = @{NSLocalizedDescriptionKey : errMsg};\n      \n      errorOccured = YES;\n      if (error)\n        *error = [NSError errorWithDomain:GCDAsyncSocketErrorDomain code:GCDAsyncSocketOtherError userInfo:userInfo];\n      return;\n    }\n    \n    socket->flags = kSocketStarted;\n    [socket didConnect:socket->stateIndex];\n  }});\n  \n  return errorOccured? nil: socket;\n}\n\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n#pragma mark Configuration\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\n- (id)delegate\n{\n\tif (dispatch_get_specific(IsOnSocketQueueOrTargetQueueKey))\n\t{\n\t\treturn delegate;\n\t}\n\telse\n\t{\n\t\t__block id result;\n\t\t\n\t\tdispatch_sync(socketQueue, ^{\n            result = self->delegate;\n\t\t});\n\t\t\n\t\treturn result;\n\t}\n}\n\n- (void)setDelegate:(id)newDelegate synchronously:(BOOL)synchronously\n{\n\tdispatch_block_t block = ^{\n        self->delegate = newDelegate;\n\t};\n\t\n\tif (dispatch_get_specific(IsOnSocketQueueOrTargetQueueKey)) {\n\t\tblock();\n\t}\n\telse {\n\t\tif (synchronously)\n\t\t\tdispatch_sync(socketQueue, block);\n\t\telse\n\t\t\tdispatch_async(socketQueue, block);\n\t}\n}\n\n- (void)setDelegate:(id<GCDAsyncSocketDelegate>)newDelegate\n{\n\t[self setDelegate:newDelegate synchronously:NO];\n}\n\n- (void)synchronouslySetDelegate:(id<GCDAsyncSocketDelegate>)newDelegate\n{\n\t[self setDelegate:newDelegate synchronously:YES];\n}\n\n- (dispatch_queue_t)delegateQueue\n{\n\tif (dispatch_get_specific(IsOnSocketQueueOrTargetQueueKey))\n\t{\n\t\treturn delegateQueue;\n\t}\n\telse\n\t{\n\t\t__block dispatch_queue_t result;\n\t\t\n\t\tdispatch_sync(socketQueue, ^{\n            result = self->delegateQueue;\n\t\t});\n\t\t\n\t\treturn result;\n\t}\n}\n\n- (void)setDelegateQueue:(dispatch_queue_t)newDelegateQueue synchronously:(BOOL)synchronously\n{\n\tdispatch_block_t block = ^{\n\t\t\n\t\t#if !OS_OBJECT_USE_OBJC\n        if (self->delegateQueue) dispatch_release(self->delegateQueue);\n\t\tif (newDelegateQueue) dispatch_retain(newDelegateQueue);\n\t\t#endif\n\t\t\n        self->delegateQueue = newDelegateQueue;\n\t};\n\t\n\tif (dispatch_get_specific(IsOnSocketQueueOrTargetQueueKey)) {\n\t\tblock();\n\t}\n\telse {\n\t\tif (synchronously)\n\t\t\tdispatch_sync(socketQueue, block);\n\t\telse\n\t\t\tdispatch_async(socketQueue, block);\n\t}\n}\n\n- (void)setDelegateQueue:(dispatch_queue_t)newDelegateQueue\n{\n\t[self setDelegateQueue:newDelegateQueue synchronously:NO];\n}\n\n- (void)synchronouslySetDelegateQueue:(dispatch_queue_t)newDelegateQueue\n{\n\t[self setDelegateQueue:newDelegateQueue synchronously:YES];\n}\n\n- (void)getDelegate:(id<GCDAsyncSocketDelegate> *)delegatePtr delegateQueue:(dispatch_queue_t *)delegateQueuePtr\n{\n\tif (dispatch_get_specific(IsOnSocketQueueOrTargetQueueKey))\n\t{\n\t\tif (delegatePtr) *delegatePtr = delegate;\n\t\tif (delegateQueuePtr) *delegateQueuePtr = delegateQueue;\n\t}\n\telse\n\t{\n\t\t__block id dPtr = NULL;\n\t\t__block dispatch_queue_t dqPtr = NULL;\n\t\t\n\t\tdispatch_sync(socketQueue, ^{\n            dPtr = self->delegate;\n            dqPtr = self->delegateQueue;\n\t\t});\n\t\t\n\t\tif (delegatePtr) *delegatePtr = dPtr;\n\t\tif (delegateQueuePtr) *delegateQueuePtr = dqPtr;\n\t}\n}\n\n- (void)setDelegate:(id)newDelegate delegateQueue:(dispatch_queue_t)newDelegateQueue synchronously:(BOOL)synchronously\n{\n\tdispatch_block_t block = ^{\n\t\t\n        self->delegate = newDelegate;\n\t\t\n\t\t#if !OS_OBJECT_USE_OBJC\n        if (self->delegateQueue) dispatch_release(self->delegateQueue);\n\t\tif (newDelegateQueue) dispatch_retain(newDelegateQueue);\n\t\t#endif\n\t\t\n        self->delegateQueue = newDelegateQueue;\n\t};\n\t\n\tif (dispatch_get_specific(IsOnSocketQueueOrTargetQueueKey)) {\n\t\tblock();\n\t}\n\telse {\n\t\tif (synchronously)\n\t\t\tdispatch_sync(socketQueue, block);\n\t\telse\n\t\t\tdispatch_async(socketQueue, block);\n\t}\n}\n\n- (void)setDelegate:(id<GCDAsyncSocketDelegate>)newDelegate delegateQueue:(dispatch_queue_t)newDelegateQueue\n{\n\t[self setDelegate:newDelegate delegateQueue:newDelegateQueue synchronously:NO];\n}\n\n- (void)synchronouslySetDelegate:(id<GCDAsyncSocketDelegate>)newDelegate delegateQueue:(dispatch_queue_t)newDelegateQueue\n{\n\t[self setDelegate:newDelegate delegateQueue:newDelegateQueue synchronously:YES];\n}\n\n- (BOOL)isIPv4Enabled\n{\n\t// Note: YES means kIPv4Disabled is OFF\n\t\n\tif (dispatch_get_specific(IsOnSocketQueueOrTargetQueueKey))\n\t{\n\t\treturn ((config & kIPv4Disabled) == 0);\n\t}\n\telse\n\t{\n\t\t__block BOOL result;\n\t\t\n\t\tdispatch_sync(socketQueue, ^{\n            result = ((self->config & kIPv4Disabled) == 0);\n\t\t});\n\t\t\n\t\treturn result;\n\t}\n}\n\n- (void)setIPv4Enabled:(BOOL)flag\n{\n\t// Note: YES means kIPv4Disabled is OFF\n\t\n\tdispatch_block_t block = ^{\n\t\t\n\t\tif (flag)\n            self->config &= ~kIPv4Disabled;\n\t\telse\n            self->config |= kIPv4Disabled;\n\t};\n\t\n\tif (dispatch_get_specific(IsOnSocketQueueOrTargetQueueKey))\n\t\tblock();\n\telse\n\t\tdispatch_async(socketQueue, block);\n}\n\n- (BOOL)isIPv6Enabled\n{\n\t// Note: YES means kIPv6Disabled is OFF\n\t\n\tif (dispatch_get_specific(IsOnSocketQueueOrTargetQueueKey))\n\t{\n\t\treturn ((config & kIPv6Disabled) == 0);\n\t}\n\telse\n\t{\n\t\t__block BOOL result;\n\t\t\n\t\tdispatch_sync(socketQueue, ^{\n            result = ((self->config & kIPv6Disabled) == 0);\n\t\t});\n\t\t\n\t\treturn result;\n\t}\n}\n\n- (void)setIPv6Enabled:(BOOL)flag\n{\n\t// Note: YES means kIPv6Disabled is OFF\n\t\n\tdispatch_block_t block = ^{\n\t\t\n\t\tif (flag)\n            self->config &= ~kIPv6Disabled;\n\t\telse\n            self->config |= kIPv6Disabled;\n\t};\n\t\n\tif (dispatch_get_specific(IsOnSocketQueueOrTargetQueueKey))\n\t\tblock();\n\telse\n\t\tdispatch_async(socketQueue, block);\n}\n\n- (BOOL)isIPv4PreferredOverIPv6\n{\n\t// Note: YES means kPreferIPv6 is OFF\n\t\n\tif (dispatch_get_specific(IsOnSocketQueueOrTargetQueueKey))\n\t{\n\t\treturn ((config & kPreferIPv6) == 0);\n\t}\n\telse\n\t{\n\t\t__block BOOL result;\n\t\t\n\t\tdispatch_sync(socketQueue, ^{\n            result = ((self->config & kPreferIPv6) == 0);\n\t\t});\n\t\t\n\t\treturn result;\n\t}\n}\n\n- (void)setIPv4PreferredOverIPv6:(BOOL)flag\n{\n\t// Note: YES means kPreferIPv6 is OFF\n\t\n\tdispatch_block_t block = ^{\n\t\t\n\t\tif (flag)\n            self->config &= ~kPreferIPv6;\n\t\telse\n            self->config |= kPreferIPv6;\n\t};\n\t\n\tif (dispatch_get_specific(IsOnSocketQueueOrTargetQueueKey))\n\t\tblock();\n\telse\n\t\tdispatch_async(socketQueue, block);\n}\n\n- (NSTimeInterval) alternateAddressDelay {\n    __block NSTimeInterval delay;\n    dispatch_block_t block = ^{\n        delay = self->alternateAddressDelay;\n    };\n    if (dispatch_get_specific(IsOnSocketQueueOrTargetQueueKey))\n        block();\n    else\n        dispatch_sync(socketQueue, block);\n    return delay;\n}\n\n- (void) setAlternateAddressDelay:(NSTimeInterval)delay {\n    dispatch_block_t block = ^{\n        self->alternateAddressDelay = delay;\n    };\n    if (dispatch_get_specific(IsOnSocketQueueOrTargetQueueKey))\n        block();\n    else\n        dispatch_async(socketQueue, block);\n}\n\n- (id)userData\n{\n\t__block id result = nil;\n\t\n\tdispatch_block_t block = ^{\n\t\t\n        result = self->userData;\n\t};\n\t\n\tif (dispatch_get_specific(IsOnSocketQueueOrTargetQueueKey))\n\t\tblock();\n\telse\n\t\tdispatch_sync(socketQueue, block);\n\t\n\treturn result;\n}\n\n- (void)setUserData:(id)arbitraryUserData\n{\n\tdispatch_block_t block = ^{\n\t\t\n        if (self->userData != arbitraryUserData)\n\t\t{\n            self->userData = arbitraryUserData;\n\t\t}\n\t};\n\t\n\tif (dispatch_get_specific(IsOnSocketQueueOrTargetQueueKey))\n\t\tblock();\n\telse\n\t\tdispatch_async(socketQueue, block);\n}\n\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n#pragma mark Accepting\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\n- (BOOL)acceptOnPort:(uint16_t)port error:(NSError **)errPtr\n{\n\treturn [self acceptOnInterface:nil port:port error:errPtr];\n}\n\n- (BOOL)acceptOnInterface:(NSString *)inInterface port:(uint16_t)port error:(NSError **)errPtr\n{\n\tLogTrace();\n\t\n\t// Just in-case interface parameter is immutable.\n\tNSString *interface = [inInterface copy];\n\t\n\t__block BOOL result = NO;\n\t__block NSError *err = nil;\n\t\n\t// CreateSocket Block\n\t// This block will be invoked within the dispatch block below.\n\t\n\tint(^createSocket)(int, NSData*) = ^int (int domain, NSData *interfaceAddr) {\n\t\t\n\t\tint socketFD = socket(domain, SOCK_STREAM, 0);\n\t\t\n\t\tif (socketFD == SOCKET_NULL)\n\t\t{\n\t\t\tNSString *reason = @\"Error in socket() function\";\n\t\t\terr = [self errorWithErrno:errno reason:reason];\n\t\t\t\n\t\t\treturn SOCKET_NULL;\n\t\t}\n\t\t\n\t\tint status;\n\t\t\n\t\t// Set socket options\n\t\t\n\t\tstatus = fcntl(socketFD, F_SETFL, O_NONBLOCK);\n\t\tif (status == -1)\n\t\t{\n\t\t\tNSString *reason = @\"Error enabling non-blocking IO on socket (fcntl)\";\n\t\t\terr = [self errorWithErrno:errno reason:reason];\n\t\t\t\n\t\t\tLogVerbose(@\"close(socketFD)\");\n\t\t\tclose(socketFD);\n\t\t\treturn SOCKET_NULL;\n\t\t}\n\t\t\n\t\tint reuseOn = 1;\n\t\tstatus = setsockopt(socketFD, SOL_SOCKET, SO_REUSEADDR, &reuseOn, sizeof(reuseOn));\n\t\tif (status == -1)\n\t\t{\n\t\t\tNSString *reason = @\"Error enabling address reuse (setsockopt)\";\n\t\t\terr = [self errorWithErrno:errno reason:reason];\n\t\t\t\n\t\t\tLogVerbose(@\"close(socketFD)\");\n\t\t\tclose(socketFD);\n\t\t\treturn SOCKET_NULL;\n\t\t}\n\t\t\n\t\t// Bind socket\n\t\t\n\t\tstatus = bind(socketFD, (const struct sockaddr *)[interfaceAddr bytes], (socklen_t)[interfaceAddr length]);\n\t\tif (status == -1)\n\t\t{\n\t\t\tNSString *reason = @\"Error in bind() function\";\n\t\t\terr = [self errorWithErrno:errno reason:reason];\n\t\t\t\n\t\t\tLogVerbose(@\"close(socketFD)\");\n\t\t\tclose(socketFD);\n\t\t\treturn SOCKET_NULL;\n\t\t}\n\t\t\n\t\t// Listen\n\t\t\n\t\tstatus = listen(socketFD, 1024);\n\t\tif (status == -1)\n\t\t{\n\t\t\tNSString *reason = @\"Error in listen() function\";\n\t\t\terr = [self errorWithErrno:errno reason:reason];\n\t\t\t\n\t\t\tLogVerbose(@\"close(socketFD)\");\n\t\t\tclose(socketFD);\n\t\t\treturn SOCKET_NULL;\n\t\t}\n\t\t\n\t\treturn socketFD;\n\t};\n\t\n\t// Create dispatch block and run on socketQueue\n\t\n\tdispatch_block_t block = ^{ @autoreleasepool {\n\t\t\n        if (self->delegate == nil) // Must have delegate set\n\t\t{\n\t\t\tNSString *msg = @\"Attempting to accept without a delegate. Set a delegate first.\";\n\t\t\terr = [self badConfigError:msg];\n\t\t\t\n\t\t\treturn_from_block;\n\t\t}\n\t\t\n        if (self->delegateQueue == NULL) // Must have delegate queue set\n\t\t{\n\t\t\tNSString *msg = @\"Attempting to accept without a delegate queue. Set a delegate queue first.\";\n\t\t\terr = [self badConfigError:msg];\n\t\t\t\n\t\t\treturn_from_block;\n\t\t}\n\t\t\n        BOOL isIPv4Disabled = (self->config & kIPv4Disabled) ? YES : NO;\n        BOOL isIPv6Disabled = (self->config & kIPv6Disabled) ? YES : NO;\n\t\t\n\t\tif (isIPv4Disabled && isIPv6Disabled) // Must have IPv4 or IPv6 enabled\n\t\t{\n\t\t\tNSString *msg = @\"Both IPv4 and IPv6 have been disabled. Must enable at least one protocol first.\";\n\t\t\terr = [self badConfigError:msg];\n\t\t\t\n\t\t\treturn_from_block;\n\t\t}\n\t\t\n\t\tif (![self isDisconnected]) // Must be disconnected\n\t\t{\n\t\t\tNSString *msg = @\"Attempting to accept while connected or accepting connections. Disconnect first.\";\n\t\t\terr = [self badConfigError:msg];\n\t\t\t\n\t\t\treturn_from_block;\n\t\t}\n\t\t\n\t\t// Clear queues (spurious read/write requests post disconnect)\n        [self->readQueue removeAllObjects];\n        [self->writeQueue removeAllObjects];\n\t\t\n\t\t// Resolve interface from description\n\t\t\n\t\tNSMutableData *interface4 = nil;\n\t\tNSMutableData *interface6 = nil;\n\t\t\n\t\t[self getInterfaceAddress4:&interface4 address6:&interface6 fromDescription:interface port:port];\n\t\t\n\t\tif ((interface4 == nil) && (interface6 == nil))\n\t\t{\n\t\t\tNSString *msg = @\"Unknown interface. Specify valid interface by name (e.g. \\\"en1\\\") or IP address.\";\n\t\t\terr = [self badParamError:msg];\n\t\t\t\n\t\t\treturn_from_block;\n\t\t}\n\t\t\n\t\tif (isIPv4Disabled && (interface6 == nil))\n\t\t{\n\t\t\tNSString *msg = @\"IPv4 has been disabled and specified interface doesn't support IPv6.\";\n\t\t\terr = [self badParamError:msg];\n\t\t\t\n\t\t\treturn_from_block;\n\t\t}\n\t\t\n\t\tif (isIPv6Disabled && (interface4 == nil))\n\t\t{\n\t\t\tNSString *msg = @\"IPv6 has been disabled and specified interface doesn't support IPv4.\";\n\t\t\terr = [self badParamError:msg];\n\t\t\t\n\t\t\treturn_from_block;\n\t\t}\n\t\t\n\t\tBOOL enableIPv4 = !isIPv4Disabled && (interface4 != nil);\n\t\tBOOL enableIPv6 = !isIPv6Disabled && (interface6 != nil);\n\t\t\n\t\t// Create sockets, configure, bind, and listen\n\t\t\n\t\tif (enableIPv4)\n\t\t{\n\t\t\tLogVerbose(@\"Creating IPv4 socket\");\n            self->socket4FD = createSocket(AF_INET, interface4);\n\t\t\t\n            if (self->socket4FD == SOCKET_NULL)\n\t\t\t{\n\t\t\t\treturn_from_block;\n\t\t\t}\n\t\t}\n\t\t\n\t\tif (enableIPv6)\n\t\t{\n\t\t\tLogVerbose(@\"Creating IPv6 socket\");\n\t\t\t\n\t\t\tif (enableIPv4 && (port == 0))\n\t\t\t{\n\t\t\t\t// No specific port was specified, so we allowed the OS to pick an available port for us.\n\t\t\t\t// Now we need to make sure the IPv6 socket listens on the same port as the IPv4 socket.\n\t\t\t\t\n\t\t\t\tstruct sockaddr_in6 *addr6 = (struct sockaddr_in6 *)[interface6 mutableBytes];\n\t\t\t\taddr6->sin6_port = htons([self localPort4]);\n\t\t\t}\n\t\t\t\n            self->socket6FD = createSocket(AF_INET6, interface6);\n\t\t\t\n            if (self->socket6FD == SOCKET_NULL)\n\t\t\t{\n                if (self->socket4FD != SOCKET_NULL)\n\t\t\t\t{\n\t\t\t\t\tLogVerbose(@\"close(socket4FD)\");\n                    close(self->socket4FD);\n                    self->socket4FD = SOCKET_NULL;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn_from_block;\n\t\t\t}\n\t\t}\n\t\t\n\t\t// Create accept sources\n\t\t\n\t\tif (enableIPv4)\n\t\t{\n            self->accept4Source = dispatch_source_create(DISPATCH_SOURCE_TYPE_READ, self->socket4FD, 0, self->socketQueue);\n\t\t\t\n            int socketFD = self->socket4FD;\n            dispatch_source_t acceptSource = self->accept4Source;\n\t\t\t\n\t\t\t__weak GCDAsyncSocket *weakSelf = self;\n\t\t\t\n            dispatch_source_set_event_handler(self->accept4Source, ^{ @autoreleasepool {\n\t\t\t#pragma clang diagnostic push\n\t\t\t#pragma clang diagnostic warning \"-Wimplicit-retain-self\"\n\t\t\t\t\n\t\t\t\t__strong GCDAsyncSocket *strongSelf = weakSelf;\n\t\t\t\tif (strongSelf == nil) return_from_block;\n\t\t\t\t\n\t\t\t\tLogVerbose(@\"event4Block\");\n\t\t\t\t\n\t\t\t\tunsigned long i = 0;\n\t\t\t\tunsigned long numPendingConnections = dispatch_source_get_data(acceptSource);\n\t\t\t\t\n\t\t\t\tLogVerbose(@\"numPendingConnections: %lu\", numPendingConnections);\n\t\t\t\t\n\t\t\t\twhile ([strongSelf doAccept:socketFD] && (++i < numPendingConnections));\n\t\t\t\t\n\t\t\t#pragma clang diagnostic pop\n\t\t\t}});\n\t\t\t\n\t\t\t\n            dispatch_source_set_cancel_handler(self->accept4Source, ^{\n\t\t\t#pragma clang diagnostic push\n\t\t\t#pragma clang diagnostic warning \"-Wimplicit-retain-self\"\n\t\t\t\t\n\t\t\t\t#if !OS_OBJECT_USE_OBJC\n\t\t\t\tLogVerbose(@\"dispatch_release(accept4Source)\");\n\t\t\t\tdispatch_release(acceptSource);\n\t\t\t\t#endif\n\t\t\t\t\n\t\t\t\tLogVerbose(@\"close(socket4FD)\");\n\t\t\t\tclose(socketFD);\n\t\t\t\n\t\t\t#pragma clang diagnostic pop\n\t\t\t});\n\t\t\t\n\t\t\tLogVerbose(@\"dispatch_resume(accept4Source)\");\n            dispatch_resume(self->accept4Source);\n\t\t}\n\t\t\n\t\tif (enableIPv6)\n\t\t{\n            self->accept6Source = dispatch_source_create(DISPATCH_SOURCE_TYPE_READ, self->socket6FD, 0, self->socketQueue);\n\t\t\t\n            int socketFD = self->socket6FD;\n            dispatch_source_t acceptSource = self->accept6Source;\n\t\t\t\n\t\t\t__weak GCDAsyncSocket *weakSelf = self;\n\t\t\t\n            dispatch_source_set_event_handler(self->accept6Source, ^{ @autoreleasepool {\n\t\t\t#pragma clang diagnostic push\n\t\t\t#pragma clang diagnostic warning \"-Wimplicit-retain-self\"\n\t\t\t\t\n\t\t\t\t__strong GCDAsyncSocket *strongSelf = weakSelf;\n\t\t\t\tif (strongSelf == nil) return_from_block;\n\t\t\t\t\n\t\t\t\tLogVerbose(@\"event6Block\");\n\t\t\t\t\n\t\t\t\tunsigned long i = 0;\n\t\t\t\tunsigned long numPendingConnections = dispatch_source_get_data(acceptSource);\n\t\t\t\t\n\t\t\t\tLogVerbose(@\"numPendingConnections: %lu\", numPendingConnections);\n\t\t\t\t\n\t\t\t\twhile ([strongSelf doAccept:socketFD] && (++i < numPendingConnections));\n\t\t\t\t\n\t\t\t#pragma clang diagnostic pop\n\t\t\t}});\n\t\t\t\n            dispatch_source_set_cancel_handler(self->accept6Source, ^{\n\t\t\t#pragma clang diagnostic push\n\t\t\t#pragma clang diagnostic warning \"-Wimplicit-retain-self\"\n\t\t\t\t\n\t\t\t\t#if !OS_OBJECT_USE_OBJC\n\t\t\t\tLogVerbose(@\"dispatch_release(accept6Source)\");\n\t\t\t\tdispatch_release(acceptSource);\n\t\t\t\t#endif\n\t\t\t\t\n\t\t\t\tLogVerbose(@\"close(socket6FD)\");\n\t\t\t\tclose(socketFD);\n\t\t\t\t\n\t\t\t#pragma clang diagnostic pop\n\t\t\t});\n\t\t\t\n\t\t\tLogVerbose(@\"dispatch_resume(accept6Source)\");\n            dispatch_resume(self->accept6Source);\n\t\t}\n\t\t\n        self->flags |= kSocketStarted;\n\t\t\n\t\tresult = YES;\n\t}};\n\t\n\tif (dispatch_get_specific(IsOnSocketQueueOrTargetQueueKey))\n\t\tblock();\n\telse\n\t\tdispatch_sync(socketQueue, block);\n\t\n\tif (result == NO)\n\t{\n\t\tLogInfo(@\"Error in accept: %@\", err);\n\t\t\n\t\tif (errPtr)\n\t\t\t*errPtr = err;\n\t}\n\t\n\treturn result;\n}\n\n- (BOOL)acceptOnUrl:(NSURL *)url error:(NSError **)errPtr\n{\n\tLogTrace();\n\t\n\t__block BOOL result = NO;\n\t__block NSError *err = nil;\n\t\n\t// CreateSocket Block\n\t// This block will be invoked within the dispatch block below.\n\t\n\tint(^createSocket)(int, NSData*) = ^int (int domain, NSData *interfaceAddr) {\n\t\t\n\t\tint socketFD = socket(domain, SOCK_STREAM, 0);\n\t\t\n\t\tif (socketFD == SOCKET_NULL)\n\t\t{\n\t\t\tNSString *reason = @\"Error in socket() function\";\n\t\t\terr = [self errorWithErrno:errno reason:reason];\n\t\t\t\n\t\t\treturn SOCKET_NULL;\n\t\t}\n\t\t\n\t\tint status;\n\t\t\n\t\t// Set socket options\n\t\t\n\t\tstatus = fcntl(socketFD, F_SETFL, O_NONBLOCK);\n\t\tif (status == -1)\n\t\t{\n\t\t\tNSString *reason = @\"Error enabling non-blocking IO on socket (fcntl)\";\n\t\t\terr = [self errorWithErrno:errno reason:reason];\n\t\t\t\n\t\t\tLogVerbose(@\"close(socketFD)\");\n\t\t\tclose(socketFD);\n\t\t\treturn SOCKET_NULL;\n\t\t}\n\t\t\n\t\tint reuseOn = 1;\n\t\tstatus = setsockopt(socketFD, SOL_SOCKET, SO_REUSEADDR, &reuseOn, sizeof(reuseOn));\n\t\tif (status == -1)\n\t\t{\n\t\t\tNSString *reason = @\"Error enabling address reuse (setsockopt)\";\n\t\t\terr = [self errorWithErrno:errno reason:reason];\n\t\t\t\n\t\t\tLogVerbose(@\"close(socketFD)\");\n\t\t\tclose(socketFD);\n\t\t\treturn SOCKET_NULL;\n\t\t}\n\t\t\n\t\t// Bind socket\n\t\t\n\t\tstatus = bind(socketFD, (const struct sockaddr *)[interfaceAddr bytes], (socklen_t)[interfaceAddr length]);\n\t\tif (status == -1)\n\t\t{\n\t\t\tNSString *reason = @\"Error in bind() function\";\n\t\t\terr = [self errorWithErrno:errno reason:reason];\n\t\t\t\n\t\t\tLogVerbose(@\"close(socketFD)\");\n\t\t\tclose(socketFD);\n\t\t\treturn SOCKET_NULL;\n\t\t}\n\t\t\n\t\t// Listen\n\t\t\n\t\tstatus = listen(socketFD, 1024);\n\t\tif (status == -1)\n\t\t{\n\t\t\tNSString *reason = @\"Error in listen() function\";\n\t\t\terr = [self errorWithErrno:errno reason:reason];\n\t\t\t\n\t\t\tLogVerbose(@\"close(socketFD)\");\n\t\t\tclose(socketFD);\n\t\t\treturn SOCKET_NULL;\n\t\t}\n\t\t\n\t\treturn socketFD;\n\t};\n\t\n\t// Create dispatch block and run on socketQueue\n\t\n\tdispatch_block_t block = ^{ @autoreleasepool {\n\t\t\n        if (self->delegate == nil) // Must have delegate set\n\t\t{\n\t\t\tNSString *msg = @\"Attempting to accept without a delegate. Set a delegate first.\";\n\t\t\terr = [self badConfigError:msg];\n\t\t\t\n\t\t\treturn_from_block;\n\t\t}\n\t\t\n        if (self->delegateQueue == NULL) // Must have delegate queue set\n\t\t{\n\t\t\tNSString *msg = @\"Attempting to accept without a delegate queue. Set a delegate queue first.\";\n\t\t\terr = [self badConfigError:msg];\n\t\t\t\n\t\t\treturn_from_block;\n\t\t}\n\t\t\n\t\tif (![self isDisconnected]) // Must be disconnected\n\t\t{\n\t\t\tNSString *msg = @\"Attempting to accept while connected or accepting connections. Disconnect first.\";\n\t\t\terr = [self badConfigError:msg];\n\t\t\t\n\t\t\treturn_from_block;\n\t\t}\n\t\t\n\t\t// Clear queues (spurious read/write requests post disconnect)\n        [self->readQueue removeAllObjects];\n        [self->writeQueue removeAllObjects];\n\t\t\n\t\t// Remove a previous socket\n\t\t\n\t\tNSError *error = nil;\n\t\tNSFileManager *fileManager = [NSFileManager defaultManager];\n\t\tNSString *urlPath = url.path;\n\t\tif (urlPath && [fileManager fileExistsAtPath:urlPath]) {\n\t\t\tif (![fileManager removeItemAtURL:url error:&error]) {\n\t\t\t\tNSString *msg = @\"Could not remove previous unix domain socket at given url.\";\n\t\t\t\terr = [self otherError:msg];\n\t\t\t\t\n\t\t\t\treturn_from_block;\n\t\t\t}\n\t\t}\n\t\t\n\t\t// Resolve interface from description\n\t\t\n\t\tNSData *interface = [self getInterfaceAddressFromUrl:url];\n\t\t\n\t\tif (interface == nil)\n\t\t{\n\t\t\tNSString *msg = @\"Invalid unix domain url. Specify a valid file url that does not exist (e.g. \\\"file:///tmp/socket\\\")\";\n\t\t\terr = [self badParamError:msg];\n\t\t\t\n\t\t\treturn_from_block;\n\t\t}\n\t\t\n\t\t// Create sockets, configure, bind, and listen\n\t\t\n\t\tLogVerbose(@\"Creating unix domain socket\");\n        self->socketUN = createSocket(AF_UNIX, interface);\n\t\t\n        if (self->socketUN == SOCKET_NULL)\n\t\t{\n\t\t\treturn_from_block;\n\t\t}\n\t\t\n        self->socketUrl = url;\n\t\t\n\t\t// Create accept sources\n\t\t\n        self->acceptUNSource = dispatch_source_create(DISPATCH_SOURCE_TYPE_READ, self->socketUN, 0, self->socketQueue);\n\t\t\n        int socketFD = self->socketUN;\n        dispatch_source_t acceptSource = self->acceptUNSource;\n\t\t\n\t\t__weak GCDAsyncSocket *weakSelf = self;\n\t\t\n        dispatch_source_set_event_handler(self->acceptUNSource, ^{ @autoreleasepool {\n\t\t\t\n\t\t\t__strong GCDAsyncSocket *strongSelf = weakSelf;\n\t\t\t\n\t\t\tLogVerbose(@\"eventUNBlock\");\n\t\t\t\n\t\t\tunsigned long i = 0;\n\t\t\tunsigned long numPendingConnections = dispatch_source_get_data(acceptSource);\n\t\t\t\n\t\t\tLogVerbose(@\"numPendingConnections: %lu\", numPendingConnections);\n\t\t\t\n\t\t\twhile ([strongSelf doAccept:socketFD] && (++i < numPendingConnections));\n\t\t}});\n\t\t\n        dispatch_source_set_cancel_handler(self->acceptUNSource, ^{\n\t\t\t\n#if !OS_OBJECT_USE_OBJC\n\t\t\tLogVerbose(@\"dispatch_release(acceptUNSource)\");\n\t\t\tdispatch_release(acceptSource);\n#endif\n\t\t\t\n\t\t\tLogVerbose(@\"close(socketUN)\");\n\t\t\tclose(socketFD);\n\t\t});\n\t\t\n\t\tLogVerbose(@\"dispatch_resume(acceptUNSource)\");\n        dispatch_resume(self->acceptUNSource);\n\t\t\n        self->flags |= kSocketStarted;\n\t\t\n\t\tresult = YES;\n\t}};\n\t\n\tif (dispatch_get_specific(IsOnSocketQueueOrTargetQueueKey))\n\t\tblock();\n\telse\n\t\tdispatch_sync(socketQueue, block);\n\t\n\tif (result == NO)\n\t{\n\t\tLogInfo(@\"Error in accept: %@\", err);\n\t\t\n\t\tif (errPtr)\n\t\t\t*errPtr = err;\n\t}\n\t\n\treturn result;\t\n}\n\n- (BOOL)doAccept:(int)parentSocketFD\n{\n\tLogTrace();\n\t\n\tint socketType;\n\tint childSocketFD;\n\tNSData *childSocketAddress;\n\t\n\tif (parentSocketFD == socket4FD)\n\t{\n\t\tsocketType = 0;\n\t\t\n\t\tstruct sockaddr_in addr;\n\t\tsocklen_t addrLen = sizeof(addr);\n\t\t\n\t\tchildSocketFD = accept(parentSocketFD, (struct sockaddr *)&addr, &addrLen);\n\t\t\n\t\tif (childSocketFD == -1)\n\t\t{\n\t\t\tLogWarn(@\"Accept failed with error: %@\", [self errnoError]);\n\t\t\treturn NO;\n\t\t}\n\t\t\n\t\tchildSocketAddress = [NSData dataWithBytes:&addr length:addrLen];\n\t}\n\telse if (parentSocketFD == socket6FD)\n\t{\n\t\tsocketType = 1;\n\t\t\n\t\tstruct sockaddr_in6 addr;\n\t\tsocklen_t addrLen = sizeof(addr);\n\t\t\n\t\tchildSocketFD = accept(parentSocketFD, (struct sockaddr *)&addr, &addrLen);\n\t\t\n\t\tif (childSocketFD == -1)\n\t\t{\n\t\t\tLogWarn(@\"Accept failed with error: %@\", [self errnoError]);\n\t\t\treturn NO;\n\t\t}\n\t\t\n\t\tchildSocketAddress = [NSData dataWithBytes:&addr length:addrLen];\n\t}\n\telse // if (parentSocketFD == socketUN)\n\t{\n\t\tsocketType = 2;\n\t\t\n\t\tstruct sockaddr_un addr;\n\t\tsocklen_t addrLen = sizeof(addr);\n\t\t\n\t\tchildSocketFD = accept(parentSocketFD, (struct sockaddr *)&addr, &addrLen);\n\t\t\n\t\tif (childSocketFD == -1)\n\t\t{\n\t\t\tLogWarn(@\"Accept failed with error: %@\", [self errnoError]);\n\t\t\treturn NO;\n\t\t}\n\t\t\n\t\tchildSocketAddress = [NSData dataWithBytes:&addr length:addrLen];\n\t}\n\t\n\t// Enable non-blocking IO on the socket\n\t\n\tint result = fcntl(childSocketFD, F_SETFL, O_NONBLOCK);\n\tif (result == -1)\n\t{\n\t\tLogWarn(@\"Error enabling non-blocking IO on accepted socket (fcntl)\");\n\t\tLogVerbose(@\"close(childSocketFD)\");\n\t\tclose(childSocketFD);\n\t\treturn NO;\n\t}\n\t\n\t// Prevent SIGPIPE signals\n\t\n\tint nosigpipe = 1;\n\tsetsockopt(childSocketFD, SOL_SOCKET, SO_NOSIGPIPE, &nosigpipe, sizeof(nosigpipe));\n\t\n\t// Notify delegate\n\t\n\tif (delegateQueue)\n\t{\n\t\t__strong id<GCDAsyncSocketDelegate> theDelegate = delegate;\n\t\t\n\t\tdispatch_async(delegateQueue, ^{ @autoreleasepool {\n\t\t\t\n\t\t\t// Query delegate for custom socket queue\n\t\t\t\n\t\t\tdispatch_queue_t childSocketQueue = NULL;\n\t\t\t\n\t\t\tif ([theDelegate respondsToSelector:@selector(newSocketQueueForConnectionFromAddress:onSocket:)])\n\t\t\t{\n\t\t\t\tchildSocketQueue = [theDelegate newSocketQueueForConnectionFromAddress:childSocketAddress\n\t\t\t\t                                                              onSocket:self];\n\t\t\t}\n\t\t\t\n\t\t\t// Create GCDAsyncSocket instance for accepted socket\n\t\t\t\n\t\t\tGCDAsyncSocket *acceptedSocket = [[[self class] alloc] initWithDelegate:theDelegate\n                                                                      delegateQueue:self->delegateQueue\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsocketQueue:childSocketQueue];\n\t\t\t\n\t\t\tif (socketType == 0)\n\t\t\t\tacceptedSocket->socket4FD = childSocketFD;\n\t\t\telse if (socketType == 1)\n\t\t\t\tacceptedSocket->socket6FD = childSocketFD;\n\t\t\telse\n\t\t\t\tacceptedSocket->socketUN = childSocketFD;\n\t\t\t\n\t\t\tacceptedSocket->flags = (kSocketStarted | kConnected);\n\t\t\t\n\t\t\t// Setup read and write sources for accepted socket\n\t\t\t\n\t\t\tdispatch_async(acceptedSocket->socketQueue, ^{ @autoreleasepool {\n\t\t\t\t\n\t\t\t\t[acceptedSocket setupReadAndWriteSourcesForNewlyConnectedSocket:childSocketFD];\n\t\t\t}});\n\t\t\t\n\t\t\t// Notify delegate\n\t\t\t\n\t\t\tif ([theDelegate respondsToSelector:@selector(socket:didAcceptNewSocket:)])\n\t\t\t{\n\t\t\t\t[theDelegate socket:self didAcceptNewSocket:acceptedSocket];\n\t\t\t}\n\t\t\t\n\t\t\t// Release the socket queue returned from the delegate (it was retained by acceptedSocket)\n\t\t\t#if !OS_OBJECT_USE_OBJC\n\t\t\tif (childSocketQueue) dispatch_release(childSocketQueue);\n\t\t\t#endif\n\t\t\t\n\t\t\t// The accepted socket should have been retained by the delegate.\n\t\t\t// Otherwise it gets properly released when exiting the block.\n\t\t}});\n\t}\n\t\n\treturn YES;\n}\n\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n#pragma mark Connecting\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\n/**\n * This method runs through the various checks required prior to a connection attempt.\n * It is shared between the connectToHost and connectToAddress methods.\n * \n**/\n- (BOOL)preConnectWithInterface:(NSString *)interface error:(NSError **)errPtr\n{\n\tNSAssert(dispatch_get_specific(IsOnSocketQueueOrTargetQueueKey), @\"Must be dispatched on socketQueue\");\n\t\n\tif (delegate == nil) // Must have delegate set\n\t{\n\t\tif (errPtr)\n\t\t{\n\t\t\tNSString *msg = @\"Attempting to connect without a delegate. Set a delegate first.\";\n\t\t\t*errPtr = [self badConfigError:msg];\n\t\t}\n\t\treturn NO;\n\t}\n\t\n\tif (delegateQueue == NULL) // Must have delegate queue set\n\t{\n\t\tif (errPtr)\n\t\t{\n\t\t\tNSString *msg = @\"Attempting to connect without a delegate queue. Set a delegate queue first.\";\n\t\t\t*errPtr = [self badConfigError:msg];\n\t\t}\n\t\treturn NO;\n\t}\n\t\n\tif (![self isDisconnected]) // Must be disconnected\n\t{\n\t\tif (errPtr)\n\t\t{\n\t\t\tNSString *msg = @\"Attempting to connect while connected or accepting connections. Disconnect first.\";\n\t\t\t*errPtr = [self badConfigError:msg];\n\t\t}\n\t\treturn NO;\n\t}\n\t\n\tBOOL isIPv4Disabled = (config & kIPv4Disabled) ? YES : NO;\n\tBOOL isIPv6Disabled = (config & kIPv6Disabled) ? YES : NO;\n\t\n\tif (isIPv4Disabled && isIPv6Disabled) // Must have IPv4 or IPv6 enabled\n\t{\n\t\tif (errPtr)\n\t\t{\n\t\t\tNSString *msg = @\"Both IPv4 and IPv6 have been disabled. Must enable at least one protocol first.\";\n\t\t\t*errPtr = [self badConfigError:msg];\n\t\t}\n\t\treturn NO;\n\t}\n\t\n\tif (interface)\n\t{\n\t\tNSMutableData *interface4 = nil;\n\t\tNSMutableData *interface6 = nil;\n\t\t\n\t\t[self getInterfaceAddress4:&interface4 address6:&interface6 fromDescription:interface port:0];\n\t\t\n\t\tif ((interface4 == nil) && (interface6 == nil))\n\t\t{\n\t\t\tif (errPtr)\n\t\t\t{\n\t\t\t\tNSString *msg = @\"Unknown interface. Specify valid interface by name (e.g. \\\"en1\\\") or IP address.\";\n\t\t\t\t*errPtr = [self badParamError:msg];\n\t\t\t}\n\t\t\treturn NO;\n\t\t}\n\t\t\n\t\tif (isIPv4Disabled && (interface6 == nil))\n\t\t{\n\t\t\tif (errPtr)\n\t\t\t{\n\t\t\t\tNSString *msg = @\"IPv4 has been disabled and specified interface doesn't support IPv6.\";\n\t\t\t\t*errPtr = [self badParamError:msg];\n\t\t\t}\n\t\t\treturn NO;\n\t\t}\n\t\t\n\t\tif (isIPv6Disabled && (interface4 == nil))\n\t\t{\n\t\t\tif (errPtr)\n\t\t\t{\n\t\t\t\tNSString *msg = @\"IPv6 has been disabled and specified interface doesn't support IPv4.\";\n\t\t\t\t*errPtr = [self badParamError:msg];\n\t\t\t}\n\t\t\treturn NO;\n\t\t}\n\t\t\n\t\tconnectInterface4 = interface4;\n\t\tconnectInterface6 = interface6;\n\t}\n\t\n\t// Clear queues (spurious read/write requests post disconnect)\n\t[readQueue removeAllObjects];\n\t[writeQueue removeAllObjects];\n\t\n\treturn YES;\n}\n\n- (BOOL)preConnectWithUrl:(NSURL *)url error:(NSError **)errPtr\n{\n\tNSAssert(dispatch_get_specific(IsOnSocketQueueOrTargetQueueKey), @\"Must be dispatched on socketQueue\");\n\t\n\tif (delegate == nil) // Must have delegate set\n\t{\n\t\tif (errPtr)\n\t\t{\n\t\t\tNSString *msg = @\"Attempting to connect without a delegate. Set a delegate first.\";\n\t\t\t*errPtr = [self badConfigError:msg];\n\t\t}\n\t\treturn NO;\n\t}\n\t\n\tif (delegateQueue == NULL) // Must have delegate queue set\n\t{\n\t\tif (errPtr)\n\t\t{\n\t\t\tNSString *msg = @\"Attempting to connect without a delegate queue. Set a delegate queue first.\";\n\t\t\t*errPtr = [self badConfigError:msg];\n\t\t}\n\t\treturn NO;\n\t}\n\t\n\tif (![self isDisconnected]) // Must be disconnected\n\t{\n\t\tif (errPtr)\n\t\t{\n\t\t\tNSString *msg = @\"Attempting to connect while connected or accepting connections. Disconnect first.\";\n\t\t\t*errPtr = [self badConfigError:msg];\n\t\t}\n\t\treturn NO;\n\t}\n\t\n\tNSData *interface = [self getInterfaceAddressFromUrl:url];\n\t\n\tif (interface == nil)\n\t{\n\t\tif (errPtr)\n\t\t{\n\t\t\tNSString *msg = @\"Unknown interface. Specify valid interface by name (e.g. \\\"en1\\\") or IP address.\";\n\t\t\t*errPtr = [self badParamError:msg];\n\t\t}\n\t\treturn NO;\n\t}\n\t\n\tconnectInterfaceUN = interface;\n\t\n\t// Clear queues (spurious read/write requests post disconnect)\n\t[readQueue removeAllObjects];\n\t[writeQueue removeAllObjects];\n\t\n\treturn YES;\n}\n\n- (BOOL)connectToHost:(NSString*)host onPort:(uint16_t)port error:(NSError **)errPtr\n{\n\treturn [self connectToHost:host onPort:port withTimeout:-1 error:errPtr];\n}\n\n- (BOOL)connectToHost:(NSString *)host\n               onPort:(uint16_t)port\n          withTimeout:(NSTimeInterval)timeout\n                error:(NSError **)errPtr\n{\n\treturn [self connectToHost:host onPort:port viaInterface:nil withTimeout:timeout error:errPtr];\n}\n\n- (BOOL)connectToHost:(NSString *)inHost\n               onPort:(uint16_t)port\n         viaInterface:(NSString *)inInterface\n          withTimeout:(NSTimeInterval)timeout\n                error:(NSError **)errPtr\n{\n\tLogTrace();\n\t\n\t// Just in case immutable objects were passed\n\tNSString *host = [inHost copy];\n\tNSString *interface = [inInterface copy];\n\t\n\t__block BOOL result = NO;\n\t__block NSError *preConnectErr = nil;\n\t\n\tdispatch_block_t block = ^{ @autoreleasepool {\n\t\t\n\t\t// Check for problems with host parameter\n\t\t\n\t\tif ([host length] == 0)\n\t\t{\n\t\t\tNSString *msg = @\"Invalid host parameter (nil or \\\"\\\"). Should be a domain name or IP address string.\";\n\t\t\tpreConnectErr = [self badParamError:msg];\n\t\t\t\n\t\t\treturn_from_block;\n\t\t}\n\t\t\n\t\t// Run through standard pre-connect checks\n\t\t\n\t\tif (![self preConnectWithInterface:interface error:&preConnectErr])\n\t\t{\n\t\t\treturn_from_block;\n\t\t}\n\t\t\n\t\t// We've made it past all the checks.\n\t\t// It's time to start the connection process.\n\t\t\n        self->flags |= kSocketStarted;\n\t\t\n\t\tLogVerbose(@\"Dispatching DNS lookup...\");\n\t\t\n\t\t// It's possible that the given host parameter is actually a NSMutableString.\n\t\t// So we want to copy it now, within this block that will be executed synchronously.\n\t\t// This way the asynchronous lookup block below doesn't have to worry about it changing.\n\t\t\n\t\tNSString *hostCpy = [host copy];\n\t\t\n        int aStateIndex = self->stateIndex;\n\t\t__weak GCDAsyncSocket *weakSelf = self;\n\t\t\n\t\tdispatch_queue_t globalConcurrentQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);\n\t\tdispatch_async(globalConcurrentQueue, ^{ @autoreleasepool {\n\t\t#pragma clang diagnostic push\n\t\t#pragma clang diagnostic warning \"-Wimplicit-retain-self\"\n\t\t\t\n\t\t\tNSError *lookupErr = nil;\n\t\t\tNSMutableArray *addresses = [[self class] lookupHost:hostCpy port:port error:&lookupErr];\n\t\t\t\n\t\t\t__strong GCDAsyncSocket *strongSelf = weakSelf;\n\t\t\tif (strongSelf == nil) return_from_block;\n\t\t\t\n\t\t\tif (lookupErr)\n\t\t\t{\n\t\t\t\tdispatch_async(strongSelf->socketQueue, ^{ @autoreleasepool {\n\t\t\t\t\t\n\t\t\t\t\t[strongSelf lookup:aStateIndex didFail:lookupErr];\n\t\t\t\t}});\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tNSData *address4 = nil;\n\t\t\t\tNSData *address6 = nil;\n\t\t\t\t\n\t\t\t\tfor (NSData *address in addresses)\n\t\t\t\t{\n\t\t\t\t\tif (!address4 && [[self class] isIPv4Address:address])\n\t\t\t\t\t{\n\t\t\t\t\t\taddress4 = address;\n\t\t\t\t\t}\n\t\t\t\t\telse if (!address6 && [[self class] isIPv6Address:address])\n\t\t\t\t\t{\n\t\t\t\t\t\taddress6 = address;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tdispatch_async(strongSelf->socketQueue, ^{ @autoreleasepool {\n\t\t\t\t\t\n\t\t\t\t\t[strongSelf lookup:aStateIndex didSucceedWithAddress4:address4 address6:address6];\n\t\t\t\t}});\n\t\t\t}\n\t\t\t\n\t\t#pragma clang diagnostic pop\n\t\t}});\n\t\t\n\t\t[self startConnectTimeout:timeout];\n\t\t\n\t\tresult = YES;\n\t}};\n\t\n\tif (dispatch_get_specific(IsOnSocketQueueOrTargetQueueKey))\n\t\tblock();\n\telse\n\t\tdispatch_sync(socketQueue, block);\n\t\n\t\n\tif (errPtr) *errPtr = preConnectErr;\n\treturn result;\n}\n\n- (BOOL)connectToAddress:(NSData *)remoteAddr error:(NSError **)errPtr\n{\n\treturn [self connectToAddress:remoteAddr viaInterface:nil withTimeout:-1 error:errPtr];\n}\n\n- (BOOL)connectToAddress:(NSData *)remoteAddr withTimeout:(NSTimeInterval)timeout error:(NSError **)errPtr\n{\n\treturn [self connectToAddress:remoteAddr viaInterface:nil withTimeout:timeout error:errPtr];\n}\n\n- (BOOL)connectToAddress:(NSData *)inRemoteAddr\n            viaInterface:(NSString *)inInterface\n             withTimeout:(NSTimeInterval)timeout\n                   error:(NSError **)errPtr\n{\n\tLogTrace();\n\t\n\t// Just in case immutable objects were passed\n\tNSData *remoteAddr = [inRemoteAddr copy];\n\tNSString *interface = [inInterface copy];\n\t\n\t__block BOOL result = NO;\n\t__block NSError *err = nil;\n\t\n\tdispatch_block_t block = ^{ @autoreleasepool {\n\t\t\n\t\t// Check for problems with remoteAddr parameter\n\t\t\n\t\tNSData *address4 = nil;\n\t\tNSData *address6 = nil;\n\t\t\n\t\tif ([remoteAddr length] >= sizeof(struct sockaddr))\n\t\t{\n\t\t\tconst struct sockaddr *sockaddr = (const struct sockaddr *)[remoteAddr bytes];\n\t\t\t\n\t\t\tif (sockaddr->sa_family == AF_INET)\n\t\t\t{\n\t\t\t\tif ([remoteAddr length] == sizeof(struct sockaddr_in))\n\t\t\t\t{\n\t\t\t\t\taddress4 = remoteAddr;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (sockaddr->sa_family == AF_INET6)\n\t\t\t{\n\t\t\t\tif ([remoteAddr length] == sizeof(struct sockaddr_in6))\n\t\t\t\t{\n\t\t\t\t\taddress6 = remoteAddr;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\tif ((address4 == nil) && (address6 == nil))\n\t\t{\n\t\t\tNSString *msg = @\"A valid IPv4 or IPv6 address was not given\";\n\t\t\terr = [self badParamError:msg];\n\t\t\t\n\t\t\treturn_from_block;\n\t\t}\n\t\t\n        BOOL isIPv4Disabled = (self->config & kIPv4Disabled) ? YES : NO;\n        BOOL isIPv6Disabled = (self->config & kIPv6Disabled) ? YES : NO;\n\t\t\n\t\tif (isIPv4Disabled && (address4 != nil))\n\t\t{\n\t\t\tNSString *msg = @\"IPv4 has been disabled and an IPv4 address was passed.\";\n\t\t\terr = [self badParamError:msg];\n\t\t\t\n\t\t\treturn_from_block;\n\t\t}\n\t\t\n\t\tif (isIPv6Disabled && (address6 != nil))\n\t\t{\n\t\t\tNSString *msg = @\"IPv6 has been disabled and an IPv6 address was passed.\";\n\t\t\terr = [self badParamError:msg];\n\t\t\t\n\t\t\treturn_from_block;\n\t\t}\n\t\t\n\t\t// Run through standard pre-connect checks\n\t\t\n\t\tif (![self preConnectWithInterface:interface error:&err])\n\t\t{\n\t\t\treturn_from_block;\n\t\t}\n\t\t\n\t\t// We've made it past all the checks.\n\t\t// It's time to start the connection process.\n\t\t\n\t\tif (![self connectWithAddress4:address4 address6:address6 error:&err])\n\t\t{\n\t\t\treturn_from_block;\n\t\t}\n\t\t\n        self->flags |= kSocketStarted;\n\t\t\n\t\t[self startConnectTimeout:timeout];\n\t\t\n\t\tresult = YES;\n\t}};\n\t\n\tif (dispatch_get_specific(IsOnSocketQueueOrTargetQueueKey))\n\t\tblock();\n\telse\n\t\tdispatch_sync(socketQueue, block);\n\t\n\tif (result == NO)\n\t{\n\t\tif (errPtr)\n\t\t\t*errPtr = err;\n\t}\n\t\n\treturn result;\n}\n\n- (BOOL)connectToUrl:(NSURL *)url withTimeout:(NSTimeInterval)timeout error:(NSError **)errPtr\n{\n\tLogTrace();\n\t\n\t__block BOOL result = NO;\n\t__block NSError *err = nil;\n\t\n\tdispatch_block_t block = ^{ @autoreleasepool {\n\t\t\n\t\t// Check for problems with host parameter\n\t\t\n\t\tif ([url.path length] == 0)\n\t\t{\n\t\t\tNSString *msg = @\"Invalid unix domain socket url.\";\n\t\t\terr = [self badParamError:msg];\n\t\t\t\n\t\t\treturn_from_block;\n\t\t}\n\t\t\n\t\t// Run through standard pre-connect checks\n\t\t\n\t\tif (![self preConnectWithUrl:url error:&err])\n\t\t{\n\t\t\treturn_from_block;\n\t\t}\n\t\t\n\t\t// We've made it past all the checks.\n\t\t// It's time to start the connection process.\n\t\t\n        self->flags |= kSocketStarted;\n\t\t\n\t\t// Start the normal connection process\n\t\t\n\t\tNSError *connectError = nil;\n        if (![self connectWithAddressUN:self->connectInterfaceUN error:&connectError])\n\t\t{\n\t\t\t[self closeWithError:connectError];\n\t\t\t\n\t\t\treturn_from_block;\n\t\t}\n\n\t\t[self startConnectTimeout:timeout];\n\t\t\n\t\tresult = YES;\n\t}};\n\t\n\tif (dispatch_get_specific(IsOnSocketQueueOrTargetQueueKey))\n\t\tblock();\n\telse\n\t\tdispatch_sync(socketQueue, block);\n\t\n\tif (result == NO)\n\t{\n\t\tif (errPtr)\n\t\t\t*errPtr = err;\n\t}\n\t\n\treturn result;\n}\n\n- (BOOL)connectToNetService:(NSNetService *)netService error:(NSError **)errPtr\n{\n\tNSArray* addresses = [netService addresses];\n\tfor (NSData* address in addresses)\n\t{\n\t\tBOOL result = [self connectToAddress:address error:errPtr];\n\t\tif (result)\n\t\t{\n\t\t\treturn YES;\n\t\t}\n\t}\n\t\n\treturn NO;\n}\n\n- (void)lookup:(int)aStateIndex didSucceedWithAddress4:(NSData *)address4 address6:(NSData *)address6\n{\n\tLogTrace();\n\t\n\tNSAssert(dispatch_get_specific(IsOnSocketQueueOrTargetQueueKey), @\"Must be dispatched on socketQueue\");\n\tNSAssert(address4 || address6, @\"Expected at least one valid address\");\n\t\n\tif (aStateIndex != stateIndex)\n\t{\n\t\tLogInfo(@\"Ignoring lookupDidSucceed, already disconnected\");\n\t\t\n\t\t// The connect operation has been cancelled.\n\t\t// That is, socket was disconnected, or connection has already timed out.\n\t\treturn;\n\t}\n\t\n\t// Check for problems\n\t\n\tBOOL isIPv4Disabled = (config & kIPv4Disabled) ? YES : NO;\n\tBOOL isIPv6Disabled = (config & kIPv6Disabled) ? YES : NO;\n\t\n\tif (isIPv4Disabled && (address6 == nil))\n\t{\n\t\tNSString *msg = @\"IPv4 has been disabled and DNS lookup found no IPv6 address.\";\n\t\t\n\t\t[self closeWithError:[self otherError:msg]];\n\t\treturn;\n\t}\n\t\n\tif (isIPv6Disabled && (address4 == nil))\n\t{\n\t\tNSString *msg = @\"IPv6 has been disabled and DNS lookup found no IPv4 address.\";\n\t\t\n\t\t[self closeWithError:[self otherError:msg]];\n\t\treturn;\n\t}\n\t\n\t// Start the normal connection process\n\t\n\tNSError *err = nil;\n\tif (![self connectWithAddress4:address4 address6:address6 error:&err])\n\t{\n\t\t[self closeWithError:err];\n\t}\n}\n\n/**\n * This method is called if the DNS lookup fails.\n * This method is executed on the socketQueue.\n * \n * Since the DNS lookup executed synchronously on a global concurrent queue,\n * the original connection request may have already been cancelled or timed-out by the time this method is invoked.\n * The lookupIndex tells us whether the lookup is still valid or not.\n**/\n- (void)lookup:(int)aStateIndex didFail:(NSError *)error\n{\n\tLogTrace();\n\t\n\tNSAssert(dispatch_get_specific(IsOnSocketQueueOrTargetQueueKey), @\"Must be dispatched on socketQueue\");\n\t\n\t\n\tif (aStateIndex != stateIndex)\n\t{\n\t\tLogInfo(@\"Ignoring lookup:didFail: - already disconnected\");\n\t\t\n\t\t// The connect operation has been cancelled.\n\t\t// That is, socket was disconnected, or connection has already timed out.\n\t\treturn;\n\t}\n\t\n\t[self endConnectTimeout];\n\t[self closeWithError:error];\n}\n\n- (BOOL)bindSocket:(int)socketFD toInterface:(NSData *)connectInterface error:(NSError **)errPtr\n{\n    // Bind the socket to the desired interface (if needed)\n    \n    if (connectInterface)\n    {\n        LogVerbose(@\"Binding socket...\");\n        \n        if ([[self class] portFromAddress:connectInterface] > 0)\n        {\n            // Since we're going to be binding to a specific port,\n            // we should turn on reuseaddr to allow us to override sockets in time_wait.\n            \n            int reuseOn = 1;\n            setsockopt(socketFD, SOL_SOCKET, SO_REUSEADDR, &reuseOn, sizeof(reuseOn));\n        }\n        \n        const struct sockaddr *interfaceAddr = (const struct sockaddr *)[connectInterface bytes];\n        \n        int result = bind(socketFD, interfaceAddr, (socklen_t)[connectInterface length]);\n        if (result != 0)\n        {\n            if (errPtr)\n                *errPtr = [self errorWithErrno:errno reason:@\"Error in bind() function\"];\n            \n            return NO;\n        }\n    }\n    \n    return YES;\n}\n\n- (int)createSocket:(int)family connectInterface:(NSData *)connectInterface errPtr:(NSError **)errPtr\n{\n    int socketFD = socket(family, SOCK_STREAM, 0);\n    \n    if (socketFD == SOCKET_NULL)\n    {\n        if (errPtr)\n            *errPtr = [self errorWithErrno:errno reason:@\"Error in socket() function\"];\n        \n        return socketFD;\n    }\n    \n    if (![self bindSocket:socketFD toInterface:connectInterface error:errPtr])\n    {\n        [self closeSocket:socketFD];\n        \n        return SOCKET_NULL;\n    }\n    \n    // Prevent SIGPIPE signals\n    \n    int nosigpipe = 1;\n    setsockopt(socketFD, SOL_SOCKET, SO_NOSIGPIPE, &nosigpipe, sizeof(nosigpipe));\n    \n    return socketFD;\n}\n\n- (void)connectSocket:(int)socketFD address:(NSData *)address stateIndex:(int)aStateIndex\n{\n    // If there already is a socket connected, we close socketFD and return\n    if (self.isConnected)\n    {\n        [self closeSocket:socketFD];\n        return;\n    }\n    \n    // Start the connection process in a background queue\n    \n    __weak GCDAsyncSocket *weakSelf = self;\n    \n    dispatch_queue_t globalConcurrentQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);\n    dispatch_async(globalConcurrentQueue, ^{\n#pragma clang diagnostic push\n#pragma clang diagnostic warning \"-Wimplicit-retain-self\"\n        \n        int result = connect(socketFD, (const struct sockaddr *)[address bytes], (socklen_t)[address length]);\n        int err = errno;\n        \n        __strong GCDAsyncSocket *strongSelf = weakSelf;\n        if (strongSelf == nil) return_from_block;\n        \n        dispatch_async(strongSelf->socketQueue, ^{ @autoreleasepool {\n            \n            if (strongSelf.isConnected)\n            {\n                [strongSelf closeSocket:socketFD];\n                return_from_block;\n            }\n            \n            if (result == 0)\n            {\n                [self closeUnusedSocket:socketFD];\n                \n                [strongSelf didConnect:aStateIndex];\n            }\n            else\n            {\n                [strongSelf closeSocket:socketFD];\n                \n                // If there are no more sockets trying to connect, we inform the error to the delegate\n                if (strongSelf.socket4FD == SOCKET_NULL && strongSelf.socket6FD == SOCKET_NULL)\n                {\n                    NSError *error = [strongSelf errorWithErrno:err reason:@\"Error in connect() function\"];\n                    [strongSelf didNotConnect:aStateIndex error:error];\n                }\n            }\n        }});\n        \n#pragma clang diagnostic pop\n    });\n    \n    LogVerbose(@\"Connecting...\");\n}\n\n- (void)closeSocket:(int)socketFD\n{\n    if (socketFD != SOCKET_NULL &&\n        (socketFD == socket6FD || socketFD == socket4FD))\n    {\n        close(socketFD);\n        \n        if (socketFD == socket4FD)\n        {\n            LogVerbose(@\"close(socket4FD)\");\n            socket4FD = SOCKET_NULL;\n        }\n        else if (socketFD == socket6FD)\n        {\n            LogVerbose(@\"close(socket6FD)\");\n            socket6FD = SOCKET_NULL;\n        }\n    }\n}\n\n- (void)closeUnusedSocket:(int)usedSocketFD\n{\n    if (usedSocketFD != socket4FD)\n    {\n        [self closeSocket:socket4FD];\n    }\n    else if (usedSocketFD != socket6FD)\n    {\n        [self closeSocket:socket6FD];\n    }\n}\n\n- (BOOL)connectWithAddress4:(NSData *)address4 address6:(NSData *)address6 error:(NSError **)errPtr\n{\n\tLogTrace();\n\t\n\tNSAssert(dispatch_get_specific(IsOnSocketQueueOrTargetQueueKey), @\"Must be dispatched on socketQueue\");\n\t\n\tLogVerbose(@\"IPv4: %@:%hu\", [[self class] hostFromAddress:address4], [[self class] portFromAddress:address4]);\n\tLogVerbose(@\"IPv6: %@:%hu\", [[self class] hostFromAddress:address6], [[self class] portFromAddress:address6]);\n\t\n\t// Determine socket type\n\t\n\tBOOL preferIPv6 = (config & kPreferIPv6) ? YES : NO;\n\t\n\t// Create and bind the sockets\n    \n    if (address4)\n    {\n        LogVerbose(@\"Creating IPv4 socket\");\n        \n        socket4FD = [self createSocket:AF_INET connectInterface:connectInterface4 errPtr:errPtr];\n    }\n    \n    if (address6)\n    {\n        LogVerbose(@\"Creating IPv6 socket\");\n        \n        socket6FD = [self createSocket:AF_INET6 connectInterface:connectInterface6 errPtr:errPtr];\n    }\n    \n    if (socket4FD == SOCKET_NULL && socket6FD == SOCKET_NULL)\n    {\n        return NO;\n    }\n\t\n\tint socketFD, alternateSocketFD;\n\tNSData *address, *alternateAddress;\n\t\n    if ((preferIPv6 && socket6FD != SOCKET_NULL) || socket4FD == SOCKET_NULL)\n    {\n        socketFD = socket6FD;\n        alternateSocketFD = socket4FD;\n        address = address6;\n        alternateAddress = address4;\n    }\n    else\n    {\n        socketFD = socket4FD;\n        alternateSocketFD = socket6FD;\n        address = address4;\n        alternateAddress = address6;\n    }\n\n    int aStateIndex = stateIndex;\n    \n    [self connectSocket:socketFD address:address stateIndex:aStateIndex];\n    \n    if (alternateAddress)\n    {\n        dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(alternateAddressDelay * NSEC_PER_SEC)), socketQueue, ^{\n            [self connectSocket:alternateSocketFD address:alternateAddress stateIndex:aStateIndex];\n        });\n    }\n\t\n\treturn YES;\n}\n\n- (BOOL)connectWithAddressUN:(NSData *)address error:(NSError **)errPtr\n{\n\tLogTrace();\n\t\n\tNSAssert(dispatch_get_specific(IsOnSocketQueueOrTargetQueueKey), @\"Must be dispatched on socketQueue\");\n\t\n\t// Create the socket\n\t\n\tint socketFD;\n\t\n\tLogVerbose(@\"Creating unix domain socket\");\n\t\n\tsocketUN = socket(AF_UNIX, SOCK_STREAM, 0);\n\t\n\tsocketFD = socketUN;\n\t\n\tif (socketFD == SOCKET_NULL)\n\t{\n\t\tif (errPtr)\n\t\t\t*errPtr = [self errorWithErrno:errno reason:@\"Error in socket() function\"];\n\t\t\n\t\treturn NO;\n\t}\n\t\n\t// Bind the socket to the desired interface (if needed)\n\t\n\tLogVerbose(@\"Binding socket...\");\n\t\n\tint reuseOn = 1;\n\tsetsockopt(socketFD, SOL_SOCKET, SO_REUSEADDR, &reuseOn, sizeof(reuseOn));\n\n//\tconst struct sockaddr *interfaceAddr = (const struct sockaddr *)[address bytes];\n//\t\n//\tint result = bind(socketFD, interfaceAddr, (socklen_t)[address length]);\n//\tif (result != 0)\n//\t{\n//\t\tif (errPtr)\n//\t\t\t*errPtr = [self errnoErrorWithReason:@\"Error in bind() function\"];\n//\t\t\n//\t\treturn NO;\n//\t}\n\t\n\t// Prevent SIGPIPE signals\n\t\n\tint nosigpipe = 1;\n\tsetsockopt(socketFD, SOL_SOCKET, SO_NOSIGPIPE, &nosigpipe, sizeof(nosigpipe));\n\t\n\t// Start the connection process in a background queue\n\t\n\tint aStateIndex = stateIndex;\n\t\n\tdispatch_queue_t globalConcurrentQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);\n\tdispatch_async(globalConcurrentQueue, ^{\n\t\t\n\t\tconst struct sockaddr *addr = (const struct sockaddr *)[address bytes];\n\t\tint result = connect(socketFD, addr, addr->sa_len);\n\t\tif (result == 0)\n\t\t{\n            dispatch_async(self->socketQueue, ^{ @autoreleasepool {\n\t\t\t\t\n\t\t\t\t[self didConnect:aStateIndex];\n\t\t\t}});\n\t\t}\n\t\telse\n\t\t{\n\t\t\t// TODO: Bad file descriptor\n\t\t\tperror(\"connect\");\n\t\t\tNSError *error = [self errorWithErrno:errno reason:@\"Error in connect() function\"];\n\t\t\t\n            dispatch_async(self->socketQueue, ^{ @autoreleasepool {\n\t\t\t\t\n\t\t\t\t[self didNotConnect:aStateIndex error:error];\n\t\t\t}});\n\t\t}\n\t});\n\t\n\tLogVerbose(@\"Connecting...\");\n\t\n\treturn YES;\n}\n\n- (void)didConnect:(int)aStateIndex\n{\n\tLogTrace();\n\t\n\tNSAssert(dispatch_get_specific(IsOnSocketQueueOrTargetQueueKey), @\"Must be dispatched on socketQueue\");\n\t\n\t\n\tif (aStateIndex != stateIndex)\n\t{\n\t\tLogInfo(@\"Ignoring didConnect, already disconnected\");\n\t\t\n\t\t// The connect operation has been cancelled.\n\t\t// That is, socket was disconnected, or connection has already timed out.\n\t\treturn;\n\t}\n\t\n\tflags |= kConnected;\n\t\n\t[self endConnectTimeout];\n\t\n\t#if TARGET_OS_IPHONE\n\t// The endConnectTimeout method executed above incremented the stateIndex.\n\taStateIndex = stateIndex;\n\t#endif\n\t\n\t// Setup read/write streams (as workaround for specific shortcomings in the iOS platform)\n\t// \n\t// Note:\n\t// There may be configuration options that must be set by the delegate before opening the streams.\n\t// The primary example is the kCFStreamNetworkServiceTypeVoIP flag, which only works on an unopened stream.\n\t// \n\t// Thus we wait until after the socket:didConnectToHost:port: delegate method has completed.\n\t// This gives the delegate time to properly configure the streams if needed.\n\t\n\tdispatch_block_t SetupStreamsPart1 = ^{\n\t\t#if TARGET_OS_IPHONE\n\t\t\n\t\tif (![self createReadAndWriteStream])\n\t\t{\n\t\t\t[self closeWithError:[self otherError:@\"Error creating CFStreams\"]];\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tif (![self registerForStreamCallbacksIncludingReadWrite:NO])\n\t\t{\n\t\t\t[self closeWithError:[self otherError:@\"Error in CFStreamSetClient\"]];\n\t\t\treturn;\n\t\t}\n\t\t\n\t\t#endif\n\t};\n\tdispatch_block_t SetupStreamsPart2 = ^{\n\t\t#if TARGET_OS_IPHONE\n\t\t\n        if (aStateIndex != self->stateIndex)\n\t\t{\n\t\t\t// The socket has been disconnected.\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tif (![self addStreamsToRunLoop])\n\t\t{\n\t\t\t[self closeWithError:[self otherError:@\"Error in CFStreamScheduleWithRunLoop\"]];\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tif (![self openStreams])\n\t\t{\n\t\t\t[self closeWithError:[self otherError:@\"Error creating CFStreams\"]];\n\t\t\treturn;\n\t\t}\n\t\t\n\t\t#endif\n\t};\n\t\n\t// Notify delegate\n\t\n\tNSString *host = [self connectedHost];\n\tuint16_t port = [self connectedPort];\n\tNSURL *url = [self connectedUrl];\n\t\n\t__strong id<GCDAsyncSocketDelegate> theDelegate = delegate;\n\n\tif (delegateQueue && host != nil && [theDelegate respondsToSelector:@selector(socket:didConnectToHost:port:)])\n\t{\n\t\tSetupStreamsPart1();\n\t\t\n\t\tdispatch_async(delegateQueue, ^{ @autoreleasepool {\n\t\t\t\n\t\t\t[theDelegate socket:self didConnectToHost:host port:port];\n\t\t\t\n            dispatch_async(self->socketQueue, ^{ @autoreleasepool {\n\t\t\t\t\n\t\t\t\tSetupStreamsPart2();\n\t\t\t}});\n\t\t}});\n\t}\n\telse if (delegateQueue && url != nil && [theDelegate respondsToSelector:@selector(socket:didConnectToUrl:)])\n\t{\n\t\tSetupStreamsPart1();\n\t\t\n\t\tdispatch_async(delegateQueue, ^{ @autoreleasepool {\n\t\t\t\n\t\t\t[theDelegate socket:self didConnectToUrl:url];\n\t\t\t\n            dispatch_async(self->socketQueue, ^{ @autoreleasepool {\n\t\t\t\t\n\t\t\t\tSetupStreamsPart2();\n\t\t\t}});\n\t\t}});\n\t}\n\telse\n\t{\n\t\tSetupStreamsPart1();\n\t\tSetupStreamsPart2();\n\t}\n\t\t\n\t// Get the connected socket\n\t\n\tint socketFD = (socket4FD != SOCKET_NULL) ? socket4FD : (socket6FD != SOCKET_NULL) ? socket6FD : socketUN;\n\t\n\t// Enable non-blocking IO on the socket\n\t\n\tint result = fcntl(socketFD, F_SETFL, O_NONBLOCK);\n\tif (result == -1)\n\t{\n\t\tNSString *errMsg = @\"Error enabling non-blocking IO on socket (fcntl)\";\n\t\t[self closeWithError:[self otherError:errMsg]];\n\t\t\n\t\treturn;\n\t}\n\t\n\t// Setup our read/write sources\n\t\n\t[self setupReadAndWriteSourcesForNewlyConnectedSocket:socketFD];\n\t\n\t// Dequeue any pending read/write requests\n\t\n\t[self maybeDequeueRead];\n\t[self maybeDequeueWrite];\n}\n\n- (void)didNotConnect:(int)aStateIndex error:(NSError *)error\n{\n\tLogTrace();\n\t\n\tNSAssert(dispatch_get_specific(IsOnSocketQueueOrTargetQueueKey), @\"Must be dispatched on socketQueue\");\n\t\n\t\n\tif (aStateIndex != stateIndex)\n\t{\n\t\tLogInfo(@\"Ignoring didNotConnect, already disconnected\");\n\t\t\n\t\t// The connect operation has been cancelled.\n\t\t// That is, socket was disconnected, or connection has already timed out.\n\t\treturn;\n\t}\n\t\n\t[self closeWithError:error];\n}\n\n- (void)startConnectTimeout:(NSTimeInterval)timeout\n{\n\tif (timeout >= 0.0)\n\t{\n\t\tconnectTimer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, socketQueue);\n\t\t\n\t\t__weak GCDAsyncSocket *weakSelf = self;\n\t\t\n\t\tdispatch_source_set_event_handler(connectTimer, ^{ @autoreleasepool {\n\t\t#pragma clang diagnostic push\n\t\t#pragma clang diagnostic warning \"-Wimplicit-retain-self\"\n\t\t\n\t\t\t__strong GCDAsyncSocket *strongSelf = weakSelf;\n\t\t\tif (strongSelf == nil) return_from_block;\n\t\t\t\n\t\t\t[strongSelf doConnectTimeout];\n\t\t\t\n\t\t#pragma clang diagnostic pop\n\t\t}});\n\t\t\n\t\t#if !OS_OBJECT_USE_OBJC\n\t\tdispatch_source_t theConnectTimer = connectTimer;\n\t\tdispatch_source_set_cancel_handler(connectTimer, ^{\n\t\t#pragma clang diagnostic push\n\t\t#pragma clang diagnostic warning \"-Wimplicit-retain-self\"\n\t\t\t\n\t\t\tLogVerbose(@\"dispatch_release(connectTimer)\");\n\t\t\tdispatch_release(theConnectTimer);\n\t\t\t\n\t\t#pragma clang diagnostic pop\n\t\t});\n\t\t#endif\n\t\t\n\t\tdispatch_time_t tt = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(timeout * NSEC_PER_SEC));\n\t\tdispatch_source_set_timer(connectTimer, tt, DISPATCH_TIME_FOREVER, 0);\n\t\t\n\t\tdispatch_resume(connectTimer);\n\t}\n}\n\n- (void)endConnectTimeout\n{\n\tLogTrace();\n\t\n\tif (connectTimer)\n\t{\n\t\tdispatch_source_cancel(connectTimer);\n\t\tconnectTimer = NULL;\n\t}\n\t\n\t// Increment stateIndex.\n\t// This will prevent us from processing results from any related background asynchronous operations.\n\t// \n\t// Note: This should be called from close method even if connectTimer is NULL.\n\t// This is because one might disconnect a socket prior to a successful connection which had no timeout.\n\t\n\tstateIndex++;\n\t\n\tif (connectInterface4)\n\t{\n\t\tconnectInterface4 = nil;\n\t}\n\tif (connectInterface6)\n\t{\n\t\tconnectInterface6 = nil;\n\t}\n}\n\n- (void)doConnectTimeout\n{\n\tLogTrace();\n\t\n\t[self endConnectTimeout];\n\t[self closeWithError:[self connectTimeoutError]];\n}\n\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n#pragma mark Disconnecting\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\n- (void)closeWithError:(NSError *)error\n{\n\tLogTrace();\n\tNSAssert(dispatch_get_specific(IsOnSocketQueueOrTargetQueueKey), @\"Must be dispatched on socketQueue\");\n\t\n\t[self endConnectTimeout];\n\t\n\tif (currentRead != nil)  [self endCurrentRead];\n\tif (currentWrite != nil) [self endCurrentWrite];\n\t\n\t[readQueue removeAllObjects];\n\t[writeQueue removeAllObjects];\n\t\n\t[preBuffer reset];\n\t\n\t#if TARGET_OS_IPHONE\n\t{\n\t\tif (readStream || writeStream)\n\t\t{\n\t\t\t[self removeStreamsFromRunLoop];\n\t\t\t\n\t\t\tif (readStream)\n\t\t\t{\n\t\t\t\tCFReadStreamSetClient(readStream, kCFStreamEventNone, NULL, NULL);\n\t\t\t\tCFReadStreamClose(readStream);\n\t\t\t\tCFRelease(readStream);\n\t\t\t\treadStream = NULL;\n\t\t\t}\n\t\t\tif (writeStream)\n\t\t\t{\n\t\t\t\tCFWriteStreamSetClient(writeStream, kCFStreamEventNone, NULL, NULL);\n\t\t\t\tCFWriteStreamClose(writeStream);\n\t\t\t\tCFRelease(writeStream);\n\t\t\t\twriteStream = NULL;\n\t\t\t}\n\t\t}\n\t}\n\t#endif\n\t\n\t[sslPreBuffer reset];\n\tsslErrCode = lastSSLHandshakeError = noErr;\n\t\n\tif (sslContext)\n\t{\n\t\t// Getting a linker error here about the SSLx() functions?\n\t\t// You need to add the Security Framework to your application.\n\t\t\n\t\tSSLClose(sslContext);\n\t\t\n\t\t#if TARGET_OS_IPHONE || (__MAC_OS_X_VERSION_MIN_REQUIRED >= 1080)\n\t\tCFRelease(sslContext);\n\t\t#else\n\t\tSSLDisposeContext(sslContext);\n\t\t#endif\n\t\t\n\t\tsslContext = NULL;\n\t}\n\t\n\t// For some crazy reason (in my opinion), cancelling a dispatch source doesn't\n\t// invoke the cancel handler if the dispatch source is paused.\n\t// So we have to unpause the source if needed.\n\t// This allows the cancel handler to be run, which in turn releases the source and closes the socket.\n\t\n\tif (!accept4Source && !accept6Source && !acceptUNSource && !readSource && !writeSource)\n\t{\n\t\tLogVerbose(@\"manually closing close\");\n\n\t\tif (socket4FD != SOCKET_NULL)\n\t\t{\n\t\t\tLogVerbose(@\"close(socket4FD)\");\n\t\t\tclose(socket4FD);\n\t\t\tsocket4FD = SOCKET_NULL;\n\t\t}\n\n\t\tif (socket6FD != SOCKET_NULL)\n\t\t{\n\t\t\tLogVerbose(@\"close(socket6FD)\");\n\t\t\tclose(socket6FD);\n\t\t\tsocket6FD = SOCKET_NULL;\n\t\t}\n\t\t\n\t\tif (socketUN != SOCKET_NULL)\n\t\t{\n\t\t\tLogVerbose(@\"close(socketUN)\");\n\t\t\tclose(socketUN);\n\t\t\tsocketUN = SOCKET_NULL;\n\t\t\tunlink(socketUrl.path.fileSystemRepresentation);\n\t\t\tsocketUrl = nil;\n\t\t}\n\t}\n\telse\n\t{\n\t\tif (accept4Source)\n\t\t{\n\t\t\tLogVerbose(@\"dispatch_source_cancel(accept4Source)\");\n\t\t\tdispatch_source_cancel(accept4Source);\n\t\t\t\n\t\t\t// We never suspend accept4Source\n\t\t\t\n\t\t\taccept4Source = NULL;\n\t\t}\n\t\t\n\t\tif (accept6Source)\n\t\t{\n\t\t\tLogVerbose(@\"dispatch_source_cancel(accept6Source)\");\n\t\t\tdispatch_source_cancel(accept6Source);\n\t\t\t\n\t\t\t// We never suspend accept6Source\n\t\t\t\n\t\t\taccept6Source = NULL;\n\t\t}\n\t\t\n\t\tif (acceptUNSource)\n\t\t{\n\t\t\tLogVerbose(@\"dispatch_source_cancel(acceptUNSource)\");\n\t\t\tdispatch_source_cancel(acceptUNSource);\n\t\t\t\n\t\t\t// We never suspend acceptUNSource\n\t\t\t\n\t\t\tacceptUNSource = NULL;\n\t\t}\n\t\n\t\tif (readSource)\n\t\t{\n\t\t\tLogVerbose(@\"dispatch_source_cancel(readSource)\");\n\t\t\tdispatch_source_cancel(readSource);\n\t\t\t\n\t\t\t[self resumeReadSource];\n\t\t\t\n\t\t\treadSource = NULL;\n\t\t}\n\t\t\n\t\tif (writeSource)\n\t\t{\n\t\t\tLogVerbose(@\"dispatch_source_cancel(writeSource)\");\n\t\t\tdispatch_source_cancel(writeSource);\n\t\t\t\n\t\t\t[self resumeWriteSource];\n\t\t\t\n\t\t\twriteSource = NULL;\n\t\t}\n\t\t\n\t\t// The sockets will be closed by the cancel handlers of the corresponding source\n\t\t\n\t\tsocket4FD = SOCKET_NULL;\n\t\tsocket6FD = SOCKET_NULL;\n\t\tsocketUN = SOCKET_NULL;\n\t}\n\t\n\t// If the client has passed the connect/accept method, then the connection has at least begun.\n\t// Notify delegate that it is now ending.\n\tBOOL shouldCallDelegate = (flags & kSocketStarted) ? YES : NO;\n\tBOOL isDeallocating = (flags & kDealloc) ? YES : NO;\n\t\n\t// Clear stored socket info and all flags (config remains as is)\n\tsocketFDBytesAvailable = 0;\n\tflags = 0;\n\tsslWriteCachedLength = 0;\n\t\n\tif (shouldCallDelegate)\n\t{\n\t\t__strong id<GCDAsyncSocketDelegate> theDelegate = delegate;\n\t\t__strong id theSelf = isDeallocating ? nil : self;\n\t\t\n\t\tif (delegateQueue && [theDelegate respondsToSelector: @selector(socketDidDisconnect:withError:)])\n\t\t{\n\t\t\tdispatch_async(delegateQueue, ^{ @autoreleasepool {\n\t\t\t\t\n\t\t\t\t[theDelegate socketDidDisconnect:theSelf withError:error];\n\t\t\t}});\n\t\t}\t\n\t}\n}\n\n- (void)disconnect\n{\n\tdispatch_block_t block = ^{ @autoreleasepool {\n\t\t\n        if (self->flags & kSocketStarted)\n\t\t{\n\t\t\t[self closeWithError:nil];\n\t\t}\n\t}};\n\t\n\t// Synchronous disconnection, as documented in the header file\n\t\n\tif (dispatch_get_specific(IsOnSocketQueueOrTargetQueueKey))\n\t\tblock();\n\telse\n\t\tdispatch_sync(socketQueue, block);\n}\n\n- (void)disconnectAfterReading\n{\n\tdispatch_async(socketQueue, ^{ @autoreleasepool {\n\t\t\n        if (self->flags & kSocketStarted)\n\t\t{\n            self->flags |= (kForbidReadsWrites | kDisconnectAfterReads);\n\t\t\t[self maybeClose];\n\t\t}\n\t}});\n}\n\n- (void)disconnectAfterWriting\n{\n\tdispatch_async(socketQueue, ^{ @autoreleasepool {\n\t\t\n        if (self->flags & kSocketStarted)\n\t\t{\n            self->flags |= (kForbidReadsWrites | kDisconnectAfterWrites);\n\t\t\t[self maybeClose];\n\t\t}\n\t}});\n}\n\n- (void)disconnectAfterReadingAndWriting\n{\n\tdispatch_async(socketQueue, ^{ @autoreleasepool {\n\t\t\n        if (self->flags & kSocketStarted)\n\t\t{\n            self->flags |= (kForbidReadsWrites | kDisconnectAfterReads | kDisconnectAfterWrites);\n\t\t\t[self maybeClose];\n\t\t}\n\t}});\n}\n\n/**\n * Closes the socket if possible.\n * That is, if all writes have completed, and we're set to disconnect after writing,\n * or if all reads have completed, and we're set to disconnect after reading.\n**/\n- (void)maybeClose\n{\n\tNSAssert(dispatch_get_specific(IsOnSocketQueueOrTargetQueueKey), @\"Must be dispatched on socketQueue\");\n\t\n\tBOOL shouldClose = NO;\n\t\n\tif (flags & kDisconnectAfterReads)\n\t{\n\t\tif (([readQueue count] == 0) && (currentRead == nil))\n\t\t{\n\t\t\tif (flags & kDisconnectAfterWrites)\n\t\t\t{\n\t\t\t\tif (([writeQueue count] == 0) && (currentWrite == nil))\n\t\t\t\t{\n\t\t\t\t\tshouldClose = YES;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tshouldClose = YES;\n\t\t\t}\n\t\t}\n\t}\n\telse if (flags & kDisconnectAfterWrites)\n\t{\n\t\tif (([writeQueue count] == 0) && (currentWrite == nil))\n\t\t{\n\t\t\tshouldClose = YES;\n\t\t}\n\t}\n\t\n\tif (shouldClose)\n\t{\n\t\t[self closeWithError:nil];\n\t}\n}\n\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n#pragma mark Errors\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\n- (NSError *)badConfigError:(NSString *)errMsg\n{\n\tNSDictionary *userInfo = @{NSLocalizedDescriptionKey : errMsg};\n\t\n\treturn [NSError errorWithDomain:GCDAsyncSocketErrorDomain code:GCDAsyncSocketBadConfigError userInfo:userInfo];\n}\n\n- (NSError *)badParamError:(NSString *)errMsg\n{\n\tNSDictionary *userInfo = @{NSLocalizedDescriptionKey : errMsg};\n\t\n\treturn [NSError errorWithDomain:GCDAsyncSocketErrorDomain code:GCDAsyncSocketBadParamError userInfo:userInfo];\n}\n\n+ (NSError *)gaiError:(int)gai_error\n{\n\tNSString *errMsg = [NSString stringWithCString:gai_strerror(gai_error) encoding:NSASCIIStringEncoding];\n\tNSDictionary *userInfo = @{NSLocalizedDescriptionKey : errMsg};\n\t\n\treturn [NSError errorWithDomain:@\"kCFStreamErrorDomainNetDB\" code:gai_error userInfo:userInfo];\n}\n\n- (NSError *)errorWithErrno:(int)err reason:(NSString *)reason\n{\n\tNSString *errMsg = [NSString stringWithUTF8String:strerror(err)];\n\tNSDictionary *userInfo = @{NSLocalizedDescriptionKey : errMsg,\n\t\t\t\t\t\t\t   NSLocalizedFailureReasonErrorKey : reason};\n\t\n\treturn [NSError errorWithDomain:NSPOSIXErrorDomain code:err userInfo:userInfo];\n}\n\n- (NSError *)errnoError\n{\n\tNSString *errMsg = [NSString stringWithUTF8String:strerror(errno)];\n\tNSDictionary *userInfo = @{NSLocalizedDescriptionKey : errMsg};\n\t\n\treturn [NSError errorWithDomain:NSPOSIXErrorDomain code:errno userInfo:userInfo];\n}\n\n- (NSError *)sslError:(OSStatus)ssl_error\n{\n\tNSString *msg = @\"Error code definition can be found in Apple's SecureTransport.h\";\n\tNSDictionary *userInfo = @{NSLocalizedRecoverySuggestionErrorKey : msg};\n\t\n\treturn [NSError errorWithDomain:@\"kCFStreamErrorDomainSSL\" code:ssl_error userInfo:userInfo];\n}\n\n- (NSError *)connectTimeoutError\n{\n\tNSString *errMsg = NSLocalizedStringWithDefaultValue(@\"GCDAsyncSocketConnectTimeoutError\",\n\t                                                     @\"GCDAsyncSocket\", [NSBundle mainBundle],\n\t                                                     @\"Attempt to connect to host timed out\", nil);\n\t\n\tNSDictionary *userInfo = @{NSLocalizedDescriptionKey : errMsg};\n\t\n\treturn [NSError errorWithDomain:GCDAsyncSocketErrorDomain code:GCDAsyncSocketConnectTimeoutError userInfo:userInfo];\n}\n\n/**\n * Returns a standard AsyncSocket maxed out error.\n**/\n- (NSError *)readMaxedOutError\n{\n\tNSString *errMsg = NSLocalizedStringWithDefaultValue(@\"GCDAsyncSocketReadMaxedOutError\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t @\"GCDAsyncSocket\", [NSBundle mainBundle],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t @\"Read operation reached set maximum length\", nil);\n\t\n\tNSDictionary *info = @{NSLocalizedDescriptionKey : errMsg};\n\t\n\treturn [NSError errorWithDomain:GCDAsyncSocketErrorDomain code:GCDAsyncSocketReadMaxedOutError userInfo:info];\n}\n\n/**\n * Returns a standard AsyncSocket write timeout error.\n**/\n- (NSError *)readTimeoutError\n{\n\tNSString *errMsg = NSLocalizedStringWithDefaultValue(@\"GCDAsyncSocketReadTimeoutError\",\n\t                                                     @\"GCDAsyncSocket\", [NSBundle mainBundle],\n\t                                                     @\"Read operation timed out\", nil);\n\t\n\tNSDictionary *userInfo = @{NSLocalizedDescriptionKey : errMsg};\n\t\n\treturn [NSError errorWithDomain:GCDAsyncSocketErrorDomain code:GCDAsyncSocketReadTimeoutError userInfo:userInfo];\n}\n\n/**\n * Returns a standard AsyncSocket write timeout error.\n**/\n- (NSError *)writeTimeoutError\n{\n\tNSString *errMsg = NSLocalizedStringWithDefaultValue(@\"GCDAsyncSocketWriteTimeoutError\",\n\t                                                     @\"GCDAsyncSocket\", [NSBundle mainBundle],\n\t                                                     @\"Write operation timed out\", nil);\n\t\n\tNSDictionary *userInfo = @{NSLocalizedDescriptionKey : errMsg};\n\t\n\treturn [NSError errorWithDomain:GCDAsyncSocketErrorDomain code:GCDAsyncSocketWriteTimeoutError userInfo:userInfo];\n}\n\n- (NSError *)connectionClosedError\n{\n\tNSString *errMsg = NSLocalizedStringWithDefaultValue(@\"GCDAsyncSocketClosedError\",\n\t                                                     @\"GCDAsyncSocket\", [NSBundle mainBundle],\n\t                                                     @\"Socket closed by remote peer\", nil);\n\t\n\tNSDictionary *userInfo = @{NSLocalizedDescriptionKey : errMsg};\n\t\n\treturn [NSError errorWithDomain:GCDAsyncSocketErrorDomain code:GCDAsyncSocketClosedError userInfo:userInfo];\n}\n\n- (NSError *)otherError:(NSString *)errMsg\n{\n\tNSDictionary *userInfo = @{NSLocalizedDescriptionKey : errMsg};\n\t\n\treturn [NSError errorWithDomain:GCDAsyncSocketErrorDomain code:GCDAsyncSocketOtherError userInfo:userInfo];\n}\n\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n#pragma mark Diagnostics\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\n- (BOOL)isDisconnected\n{\n\t__block BOOL result = NO;\n\t\n\tdispatch_block_t block = ^{\n        result = (self->flags & kSocketStarted) ? NO : YES;\n\t};\n\t\n\tif (dispatch_get_specific(IsOnSocketQueueOrTargetQueueKey))\n\t\tblock();\n\telse\n\t\tdispatch_sync(socketQueue, block);\n\t\n\treturn result;\n}\n\n- (BOOL)isConnected\n{\n\t__block BOOL result = NO;\n\t\n\tdispatch_block_t block = ^{\n        result = (self->flags & kConnected) ? YES : NO;\n\t};\n\t\n\tif (dispatch_get_specific(IsOnSocketQueueOrTargetQueueKey))\n\t\tblock();\n\telse\n\t\tdispatch_sync(socketQueue, block);\n\t\n\treturn result;\n}\n\n- (NSString *)connectedHost\n{\n\tif (dispatch_get_specific(IsOnSocketQueueOrTargetQueueKey))\n\t{\n\t\tif (socket4FD != SOCKET_NULL)\n\t\t\treturn [self connectedHostFromSocket4:socket4FD];\n\t\tif (socket6FD != SOCKET_NULL)\n\t\t\treturn [self connectedHostFromSocket6:socket6FD];\n\t\t\n\t\treturn nil;\n\t}\n\telse\n\t{\n\t\t__block NSString *result = nil;\n\t\t\n\t\tdispatch_sync(socketQueue, ^{ @autoreleasepool {\n\t\t\t\n            if (self->socket4FD != SOCKET_NULL)\n                result = [self connectedHostFromSocket4:self->socket4FD];\n            else if (self->socket6FD != SOCKET_NULL)\n                result = [self connectedHostFromSocket6:self->socket6FD];\n\t\t}});\n\t\t\n\t\treturn result;\n\t}\n}\n\n- (uint16_t)connectedPort\n{\n\tif (dispatch_get_specific(IsOnSocketQueueOrTargetQueueKey))\n\t{\n\t\tif (socket4FD != SOCKET_NULL)\n\t\t\treturn [self connectedPortFromSocket4:socket4FD];\n\t\tif (socket6FD != SOCKET_NULL)\n\t\t\treturn [self connectedPortFromSocket6:socket6FD];\n\t\t\n\t\treturn 0;\n\t}\n\telse\n\t{\n\t\t__block uint16_t result = 0;\n\t\t\n\t\tdispatch_sync(socketQueue, ^{\n\t\t\t// No need for autorelease pool\n\t\t\t\n            if (self->socket4FD != SOCKET_NULL)\n                result = [self connectedPortFromSocket4:self->socket4FD];\n            else if (self->socket6FD != SOCKET_NULL)\n                result = [self connectedPortFromSocket6:self->socket6FD];\n\t\t});\n\t\t\n\t\treturn result;\n\t}\n}\n\n- (NSURL *)connectedUrl\n{\n\tif (dispatch_get_specific(IsOnSocketQueueOrTargetQueueKey))\n\t{\n\t\tif (socketUN != SOCKET_NULL)\n\t\t\treturn [self connectedUrlFromSocketUN:socketUN];\n\t\t\n\t\treturn nil;\n\t}\n\telse\n\t{\n\t\t__block NSURL *result = nil;\n\t\t\n\t\tdispatch_sync(socketQueue, ^{ @autoreleasepool {\n\t\t\t\n            if (self->socketUN != SOCKET_NULL)\n                result = [self connectedUrlFromSocketUN:self->socketUN];\n\t\t}});\n\t\t\n\t\treturn result;\n\t}\n}\n\n- (NSString *)localHost\n{\n\tif (dispatch_get_specific(IsOnSocketQueueOrTargetQueueKey))\n\t{\n\t\tif (socket4FD != SOCKET_NULL)\n\t\t\treturn [self localHostFromSocket4:socket4FD];\n\t\tif (socket6FD != SOCKET_NULL)\n\t\t\treturn [self localHostFromSocket6:socket6FD];\n\t\t\n\t\treturn nil;\n\t}\n\telse\n\t{\n\t\t__block NSString *result = nil;\n\t\t\n\t\tdispatch_sync(socketQueue, ^{ @autoreleasepool {\n\t\t\t\n            if (self->socket4FD != SOCKET_NULL)\n                result = [self localHostFromSocket4:self->socket4FD];\n            else if (self->socket6FD != SOCKET_NULL)\n                result = [self localHostFromSocket6:self->socket6FD];\n\t\t}});\n\t\t\n\t\treturn result;\n\t}\n}\n\n- (uint16_t)localPort\n{\n\tif (dispatch_get_specific(IsOnSocketQueueOrTargetQueueKey))\n\t{\n\t\tif (socket4FD != SOCKET_NULL)\n\t\t\treturn [self localPortFromSocket4:socket4FD];\n\t\tif (socket6FD != SOCKET_NULL)\n\t\t\treturn [self localPortFromSocket6:socket6FD];\n\t\t\n\t\treturn 0;\n\t}\n\telse\n\t{\n\t\t__block uint16_t result = 0;\n\t\t\n\t\tdispatch_sync(socketQueue, ^{\n\t\t\t// No need for autorelease pool\n\t\t\t\n            if (self->socket4FD != SOCKET_NULL)\n                result = [self localPortFromSocket4:self->socket4FD];\n            else if (self->socket6FD != SOCKET_NULL)\n                result = [self localPortFromSocket6:self->socket6FD];\n\t\t});\n\t\t\n\t\treturn result;\n\t}\n}\n\n- (NSString *)connectedHost4\n{\n\tif (socket4FD != SOCKET_NULL)\n\t\treturn [self connectedHostFromSocket4:socket4FD];\n\t\n\treturn nil;\n}\n\n- (NSString *)connectedHost6\n{\n\tif (socket6FD != SOCKET_NULL)\n\t\treturn [self connectedHostFromSocket6:socket6FD];\n\t\n\treturn nil;\n}\n\n- (uint16_t)connectedPort4\n{\n\tif (socket4FD != SOCKET_NULL)\n\t\treturn [self connectedPortFromSocket4:socket4FD];\n\t\n\treturn 0;\n}\n\n- (uint16_t)connectedPort6\n{\n\tif (socket6FD != SOCKET_NULL)\n\t\treturn [self connectedPortFromSocket6:socket6FD];\n\t\n\treturn 0;\n}\n\n- (NSString *)localHost4\n{\n\tif (socket4FD != SOCKET_NULL)\n\t\treturn [self localHostFromSocket4:socket4FD];\n\t\n\treturn nil;\n}\n\n- (NSString *)localHost6\n{\n\tif (socket6FD != SOCKET_NULL)\n\t\treturn [self localHostFromSocket6:socket6FD];\n\t\n\treturn nil;\n}\n\n- (uint16_t)localPort4\n{\n\tif (socket4FD != SOCKET_NULL)\n\t\treturn [self localPortFromSocket4:socket4FD];\n\t\n\treturn 0;\n}\n\n- (uint16_t)localPort6\n{\n\tif (socket6FD != SOCKET_NULL)\n\t\treturn [self localPortFromSocket6:socket6FD];\n\t\n\treturn 0;\n}\n\n- (NSString *)connectedHostFromSocket4:(int)socketFD\n{\n\tstruct sockaddr_in sockaddr4;\n\tsocklen_t sockaddr4len = sizeof(sockaddr4);\n\t\n\tif (getpeername(socketFD, (struct sockaddr *)&sockaddr4, &sockaddr4len) < 0)\n\t{\n\t\treturn nil;\n\t}\n\treturn [[self class] hostFromSockaddr4:&sockaddr4];\n}\n\n- (NSString *)connectedHostFromSocket6:(int)socketFD\n{\n\tstruct sockaddr_in6 sockaddr6;\n\tsocklen_t sockaddr6len = sizeof(sockaddr6);\n\t\n\tif (getpeername(socketFD, (struct sockaddr *)&sockaddr6, &sockaddr6len) < 0)\n\t{\n\t\treturn nil;\n\t}\n\treturn [[self class] hostFromSockaddr6:&sockaddr6];\n}\n\n- (uint16_t)connectedPortFromSocket4:(int)socketFD\n{\n\tstruct sockaddr_in sockaddr4;\n\tsocklen_t sockaddr4len = sizeof(sockaddr4);\n\t\n\tif (getpeername(socketFD, (struct sockaddr *)&sockaddr4, &sockaddr4len) < 0)\n\t{\n\t\treturn 0;\n\t}\n\treturn [[self class] portFromSockaddr4:&sockaddr4];\n}\n\n- (uint16_t)connectedPortFromSocket6:(int)socketFD\n{\n\tstruct sockaddr_in6 sockaddr6;\n\tsocklen_t sockaddr6len = sizeof(sockaddr6);\n\t\n\tif (getpeername(socketFD, (struct sockaddr *)&sockaddr6, &sockaddr6len) < 0)\n\t{\n\t\treturn 0;\n\t}\n\treturn [[self class] portFromSockaddr6:&sockaddr6];\n}\n\n- (NSURL *)connectedUrlFromSocketUN:(int)socketFD\n{\n\tstruct sockaddr_un sockaddr;\n\tsocklen_t sockaddrlen = sizeof(sockaddr);\n\t\n\tif (getpeername(socketFD, (struct sockaddr *)&sockaddr, &sockaddrlen) < 0)\n\t{\n\t\treturn 0;\n\t}\n\treturn [[self class] urlFromSockaddrUN:&sockaddr];\n}\n\n- (NSString *)localHostFromSocket4:(int)socketFD\n{\n\tstruct sockaddr_in sockaddr4;\n\tsocklen_t sockaddr4len = sizeof(sockaddr4);\n\t\n\tif (getsockname(socketFD, (struct sockaddr *)&sockaddr4, &sockaddr4len) < 0)\n\t{\n\t\treturn nil;\n\t}\n\treturn [[self class] hostFromSockaddr4:&sockaddr4];\n}\n\n- (NSString *)localHostFromSocket6:(int)socketFD\n{\n\tstruct sockaddr_in6 sockaddr6;\n\tsocklen_t sockaddr6len = sizeof(sockaddr6);\n\t\n\tif (getsockname(socketFD, (struct sockaddr *)&sockaddr6, &sockaddr6len) < 0)\n\t{\n\t\treturn nil;\n\t}\n\treturn [[self class] hostFromSockaddr6:&sockaddr6];\n}\n\n- (uint16_t)localPortFromSocket4:(int)socketFD\n{\n\tstruct sockaddr_in sockaddr4;\n\tsocklen_t sockaddr4len = sizeof(sockaddr4);\n\t\n\tif (getsockname(socketFD, (struct sockaddr *)&sockaddr4, &sockaddr4len) < 0)\n\t{\n\t\treturn 0;\n\t}\n\treturn [[self class] portFromSockaddr4:&sockaddr4];\n}\n\n- (uint16_t)localPortFromSocket6:(int)socketFD\n{\n\tstruct sockaddr_in6 sockaddr6;\n\tsocklen_t sockaddr6len = sizeof(sockaddr6);\n\t\n\tif (getsockname(socketFD, (struct sockaddr *)&sockaddr6, &sockaddr6len) < 0)\n\t{\n\t\treturn 0;\n\t}\n\treturn [[self class] portFromSockaddr6:&sockaddr6];\n}\n\n- (NSData *)connectedAddress\n{\n\t__block NSData *result = nil;\n\t\n\tdispatch_block_t block = ^{\n        if (self->socket4FD != SOCKET_NULL)\n\t\t{\n\t\t\tstruct sockaddr_in sockaddr4;\n\t\t\tsocklen_t sockaddr4len = sizeof(sockaddr4);\n\t\t\t\n            if (getpeername(self->socket4FD, (struct sockaddr *)&sockaddr4, &sockaddr4len) == 0)\n\t\t\t{\n\t\t\t\tresult = [[NSData alloc] initWithBytes:&sockaddr4 length:sockaddr4len];\n\t\t\t}\n\t\t}\n\t\t\n        if (self->socket6FD != SOCKET_NULL)\n\t\t{\n\t\t\tstruct sockaddr_in6 sockaddr6;\n\t\t\tsocklen_t sockaddr6len = sizeof(sockaddr6);\n\t\t\t\n            if (getpeername(self->socket6FD, (struct sockaddr *)&sockaddr6, &sockaddr6len) == 0)\n\t\t\t{\n\t\t\t\tresult = [[NSData alloc] initWithBytes:&sockaddr6 length:sockaddr6len];\n\t\t\t}\n\t\t}\n\t};\n\t\n\tif (dispatch_get_specific(IsOnSocketQueueOrTargetQueueKey))\n\t\tblock();\n\telse\n\t\tdispatch_sync(socketQueue, block);\n\t\n\treturn result;\n}\n\n- (NSData *)localAddress\n{\n\t__block NSData *result = nil;\n\t\n\tdispatch_block_t block = ^{\n        if (self->socket4FD != SOCKET_NULL)\n\t\t{\n\t\t\tstruct sockaddr_in sockaddr4;\n\t\t\tsocklen_t sockaddr4len = sizeof(sockaddr4);\n\t\t\t\n            if (getsockname(self->socket4FD, (struct sockaddr *)&sockaddr4, &sockaddr4len) == 0)\n\t\t\t{\n\t\t\t\tresult = [[NSData alloc] initWithBytes:&sockaddr4 length:sockaddr4len];\n\t\t\t}\n\t\t}\n\t\t\n        if (self->socket6FD != SOCKET_NULL)\n\t\t{\n\t\t\tstruct sockaddr_in6 sockaddr6;\n\t\t\tsocklen_t sockaddr6len = sizeof(sockaddr6);\n\t\t\t\n            if (getsockname(self->socket6FD, (struct sockaddr *)&sockaddr6, &sockaddr6len) == 0)\n\t\t\t{\n\t\t\t\tresult = [[NSData alloc] initWithBytes:&sockaddr6 length:sockaddr6len];\n\t\t\t}\n\t\t}\n\t};\n\t\n\tif (dispatch_get_specific(IsOnSocketQueueOrTargetQueueKey))\n\t\tblock();\n\telse\n\t\tdispatch_sync(socketQueue, block);\n\t\n\treturn result;\n}\n\n- (BOOL)isIPv4\n{\n\tif (dispatch_get_specific(IsOnSocketQueueOrTargetQueueKey))\n\t{\n\t\treturn (socket4FD != SOCKET_NULL);\n\t}\n\telse\n\t{\n\t\t__block BOOL result = NO;\n\t\t\n\t\tdispatch_sync(socketQueue, ^{\n            result = (self->socket4FD != SOCKET_NULL);\n\t\t});\n\t\t\n\t\treturn result;\n\t}\n}\n\n- (BOOL)isIPv6\n{\n\tif (dispatch_get_specific(IsOnSocketQueueOrTargetQueueKey))\n\t{\n\t\treturn (socket6FD != SOCKET_NULL);\n\t}\n\telse\n\t{\n\t\t__block BOOL result = NO;\n\t\t\n\t\tdispatch_sync(socketQueue, ^{\n            result = (self->socket6FD != SOCKET_NULL);\n\t\t});\n\t\t\n\t\treturn result;\n\t}\n}\n\n- (BOOL)isSecure\n{\n\tif (dispatch_get_specific(IsOnSocketQueueOrTargetQueueKey))\n\t{\n\t\treturn (flags & kSocketSecure) ? YES : NO;\n\t}\n\telse\n\t{\n\t\t__block BOOL result;\n\t\t\n\t\tdispatch_sync(socketQueue, ^{\n            result = (self->flags & kSocketSecure) ? YES : NO;\n\t\t});\n\t\t\n\t\treturn result;\n\t}\n}\n\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n#pragma mark Utilities\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Finds the address of an interface description.\n * An inteface description may be an interface name (en0, en1, lo0) or corresponding IP (192.168.4.34).\n * \n * The interface description may optionally contain a port number at the end, separated by a colon.\n * If a non-zero port parameter is provided, any port number in the interface description is ignored.\n * \n * The returned value is a 'struct sockaddr' wrapped in an NSMutableData object.\n**/\n- (void)getInterfaceAddress4:(NSMutableData **)interfaceAddr4Ptr\n                    address6:(NSMutableData **)interfaceAddr6Ptr\n             fromDescription:(NSString *)interfaceDescription\n                        port:(uint16_t)port\n{\n\tNSMutableData *addr4 = nil;\n\tNSMutableData *addr6 = nil;\n\t\n\tNSString *interface = nil;\n\t\n\tNSArray *components = [interfaceDescription componentsSeparatedByString:@\":\"];\n\tif ([components count] > 0)\n\t{\n\t\tNSString *temp = [components objectAtIndex:0];\n\t\tif ([temp length] > 0)\n\t\t{\n\t\t\tinterface = temp;\n\t\t}\n\t}\n\tif ([components count] > 1 && port == 0)\n\t{\n\t\tNSString *temp = [components objectAtIndex:1];\n\t\tlong portL = strtol([temp UTF8String], NULL, 10);\n\t\t\n\t\tif (portL > 0 && portL <= UINT16_MAX)\n\t\t{\n\t\t\tport = (uint16_t)portL;\n\t\t}\n\t}\n\t\n\tif (interface == nil)\n\t{\n\t\t// ANY address\n\t\t\n\t\tstruct sockaddr_in sockaddr4;\n\t\tmemset(&sockaddr4, 0, sizeof(sockaddr4));\n\t\t\n\t\tsockaddr4.sin_len         = sizeof(sockaddr4);\n\t\tsockaddr4.sin_family      = AF_INET;\n\t\tsockaddr4.sin_port        = htons(port);\n\t\tsockaddr4.sin_addr.s_addr = htonl(INADDR_ANY);\n\t\t\n\t\tstruct sockaddr_in6 sockaddr6;\n\t\tmemset(&sockaddr6, 0, sizeof(sockaddr6));\n\t\t\n\t\tsockaddr6.sin6_len       = sizeof(sockaddr6);\n\t\tsockaddr6.sin6_family    = AF_INET6;\n\t\tsockaddr6.sin6_port      = htons(port);\n\t\tsockaddr6.sin6_addr      = in6addr_any;\n\t\t\n\t\taddr4 = [NSMutableData dataWithBytes:&sockaddr4 length:sizeof(sockaddr4)];\n\t\taddr6 = [NSMutableData dataWithBytes:&sockaddr6 length:sizeof(sockaddr6)];\n\t}\n\telse if ([interface isEqualToString:@\"localhost\"] || [interface isEqualToString:@\"loopback\"])\n\t{\n\t\t// LOOPBACK address\n\t\t\n\t\tstruct sockaddr_in sockaddr4;\n\t\tmemset(&sockaddr4, 0, sizeof(sockaddr4));\n\t\t\n\t\tsockaddr4.sin_len         = sizeof(sockaddr4);\n\t\tsockaddr4.sin_family      = AF_INET;\n\t\tsockaddr4.sin_port        = htons(port);\n\t\tsockaddr4.sin_addr.s_addr = htonl(INADDR_LOOPBACK);\n\t\t\n\t\tstruct sockaddr_in6 sockaddr6;\n\t\tmemset(&sockaddr6, 0, sizeof(sockaddr6));\n\t\t\n\t\tsockaddr6.sin6_len       = sizeof(sockaddr6);\n\t\tsockaddr6.sin6_family    = AF_INET6;\n\t\tsockaddr6.sin6_port      = htons(port);\n\t\tsockaddr6.sin6_addr      = in6addr_loopback;\n\t\t\n\t\taddr4 = [NSMutableData dataWithBytes:&sockaddr4 length:sizeof(sockaddr4)];\n\t\taddr6 = [NSMutableData dataWithBytes:&sockaddr6 length:sizeof(sockaddr6)];\n\t}\n\telse\n\t{\n\t\tconst char *iface = [interface UTF8String];\n\t\t\n\t\tstruct ifaddrs *addrs;\n\t\tconst struct ifaddrs *cursor;\n\t\t\n\t\tif ((getifaddrs(&addrs) == 0))\n\t\t{\n\t\t\tcursor = addrs;\n\t\t\twhile (cursor != NULL)\n\t\t\t{\n\t\t\t\tif ((addr4 == nil) && (cursor->ifa_addr->sa_family == AF_INET))\n\t\t\t\t{\n\t\t\t\t\t// IPv4\n\t\t\t\t\t\n\t\t\t\t\tstruct sockaddr_in nativeAddr4;\n\t\t\t\t\tmemcpy(&nativeAddr4, cursor->ifa_addr, sizeof(nativeAddr4));\n\t\t\t\t\t\n\t\t\t\t\tif (strcmp(cursor->ifa_name, iface) == 0)\n\t\t\t\t\t{\n\t\t\t\t\t\t// Name match\n\t\t\t\t\t\t\n\t\t\t\t\t\tnativeAddr4.sin_port = htons(port);\n\t\t\t\t\t\t\n\t\t\t\t\t\taddr4 = [NSMutableData dataWithBytes:&nativeAddr4 length:sizeof(nativeAddr4)];\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tchar ip[INET_ADDRSTRLEN];\n\t\t\t\t\t\t\n\t\t\t\t\t\tconst char *conversion = inet_ntop(AF_INET, &nativeAddr4.sin_addr, ip, sizeof(ip));\n\t\t\t\t\t\t\n\t\t\t\t\t\tif ((conversion != NULL) && (strcmp(ip, iface) == 0))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t// IP match\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tnativeAddr4.sin_port = htons(port);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\taddr4 = [NSMutableData dataWithBytes:&nativeAddr4 length:sizeof(nativeAddr4)];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse if ((addr6 == nil) && (cursor->ifa_addr->sa_family == AF_INET6))\n\t\t\t\t{\n\t\t\t\t\t// IPv6\n\t\t\t\t\t\n\t\t\t\t\tstruct sockaddr_in6 nativeAddr6;\n\t\t\t\t\tmemcpy(&nativeAddr6, cursor->ifa_addr, sizeof(nativeAddr6));\n\t\t\t\t\t\n\t\t\t\t\tif (strcmp(cursor->ifa_name, iface) == 0)\n\t\t\t\t\t{\n\t\t\t\t\t\t// Name match\n\t\t\t\t\t\t\n\t\t\t\t\t\tnativeAddr6.sin6_port = htons(port);\n\t\t\t\t\t\t\n\t\t\t\t\t\taddr6 = [NSMutableData dataWithBytes:&nativeAddr6 length:sizeof(nativeAddr6)];\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tchar ip[INET6_ADDRSTRLEN];\n\t\t\t\t\t\t\n\t\t\t\t\t\tconst char *conversion = inet_ntop(AF_INET6, &nativeAddr6.sin6_addr, ip, sizeof(ip));\n\t\t\t\t\t\t\n\t\t\t\t\t\tif ((conversion != NULL) && (strcmp(ip, iface) == 0))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t// IP match\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tnativeAddr6.sin6_port = htons(port);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\taddr6 = [NSMutableData dataWithBytes:&nativeAddr6 length:sizeof(nativeAddr6)];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tcursor = cursor->ifa_next;\n\t\t\t}\n\t\t\t\n\t\t\tfreeifaddrs(addrs);\n\t\t}\n\t}\n\t\n\tif (interfaceAddr4Ptr) *interfaceAddr4Ptr = addr4;\n\tif (interfaceAddr6Ptr) *interfaceAddr6Ptr = addr6;\n}\n\n- (NSData *)getInterfaceAddressFromUrl:(NSURL *)url\n{\n\tNSString *path = url.path;\n\tif (path.length == 0) {\n\t\treturn nil;\n\t}\n\t\n    struct sockaddr_un nativeAddr;\n    nativeAddr.sun_family = AF_UNIX;\n    strlcpy(nativeAddr.sun_path, path.fileSystemRepresentation, sizeof(nativeAddr.sun_path));\n    nativeAddr.sun_len = (unsigned char)SUN_LEN(&nativeAddr);\n    NSData *interface = [NSData dataWithBytes:&nativeAddr length:sizeof(struct sockaddr_un)];\n\t\n\treturn interface;\n}\n\n- (void)setupReadAndWriteSourcesForNewlyConnectedSocket:(int)socketFD\n{\n\treadSource = dispatch_source_create(DISPATCH_SOURCE_TYPE_READ, socketFD, 0, socketQueue);\n\twriteSource = dispatch_source_create(DISPATCH_SOURCE_TYPE_WRITE, socketFD, 0, socketQueue);\n\t\n\t// Setup event handlers\n\t\n\t__weak GCDAsyncSocket *weakSelf = self;\n\t\n\tdispatch_source_set_event_handler(readSource, ^{ @autoreleasepool {\n\t#pragma clang diagnostic push\n\t#pragma clang diagnostic warning \"-Wimplicit-retain-self\"\n\t\t\n\t\t__strong GCDAsyncSocket *strongSelf = weakSelf;\n\t\tif (strongSelf == nil) return_from_block;\n\t\t\n\t\tLogVerbose(@\"readEventBlock\");\n\t\t\n\t\tstrongSelf->socketFDBytesAvailable = dispatch_source_get_data(strongSelf->readSource);\n\t\tLogVerbose(@\"socketFDBytesAvailable: %lu\", strongSelf->socketFDBytesAvailable);\n\t\t\n\t\tif (strongSelf->socketFDBytesAvailable > 0)\n\t\t\t[strongSelf doReadData];\n\t\telse\n\t\t\t[strongSelf doReadEOF];\n\t\t\n\t#pragma clang diagnostic pop\n\t}});\n\t\n\tdispatch_source_set_event_handler(writeSource, ^{ @autoreleasepool {\n\t#pragma clang diagnostic push\n\t#pragma clang diagnostic warning \"-Wimplicit-retain-self\"\n\t\t\n\t\t__strong GCDAsyncSocket *strongSelf = weakSelf;\n\t\tif (strongSelf == nil) return_from_block;\n\t\t\n\t\tLogVerbose(@\"writeEventBlock\");\n\t\t\n\t\tstrongSelf->flags |= kSocketCanAcceptBytes;\n\t\t[strongSelf doWriteData];\n\t\t\n\t#pragma clang diagnostic pop\n\t}});\n\t\n\t// Setup cancel handlers\n\t\n\t__block int socketFDRefCount = 2;\n\t\n\t#if !OS_OBJECT_USE_OBJC\n\tdispatch_source_t theReadSource = readSource;\n\tdispatch_source_t theWriteSource = writeSource;\n\t#endif\n\t\n\tdispatch_source_set_cancel_handler(readSource, ^{\n\t#pragma clang diagnostic push\n\t#pragma clang diagnostic warning \"-Wimplicit-retain-self\"\n\t\t\n\t\tLogVerbose(@\"readCancelBlock\");\n\t\t\n\t\t#if !OS_OBJECT_USE_OBJC\n\t\tLogVerbose(@\"dispatch_release(readSource)\");\n\t\tdispatch_release(theReadSource);\n\t\t#endif\n\t\t\n\t\tif (--socketFDRefCount == 0)\n\t\t{\n\t\t\tLogVerbose(@\"close(socketFD)\");\n\t\t\tclose(socketFD);\n\t\t}\n\t\t\n\t#pragma clang diagnostic pop\n\t});\n\t\n\tdispatch_source_set_cancel_handler(writeSource, ^{\n\t#pragma clang diagnostic push\n\t#pragma clang diagnostic warning \"-Wimplicit-retain-self\"\n\t\t\n\t\tLogVerbose(@\"writeCancelBlock\");\n\t\t\n\t\t#if !OS_OBJECT_USE_OBJC\n\t\tLogVerbose(@\"dispatch_release(writeSource)\");\n\t\tdispatch_release(theWriteSource);\n\t\t#endif\n\t\t\n\t\tif (--socketFDRefCount == 0)\n\t\t{\n\t\t\tLogVerbose(@\"close(socketFD)\");\n\t\t\tclose(socketFD);\n\t\t}\n\t\t\n\t#pragma clang diagnostic pop\n\t});\n\t\n\t// We will not be able to read until data arrives.\n\t// But we should be able to write immediately.\n\t\n\tsocketFDBytesAvailable = 0;\n\tflags &= ~kReadSourceSuspended;\n\t\n\tLogVerbose(@\"dispatch_resume(readSource)\");\n\tdispatch_resume(readSource);\n\t\n\tflags |= kSocketCanAcceptBytes;\n\tflags |= kWriteSourceSuspended;\n}\n\n- (BOOL)usingCFStreamForTLS\n{\n\t#if TARGET_OS_IPHONE\n\t\n\tif ((flags & kSocketSecure) && (flags & kUsingCFStreamForTLS))\n\t{\n\t\t// The startTLS method was given the GCDAsyncSocketUseCFStreamForTLS flag.\n\t\t\n\t\treturn YES;\n\t}\n\t\n\t#endif\n\t\n\treturn NO;\n}\n\n- (BOOL)usingSecureTransportForTLS\n{\n\t// Invoking this method is equivalent to ![self usingCFStreamForTLS] (just more readable)\n\t\n\t#if TARGET_OS_IPHONE\n\t\n\tif ((flags & kSocketSecure) && (flags & kUsingCFStreamForTLS))\n\t{\n\t\t// The startTLS method was given the GCDAsyncSocketUseCFStreamForTLS flag.\n\t\t\n\t\treturn NO;\n\t}\n\t\n\t#endif\n\t\n\treturn YES;\n}\n\n- (void)suspendReadSource\n{\n\tif (!(flags & kReadSourceSuspended))\n\t{\n\t\tLogVerbose(@\"dispatch_suspend(readSource)\");\n\t\t\n\t\tdispatch_suspend(readSource);\n\t\tflags |= kReadSourceSuspended;\n\t}\n}\n\n- (void)resumeReadSource\n{\n\tif (flags & kReadSourceSuspended)\n\t{\n\t\tLogVerbose(@\"dispatch_resume(readSource)\");\n\t\t\n\t\tdispatch_resume(readSource);\n\t\tflags &= ~kReadSourceSuspended;\n\t}\n}\n\n- (void)suspendWriteSource\n{\n\tif (!(flags & kWriteSourceSuspended))\n\t{\n\t\tLogVerbose(@\"dispatch_suspend(writeSource)\");\n\t\t\n\t\tdispatch_suspend(writeSource);\n\t\tflags |= kWriteSourceSuspended;\n\t}\n}\n\n- (void)resumeWriteSource\n{\n\tif (flags & kWriteSourceSuspended)\n\t{\n\t\tLogVerbose(@\"dispatch_resume(writeSource)\");\n\t\t\n\t\tdispatch_resume(writeSource);\n\t\tflags &= ~kWriteSourceSuspended;\n\t}\n}\n\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n#pragma mark Reading\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\n- (void)readDataWithTimeout:(NSTimeInterval)timeout tag:(long)tag\n{\n\t[self readDataWithTimeout:timeout buffer:nil bufferOffset:0 maxLength:0 tag:tag];\n}\n\n- (void)readDataWithTimeout:(NSTimeInterval)timeout\n                     buffer:(NSMutableData *)buffer\n               bufferOffset:(NSUInteger)offset\n                        tag:(long)tag\n{\n\t[self readDataWithTimeout:timeout buffer:buffer bufferOffset:offset maxLength:0 tag:tag];\n}\n\n- (void)readDataWithTimeout:(NSTimeInterval)timeout\n                     buffer:(NSMutableData *)buffer\n               bufferOffset:(NSUInteger)offset\n                  maxLength:(NSUInteger)length\n                        tag:(long)tag\n{\n\tif (offset > [buffer length]) {\n\t\tLogWarn(@\"Cannot read: offset > [buffer length]\");\n\t\treturn;\n\t}\n\t\n\tGCDAsyncReadPacket *packet = [[GCDAsyncReadPacket alloc] initWithData:buffer\n\t                                                          startOffset:offset\n\t                                                            maxLength:length\n\t                                                              timeout:timeout\n\t                                                           readLength:0\n\t                                                           terminator:nil\n\t                                                                  tag:tag];\n\t\n\tdispatch_async(socketQueue, ^{ @autoreleasepool {\n\t\t\n\t\tLogTrace();\n\t\t\n        if ((self->flags & kSocketStarted) && !(self->flags & kForbidReadsWrites))\n\t\t{\n            [self->readQueue addObject:packet];\n\t\t\t[self maybeDequeueRead];\n\t\t}\n\t}});\n\t\n\t// Do not rely on the block being run in order to release the packet,\n\t// as the queue might get released without the block completing.\n}\n\n- (void)readDataToLength:(NSUInteger)length withTimeout:(NSTimeInterval)timeout tag:(long)tag\n{\n\t[self readDataToLength:length withTimeout:timeout buffer:nil bufferOffset:0 tag:tag];\n}\n\n- (void)readDataToLength:(NSUInteger)length\n             withTimeout:(NSTimeInterval)timeout\n                  buffer:(NSMutableData *)buffer\n            bufferOffset:(NSUInteger)offset\n                     tag:(long)tag\n{\n\tif (length == 0) {\n\t\tLogWarn(@\"Cannot read: length == 0\");\n\t\treturn;\n\t}\n\tif (offset > [buffer length]) {\n\t\tLogWarn(@\"Cannot read: offset > [buffer length]\");\n\t\treturn;\n\t}\n\t\n\tGCDAsyncReadPacket *packet = [[GCDAsyncReadPacket alloc] initWithData:buffer\n\t                                                          startOffset:offset\n\t                                                            maxLength:0\n\t                                                              timeout:timeout\n\t                                                           readLength:length\n\t                                                           terminator:nil\n\t                                                                  tag:tag];\n\t\n\tdispatch_async(socketQueue, ^{ @autoreleasepool {\n\t\t\n\t\tLogTrace();\n\t\t\n        if ((self->flags & kSocketStarted) && !(self->flags & kForbidReadsWrites))\n\t\t{\n            [self->readQueue addObject:packet];\n\t\t\t[self maybeDequeueRead];\n\t\t}\n\t}});\n\t\n\t// Do not rely on the block being run in order to release the packet,\n\t// as the queue might get released without the block completing.\n}\n\n- (void)readDataToData:(NSData *)data withTimeout:(NSTimeInterval)timeout tag:(long)tag\n{\n\t[self readDataToData:data withTimeout:timeout buffer:nil bufferOffset:0 maxLength:0 tag:tag];\n}\n\n- (void)readDataToData:(NSData *)data\n           withTimeout:(NSTimeInterval)timeout\n                buffer:(NSMutableData *)buffer\n          bufferOffset:(NSUInteger)offset\n                   tag:(long)tag\n{\n\t[self readDataToData:data withTimeout:timeout buffer:buffer bufferOffset:offset maxLength:0 tag:tag];\n}\n\n- (void)readDataToData:(NSData *)data withTimeout:(NSTimeInterval)timeout maxLength:(NSUInteger)length tag:(long)tag\n{\n\t[self readDataToData:data withTimeout:timeout buffer:nil bufferOffset:0 maxLength:length tag:tag];\n}\n\n- (void)readDataToData:(NSData *)data\n           withTimeout:(NSTimeInterval)timeout\n                buffer:(NSMutableData *)buffer\n          bufferOffset:(NSUInteger)offset\n             maxLength:(NSUInteger)maxLength\n                   tag:(long)tag\n{\n\tif ([data length] == 0) {\n\t\tLogWarn(@\"Cannot read: [data length] == 0\");\n\t\treturn;\n\t}\n\tif (offset > [buffer length]) {\n\t\tLogWarn(@\"Cannot read: offset > [buffer length]\");\n\t\treturn;\n\t}\n\tif (maxLength > 0 && maxLength < [data length]) {\n\t\tLogWarn(@\"Cannot read: maxLength > 0 && maxLength < [data length]\");\n\t\treturn;\n\t}\n\t\n\tGCDAsyncReadPacket *packet = [[GCDAsyncReadPacket alloc] initWithData:buffer\n\t                                                          startOffset:offset\n\t                                                            maxLength:maxLength\n\t                                                              timeout:timeout\n\t                                                           readLength:0\n\t                                                           terminator:data\n\t                                                                  tag:tag];\n\t\n\tdispatch_async(socketQueue, ^{ @autoreleasepool {\n\t\t\n\t\tLogTrace();\n\t\t\n        if ((self->flags & kSocketStarted) && !(self->flags & kForbidReadsWrites))\n\t\t{\n            [self->readQueue addObject:packet];\n\t\t\t[self maybeDequeueRead];\n\t\t}\n\t}});\n\t\n\t// Do not rely on the block being run in order to release the packet,\n\t// as the queue might get released without the block completing.\n}\n\n- (float)progressOfReadReturningTag:(long *)tagPtr bytesDone:(NSUInteger *)donePtr total:(NSUInteger *)totalPtr\n{\n\t__block float result = 0.0F;\n\t\n\tdispatch_block_t block = ^{\n\t\t\n        if (!self->currentRead || ![self->currentRead isKindOfClass:[GCDAsyncReadPacket class]])\n\t\t{\n\t\t\t// We're not reading anything right now.\n\t\t\t\n\t\t\tif (tagPtr != NULL)   *tagPtr = 0;\n\t\t\tif (donePtr != NULL)  *donePtr = 0;\n\t\t\tif (totalPtr != NULL) *totalPtr = 0;\n\t\t\t\n\t\t\tresult = NAN;\n\t\t}\n\t\telse\n\t\t{\n\t\t\t// It's only possible to know the progress of our read if we're reading to a certain length.\n\t\t\t// If we're reading to data, we of course have no idea when the data will arrive.\n\t\t\t// If we're reading to timeout, then we have no idea when the next chunk of data will arrive.\n\t\t\t\n            NSUInteger done = self->currentRead->bytesDone;\n            NSUInteger total = self->currentRead->readLength;\n\t\t\t\n            if (tagPtr != NULL)   *tagPtr = self->currentRead->tag;\n\t\t\tif (donePtr != NULL)  *donePtr = done;\n\t\t\tif (totalPtr != NULL) *totalPtr = total;\n\t\t\t\n\t\t\tif (total > 0)\n\t\t\t\tresult = (float)done / (float)total;\n\t\t\telse\n\t\t\t\tresult = 1.0F;\n\t\t}\n\t};\n\t\n\tif (dispatch_get_specific(IsOnSocketQueueOrTargetQueueKey))\n\t\tblock();\n\telse\n\t\tdispatch_sync(socketQueue, block);\n\t\n\treturn result;\n}\n\n/**\n * This method starts a new read, if needed.\n * \n * It is called when:\n * - a user requests a read\n * - after a read request has finished (to handle the next request)\n * - immediately after the socket opens to handle any pending requests\n * \n * This method also handles auto-disconnect post read/write completion.\n**/\n- (void)maybeDequeueRead\n{\n\tLogTrace();\n\tNSAssert(dispatch_get_specific(IsOnSocketQueueOrTargetQueueKey), @\"Must be dispatched on socketQueue\");\n\t\n\t// If we're not currently processing a read AND we have an available read stream\n\tif ((currentRead == nil) && (flags & kConnected))\n\t{\n\t\tif ([readQueue count] > 0)\n\t\t{\n\t\t\t// Dequeue the next object in the write queue\n\t\t\tcurrentRead = [readQueue objectAtIndex:0];\n\t\t\t[readQueue removeObjectAtIndex:0];\n\t\t\t\n\t\t\t\n\t\t\tif ([currentRead isKindOfClass:[GCDAsyncSpecialPacket class]])\n\t\t\t{\n\t\t\t\tLogVerbose(@\"Dequeued GCDAsyncSpecialPacket\");\n\t\t\t\t\n\t\t\t\t// Attempt to start TLS\n\t\t\t\tflags |= kStartingReadTLS;\n\t\t\t\t\n\t\t\t\t// This method won't do anything unless both kStartingReadTLS and kStartingWriteTLS are set\n\t\t\t\t[self maybeStartTLS];\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tLogVerbose(@\"Dequeued GCDAsyncReadPacket\");\n\t\t\t\t\n\t\t\t\t// Setup read timer (if needed)\n\t\t\t\t[self setupReadTimerWithTimeout:currentRead->timeout];\n\t\t\t\t\n\t\t\t\t// Immediately read, if possible\n\t\t\t\t[self doReadData];\n\t\t\t}\n\t\t}\n\t\telse if (flags & kDisconnectAfterReads)\n\t\t{\n\t\t\tif (flags & kDisconnectAfterWrites)\n\t\t\t{\n\t\t\t\tif (([writeQueue count] == 0) && (currentWrite == nil))\n\t\t\t\t{\n\t\t\t\t\t[self closeWithError:nil];\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t[self closeWithError:nil];\n\t\t\t}\n\t\t}\n\t\telse if (flags & kSocketSecure)\n\t\t{\n\t\t\t[self flushSSLBuffers];\n\t\t\t\n\t\t\t// Edge case:\n\t\t\t// \n\t\t\t// We just drained all data from the ssl buffers,\n\t\t\t// and all known data from the socket (socketFDBytesAvailable).\n\t\t\t// \n\t\t\t// If we didn't get any data from this process,\n\t\t\t// then we may have reached the end of the TCP stream.\n\t\t\t// \n\t\t\t// Be sure callbacks are enabled so we're notified about a disconnection.\n\t\t\t\n\t\t\tif ([preBuffer availableBytes] == 0)\n\t\t\t{\n\t\t\t\tif ([self usingCFStreamForTLS]) {\n\t\t\t\t\t// Callbacks never disabled\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\t[self resumeReadSource];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\n- (void)flushSSLBuffers\n{\n\tLogTrace();\n\t\n\tNSAssert((flags & kSocketSecure), @\"Cannot flush ssl buffers on non-secure socket\");\n\t\n\tif ([preBuffer availableBytes] > 0)\n\t{\n\t\t// Only flush the ssl buffers if the prebuffer is empty.\n\t\t// This is to avoid growing the prebuffer inifinitely large.\n\t\t\n\t\treturn;\n\t}\n\t\n\t#if TARGET_OS_IPHONE\n\t\n\tif ([self usingCFStreamForTLS])\n\t{\n\t\tif ((flags & kSecureSocketHasBytesAvailable) && CFReadStreamHasBytesAvailable(readStream))\n\t\t{\n\t\t\tLogVerbose(@\"%@ - Flushing ssl buffers into prebuffer...\", THIS_METHOD);\n\t\t\t\n\t\t\tCFIndex defaultBytesToRead = (1024 * 4);\n\t\t\t\n\t\t\t[preBuffer ensureCapacityForWrite:defaultBytesToRead];\n\t\t\t\n\t\t\tuint8_t *buffer = [preBuffer writeBuffer];\n\t\t\t\n\t\t\tCFIndex result = CFReadStreamRead(readStream, buffer, defaultBytesToRead);\n\t\t\tLogVerbose(@\"%@ - CFReadStreamRead(): result = %i\", THIS_METHOD, (int)result);\n\t\t\t\n\t\t\tif (result > 0)\n\t\t\t{\n\t\t\t\t[preBuffer didWrite:result];\n\t\t\t}\n\t\t\t\n\t\t\tflags &= ~kSecureSocketHasBytesAvailable;\n\t\t}\n\t\t\n\t\treturn;\n\t}\n\t\n\t#endif\n\t\n\t__block NSUInteger estimatedBytesAvailable = 0;\n\t\n\tdispatch_block_t updateEstimatedBytesAvailable = ^{\n\t\t\n\t\t// Figure out if there is any data available to be read\n\t\t// \n\t\t// socketFDBytesAvailable        <- Number of encrypted bytes we haven't read from the bsd socket\n\t\t// [sslPreBuffer availableBytes] <- Number of encrypted bytes we've buffered from bsd socket\n\t\t// sslInternalBufSize            <- Number of decrypted bytes SecureTransport has buffered\n\t\t// \n\t\t// We call the variable \"estimated\" because we don't know how many decrypted bytes we'll get\n\t\t// from the encrypted bytes in the sslPreBuffer.\n\t\t// However, we do know this is an upper bound on the estimation.\n\t\t\n        estimatedBytesAvailable = self->socketFDBytesAvailable + [self->sslPreBuffer availableBytes];\n\t\t\n\t\tsize_t sslInternalBufSize = 0;\n        SSLGetBufferedReadSize(self->sslContext, &sslInternalBufSize);\n\t\t\n\t\testimatedBytesAvailable += sslInternalBufSize;\n\t};\n\t\n\tupdateEstimatedBytesAvailable();\n\t\n\tif (estimatedBytesAvailable > 0)\n\t{\n\t\tLogVerbose(@\"%@ - Flushing ssl buffers into prebuffer...\", THIS_METHOD);\n\t\t\n\t\tBOOL done = NO;\n\t\tdo\n\t\t{\n\t\t\tLogVerbose(@\"%@ - estimatedBytesAvailable = %lu\", THIS_METHOD, (unsigned long)estimatedBytesAvailable);\n\t\t\t\n\t\t\t// Make sure there's enough room in the prebuffer\n\t\t\t\n\t\t\t[preBuffer ensureCapacityForWrite:estimatedBytesAvailable];\n\t\t\t\n\t\t\t// Read data into prebuffer\n\t\t\t\n\t\t\tuint8_t *buffer = [preBuffer writeBuffer];\n\t\t\tsize_t bytesRead = 0;\n\t\t\t\n\t\t\tOSStatus result = SSLRead(sslContext, buffer, (size_t)estimatedBytesAvailable, &bytesRead);\n\t\t\tLogVerbose(@\"%@ - read from secure socket = %u\", THIS_METHOD, (unsigned)bytesRead);\n\t\t\t\n\t\t\tif (bytesRead > 0)\n\t\t\t{\n\t\t\t\t[preBuffer didWrite:bytesRead];\n\t\t\t}\n\t\t\t\n\t\t\tLogVerbose(@\"%@ - prebuffer.length = %zu\", THIS_METHOD, [preBuffer availableBytes]);\n\t\t\t\n\t\t\tif (result != noErr)\n\t\t\t{\n\t\t\t\tdone = YES;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tupdateEstimatedBytesAvailable();\n\t\t\t}\n\t\t\t\n\t\t} while (!done && estimatedBytesAvailable > 0);\n\t}\n}\n\n- (void)doReadData\n{\n\tLogTrace();\n\t\n\t// This method is called on the socketQueue.\n\t// It might be called directly, or via the readSource when data is available to be read.\n\t\n\tif ((currentRead == nil) || (flags & kReadsPaused))\n\t{\n\t\tLogVerbose(@\"No currentRead or kReadsPaused\");\n\t\t\n\t\t// Unable to read at this time\n\t\t\n\t\tif (flags & kSocketSecure)\n\t\t{\n\t\t\t// Here's the situation:\n\t\t\t// \n\t\t\t// We have an established secure connection.\n\t\t\t// There may not be a currentRead, but there might be encrypted data sitting around for us.\n\t\t\t// When the user does get around to issuing a read, that encrypted data will need to be decrypted.\n\t\t\t// \n\t\t\t// So why make the user wait?\n\t\t\t// We might as well get a head start on decrypting some data now.\n\t\t\t// \n\t\t\t// The other reason we do this has to do with detecting a socket disconnection.\n\t\t\t// The SSL/TLS protocol has it's own disconnection handshake.\n\t\t\t// So when a secure socket is closed, a \"goodbye\" packet comes across the wire.\n\t\t\t// We want to make sure we read the \"goodbye\" packet so we can properly detect the TCP disconnection.\n\t\t\t\n\t\t\t[self flushSSLBuffers];\n\t\t}\n\t\t\n\t\tif ([self usingCFStreamForTLS])\n\t\t{\n\t\t\t// CFReadStream only fires once when there is available data.\n\t\t\t// It won't fire again until we've invoked CFReadStreamRead.\n\t\t}\n\t\telse\n\t\t{\n\t\t\t// If the readSource is firing, we need to pause it\n\t\t\t// or else it will continue to fire over and over again.\n\t\t\t// \n\t\t\t// If the readSource is not firing,\n\t\t\t// we want it to continue monitoring the socket.\n\t\t\t\n\t\t\tif (socketFDBytesAvailable > 0)\n\t\t\t{\n\t\t\t\t[self suspendReadSource];\n\t\t\t}\n\t\t}\n\t\treturn;\n\t}\n\t\n\tBOOL hasBytesAvailable = NO;\n\tunsigned long estimatedBytesAvailable = 0;\n\t\n\tif ([self usingCFStreamForTLS])\n\t{\n\t\t#if TARGET_OS_IPHONE\n\t\t\n\t\t// Requested CFStream, rather than SecureTransport, for TLS (via GCDAsyncSocketUseCFStreamForTLS)\n\t\t\n\t\testimatedBytesAvailable = 0;\n\t\tif ((flags & kSecureSocketHasBytesAvailable) && CFReadStreamHasBytesAvailable(readStream))\n\t\t\thasBytesAvailable = YES;\n\t\telse\n\t\t\thasBytesAvailable = NO;\n\t\t\n\t\t#endif\n\t}\n\telse\n\t{\n\t\testimatedBytesAvailable = socketFDBytesAvailable;\n\t\t\n\t\tif (flags & kSocketSecure)\n\t\t{\n\t\t\t// There are 2 buffers to be aware of here.\n\t\t\t// \n\t\t\t// We are using SecureTransport, a TLS/SSL security layer which sits atop TCP.\n\t\t\t// We issue a read to the SecureTranport API, which in turn issues a read to our SSLReadFunction.\n\t\t\t// Our SSLReadFunction then reads from the BSD socket and returns the encrypted data to SecureTransport.\n\t\t\t// SecureTransport then decrypts the data, and finally returns the decrypted data back to us.\n\t\t\t// \n\t\t\t// The first buffer is one we create.\n\t\t\t// SecureTransport often requests small amounts of data.\n\t\t\t// This has to do with the encypted packets that are coming across the TCP stream.\n\t\t\t// But it's non-optimal to do a bunch of small reads from the BSD socket.\n\t\t\t// So our SSLReadFunction reads all available data from the socket (optimizing the sys call)\n\t\t\t// and may store excess in the sslPreBuffer.\n\t\t\t\n\t\t\testimatedBytesAvailable += [sslPreBuffer availableBytes];\n\t\t\t\n\t\t\t// The second buffer is within SecureTransport.\n\t\t\t// As mentioned earlier, there are encrypted packets coming across the TCP stream.\n\t\t\t// SecureTransport needs the entire packet to decrypt it.\n\t\t\t// But if the entire packet produces X bytes of decrypted data,\n\t\t\t// and we only asked SecureTransport for X/2 bytes of data,\n\t\t\t// it must store the extra X/2 bytes of decrypted data for the next read.\n\t\t\t// \n\t\t\t// The SSLGetBufferedReadSize function will tell us the size of this internal buffer.\n\t\t\t// From the documentation:\n\t\t\t// \n\t\t\t// \"This function does not block or cause any low-level read operations to occur.\"\n\t\t\t\n\t\t\tsize_t sslInternalBufSize = 0;\n\t\t\tSSLGetBufferedReadSize(sslContext, &sslInternalBufSize);\n\t\t\t\n\t\t\testimatedBytesAvailable += sslInternalBufSize;\n\t\t}\n\t\t\n\t\thasBytesAvailable = (estimatedBytesAvailable > 0);\n\t}\n\t\n\tif ((hasBytesAvailable == NO) && ([preBuffer availableBytes] == 0))\n\t{\n\t\tLogVerbose(@\"No data available to read...\");\n\t\t\n\t\t// No data available to read.\n\t\t\n\t\tif (![self usingCFStreamForTLS])\n\t\t{\n\t\t\t// Need to wait for readSource to fire and notify us of\n\t\t\t// available data in the socket's internal read buffer.\n\t\t\t\n\t\t\t[self resumeReadSource];\n\t\t}\n\t\treturn;\n\t}\n\t\n\tif (flags & kStartingReadTLS)\n\t{\n\t\tLogVerbose(@\"Waiting for SSL/TLS handshake to complete\");\n\t\t\n\t\t// The readQueue is waiting for SSL/TLS handshake to complete.\n\t\t\n\t\tif (flags & kStartingWriteTLS)\n\t\t{\n\t\t\tif ([self usingSecureTransportForTLS] && lastSSLHandshakeError == errSSLWouldBlock)\n\t\t\t{\n\t\t\t\t// We are in the process of a SSL Handshake.\n\t\t\t\t// We were waiting for incoming data which has just arrived.\n\t\t\t\t\n\t\t\t\t[self ssl_continueSSLHandshake];\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\t// We are still waiting for the writeQueue to drain and start the SSL/TLS process.\n\t\t\t// We now know data is available to read.\n\t\t\t\n\t\t\tif (![self usingCFStreamForTLS])\n\t\t\t{\n\t\t\t\t// Suspend the read source or else it will continue to fire nonstop.\n\t\t\t\t\n\t\t\t\t[self suspendReadSource];\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn;\n\t}\n\t\n\tBOOL done        = NO;  // Completed read operation\n\tNSError *error   = nil; // Error occurred\n\t\n\tNSUInteger totalBytesReadForCurrentRead = 0;\n\t\n\t// \n\t// STEP 1 - READ FROM PREBUFFER\n\t// \n\t\n\tif ([preBuffer availableBytes] > 0)\n\t{\n\t\t// There are 3 types of read packets:\n\t\t// \n\t\t// 1) Read all available data.\n\t\t// 2) Read a specific length of data.\n\t\t// 3) Read up to a particular terminator.\n\t\t\n\t\tNSUInteger bytesToCopy;\n\t\t\n\t\tif (currentRead->term != nil)\n\t\t{\n\t\t\t// Read type #3 - read up to a terminator\n\t\t\t\n\t\t\tbytesToCopy = [currentRead readLengthForTermWithPreBuffer:preBuffer found:&done];\n\t\t}\n\t\telse\n\t\t{\n\t\t\t// Read type #1 or #2\n\t\t\t\n\t\t\tbytesToCopy = [currentRead readLengthForNonTermWithHint:[preBuffer availableBytes]];\n\t\t}\n\t\t\n\t\t// Make sure we have enough room in the buffer for our read.\n\t\t\n\t\t[currentRead ensureCapacityForAdditionalDataOfLength:bytesToCopy];\n\t\t\n\t\t// Copy bytes from prebuffer into packet buffer\n\t\t\n\t\tuint8_t *buffer = (uint8_t *)[currentRead->buffer mutableBytes] + currentRead->startOffset +\n\t\t                                                                  currentRead->bytesDone;\n\t\t\n\t\tmemcpy(buffer, [preBuffer readBuffer], bytesToCopy);\n\t\t\n\t\t// Remove the copied bytes from the preBuffer\n\t\t[preBuffer didRead:bytesToCopy];\n\t\t\n\t\tLogVerbose(@\"copied(%lu) preBufferLength(%zu)\", (unsigned long)bytesToCopy, [preBuffer availableBytes]);\n\t\t\n\t\t// Update totals\n\t\t\n\t\tcurrentRead->bytesDone += bytesToCopy;\n\t\ttotalBytesReadForCurrentRead += bytesToCopy;\n\t\t\n\t\t// Check to see if the read operation is done\n\t\t\n\t\tif (currentRead->readLength > 0)\n\t\t{\n\t\t\t// Read type #2 - read a specific length of data\n\t\t\t\n\t\t\tdone = (currentRead->bytesDone == currentRead->readLength);\n\t\t}\n\t\telse if (currentRead->term != nil)\n\t\t{\n\t\t\t// Read type #3 - read up to a terminator\n\t\t\t\n\t\t\t// Our 'done' variable was updated via the readLengthForTermWithPreBuffer:found: method\n\t\t\t\n\t\t\tif (!done && currentRead->maxLength > 0)\n\t\t\t{\n\t\t\t\t// We're not done and there's a set maxLength.\n\t\t\t\t// Have we reached that maxLength yet?\n\t\t\t\t\n\t\t\t\tif (currentRead->bytesDone >= currentRead->maxLength)\n\t\t\t\t{\n\t\t\t\t\terror = [self readMaxedOutError];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\t// Read type #1 - read all available data\n\t\t\t// \n\t\t\t// We're done as soon as\n\t\t\t// - we've read all available data (in prebuffer and socket)\n\t\t\t// - we've read the maxLength of read packet.\n\t\t\t\n\t\t\tdone = ((currentRead->maxLength > 0) && (currentRead->bytesDone == currentRead->maxLength));\n\t\t}\n\t\t\n\t}\n\t\n\t// \n\t// STEP 2 - READ FROM SOCKET\n\t// \n\t\n\tBOOL socketEOF = (flags & kSocketHasReadEOF) ? YES : NO;  // Nothing more to read via socket (end of file)\n\tBOOL waiting   = !done && !error && !socketEOF && !hasBytesAvailable; // Ran out of data, waiting for more\n\t\n\tif (!done && !error && !socketEOF && hasBytesAvailable)\n\t{\n\t\tNSAssert(([preBuffer availableBytes] == 0), @\"Invalid logic\");\n\t\t\n\t\tBOOL readIntoPreBuffer = NO;\n\t\tuint8_t *buffer = NULL;\n\t\tsize_t bytesRead = 0;\n\t\t\n\t\tif (flags & kSocketSecure)\n\t\t{\n\t\t\tif ([self usingCFStreamForTLS])\n\t\t\t{\n\t\t\t\t#if TARGET_OS_IPHONE\n\t\t\t\t\n\t\t\t\t// Using CFStream, rather than SecureTransport, for TLS\n\t\t\t\t\n\t\t\t\tNSUInteger defaultReadLength = (1024 * 32);\n\t\t\t\t\n\t\t\t\tNSUInteger bytesToRead = [currentRead optimalReadLengthWithDefault:defaultReadLength\n\t\t\t\t                                                   shouldPreBuffer:&readIntoPreBuffer];\n\t\t\t\t\n\t\t\t\t// Make sure we have enough room in the buffer for our read.\n\t\t\t\t//\n\t\t\t\t// We are either reading directly into the currentRead->buffer,\n\t\t\t\t// or we're reading into the temporary preBuffer.\n\t\t\t\t\n\t\t\t\tif (readIntoPreBuffer)\n\t\t\t\t{\n\t\t\t\t\t[preBuffer ensureCapacityForWrite:bytesToRead];\n\t\t\t\t\t\n\t\t\t\t\tbuffer = [preBuffer writeBuffer];\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t[currentRead ensureCapacityForAdditionalDataOfLength:bytesToRead];\n\t\t\t\t\t\n\t\t\t\t\tbuffer = (uint8_t *)[currentRead->buffer mutableBytes]\n\t\t\t\t\t       + currentRead->startOffset\n\t\t\t\t\t       + currentRead->bytesDone;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t// Read data into buffer\n\t\t\t\t\n\t\t\t\tCFIndex result = CFReadStreamRead(readStream, buffer, (CFIndex)bytesToRead);\n\t\t\t\tLogVerbose(@\"CFReadStreamRead(): result = %i\", (int)result);\n\t\t\t\t\n\t\t\t\tif (result < 0)\n\t\t\t\t{\n\t\t\t\t\terror = (__bridge_transfer NSError *)CFReadStreamCopyError(readStream);\n\t\t\t\t}\n\t\t\t\telse if (result == 0)\n\t\t\t\t{\n\t\t\t\t\tsocketEOF = YES;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\twaiting = YES;\n\t\t\t\t\tbytesRead = (size_t)result;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t// We only know how many decrypted bytes were read.\n\t\t\t\t// The actual number of bytes read was likely more due to the overhead of the encryption.\n\t\t\t\t// So we reset our flag, and rely on the next callback to alert us of more data.\n\t\t\t\tflags &= ~kSecureSocketHasBytesAvailable;\n\t\t\t\t\n\t\t\t\t#endif\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t// Using SecureTransport for TLS\n\t\t\t\t//\n\t\t\t\t// We know:\n\t\t\t\t// - how many bytes are available on the socket\n\t\t\t\t// - how many encrypted bytes are sitting in the sslPreBuffer\n\t\t\t\t// - how many decypted bytes are sitting in the sslContext\n\t\t\t\t//\n\t\t\t\t// But we do NOT know:\n\t\t\t\t// - how many encypted bytes are sitting in the sslContext\n\t\t\t\t//\n\t\t\t\t// So we play the regular game of using an upper bound instead.\n\t\t\t\t\n\t\t\t\tNSUInteger defaultReadLength = (1024 * 32);\n\t\t\t\t\n\t\t\t\tif (defaultReadLength < estimatedBytesAvailable) {\n\t\t\t\t\tdefaultReadLength = estimatedBytesAvailable + (1024 * 16);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tNSUInteger bytesToRead = [currentRead optimalReadLengthWithDefault:defaultReadLength\n\t\t\t\t                                                   shouldPreBuffer:&readIntoPreBuffer];\n\t\t\t\t\n\t\t\t\tif (bytesToRead > SIZE_MAX) { // NSUInteger may be bigger than size_t\n\t\t\t\t\tbytesToRead = SIZE_MAX;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t// Make sure we have enough room in the buffer for our read.\n\t\t\t\t//\n\t\t\t\t// We are either reading directly into the currentRead->buffer,\n\t\t\t\t// or we're reading into the temporary preBuffer.\n\t\t\t\t\n\t\t\t\tif (readIntoPreBuffer)\n\t\t\t\t{\n\t\t\t\t\t[preBuffer ensureCapacityForWrite:bytesToRead];\n\t\t\t\t\t\n\t\t\t\t\tbuffer = [preBuffer writeBuffer];\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t[currentRead ensureCapacityForAdditionalDataOfLength:bytesToRead];\n\t\t\t\t\t\n\t\t\t\t\tbuffer = (uint8_t *)[currentRead->buffer mutableBytes]\n\t\t\t\t\t       + currentRead->startOffset\n\t\t\t\t\t       + currentRead->bytesDone;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t// The documentation from Apple states:\n\t\t\t\t// \n\t\t\t\t//     \"a read operation might return errSSLWouldBlock,\n\t\t\t\t//      indicating that less data than requested was actually transferred\"\n\t\t\t\t// \n\t\t\t\t// However, starting around 10.7, the function will sometimes return noErr,\n\t\t\t\t// even if it didn't read as much data as requested. So we need to watch out for that.\n\t\t\t\t\n\t\t\t\tOSStatus result;\n\t\t\t\tdo\n\t\t\t\t{\n\t\t\t\t\tvoid *loop_buffer = buffer + bytesRead;\n\t\t\t\t\tsize_t loop_bytesToRead = (size_t)bytesToRead - bytesRead;\n\t\t\t\t\tsize_t loop_bytesRead = 0;\n\t\t\t\t\t\n\t\t\t\t\tresult = SSLRead(sslContext, loop_buffer, loop_bytesToRead, &loop_bytesRead);\n\t\t\t\t\tLogVerbose(@\"read from secure socket = %u\", (unsigned)loop_bytesRead);\n\t\t\t\t\t\n\t\t\t\t\tbytesRead += loop_bytesRead;\n\t\t\t\t\t\n\t\t\t\t} while ((result == noErr) && (bytesRead < bytesToRead));\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tif (result != noErr)\n\t\t\t\t{\n\t\t\t\t\tif (result == errSSLWouldBlock)\n\t\t\t\t\t\twaiting = YES;\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tif (result == errSSLClosedGraceful || result == errSSLClosedAbort)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t// We've reached the end of the stream.\n\t\t\t\t\t\t\t// Handle this the same way we would an EOF from the socket.\n\t\t\t\t\t\t\tsocketEOF = YES;\n\t\t\t\t\t\t\tsslErrCode = result;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\terror = [self sslError:result];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t// It's possible that bytesRead > 0, even if the result was errSSLWouldBlock.\n\t\t\t\t\t// This happens when the SSLRead function is able to read some data,\n\t\t\t\t\t// but not the entire amount we requested.\n\t\t\t\t\t\n\t\t\t\t\tif (bytesRead <= 0)\n\t\t\t\t\t{\n\t\t\t\t\t\tbytesRead = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t// Do not modify socketFDBytesAvailable.\n\t\t\t\t// It will be updated via the SSLReadFunction().\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\t// Normal socket operation\n\t\t\t\n\t\t\tNSUInteger bytesToRead;\n\t\t\t\n\t\t\t// There are 3 types of read packets:\n\t\t\t//\n\t\t\t// 1) Read all available data.\n\t\t\t// 2) Read a specific length of data.\n\t\t\t// 3) Read up to a particular terminator.\n\t\t\t\n\t\t\tif (currentRead->term != nil)\n\t\t\t{\n\t\t\t\t// Read type #3 - read up to a terminator\n\t\t\t\t\n\t\t\t\tbytesToRead = [currentRead readLengthForTermWithHint:estimatedBytesAvailable\n\t\t\t\t                                     shouldPreBuffer:&readIntoPreBuffer];\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t// Read type #1 or #2\n\t\t\t\t\n\t\t\t\tbytesToRead = [currentRead readLengthForNonTermWithHint:estimatedBytesAvailable];\n\t\t\t}\n\t\t\t\n\t\t\tif (bytesToRead > SIZE_MAX) { // NSUInteger may be bigger than size_t (read param 3)\n\t\t\t\tbytesToRead = SIZE_MAX;\n\t\t\t}\n\t\t\t\n\t\t\t// Make sure we have enough room in the buffer for our read.\n\t\t\t//\n\t\t\t// We are either reading directly into the currentRead->buffer,\n\t\t\t// or we're reading into the temporary preBuffer.\n\t\t\t\n\t\t\tif (readIntoPreBuffer)\n\t\t\t{\n\t\t\t\t[preBuffer ensureCapacityForWrite:bytesToRead];\n\t\t\t\t\n\t\t\t\tbuffer = [preBuffer writeBuffer];\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t[currentRead ensureCapacityForAdditionalDataOfLength:bytesToRead];\n\t\t\t\t\n\t\t\t\tbuffer = (uint8_t *)[currentRead->buffer mutableBytes]\n\t\t\t\t       + currentRead->startOffset\n\t\t\t\t       + currentRead->bytesDone;\n\t\t\t}\n\t\t\t\n\t\t\t// Read data into buffer\n\t\t\t\n\t\t\tint socketFD = (socket4FD != SOCKET_NULL) ? socket4FD : (socket6FD != SOCKET_NULL) ? socket6FD : socketUN;\n\t\t\t\n\t\t\tssize_t result = read(socketFD, buffer, (size_t)bytesToRead);\n\t\t\tLogVerbose(@\"read from socket = %i\", (int)result);\n\t\t\t\n\t\t\tif (result < 0)\n\t\t\t{\n\t\t\t\tif (errno == EWOULDBLOCK)\n\t\t\t\t\twaiting = YES;\n\t\t\t\telse\n\t\t\t\t\terror = [self errorWithErrno:errno reason:@\"Error in read() function\"];\n\t\t\t\t\n\t\t\t\tsocketFDBytesAvailable = 0;\n\t\t\t}\n\t\t\telse if (result == 0)\n\t\t\t{\n\t\t\t\tsocketEOF = YES;\n\t\t\t\tsocketFDBytesAvailable = 0;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tbytesRead = result;\n\t\t\t\t\n\t\t\t\tif (bytesRead < bytesToRead)\n\t\t\t\t{\n\t\t\t\t\t// The read returned less data than requested.\n\t\t\t\t\t// This means socketFDBytesAvailable was a bit off due to timing,\n\t\t\t\t\t// because we read from the socket right when the readSource event was firing.\n\t\t\t\t\tsocketFDBytesAvailable = 0;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tif (socketFDBytesAvailable <= bytesRead)\n\t\t\t\t\t\tsocketFDBytesAvailable = 0;\n\t\t\t\t\telse\n\t\t\t\t\t\tsocketFDBytesAvailable -= bytesRead;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (socketFDBytesAvailable == 0)\n\t\t\t\t{\n\t\t\t\t\twaiting = YES;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\tif (bytesRead > 0)\n\t\t{\n\t\t\t// Check to see if the read operation is done\n\t\t\t\n\t\t\tif (currentRead->readLength > 0)\n\t\t\t{\n\t\t\t\t// Read type #2 - read a specific length of data\n\t\t\t\t// \n\t\t\t\t// Note: We should never be using a prebuffer when we're reading a specific length of data.\n\t\t\t\t\n\t\t\t\tNSAssert(readIntoPreBuffer == NO, @\"Invalid logic\");\n\t\t\t\t\n\t\t\t\tcurrentRead->bytesDone += bytesRead;\n\t\t\t\ttotalBytesReadForCurrentRead += bytesRead;\n\t\t\t\t\n\t\t\t\tdone = (currentRead->bytesDone == currentRead->readLength);\n\t\t\t}\n\t\t\telse if (currentRead->term != nil)\n\t\t\t{\n\t\t\t\t// Read type #3 - read up to a terminator\n\t\t\t\t\n\t\t\t\tif (readIntoPreBuffer)\n\t\t\t\t{\n\t\t\t\t\t// We just read a big chunk of data into the preBuffer\n\t\t\t\t\t\n\t\t\t\t\t[preBuffer didWrite:bytesRead];\n\t\t\t\t\tLogVerbose(@\"read data into preBuffer - preBuffer.length = %zu\", [preBuffer availableBytes]);\n\t\t\t\t\t\n\t\t\t\t\t// Search for the terminating sequence\n\t\t\t\t\t\n\t\t\t\t\tNSUInteger bytesToCopy = [currentRead readLengthForTermWithPreBuffer:preBuffer found:&done];\n\t\t\t\t\tLogVerbose(@\"copying %lu bytes from preBuffer\", (unsigned long)bytesToCopy);\n\t\t\t\t\t\n\t\t\t\t\t// Ensure there's room on the read packet's buffer\n\t\t\t\t\t\n\t\t\t\t\t[currentRead ensureCapacityForAdditionalDataOfLength:bytesToCopy];\n\t\t\t\t\t\n\t\t\t\t\t// Copy bytes from prebuffer into read buffer\n\t\t\t\t\t\n\t\t\t\t\tuint8_t *readBuf = (uint8_t *)[currentRead->buffer mutableBytes] + currentRead->startOffset\n\t\t\t\t\t                                                                 + currentRead->bytesDone;\n\t\t\t\t\t\n\t\t\t\t\tmemcpy(readBuf, [preBuffer readBuffer], bytesToCopy);\n\t\t\t\t\t\n\t\t\t\t\t// Remove the copied bytes from the prebuffer\n\t\t\t\t\t[preBuffer didRead:bytesToCopy];\n\t\t\t\t\tLogVerbose(@\"preBuffer.length = %zu\", [preBuffer availableBytes]);\n\t\t\t\t\t\n\t\t\t\t\t// Update totals\n\t\t\t\t\tcurrentRead->bytesDone += bytesToCopy;\n\t\t\t\t\ttotalBytesReadForCurrentRead += bytesToCopy;\n\t\t\t\t\t\n\t\t\t\t\t// Our 'done' variable was updated via the readLengthForTermWithPreBuffer:found: method above\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t// We just read a big chunk of data directly into the packet's buffer.\n\t\t\t\t\t// We need to move any overflow into the prebuffer.\n\t\t\t\t\t\n\t\t\t\t\tNSInteger overflow = [currentRead searchForTermAfterPreBuffering:bytesRead];\n\t\t\t\t\t\n\t\t\t\t\tif (overflow == 0)\n\t\t\t\t\t{\n\t\t\t\t\t\t// Perfect match!\n\t\t\t\t\t\t// Every byte we read stays in the read buffer,\n\t\t\t\t\t\t// and the last byte we read was the last byte of the term.\n\t\t\t\t\t\t\n\t\t\t\t\t\tcurrentRead->bytesDone += bytesRead;\n\t\t\t\t\t\ttotalBytesReadForCurrentRead += bytesRead;\n\t\t\t\t\t\tdone = YES;\n\t\t\t\t\t}\n\t\t\t\t\telse if (overflow > 0)\n\t\t\t\t\t{\n\t\t\t\t\t\t// The term was found within the data that we read,\n\t\t\t\t\t\t// and there are extra bytes that extend past the end of the term.\n\t\t\t\t\t\t// We need to move these excess bytes out of the read packet and into the prebuffer.\n\t\t\t\t\t\t\n\t\t\t\t\t\tNSInteger underflow = bytesRead - overflow;\n\t\t\t\t\t\t\n\t\t\t\t\t\t// Copy excess data into preBuffer\n\t\t\t\t\t\t\n\t\t\t\t\t\tLogVerbose(@\"copying %ld overflow bytes into preBuffer\", (long)overflow);\n\t\t\t\t\t\t[preBuffer ensureCapacityForWrite:overflow];\n\t\t\t\t\t\t\n\t\t\t\t\t\tuint8_t *overflowBuffer = buffer + underflow;\n\t\t\t\t\t\tmemcpy([preBuffer writeBuffer], overflowBuffer, overflow);\n\t\t\t\t\t\t\n\t\t\t\t\t\t[preBuffer didWrite:overflow];\n\t\t\t\t\t\tLogVerbose(@\"preBuffer.length = %zu\", [preBuffer availableBytes]);\n\t\t\t\t\t\t\n\t\t\t\t\t\t// Note: The completeCurrentRead method will trim the buffer for us.\n\t\t\t\t\t\t\n\t\t\t\t\t\tcurrentRead->bytesDone += underflow;\n\t\t\t\t\t\ttotalBytesReadForCurrentRead += underflow;\n\t\t\t\t\t\tdone = YES;\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\t// The term was not found within the data that we read.\n\t\t\t\t\t\t\n\t\t\t\t\t\tcurrentRead->bytesDone += bytesRead;\n\t\t\t\t\t\ttotalBytesReadForCurrentRead += bytesRead;\n\t\t\t\t\t\tdone = NO;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (!done && currentRead->maxLength > 0)\n\t\t\t\t{\n\t\t\t\t\t// We're not done and there's a set maxLength.\n\t\t\t\t\t// Have we reached that maxLength yet?\n\t\t\t\t\t\n\t\t\t\t\tif (currentRead->bytesDone >= currentRead->maxLength)\n\t\t\t\t\t{\n\t\t\t\t\t\terror = [self readMaxedOutError];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t// Read type #1 - read all available data\n\t\t\t\t\n\t\t\t\tif (readIntoPreBuffer)\n\t\t\t\t{\n\t\t\t\t\t// We just read a chunk of data into the preBuffer\n\t\t\t\t\t\n\t\t\t\t\t[preBuffer didWrite:bytesRead];\n\t\t\t\t\t\n\t\t\t\t\t// Now copy the data into the read packet.\n\t\t\t\t\t// \n\t\t\t\t\t// Recall that we didn't read directly into the packet's buffer to avoid\n\t\t\t\t\t// over-allocating memory since we had no clue how much data was available to be read.\n\t\t\t\t\t// \n\t\t\t\t\t// Ensure there's room on the read packet's buffer\n\t\t\t\t\t\n\t\t\t\t\t[currentRead ensureCapacityForAdditionalDataOfLength:bytesRead];\n\t\t\t\t\t\n\t\t\t\t\t// Copy bytes from prebuffer into read buffer\n\t\t\t\t\t\n\t\t\t\t\tuint8_t *readBuf = (uint8_t *)[currentRead->buffer mutableBytes] + currentRead->startOffset\n\t\t\t\t\t                                                                 + currentRead->bytesDone;\n\t\t\t\t\t\n\t\t\t\t\tmemcpy(readBuf, [preBuffer readBuffer], bytesRead);\n\t\t\t\t\t\n\t\t\t\t\t// Remove the copied bytes from the prebuffer\n\t\t\t\t\t[preBuffer didRead:bytesRead];\n\t\t\t\t\t\n\t\t\t\t\t// Update totals\n\t\t\t\t\tcurrentRead->bytesDone += bytesRead;\n\t\t\t\t\ttotalBytesReadForCurrentRead += bytesRead;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tcurrentRead->bytesDone += bytesRead;\n\t\t\t\t\ttotalBytesReadForCurrentRead += bytesRead;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tdone = YES;\n\t\t\t}\n\t\t\t\n\t\t} // if (bytesRead > 0)\n\t\t\n\t} // if (!done && !error && !socketEOF && hasBytesAvailable)\n\t\n\t\n\tif (!done && currentRead->readLength == 0 && currentRead->term == nil)\n\t{\n\t\t// Read type #1 - read all available data\n\t\t// \n\t\t// We might arrive here if we read data from the prebuffer but not from the socket.\n\t\t\n\t\tdone = (totalBytesReadForCurrentRead > 0);\n\t}\n\t\n\t// Check to see if we're done, or if we've made progress\n\t\n\tif (done)\n\t{\n\t\t[self completeCurrentRead];\n\t\t\n\t\tif (!error && (!socketEOF || [preBuffer availableBytes] > 0))\n\t\t{\n\t\t\t[self maybeDequeueRead];\n\t\t}\n\t}\n\telse if (totalBytesReadForCurrentRead > 0)\n\t{\n\t\t// We're not done read type #2 or #3 yet, but we have read in some bytes\n\t\t//\n\t\t// We ensure that `waiting` is set in order to resume the readSource (if it is suspended). It is\n\t\t// possible to reach this point and `waiting` not be set, if the current read's length is\n\t\t// sufficiently large. In that case, we may have read to some upperbound successfully, but\n\t\t// that upperbound could be smaller than the desired length.\n\t\twaiting = YES;\n\n\t\t__strong id<GCDAsyncSocketDelegate> theDelegate = delegate;\n\t\t\n\t\tif (delegateQueue && [theDelegate respondsToSelector:@selector(socket:didReadPartialDataOfLength:tag:)])\n\t\t{\n\t\t\tlong theReadTag = currentRead->tag;\n\t\t\t\n\t\t\tdispatch_async(delegateQueue, ^{ @autoreleasepool {\n\t\t\t\t\n\t\t\t\t[theDelegate socket:self didReadPartialDataOfLength:totalBytesReadForCurrentRead tag:theReadTag];\n\t\t\t}});\n\t\t}\n\t}\n\t\n\t// Check for errors\n\t\n\tif (error)\n\t{\n\t\t[self closeWithError:error];\n\t}\n\telse if (socketEOF)\n\t{\n\t\t[self doReadEOF];\n\t}\n\telse if (waiting)\n\t{\n\t\tif (![self usingCFStreamForTLS])\n\t\t{\n\t\t\t// Monitor the socket for readability (if we're not already doing so)\n\t\t\t[self resumeReadSource];\n\t\t}\n\t}\n\t\n\t// Do not add any code here without first adding return statements in the error cases above.\n}\n\n- (void)doReadEOF\n{\n\tLogTrace();\n\t\n\t// This method may be called more than once.\n\t// If the EOF is read while there is still data in the preBuffer,\n\t// then this method may be called continually after invocations of doReadData to see if it's time to disconnect.\n\t\n\tflags |= kSocketHasReadEOF;\n\t\n\tif (flags & kSocketSecure)\n\t{\n\t\t// If the SSL layer has any buffered data, flush it into the preBuffer now.\n\t\t\n\t\t[self flushSSLBuffers];\n\t}\n\t\n\tBOOL shouldDisconnect = NO;\n\tNSError *error = nil;\n\t\n\tif ((flags & kStartingReadTLS) || (flags & kStartingWriteTLS))\n\t{\n\t\t// We received an EOF during or prior to startTLS.\n\t\t// The SSL/TLS handshake is now impossible, so this is an unrecoverable situation.\n\t\t\n\t\tshouldDisconnect = YES;\n\t\t\n\t\tif ([self usingSecureTransportForTLS])\n\t\t{\n\t\t\terror = [self sslError:errSSLClosedAbort];\n\t\t}\n\t}\n\telse if (flags & kReadStreamClosed)\n\t{\n\t\t// The preBuffer has already been drained.\n\t\t// The config allows half-duplex connections.\n\t\t// We've previously checked the socket, and it appeared writeable.\n\t\t// So we marked the read stream as closed and notified the delegate.\n\t\t// \n\t\t// As per the half-duplex contract, the socket will be closed when a write fails,\n\t\t// or when the socket is manually closed.\n\t\t\n\t\tshouldDisconnect = NO;\n\t}\n\telse if ([preBuffer availableBytes] > 0)\n\t{\n\t\tLogVerbose(@\"Socket reached EOF, but there is still data available in prebuffer\");\n\t\t\n\t\t// Although we won't be able to read any more data from the socket,\n\t\t// there is existing data that has been prebuffered that we can read.\n\t\t\n\t\tshouldDisconnect = NO;\n\t}\n\telse if (config & kAllowHalfDuplexConnection)\n\t{\n\t\t// We just received an EOF (end of file) from the socket's read stream.\n\t\t// This means the remote end of the socket (the peer we're connected to)\n\t\t// has explicitly stated that it will not be sending us any more data.\n\t\t// \n\t\t// Query the socket to see if it is still writeable. (Perhaps the peer will continue reading data from us)\n\t\t\n\t\tint socketFD = (socket4FD != SOCKET_NULL) ? socket4FD : (socket6FD != SOCKET_NULL) ? socket6FD : socketUN;\n\t\t\n\t\tstruct pollfd pfd[1];\n\t\tpfd[0].fd = socketFD;\n\t\tpfd[0].events = POLLOUT;\n\t\tpfd[0].revents = 0;\n\t\t\n\t\tpoll(pfd, 1, 0);\n\t\t\n\t\tif (pfd[0].revents & POLLOUT)\n\t\t{\n\t\t\t// Socket appears to still be writeable\n\t\t\t\n\t\t\tshouldDisconnect = NO;\n\t\t\tflags |= kReadStreamClosed;\n\t\t\t\n\t\t\t// Notify the delegate that we're going half-duplex\n\t\t\t\n\t\t\t__strong id<GCDAsyncSocketDelegate> theDelegate = delegate;\n\n\t\t\tif (delegateQueue && [theDelegate respondsToSelector:@selector(socketDidCloseReadStream:)])\n\t\t\t{\n\t\t\t\tdispatch_async(delegateQueue, ^{ @autoreleasepool {\n\t\t\t\t\t\n\t\t\t\t\t[theDelegate socketDidCloseReadStream:self];\n\t\t\t\t}});\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tshouldDisconnect = YES;\n\t\t}\n\t}\n\telse\n\t{\n\t\tshouldDisconnect = YES;\n\t}\n\t\n\t\n\tif (shouldDisconnect)\n\t{\n\t\tif (error == nil)\n\t\t{\n\t\t\tif ([self usingSecureTransportForTLS])\n\t\t\t{\n\t\t\t\tif (sslErrCode != noErr && sslErrCode != errSSLClosedGraceful)\n\t\t\t\t{\n\t\t\t\t\terror = [self sslError:sslErrCode];\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\terror = [self connectionClosedError];\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\terror = [self connectionClosedError];\n\t\t\t}\n\t\t}\n\t\t[self closeWithError:error];\n\t}\n\telse\n\t{\n\t\tif (![self usingCFStreamForTLS])\n\t\t{\n\t\t\t// Suspend the read source (if needed)\n\t\t\t\n\t\t\t[self suspendReadSource];\n\t\t}\n\t}\n}\n\n- (void)completeCurrentRead\n{\n\tLogTrace();\n\t\n\tNSAssert(currentRead, @\"Trying to complete current read when there is no current read.\");\n\t\n\t\n\tNSData *result = nil;\n\t\n\tif (currentRead->bufferOwner)\n\t{\n\t\t// We created the buffer on behalf of the user.\n\t\t// Trim our buffer to be the proper size.\n\t\t[currentRead->buffer setLength:currentRead->bytesDone];\n\t\t\n\t\tresult = currentRead->buffer;\n\t}\n\telse\n\t{\n\t\t// We did NOT create the buffer.\n\t\t// The buffer is owned by the caller.\n\t\t// Only trim the buffer if we had to increase its size.\n\t\t\n\t\tif ([currentRead->buffer length] > currentRead->originalBufferLength)\n\t\t{\n\t\t\tNSUInteger readSize = currentRead->startOffset + currentRead->bytesDone;\n\t\t\tNSUInteger origSize = currentRead->originalBufferLength;\n\t\t\t\n\t\t\tNSUInteger buffSize = MAX(readSize, origSize);\n\t\t\t\n\t\t\t[currentRead->buffer setLength:buffSize];\n\t\t}\n\t\t\n\t\tuint8_t *buffer = (uint8_t *)[currentRead->buffer mutableBytes] + currentRead->startOffset;\n\t\t\n\t\tresult = [NSData dataWithBytesNoCopy:buffer length:currentRead->bytesDone freeWhenDone:NO];\n\t}\n\t\n\t__strong id<GCDAsyncSocketDelegate> theDelegate = delegate;\n\n\tif (delegateQueue && [theDelegate respondsToSelector:@selector(socket:didReadData:withTag:)])\n\t{\n\t\tGCDAsyncReadPacket *theRead = currentRead; // Ensure currentRead retained since result may not own buffer\n\t\t\n\t\tdispatch_async(delegateQueue, ^{ @autoreleasepool {\n\t\t\t\n\t\t\t[theDelegate socket:self didReadData:result withTag:theRead->tag];\n\t\t}});\n\t}\n\t\n\t[self endCurrentRead];\n}\n\n- (void)endCurrentRead\n{\n\tif (readTimer)\n\t{\n\t\tdispatch_source_cancel(readTimer);\n\t\treadTimer = NULL;\n\t}\n\t\n\tcurrentRead = nil;\n}\n\n- (void)setupReadTimerWithTimeout:(NSTimeInterval)timeout\n{\n\tif (timeout >= 0.0)\n\t{\n\t\treadTimer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, socketQueue);\n\t\t\n\t\t__weak GCDAsyncSocket *weakSelf = self;\n\t\t\n\t\tdispatch_source_set_event_handler(readTimer, ^{ @autoreleasepool {\n\t\t#pragma clang diagnostic push\n\t\t#pragma clang diagnostic warning \"-Wimplicit-retain-self\"\n\t\t\t\n\t\t\t__strong GCDAsyncSocket *strongSelf = weakSelf;\n\t\t\tif (strongSelf == nil) return_from_block;\n\t\t\t\n\t\t\t[strongSelf doReadTimeout];\n\t\t\t\n\t\t#pragma clang diagnostic pop\n\t\t}});\n\t\t\n\t\t#if !OS_OBJECT_USE_OBJC\n\t\tdispatch_source_t theReadTimer = readTimer;\n\t\tdispatch_source_set_cancel_handler(readTimer, ^{\n\t\t#pragma clang diagnostic push\n\t\t#pragma clang diagnostic warning \"-Wimplicit-retain-self\"\n\t\t\t\n\t\t\tLogVerbose(@\"dispatch_release(readTimer)\");\n\t\t\tdispatch_release(theReadTimer);\n\t\t\t\n\t\t#pragma clang diagnostic pop\n\t\t});\n\t\t#endif\n\t\t\n\t\tdispatch_time_t tt = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(timeout * NSEC_PER_SEC));\n\t\t\n\t\tdispatch_source_set_timer(readTimer, tt, DISPATCH_TIME_FOREVER, 0);\n\t\tdispatch_resume(readTimer);\n\t}\n}\n\n- (void)doReadTimeout\n{\n\t// This is a little bit tricky.\n\t// Ideally we'd like to synchronously query the delegate about a timeout extension.\n\t// But if we do so synchronously we risk a possible deadlock.\n\t// So instead we have to do so asynchronously, and callback to ourselves from within the delegate block.\n\t\n\tflags |= kReadsPaused;\n\t\n\t__strong id<GCDAsyncSocketDelegate> theDelegate = delegate;\n\n\tif (delegateQueue && [theDelegate respondsToSelector:@selector(socket:shouldTimeoutReadWithTag:elapsed:bytesDone:)])\n\t{\n\t\tGCDAsyncReadPacket *theRead = currentRead;\n\t\t\n\t\tdispatch_async(delegateQueue, ^{ @autoreleasepool {\n\t\t\t\n\t\t\tNSTimeInterval timeoutExtension = 0.0;\n\t\t\t\n\t\t\ttimeoutExtension = [theDelegate socket:self shouldTimeoutReadWithTag:theRead->tag\n\t\t\t                                                             elapsed:theRead->timeout\n\t\t\t                                                           bytesDone:theRead->bytesDone];\n\t\t\t\n            dispatch_async(self->socketQueue, ^{ @autoreleasepool {\n\t\t\t\t\n\t\t\t\t[self doReadTimeoutWithExtension:timeoutExtension];\n\t\t\t}});\n\t\t}});\n\t}\n\telse\n\t{\n\t\t[self doReadTimeoutWithExtension:0.0];\n\t}\n}\n\n- (void)doReadTimeoutWithExtension:(NSTimeInterval)timeoutExtension\n{\n\tif (currentRead)\n\t{\n\t\tif (timeoutExtension > 0.0)\n\t\t{\n\t\t\tcurrentRead->timeout += timeoutExtension;\n\t\t\t\n\t\t\t// Reschedule the timer\n\t\t\tdispatch_time_t tt = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(timeoutExtension * NSEC_PER_SEC));\n\t\t\tdispatch_source_set_timer(readTimer, tt, DISPATCH_TIME_FOREVER, 0);\n\t\t\t\n\t\t\t// Unpause reads, and continue\n\t\t\tflags &= ~kReadsPaused;\n\t\t\t[self doReadData];\n\t\t}\n\t\telse\n\t\t{\n\t\t\tLogVerbose(@\"ReadTimeout\");\n\t\t\t\n\t\t\t[self closeWithError:[self readTimeoutError]];\n\t\t}\n\t}\n}\n\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n#pragma mark Writing\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\n- (void)writeData:(NSData *)data withTimeout:(NSTimeInterval)timeout tag:(long)tag\n{\n\tif ([data length] == 0) return;\n\t\n\tGCDAsyncWritePacket *packet = [[GCDAsyncWritePacket alloc] initWithData:data timeout:timeout tag:tag];\n\t\n\tdispatch_async(socketQueue, ^{ @autoreleasepool {\n\t\t\n\t\tLogTrace();\n\t\t\n        if ((self->flags & kSocketStarted) && !(self->flags & kForbidReadsWrites))\n\t\t{\n            [self->writeQueue addObject:packet];\n\t\t\t[self maybeDequeueWrite];\n\t\t}\n\t}});\n\t\n\t// Do not rely on the block being run in order to release the packet,\n\t// as the queue might get released without the block completing.\n}\n\n- (float)progressOfWriteReturningTag:(long *)tagPtr bytesDone:(NSUInteger *)donePtr total:(NSUInteger *)totalPtr\n{\n\t__block float result = 0.0F;\n\t\n\tdispatch_block_t block = ^{\n\t\t\n        if (!self->currentWrite || ![self->currentWrite isKindOfClass:[GCDAsyncWritePacket class]])\n\t\t{\n\t\t\t// We're not writing anything right now.\n\t\t\t\n\t\t\tif (tagPtr != NULL)   *tagPtr = 0;\n\t\t\tif (donePtr != NULL)  *donePtr = 0;\n\t\t\tif (totalPtr != NULL) *totalPtr = 0;\n\t\t\t\n\t\t\tresult = NAN;\n\t\t}\n\t\telse\n\t\t{\n            NSUInteger done = self->currentWrite->bytesDone;\n            NSUInteger total = [self->currentWrite->buffer length];\n\t\t\t\n            if (tagPtr != NULL)   *tagPtr = self->currentWrite->tag;\n\t\t\tif (donePtr != NULL)  *donePtr = done;\n\t\t\tif (totalPtr != NULL) *totalPtr = total;\n\t\t\t\n\t\t\tresult = (float)done / (float)total;\n\t\t}\n\t};\n\t\n\tif (dispatch_get_specific(IsOnSocketQueueOrTargetQueueKey))\n\t\tblock();\n\telse\n\t\tdispatch_sync(socketQueue, block);\n\t\n\treturn result;\n}\n\n/**\n * Conditionally starts a new write.\n * \n * It is called when:\n * - a user requests a write\n * - after a write request has finished (to handle the next request)\n * - immediately after the socket opens to handle any pending requests\n * \n * This method also handles auto-disconnect post read/write completion.\n**/\n- (void)maybeDequeueWrite\n{\n\tLogTrace();\n\tNSAssert(dispatch_get_specific(IsOnSocketQueueOrTargetQueueKey), @\"Must be dispatched on socketQueue\");\n\t\n\t\n\t// If we're not currently processing a write AND we have an available write stream\n\tif ((currentWrite == nil) && (flags & kConnected))\n\t{\n\t\tif ([writeQueue count] > 0)\n\t\t{\n\t\t\t// Dequeue the next object in the write queue\n\t\t\tcurrentWrite = [writeQueue objectAtIndex:0];\n\t\t\t[writeQueue removeObjectAtIndex:0];\n\t\t\t\n\t\t\t\n\t\t\tif ([currentWrite isKindOfClass:[GCDAsyncSpecialPacket class]])\n\t\t\t{\n\t\t\t\tLogVerbose(@\"Dequeued GCDAsyncSpecialPacket\");\n\t\t\t\t\n\t\t\t\t// Attempt to start TLS\n\t\t\t\tflags |= kStartingWriteTLS;\n\t\t\t\t\n\t\t\t\t// This method won't do anything unless both kStartingReadTLS and kStartingWriteTLS are set\n\t\t\t\t[self maybeStartTLS];\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tLogVerbose(@\"Dequeued GCDAsyncWritePacket\");\n\t\t\t\t\n\t\t\t\t// Setup write timer (if needed)\n\t\t\t\t[self setupWriteTimerWithTimeout:currentWrite->timeout];\n\t\t\t\t\n\t\t\t\t// Immediately write, if possible\n\t\t\t\t[self doWriteData];\n\t\t\t}\n\t\t}\n\t\telse if (flags & kDisconnectAfterWrites)\n\t\t{\n\t\t\tif (flags & kDisconnectAfterReads)\n\t\t\t{\n\t\t\t\tif (([readQueue count] == 0) && (currentRead == nil))\n\t\t\t\t{\n\t\t\t\t\t[self closeWithError:nil];\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t[self closeWithError:nil];\n\t\t\t}\n\t\t}\n\t}\n}\n\n- (void)doWriteData\n{\n\tLogTrace();\n\t\n\t// This method is called by the writeSource via the socketQueue\n\t\n\tif ((currentWrite == nil) || (flags & kWritesPaused))\n\t{\n\t\tLogVerbose(@\"No currentWrite or kWritesPaused\");\n\t\t\n\t\t// Unable to write at this time\n\t\t\n\t\tif ([self usingCFStreamForTLS])\n\t\t{\n\t\t\t// CFWriteStream only fires once when there is available data.\n\t\t\t// It won't fire again until we've invoked CFWriteStreamWrite.\n\t\t}\n\t\telse\n\t\t{\n\t\t\t// If the writeSource is firing, we need to pause it\n\t\t\t// or else it will continue to fire over and over again.\n\t\t\t\n\t\t\tif (flags & kSocketCanAcceptBytes)\n\t\t\t{\n\t\t\t\t[self suspendWriteSource];\n\t\t\t}\n\t\t}\n\t\treturn;\n\t}\n\t\n\tif (!(flags & kSocketCanAcceptBytes))\n\t{\n\t\tLogVerbose(@\"No space available to write...\");\n\t\t\n\t\t// No space available to write.\n\t\t\n\t\tif (![self usingCFStreamForTLS])\n\t\t{\n\t\t\t// Need to wait for writeSource to fire and notify us of\n\t\t\t// available space in the socket's internal write buffer.\n\t\t\t\n\t\t\t[self resumeWriteSource];\n\t\t}\n\t\treturn;\n\t}\n\t\n\tif (flags & kStartingWriteTLS)\n\t{\n\t\tLogVerbose(@\"Waiting for SSL/TLS handshake to complete\");\n\t\t\n\t\t// The writeQueue is waiting for SSL/TLS handshake to complete.\n\t\t\n\t\tif (flags & kStartingReadTLS)\n\t\t{\n\t\t\tif ([self usingSecureTransportForTLS] && lastSSLHandshakeError == errSSLWouldBlock)\n\t\t\t{\n\t\t\t\t// We are in the process of a SSL Handshake.\n\t\t\t\t// We were waiting for available space in the socket's internal OS buffer to continue writing.\n\t\t\t\n\t\t\t\t[self ssl_continueSSLHandshake];\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\t// We are still waiting for the readQueue to drain and start the SSL/TLS process.\n\t\t\t// We now know we can write to the socket.\n\t\t\t\n\t\t\tif (![self usingCFStreamForTLS])\n\t\t\t{\n\t\t\t\t// Suspend the write source or else it will continue to fire nonstop.\n\t\t\t\t\n\t\t\t\t[self suspendWriteSource];\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn;\n\t}\n\t\n\t// Note: This method is not called if currentWrite is a GCDAsyncSpecialPacket (startTLS packet)\n\t\n\tBOOL waiting = NO;\n\tNSError *error = nil;\n\tsize_t bytesWritten = 0;\n\t\n\tif (flags & kSocketSecure)\n\t{\n\t\tif ([self usingCFStreamForTLS])\n\t\t{\n\t\t\t#if TARGET_OS_IPHONE\n\t\t\t\n\t\t\t// \n\t\t\t// Writing data using CFStream (over internal TLS)\n\t\t\t// \n\t\t\t\n\t\t\tconst uint8_t *buffer = (const uint8_t *)[currentWrite->buffer bytes] + currentWrite->bytesDone;\n\t\t\t\n\t\t\tNSUInteger bytesToWrite = [currentWrite->buffer length] - currentWrite->bytesDone;\n\t\t\t\n\t\t\tif (bytesToWrite > SIZE_MAX) // NSUInteger may be bigger than size_t (write param 3)\n\t\t\t{\n\t\t\t\tbytesToWrite = SIZE_MAX;\n\t\t\t}\n\t\t\n\t\t\tCFIndex result = CFWriteStreamWrite(writeStream, buffer, (CFIndex)bytesToWrite);\n\t\t\tLogVerbose(@\"CFWriteStreamWrite(%lu) = %li\", (unsigned long)bytesToWrite, result);\n\t\t\n\t\t\tif (result < 0)\n\t\t\t{\n\t\t\t\terror = (__bridge_transfer NSError *)CFWriteStreamCopyError(writeStream);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tbytesWritten = (size_t)result;\n\t\t\t\t\n\t\t\t\t// We always set waiting to true in this scenario.\n\t\t\t\t// CFStream may have altered our underlying socket to non-blocking.\n\t\t\t\t// Thus if we attempt to write without a callback, we may end up blocking our queue.\n\t\t\t\twaiting = YES;\n\t\t\t}\n\t\t\t\n\t\t\t#endif\n\t\t}\n\t\telse\n\t\t{\n\t\t\t// We're going to use the SSLWrite function.\n\t\t\t// \n\t\t\t// OSStatus SSLWrite(SSLContextRef context, const void *data, size_t dataLength, size_t *processed)\n\t\t\t// \n\t\t\t// Parameters:\n\t\t\t// context     - An SSL session context reference.\n\t\t\t// data        - A pointer to the buffer of data to write.\n\t\t\t// dataLength  - The amount, in bytes, of data to write.\n\t\t\t// processed   - On return, the length, in bytes, of the data actually written.\n\t\t\t// \n\t\t\t// It sounds pretty straight-forward,\n\t\t\t// but there are a few caveats you should be aware of.\n\t\t\t// \n\t\t\t// The SSLWrite method operates in a non-obvious (and rather annoying) manner.\n\t\t\t// According to the documentation:\n\t\t\t// \n\t\t\t//   Because you may configure the underlying connection to operate in a non-blocking manner,\n\t\t\t//   a write operation might return errSSLWouldBlock, indicating that less data than requested\n\t\t\t//   was actually transferred. In this case, you should repeat the call to SSLWrite until some\n\t\t\t//   other result is returned.\n\t\t\t// \n\t\t\t// This sounds perfect, but when our SSLWriteFunction returns errSSLWouldBlock,\n\t\t\t// then the SSLWrite method returns (with the proper errSSLWouldBlock return value),\n\t\t\t// but it sets processed to dataLength !!\n\t\t\t// \n\t\t\t// In other words, if the SSLWrite function doesn't completely write all the data we tell it to,\n\t\t\t// then it doesn't tell us how many bytes were actually written. So, for example, if we tell it to\n\t\t\t// write 256 bytes then it might actually write 128 bytes, but then report 0 bytes written.\n\t\t\t// \n\t\t\t// You might be wondering:\n\t\t\t// If the SSLWrite function doesn't tell us how many bytes were written,\n\t\t\t// then how in the world are we supposed to update our parameters (buffer & bytesToWrite)\n\t\t\t// for the next time we invoke SSLWrite?\n\t\t\t// \n\t\t\t// The answer is that SSLWrite cached all the data we told it to write,\n\t\t\t// and it will push out that data next time we call SSLWrite.\n\t\t\t// If we call SSLWrite with new data, it will push out the cached data first, and then the new data.\n\t\t\t// If we call SSLWrite with empty data, then it will simply push out the cached data.\n\t\t\t// \n\t\t\t// For this purpose we're going to break large writes into a series of smaller writes.\n\t\t\t// This allows us to report progress back to the delegate.\n\t\t\t\n\t\t\tOSStatus result;\n\t\t\t\n\t\t\tBOOL hasCachedDataToWrite = (sslWriteCachedLength > 0);\n\t\t\tBOOL hasNewDataToWrite = YES;\n\t\t\t\n\t\t\tif (hasCachedDataToWrite)\n\t\t\t{\n\t\t\t\tsize_t processed = 0;\n\t\t\t\t\n\t\t\t\tresult = SSLWrite(sslContext, NULL, 0, &processed);\n\t\t\t\t\n\t\t\t\tif (result == noErr)\n\t\t\t\t{\n\t\t\t\t\tbytesWritten = sslWriteCachedLength;\n\t\t\t\t\tsslWriteCachedLength = 0;\n\t\t\t\t\t\n\t\t\t\t\tif ([currentWrite->buffer length] == (currentWrite->bytesDone + bytesWritten))\n\t\t\t\t\t{\n\t\t\t\t\t\t// We've written all data for the current write.\n\t\t\t\t\t\thasNewDataToWrite = NO;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tif (result == errSSLWouldBlock)\n\t\t\t\t\t{\n\t\t\t\t\t\twaiting = YES;\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\terror = [self sslError:result];\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t// Can't write any new data since we were unable to write the cached data.\n\t\t\t\t\thasNewDataToWrite = NO;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif (hasNewDataToWrite)\n\t\t\t{\n\t\t\t\tconst uint8_t *buffer = (const uint8_t *)[currentWrite->buffer bytes]\n\t\t\t\t                                        + currentWrite->bytesDone\n\t\t\t\t                                        + bytesWritten;\n\t\t\t\t\n\t\t\t\tNSUInteger bytesToWrite = [currentWrite->buffer length] - currentWrite->bytesDone - bytesWritten;\n\t\t\t\t\n\t\t\t\tif (bytesToWrite > SIZE_MAX) // NSUInteger may be bigger than size_t (write param 3)\n\t\t\t\t{\n\t\t\t\t\tbytesToWrite = SIZE_MAX;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tsize_t bytesRemaining = bytesToWrite;\n\t\t\t\t\n\t\t\t\tBOOL keepLooping = YES;\n\t\t\t\twhile (keepLooping)\n\t\t\t\t{\n\t\t\t\t\tconst size_t sslMaxBytesToWrite = 32768;\n\t\t\t\t\tsize_t sslBytesToWrite = MIN(bytesRemaining, sslMaxBytesToWrite);\n\t\t\t\t\tsize_t sslBytesWritten = 0;\n\t\t\t\t\t\n\t\t\t\t\tresult = SSLWrite(sslContext, buffer, sslBytesToWrite, &sslBytesWritten);\n\t\t\t\t\t\n\t\t\t\t\tif (result == noErr)\n\t\t\t\t\t{\n\t\t\t\t\t\tbuffer += sslBytesWritten;\n\t\t\t\t\t\tbytesWritten += sslBytesWritten;\n\t\t\t\t\t\tbytesRemaining -= sslBytesWritten;\n\t\t\t\t\t\t\n\t\t\t\t\t\tkeepLooping = (bytesRemaining > 0);\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tif (result == errSSLWouldBlock)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\twaiting = YES;\n\t\t\t\t\t\t\tsslWriteCachedLength = sslBytesToWrite;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\terror = [self sslError:result];\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tkeepLooping = NO;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t} // while (keepLooping)\n\t\t\t\t\n\t\t\t} // if (hasNewDataToWrite)\n\t\t}\n\t}\n\telse\n\t{\n\t\t// \n\t\t// Writing data directly over raw socket\n\t\t// \n\t\t\n\t\tint socketFD = (socket4FD != SOCKET_NULL) ? socket4FD : (socket6FD != SOCKET_NULL) ? socket6FD : socketUN;\n\t\t\n\t\tconst uint8_t *buffer = (const uint8_t *)[currentWrite->buffer bytes] + currentWrite->bytesDone;\n\t\t\n\t\tNSUInteger bytesToWrite = [currentWrite->buffer length] - currentWrite->bytesDone;\n\t\t\n\t\tif (bytesToWrite > SIZE_MAX) // NSUInteger may be bigger than size_t (write param 3)\n\t\t{\n\t\t\tbytesToWrite = SIZE_MAX;\n\t\t}\n\t\t\n\t\tssize_t result = write(socketFD, buffer, (size_t)bytesToWrite);\n\t\tLogVerbose(@\"wrote to socket = %zd\", result);\n\t\t\n\t\t// Check results\n\t\tif (result < 0)\n\t\t{\n\t\t\tif (errno == EWOULDBLOCK)\n\t\t\t{\n\t\t\t\twaiting = YES;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\terror = [self errorWithErrno:errno reason:@\"Error in write() function\"];\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tbytesWritten = result;\n\t\t}\n\t}\n\t\n\t// We're done with our writing.\n\t// If we explictly ran into a situation where the socket told us there was no room in the buffer,\n\t// then we immediately resume listening for notifications.\n\t// \n\t// We must do this before we dequeue another write,\n\t// as that may in turn invoke this method again.\n\t// \n\t// Note that if CFStream is involved, it may have maliciously put our socket in blocking mode.\n\t\n\tif (waiting)\n\t{\n\t\tflags &= ~kSocketCanAcceptBytes;\n\t\t\n\t\tif (![self usingCFStreamForTLS])\n\t\t{\n\t\t\t[self resumeWriteSource];\n\t\t}\n\t}\n\t\n\t// Check our results\n\t\n\tBOOL done = NO;\n\t\n\tif (bytesWritten > 0)\n\t{\n\t\t// Update total amount read for the current write\n\t\tcurrentWrite->bytesDone += bytesWritten;\n\t\tLogVerbose(@\"currentWrite->bytesDone = %lu\", (unsigned long)currentWrite->bytesDone);\n\t\t\n\t\t// Is packet done?\n\t\tdone = (currentWrite->bytesDone == [currentWrite->buffer length]);\n\t}\n\t\n\tif (done)\n\t{\n\t\t[self completeCurrentWrite];\n\t\t\n\t\tif (!error)\n\t\t{\n\t\t\tdispatch_async(socketQueue, ^{ @autoreleasepool{\n\t\t\t\t\n\t\t\t\t[self maybeDequeueWrite];\n\t\t\t}});\n\t\t}\n\t}\n\telse\n\t{\n\t\t// We were unable to finish writing the data,\n\t\t// so we're waiting for another callback to notify us of available space in the lower-level output buffer.\n\t\t\n\t\tif (!waiting && !error)\n\t\t{\n\t\t\t// This would be the case if our write was able to accept some data, but not all of it.\n\t\t\t\n\t\t\tflags &= ~kSocketCanAcceptBytes;\n\t\t\t\n\t\t\tif (![self usingCFStreamForTLS])\n\t\t\t{\n\t\t\t\t[self resumeWriteSource];\n\t\t\t}\n\t\t}\n\t\t\n\t\tif (bytesWritten > 0)\n\t\t{\n\t\t\t// We're not done with the entire write, but we have written some bytes\n\t\t\t\n\t\t\t__strong id<GCDAsyncSocketDelegate> theDelegate = delegate;\n\n\t\t\tif (delegateQueue && [theDelegate respondsToSelector:@selector(socket:didWritePartialDataOfLength:tag:)])\n\t\t\t{\n\t\t\t\tlong theWriteTag = currentWrite->tag;\n\t\t\t\t\n\t\t\t\tdispatch_async(delegateQueue, ^{ @autoreleasepool {\n\t\t\t\t\t\n\t\t\t\t\t[theDelegate socket:self didWritePartialDataOfLength:bytesWritten tag:theWriteTag];\n\t\t\t\t}});\n\t\t\t}\n\t\t}\n\t}\n\t\n\t// Check for errors\n\t\n\tif (error)\n\t{\n\t\t[self closeWithError:[self errorWithErrno:errno reason:@\"Error in write() function\"]];\n\t}\n\t\n\t// Do not add any code here without first adding a return statement in the error case above.\n}\n\n- (void)completeCurrentWrite\n{\n\tLogTrace();\n\t\n\tNSAssert(currentWrite, @\"Trying to complete current write when there is no current write.\");\n\t\n\n\t__strong id<GCDAsyncSocketDelegate> theDelegate = delegate;\n\t\n\tif (delegateQueue && [theDelegate respondsToSelector:@selector(socket:didWriteDataWithTag:)])\n\t{\n\t\tlong theWriteTag = currentWrite->tag;\n\t\t\n\t\tdispatch_async(delegateQueue, ^{ @autoreleasepool {\n\t\t\t\n\t\t\t[theDelegate socket:self didWriteDataWithTag:theWriteTag];\n\t\t}});\n\t}\n\t\n\t[self endCurrentWrite];\n}\n\n- (void)endCurrentWrite\n{\n\tif (writeTimer)\n\t{\n\t\tdispatch_source_cancel(writeTimer);\n\t\twriteTimer = NULL;\n\t}\n\t\n\tcurrentWrite = nil;\n}\n\n- (void)setupWriteTimerWithTimeout:(NSTimeInterval)timeout\n{\n\tif (timeout >= 0.0)\n\t{\n\t\twriteTimer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, socketQueue);\n\t\t\n\t\t__weak GCDAsyncSocket *weakSelf = self;\n\t\t\n\t\tdispatch_source_set_event_handler(writeTimer, ^{ @autoreleasepool {\n\t\t#pragma clang diagnostic push\n\t\t#pragma clang diagnostic warning \"-Wimplicit-retain-self\"\n\t\t\t\n\t\t\t__strong GCDAsyncSocket *strongSelf = weakSelf;\n\t\t\tif (strongSelf == nil) return_from_block;\n\t\t\t\n\t\t\t[strongSelf doWriteTimeout];\n\t\t\t\n\t\t#pragma clang diagnostic pop\n\t\t}});\n\t\t\n\t\t#if !OS_OBJECT_USE_OBJC\n\t\tdispatch_source_t theWriteTimer = writeTimer;\n\t\tdispatch_source_set_cancel_handler(writeTimer, ^{\n\t\t#pragma clang diagnostic push\n\t\t#pragma clang diagnostic warning \"-Wimplicit-retain-self\"\n\t\t\t\n\t\t\tLogVerbose(@\"dispatch_release(writeTimer)\");\n\t\t\tdispatch_release(theWriteTimer);\n\t\t\t\n\t\t#pragma clang diagnostic pop\n\t\t});\n\t\t#endif\n\t\t\n\t\tdispatch_time_t tt = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(timeout * NSEC_PER_SEC));\n\t\t\n\t\tdispatch_source_set_timer(writeTimer, tt, DISPATCH_TIME_FOREVER, 0);\n\t\tdispatch_resume(writeTimer);\n\t}\n}\n\n- (void)doWriteTimeout\n{\n\t// This is a little bit tricky.\n\t// Ideally we'd like to synchronously query the delegate about a timeout extension.\n\t// But if we do so synchronously we risk a possible deadlock.\n\t// So instead we have to do so asynchronously, and callback to ourselves from within the delegate block.\n\t\n\tflags |= kWritesPaused;\n\t\n\t__strong id<GCDAsyncSocketDelegate> theDelegate = delegate;\n\n\tif (delegateQueue && [theDelegate respondsToSelector:@selector(socket:shouldTimeoutWriteWithTag:elapsed:bytesDone:)])\n\t{\n\t\tGCDAsyncWritePacket *theWrite = currentWrite;\n\t\t\n\t\tdispatch_async(delegateQueue, ^{ @autoreleasepool {\n\t\t\t\n\t\t\tNSTimeInterval timeoutExtension = 0.0;\n\t\t\t\n\t\t\ttimeoutExtension = [theDelegate socket:self shouldTimeoutWriteWithTag:theWrite->tag\n\t\t\t                                                              elapsed:theWrite->timeout\n\t\t\t                                                            bytesDone:theWrite->bytesDone];\n\t\t\t\n            dispatch_async(self->socketQueue, ^{ @autoreleasepool {\n\t\t\t\t\n\t\t\t\t[self doWriteTimeoutWithExtension:timeoutExtension];\n\t\t\t}});\n\t\t}});\n\t}\n\telse\n\t{\n\t\t[self doWriteTimeoutWithExtension:0.0];\n\t}\n}\n\n- (void)doWriteTimeoutWithExtension:(NSTimeInterval)timeoutExtension\n{\n\tif (currentWrite)\n\t{\n\t\tif (timeoutExtension > 0.0)\n\t\t{\n\t\t\tcurrentWrite->timeout += timeoutExtension;\n\t\t\t\n\t\t\t// Reschedule the timer\n\t\t\tdispatch_time_t tt = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(timeoutExtension * NSEC_PER_SEC));\n\t\t\tdispatch_source_set_timer(writeTimer, tt, DISPATCH_TIME_FOREVER, 0);\n\t\t\t\n\t\t\t// Unpause writes, and continue\n\t\t\tflags &= ~kWritesPaused;\n\t\t\t[self doWriteData];\n\t\t}\n\t\telse\n\t\t{\n\t\t\tLogVerbose(@\"WriteTimeout\");\n\t\t\t\n\t\t\t[self closeWithError:[self writeTimeoutError]];\n\t\t}\n\t}\n}\n\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n#pragma mark Security\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\n- (void)startTLS:(NSDictionary *)tlsSettings\n{\n\tLogTrace();\n\t\n\tif (tlsSettings == nil)\n    {\n        // Passing nil/NULL to CFReadStreamSetProperty will appear to work the same as passing an empty dictionary,\n        // but causes problems if we later try to fetch the remote host's certificate.\n        // \n        // To be exact, it causes the following to return NULL instead of the normal result:\n        // CFReadStreamCopyProperty(readStream, kCFStreamPropertySSLPeerCertificates)\n        // \n        // So we use an empty dictionary instead, which works perfectly.\n        \n        tlsSettings = [NSDictionary dictionary];\n    }\n\t\n\tGCDAsyncSpecialPacket *packet = [[GCDAsyncSpecialPacket alloc] initWithTLSSettings:tlsSettings];\n\t\n\tdispatch_async(socketQueue, ^{ @autoreleasepool {\n\t\t\n        if ((self->flags & kSocketStarted) && !(self->flags & kQueuedTLS) && !(self->flags & kForbidReadsWrites))\n\t\t{\n            [self->readQueue addObject:packet];\n            [self->writeQueue addObject:packet];\n\t\t\t\n            self->flags |= kQueuedTLS;\n\t\t\t\n\t\t\t[self maybeDequeueRead];\n\t\t\t[self maybeDequeueWrite];\n\t\t}\n\t}});\n\t\n}\n\n- (void)maybeStartTLS\n{\n\t// We can't start TLS until:\n\t// - All queued reads prior to the user calling startTLS are complete\n\t// - All queued writes prior to the user calling startTLS are complete\n\t// \n\t// We'll know these conditions are met when both kStartingReadTLS and kStartingWriteTLS are set\n\t\n\tif ((flags & kStartingReadTLS) && (flags & kStartingWriteTLS))\n\t{\n\t\tBOOL useSecureTransport = YES;\n\t\t\n\t\t#if TARGET_OS_IPHONE\n\t\t{\n\t\t\tGCDAsyncSpecialPacket *tlsPacket = (GCDAsyncSpecialPacket *)currentRead;\n            NSDictionary *tlsSettings = @{};\n            if (tlsPacket) {\n                tlsSettings = tlsPacket->tlsSettings;\n            }\n\t\t\tNSNumber *value = [tlsSettings objectForKey:GCDAsyncSocketUseCFStreamForTLS];\n\t\t\tif (value && [value boolValue])\n\t\t\t\tuseSecureTransport = NO;\n\t\t}\n\t\t#endif\n\t\t\n\t\tif (useSecureTransport)\n\t\t{\n\t\t\t[self ssl_startTLS];\n\t\t}\n\t\telse\n\t\t{\n\t\t#if TARGET_OS_IPHONE\n\t\t\t[self cf_startTLS];\n\t\t#endif\n\t\t}\n\t}\n}\n\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n#pragma mark Security via SecureTransport\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\n- (OSStatus)sslReadWithBuffer:(void *)buffer length:(size_t *)bufferLength\n{\n\tLogVerbose(@\"sslReadWithBuffer:%p length:%lu\", buffer, (unsigned long)*bufferLength);\n\t\n\tif ((socketFDBytesAvailable == 0) && ([sslPreBuffer availableBytes] == 0))\n\t{\n\t\tLogVerbose(@\"%@ - No data available to read...\", THIS_METHOD);\n\t\t\n\t\t// No data available to read.\n\t\t// \n\t\t// Need to wait for readSource to fire and notify us of\n\t\t// available data in the socket's internal read buffer.\n\t\t\n\t\t[self resumeReadSource];\n\t\t\n\t\t*bufferLength = 0;\n\t\treturn errSSLWouldBlock;\n\t}\n\t\n\tsize_t totalBytesRead = 0;\n\tsize_t totalBytesLeftToBeRead = *bufferLength;\n\t\n\tBOOL done = NO;\n\tBOOL socketError = NO;\n\t\n\t// \n\t// STEP 1 : READ FROM SSL PRE BUFFER\n\t// \n\t\n\tsize_t sslPreBufferLength = [sslPreBuffer availableBytes];\n\t\n\tif (sslPreBufferLength > 0)\n\t{\n\t\tLogVerbose(@\"%@: Reading from SSL pre buffer...\", THIS_METHOD);\n\t\t\n\t\tsize_t bytesToCopy;\n\t\tif (sslPreBufferLength > totalBytesLeftToBeRead)\n\t\t\tbytesToCopy = totalBytesLeftToBeRead;\n\t\telse\n\t\t\tbytesToCopy = sslPreBufferLength;\n\t\t\n\t\tLogVerbose(@\"%@: Copying %zu bytes from sslPreBuffer\", THIS_METHOD, bytesToCopy);\n\t\t\n\t\tmemcpy(buffer, [sslPreBuffer readBuffer], bytesToCopy);\n\t\t[sslPreBuffer didRead:bytesToCopy];\n\t\t\n\t\tLogVerbose(@\"%@: sslPreBuffer.length = %zu\", THIS_METHOD, [sslPreBuffer availableBytes]);\n\t\t\n\t\ttotalBytesRead += bytesToCopy;\n\t\ttotalBytesLeftToBeRead -= bytesToCopy;\n\t\t\n\t\tdone = (totalBytesLeftToBeRead == 0);\n\t\t\n\t\tif (done) LogVerbose(@\"%@: Complete\", THIS_METHOD);\n\t}\n\t\n\t// \n\t// STEP 2 : READ FROM SOCKET\n\t// \n\t\n\tif (!done && (socketFDBytesAvailable > 0))\n\t{\n\t\tLogVerbose(@\"%@: Reading from socket...\", THIS_METHOD);\n\t\t\n\t\tint socketFD = (socket4FD != SOCKET_NULL) ? socket4FD : (socket6FD != SOCKET_NULL) ? socket6FD : socketUN;\n\t\t\n\t\tBOOL readIntoPreBuffer;\n\t\tsize_t bytesToRead;\n\t\tuint8_t *buf;\n\t\t\n\t\tif (socketFDBytesAvailable > totalBytesLeftToBeRead)\n\t\t{\n\t\t\t// Read all available data from socket into sslPreBuffer.\n\t\t\t// Then copy requested amount into dataBuffer.\n\t\t\t\n\t\t\tLogVerbose(@\"%@: Reading into sslPreBuffer...\", THIS_METHOD);\n\t\t\t\n\t\t\t[sslPreBuffer ensureCapacityForWrite:socketFDBytesAvailable];\n\t\t\t\n\t\t\treadIntoPreBuffer = YES;\n\t\t\tbytesToRead = (size_t)socketFDBytesAvailable;\n\t\t\tbuf = [sslPreBuffer writeBuffer];\n\t\t}\n\t\telse\n\t\t{\n\t\t\t// Read available data from socket directly into dataBuffer.\n\t\t\t\n\t\t\tLogVerbose(@\"%@: Reading directly into dataBuffer...\", THIS_METHOD);\n\t\t\t\n\t\t\treadIntoPreBuffer = NO;\n\t\t\tbytesToRead = totalBytesLeftToBeRead;\n\t\t\tbuf = (uint8_t *)buffer + totalBytesRead;\n\t\t}\n\t\t\n\t\tssize_t result = read(socketFD, buf, bytesToRead);\n\t\tLogVerbose(@\"%@: read from socket = %zd\", THIS_METHOD, result);\n\t\t\n\t\tif (result < 0)\n\t\t{\n\t\t\tLogVerbose(@\"%@: read errno = %i\", THIS_METHOD, errno);\n\t\t\t\n\t\t\tif (errno != EWOULDBLOCK)\n\t\t\t{\n\t\t\t\tsocketError = YES;\n\t\t\t}\n\t\t\t\n\t\t\tsocketFDBytesAvailable = 0;\n\t\t}\n\t\telse if (result == 0)\n\t\t{\n\t\t\tLogVerbose(@\"%@: read EOF\", THIS_METHOD);\n\t\t\t\n\t\t\tsocketError = YES;\n\t\t\tsocketFDBytesAvailable = 0;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tsize_t bytesReadFromSocket = result;\n\t\t\t\n\t\t\tif (socketFDBytesAvailable > bytesReadFromSocket)\n\t\t\t\tsocketFDBytesAvailable -= bytesReadFromSocket;\n\t\t\telse\n\t\t\t\tsocketFDBytesAvailable = 0;\n\t\t\t\n\t\t\tif (readIntoPreBuffer)\n\t\t\t{\n\t\t\t\t[sslPreBuffer didWrite:bytesReadFromSocket];\n\t\t\t\t\n\t\t\t\tsize_t bytesToCopy = MIN(totalBytesLeftToBeRead, bytesReadFromSocket);\n\t\t\t\t\n\t\t\t\tLogVerbose(@\"%@: Copying %zu bytes out of sslPreBuffer\", THIS_METHOD, bytesToCopy);\n\t\t\t\t\n\t\t\t\tmemcpy((uint8_t *)buffer + totalBytesRead, [sslPreBuffer readBuffer], bytesToCopy);\n\t\t\t\t[sslPreBuffer didRead:bytesToCopy];\n\t\t\t\t\n\t\t\t\ttotalBytesRead += bytesToCopy;\n\t\t\t\ttotalBytesLeftToBeRead -= bytesToCopy;\n\t\t\t\t\n\t\t\t\tLogVerbose(@\"%@: sslPreBuffer.length = %zu\", THIS_METHOD, [sslPreBuffer availableBytes]);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\ttotalBytesRead += bytesReadFromSocket;\n\t\t\t\ttotalBytesLeftToBeRead -= bytesReadFromSocket;\n\t\t\t}\n\t\t\t\n\t\t\tdone = (totalBytesLeftToBeRead == 0);\n\t\t\t\n\t\t\tif (done) LogVerbose(@\"%@: Complete\", THIS_METHOD);\n\t\t}\n\t}\n\t\n\t*bufferLength = totalBytesRead;\n\t\n\tif (done)\n\t\treturn noErr;\n\t\n\tif (socketError)\n\t\treturn errSSLClosedAbort;\n\t\n\treturn errSSLWouldBlock;\n}\n\n- (OSStatus)sslWriteWithBuffer:(const void *)buffer length:(size_t *)bufferLength\n{\n\tif (!(flags & kSocketCanAcceptBytes))\n\t{\n\t\t// Unable to write.\n\t\t// \n\t\t// Need to wait for writeSource to fire and notify us of\n\t\t// available space in the socket's internal write buffer.\n\t\t\n\t\t[self resumeWriteSource];\n\t\t\n\t\t*bufferLength = 0;\n\t\treturn errSSLWouldBlock;\n\t}\n\t\n\tsize_t bytesToWrite = *bufferLength;\n\tsize_t bytesWritten = 0;\n\t\n\tBOOL done = NO;\n\tBOOL socketError = NO;\n\t\n\tint socketFD = (socket4FD != SOCKET_NULL) ? socket4FD : (socket6FD != SOCKET_NULL) ? socket6FD : socketUN;\n\t\n\tssize_t result = write(socketFD, buffer, bytesToWrite);\n\t\n\tif (result < 0)\n\t{\n\t\tif (errno != EWOULDBLOCK)\n\t\t{\n\t\t\tsocketError = YES;\n\t\t}\n\t\t\n\t\tflags &= ~kSocketCanAcceptBytes;\n\t}\n\telse if (result == 0)\n\t{\n\t\tflags &= ~kSocketCanAcceptBytes;\n\t}\n\telse\n\t{\n\t\tbytesWritten = result;\n\t\t\n\t\tdone = (bytesWritten == bytesToWrite);\n\t}\n\t\n\t*bufferLength = bytesWritten;\n\t\n\tif (done)\n\t\treturn noErr;\n\t\n\tif (socketError)\n\t\treturn errSSLClosedAbort;\n\t\n\treturn errSSLWouldBlock;\n}\n\nstatic OSStatus SSLReadFunction(SSLConnectionRef connection, void *data, size_t *dataLength)\n{\n\tGCDAsyncSocket *asyncSocket = (__bridge GCDAsyncSocket *)connection;\n\t\n\tNSCAssert(dispatch_get_specific(asyncSocket->IsOnSocketQueueOrTargetQueueKey), @\"What the deuce?\");\n\t\n\treturn [asyncSocket sslReadWithBuffer:data length:dataLength];\n}\n\nstatic OSStatus SSLWriteFunction(SSLConnectionRef connection, const void *data, size_t *dataLength)\n{\n\tGCDAsyncSocket *asyncSocket = (__bridge GCDAsyncSocket *)connection;\n\t\n\tNSCAssert(dispatch_get_specific(asyncSocket->IsOnSocketQueueOrTargetQueueKey), @\"What the deuce?\");\n\t\n\treturn [asyncSocket sslWriteWithBuffer:data length:dataLength];\n}\n\n- (void)ssl_startTLS\n{\n\tLogTrace();\n\t\n\tLogVerbose(@\"Starting TLS (via SecureTransport)...\");\n\t\n\tOSStatus status;\n\t\n\tGCDAsyncSpecialPacket *tlsPacket = (GCDAsyncSpecialPacket *)currentRead;\n\tif (tlsPacket == nil) // Code to quiet the analyzer\n\t{\n\t\tNSAssert(NO, @\"Logic error\");\n\t\t\n\t\t[self closeWithError:[self otherError:@\"Logic error\"]];\n\t\treturn;\n\t}\n\tNSDictionary *tlsSettings = tlsPacket->tlsSettings;\n\t\n\t// Create SSLContext, and setup IO callbacks and connection ref\n\t\n\tNSNumber *isServerNumber = [tlsSettings objectForKey:(__bridge NSString *)kCFStreamSSLIsServer];\n\tBOOL isServer = [isServerNumber boolValue];\n\t\n\t#if TARGET_OS_IPHONE || (__MAC_OS_X_VERSION_MIN_REQUIRED >= 1080)\n\t{\n\t\tif (isServer)\n\t\t\tsslContext = SSLCreateContext(kCFAllocatorDefault, kSSLServerSide, kSSLStreamType);\n\t\telse\n\t\t\tsslContext = SSLCreateContext(kCFAllocatorDefault, kSSLClientSide, kSSLStreamType);\n\t\t\n\t\tif (sslContext == NULL)\n\t\t{\n\t\t\t[self closeWithError:[self otherError:@\"Error in SSLCreateContext\"]];\n\t\t\treturn;\n\t\t}\n\t}\n\t#else // (__MAC_OS_X_VERSION_MIN_REQUIRED < 1080)\n\t{\n\t\tstatus = SSLNewContext(isServer, &sslContext);\n\t\tif (status != noErr)\n\t\t{\n\t\t\t[self closeWithError:[self otherError:@\"Error in SSLNewContext\"]];\n\t\t\treturn;\n\t\t}\n\t}\n\t#endif\n\t\n\tstatus = SSLSetIOFuncs(sslContext, &SSLReadFunction, &SSLWriteFunction);\n\tif (status != noErr)\n\t{\n\t\t[self closeWithError:[self otherError:@\"Error in SSLSetIOFuncs\"]];\n\t\treturn;\n\t}\n\t\n\tstatus = SSLSetConnection(sslContext, (__bridge SSLConnectionRef)self);\n\tif (status != noErr)\n\t{\n\t\t[self closeWithError:[self otherError:@\"Error in SSLSetConnection\"]];\n\t\treturn;\n\t}\n\n\n\tNSNumber *shouldManuallyEvaluateTrust = [tlsSettings objectForKey:GCDAsyncSocketManuallyEvaluateTrust];\n\tif ([shouldManuallyEvaluateTrust boolValue])\n\t{\n\t\tif (isServer)\n\t\t{\n\t\t\t[self closeWithError:[self otherError:@\"Manual trust validation is not supported for server sockets\"]];\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tstatus = SSLSetSessionOption(sslContext, kSSLSessionOptionBreakOnServerAuth, true);\n\t\tif (status != noErr)\n\t\t{\n\t\t\t[self closeWithError:[self otherError:@\"Error in SSLSetSessionOption\"]];\n\t\t\treturn;\n\t\t}\n\t\t\n\t\t#if !TARGET_OS_IPHONE && (__MAC_OS_X_VERSION_MIN_REQUIRED < 1080)\n\t\t\n\t\t// Note from Apple's documentation:\n\t\t//\n\t\t// It is only necessary to call SSLSetEnableCertVerify on the Mac prior to OS X 10.8.\n\t\t// On OS X 10.8 and later setting kSSLSessionOptionBreakOnServerAuth always disables the\n\t\t// built-in trust evaluation. All versions of iOS behave like OS X 10.8 and thus\n\t\t// SSLSetEnableCertVerify is not available on that platform at all.\n\t\t\n\t\tstatus = SSLSetEnableCertVerify(sslContext, NO);\n\t\tif (status != noErr)\n\t\t{\n\t\t\t[self closeWithError:[self otherError:@\"Error in SSLSetEnableCertVerify\"]];\n\t\t\treturn;\n\t\t}\n\t\t\n\t\t#endif\n\t}\n\n\t// Configure SSLContext from given settings\n\t// \n\t// Checklist:\n\t//  1. kCFStreamSSLPeerName\n\t//  2. kCFStreamSSLCertificates\n\t//  3. GCDAsyncSocketSSLPeerID\n\t//  4. GCDAsyncSocketSSLProtocolVersionMin\n\t//  5. GCDAsyncSocketSSLProtocolVersionMax\n\t//  6. GCDAsyncSocketSSLSessionOptionFalseStart\n\t//  7. GCDAsyncSocketSSLSessionOptionSendOneByteRecord\n\t//  8. GCDAsyncSocketSSLCipherSuites\n\t//  9. GCDAsyncSocketSSLDiffieHellmanParameters (Mac)\n\t//\n\t// Deprecated (throw error):\n\t// 10. kCFStreamSSLAllowsAnyRoot\n\t// 11. kCFStreamSSLAllowsExpiredRoots\n\t// 12. kCFStreamSSLAllowsExpiredCertificates\n\t// 13. kCFStreamSSLValidatesCertificateChain\n\t// 14. kCFStreamSSLLevel\n\t\n\tNSObject *value;\n\t\n\t// 1. kCFStreamSSLPeerName\n\t\n\tvalue = [tlsSettings objectForKey:(__bridge NSString *)kCFStreamSSLPeerName];\n\tif ([value isKindOfClass:[NSString class]])\n\t{\n\t\tNSString *peerName = (NSString *)value;\n\t\t\n\t\tconst char *peer = [peerName UTF8String];\n\t\tsize_t peerLen = strlen(peer);\n\t\t\n\t\tstatus = SSLSetPeerDomainName(sslContext, peer, peerLen);\n\t\tif (status != noErr)\n\t\t{\n\t\t\t[self closeWithError:[self otherError:@\"Error in SSLSetPeerDomainName\"]];\n\t\t\treturn;\n\t\t}\n\t}\n\telse if (value)\n\t{\n\t\tNSAssert(NO, @\"Invalid value for kCFStreamSSLPeerName. Value must be of type NSString.\");\n\t\t\n\t\t[self closeWithError:[self otherError:@\"Invalid value for kCFStreamSSLPeerName.\"]];\n\t\treturn;\n\t}\n\t\n\t// 2. kCFStreamSSLCertificates\n\t\n\tvalue = [tlsSettings objectForKey:(__bridge NSString *)kCFStreamSSLCertificates];\n\tif ([value isKindOfClass:[NSArray class]])\n\t{\n\t\tNSArray *certs = (NSArray *)value;\n\t\t\n\t\tstatus = SSLSetCertificate(sslContext, (__bridge CFArrayRef)certs);\n\t\tif (status != noErr)\n\t\t{\n\t\t\t[self closeWithError:[self otherError:@\"Error in SSLSetCertificate\"]];\n\t\t\treturn;\n\t\t}\n\t}\n\telse if (value)\n\t{\n\t\tNSAssert(NO, @\"Invalid value for kCFStreamSSLCertificates. Value must be of type NSArray.\");\n\t\t\n\t\t[self closeWithError:[self otherError:@\"Invalid value for kCFStreamSSLCertificates.\"]];\n\t\treturn;\n\t}\n\t\n\t// 3. GCDAsyncSocketSSLPeerID\n\t\n\tvalue = [tlsSettings objectForKey:GCDAsyncSocketSSLPeerID];\n\tif ([value isKindOfClass:[NSData class]])\n\t{\n\t\tNSData *peerIdData = (NSData *)value;\n\t\t\n\t\tstatus = SSLSetPeerID(sslContext, [peerIdData bytes], [peerIdData length]);\n\t\tif (status != noErr)\n\t\t{\n\t\t\t[self closeWithError:[self otherError:@\"Error in SSLSetPeerID\"]];\n\t\t\treturn;\n\t\t}\n\t}\n\telse if (value)\n\t{\n\t\tNSAssert(NO, @\"Invalid value for GCDAsyncSocketSSLPeerID. Value must be of type NSData.\"\n\t\t             @\" (You can convert strings to data using a method like\"\n\t\t             @\" [string dataUsingEncoding:NSUTF8StringEncoding])\");\n\t\t\n\t\t[self closeWithError:[self otherError:@\"Invalid value for GCDAsyncSocketSSLPeerID.\"]];\n\t\treturn;\n\t}\n\t\n\t// 4. GCDAsyncSocketSSLProtocolVersionMin\n\t\n\tvalue = [tlsSettings objectForKey:GCDAsyncSocketSSLProtocolVersionMin];\n\tif ([value isKindOfClass:[NSNumber class]])\n\t{\n\t\tSSLProtocol minProtocol = (SSLProtocol)[(NSNumber *)value intValue];\n\t\tif (minProtocol != kSSLProtocolUnknown)\n\t\t{\n\t\t\tstatus = SSLSetProtocolVersionMin(sslContext, minProtocol);\n\t\t\tif (status != noErr)\n\t\t\t{\n\t\t\t\t[self closeWithError:[self otherError:@\"Error in SSLSetProtocolVersionMin\"]];\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t}\n\telse if (value)\n\t{\n\t\tNSAssert(NO, @\"Invalid value for GCDAsyncSocketSSLProtocolVersionMin. Value must be of type NSNumber.\");\n\t\t\n\t\t[self closeWithError:[self otherError:@\"Invalid value for GCDAsyncSocketSSLProtocolVersionMin.\"]];\n\t\treturn;\n\t}\n\t\n\t// 5. GCDAsyncSocketSSLProtocolVersionMax\n\t\n\tvalue = [tlsSettings objectForKey:GCDAsyncSocketSSLProtocolVersionMax];\n\tif ([value isKindOfClass:[NSNumber class]])\n\t{\n\t\tSSLProtocol maxProtocol = (SSLProtocol)[(NSNumber *)value intValue];\n\t\tif (maxProtocol != kSSLProtocolUnknown)\n\t\t{\n\t\t\tstatus = SSLSetProtocolVersionMax(sslContext, maxProtocol);\n\t\t\tif (status != noErr)\n\t\t\t{\n\t\t\t\t[self closeWithError:[self otherError:@\"Error in SSLSetProtocolVersionMax\"]];\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t}\n\telse if (value)\n\t{\n\t\tNSAssert(NO, @\"Invalid value for GCDAsyncSocketSSLProtocolVersionMax. Value must be of type NSNumber.\");\n\t\t\n\t\t[self closeWithError:[self otherError:@\"Invalid value for GCDAsyncSocketSSLProtocolVersionMax.\"]];\n\t\treturn;\n\t}\n\t\n\t// 6. GCDAsyncSocketSSLSessionOptionFalseStart\n\t\n\tvalue = [tlsSettings objectForKey:GCDAsyncSocketSSLSessionOptionFalseStart];\n\tif ([value isKindOfClass:[NSNumber class]])\n\t{\n\t\tNSNumber *falseStart = (NSNumber *)value;\n\t\tstatus = SSLSetSessionOption(sslContext, kSSLSessionOptionFalseStart, [falseStart boolValue]);\n\t\tif (status != noErr)\n\t\t{\n\t\t\t[self closeWithError:[self otherError:@\"Error in SSLSetSessionOption (kSSLSessionOptionFalseStart)\"]];\n\t\t\treturn;\n\t\t}\n\t}\n\telse if (value)\n\t{\n\t\tNSAssert(NO, @\"Invalid value for GCDAsyncSocketSSLSessionOptionFalseStart. Value must be of type NSNumber.\");\n\t\t\n\t\t[self closeWithError:[self otherError:@\"Invalid value for GCDAsyncSocketSSLSessionOptionFalseStart.\"]];\n\t\treturn;\n\t}\n\t\n\t// 7. GCDAsyncSocketSSLSessionOptionSendOneByteRecord\n\t\n\tvalue = [tlsSettings objectForKey:GCDAsyncSocketSSLSessionOptionSendOneByteRecord];\n\tif ([value isKindOfClass:[NSNumber class]])\n\t{\n\t\tNSNumber *oneByteRecord = (NSNumber *)value;\n\t\tstatus = SSLSetSessionOption(sslContext, kSSLSessionOptionSendOneByteRecord, [oneByteRecord boolValue]);\n\t\tif (status != noErr)\n\t\t{\n\t\t\t[self closeWithError:\n\t\t\t  [self otherError:@\"Error in SSLSetSessionOption (kSSLSessionOptionSendOneByteRecord)\"]];\n\t\t\treturn;\n\t\t}\n\t}\n\telse if (value)\n\t{\n\t\tNSAssert(NO, @\"Invalid value for GCDAsyncSocketSSLSessionOptionSendOneByteRecord.\"\n\t\t             @\" Value must be of type NSNumber.\");\n\t\t\n\t\t[self closeWithError:[self otherError:@\"Invalid value for GCDAsyncSocketSSLSessionOptionSendOneByteRecord.\"]];\n\t\treturn;\n\t}\n\t\n\t// 8. GCDAsyncSocketSSLCipherSuites\n\t\n\tvalue = [tlsSettings objectForKey:GCDAsyncSocketSSLCipherSuites];\n\tif ([value isKindOfClass:[NSArray class]])\n\t{\n\t\tNSArray *cipherSuites = (NSArray *)value;\n\t\tNSUInteger numberCiphers = [cipherSuites count];\n\t\tSSLCipherSuite ciphers[numberCiphers];\n\t\t\n\t\tNSUInteger cipherIndex;\n\t\tfor (cipherIndex = 0; cipherIndex < numberCiphers; cipherIndex++)\n\t\t{\n\t\t\tNSNumber *cipherObject = [cipherSuites objectAtIndex:cipherIndex];\n\t\t\tciphers[cipherIndex] = (SSLCipherSuite)[cipherObject unsignedIntValue];\n\t\t}\n\t\t\n\t\tstatus = SSLSetEnabledCiphers(sslContext, ciphers, numberCiphers);\n\t\tif (status != noErr)\n\t\t{\n\t\t\t[self closeWithError:[self otherError:@\"Error in SSLSetEnabledCiphers\"]];\n\t\t\treturn;\n\t\t}\n\t}\n\telse if (value)\n\t{\n\t\tNSAssert(NO, @\"Invalid value for GCDAsyncSocketSSLCipherSuites. Value must be of type NSArray.\");\n\t\t\n\t\t[self closeWithError:[self otherError:@\"Invalid value for GCDAsyncSocketSSLCipherSuites.\"]];\n\t\treturn;\n\t}\n\t\n\t// 9. GCDAsyncSocketSSLDiffieHellmanParameters\n\t\n\t#if !TARGET_OS_IPHONE\n\tvalue = [tlsSettings objectForKey:GCDAsyncSocketSSLDiffieHellmanParameters];\n\tif ([value isKindOfClass:[NSData class]])\n\t{\n\t\tNSData *diffieHellmanData = (NSData *)value;\n\t\t\n\t\tstatus = SSLSetDiffieHellmanParams(sslContext, [diffieHellmanData bytes], [diffieHellmanData length]);\n\t\tif (status != noErr)\n\t\t{\n\t\t\t[self closeWithError:[self otherError:@\"Error in SSLSetDiffieHellmanParams\"]];\n\t\t\treturn;\n\t\t}\n\t}\n\telse if (value)\n\t{\n\t\tNSAssert(NO, @\"Invalid value for GCDAsyncSocketSSLDiffieHellmanParameters. Value must be of type NSData.\");\n\t\t\n\t\t[self closeWithError:[self otherError:@\"Invalid value for GCDAsyncSocketSSLDiffieHellmanParameters.\"]];\n\t\treturn;\n\t}\n\t#endif\n\t\n\t// DEPRECATED checks\n\t\n\t// 10. kCFStreamSSLAllowsAnyRoot\n\t\n\t#pragma clang diagnostic push\n\t#pragma clang diagnostic ignored \"-Wdeprecated-declarations\"\n\tvalue = [tlsSettings objectForKey:(__bridge NSString *)kCFStreamSSLAllowsAnyRoot];\n\t#pragma clang diagnostic pop\n\tif (value)\n\t{\n\t\tNSAssert(NO, @\"Security option unavailable - kCFStreamSSLAllowsAnyRoot\"\n\t\t             @\" - You must use manual trust evaluation\");\n\t\t\n\t\t[self closeWithError:[self otherError:@\"Security option unavailable - kCFStreamSSLAllowsAnyRoot\"]];\n\t\treturn;\n\t}\n\t\n\t// 11. kCFStreamSSLAllowsExpiredRoots\n\t\n\t#pragma clang diagnostic push\n\t#pragma clang diagnostic ignored \"-Wdeprecated-declarations\"\n\tvalue = [tlsSettings objectForKey:(__bridge NSString *)kCFStreamSSLAllowsExpiredRoots];\n\t#pragma clang diagnostic pop\n\tif (value)\n\t{\n\t\tNSAssert(NO, @\"Security option unavailable - kCFStreamSSLAllowsExpiredRoots\"\n\t\t             @\" - You must use manual trust evaluation\");\n\t\t\n\t\t[self closeWithError:[self otherError:@\"Security option unavailable - kCFStreamSSLAllowsExpiredRoots\"]];\n\t\treturn;\n\t}\n\t\n\t// 12. kCFStreamSSLValidatesCertificateChain\n\t\n\t#pragma clang diagnostic push\n\t#pragma clang diagnostic ignored \"-Wdeprecated-declarations\"\n\tvalue = [tlsSettings objectForKey:(__bridge NSString *)kCFStreamSSLValidatesCertificateChain];\n\t#pragma clang diagnostic pop\n\tif (value)\n\t{\n\t\tNSAssert(NO, @\"Security option unavailable - kCFStreamSSLValidatesCertificateChain\"\n\t\t             @\" - You must use manual trust evaluation\");\n\t\t\n\t\t[self closeWithError:[self otherError:@\"Security option unavailable - kCFStreamSSLValidatesCertificateChain\"]];\n\t\treturn;\n\t}\n\t\n\t// 13. kCFStreamSSLAllowsExpiredCertificates\n\t\n\t#pragma clang diagnostic push\n\t#pragma clang diagnostic ignored \"-Wdeprecated-declarations\"\n\tvalue = [tlsSettings objectForKey:(__bridge NSString *)kCFStreamSSLAllowsExpiredCertificates];\n\t#pragma clang diagnostic pop\n\tif (value)\n\t{\n\t\tNSAssert(NO, @\"Security option unavailable - kCFStreamSSLAllowsExpiredCertificates\"\n\t\t             @\" - You must use manual trust evaluation\");\n\t\t\n\t\t[self closeWithError:[self otherError:@\"Security option unavailable - kCFStreamSSLAllowsExpiredCertificates\"]];\n\t\treturn;\n\t}\n\t\n\t// 14. kCFStreamSSLLevel\n\t\n\t#pragma clang diagnostic push\n\t#pragma clang diagnostic ignored \"-Wdeprecated-declarations\"\n\tvalue = [tlsSettings objectForKey:(__bridge NSString *)kCFStreamSSLLevel];\n\t#pragma clang diagnostic pop\n\tif (value)\n\t{\n\t\tNSAssert(NO, @\"Security option unavailable - kCFStreamSSLLevel\"\n\t\t             @\" - You must use GCDAsyncSocketSSLProtocolVersionMin & GCDAsyncSocketSSLProtocolVersionMax\");\n\t\t\n\t\t[self closeWithError:[self otherError:@\"Security option unavailable - kCFStreamSSLLevel\"]];\n\t\treturn;\n\t}\n\t\n\t// Setup the sslPreBuffer\n\t// \n\t// Any data in the preBuffer needs to be moved into the sslPreBuffer,\n\t// as this data is now part of the secure read stream.\n\t\n\tsslPreBuffer = [[GCDAsyncSocketPreBuffer alloc] initWithCapacity:(1024 * 4)];\n\t\n\tsize_t preBufferLength  = [preBuffer availableBytes];\n\t\n\tif (preBufferLength > 0)\n\t{\n\t\t[sslPreBuffer ensureCapacityForWrite:preBufferLength];\n\t\t\n\t\tmemcpy([sslPreBuffer writeBuffer], [preBuffer readBuffer], preBufferLength);\n\t\t[preBuffer didRead:preBufferLength];\n\t\t[sslPreBuffer didWrite:preBufferLength];\n\t}\n\t\n\tsslErrCode = lastSSLHandshakeError = noErr;\n\t\n\t// Start the SSL Handshake process\n\t\n\t[self ssl_continueSSLHandshake];\n}\n\n- (void)ssl_continueSSLHandshake\n{\n\tLogTrace();\n\t\n\t// If the return value is noErr, the session is ready for normal secure communication.\n\t// If the return value is errSSLWouldBlock, the SSLHandshake function must be called again.\n\t// If the return value is errSSLServerAuthCompleted, we ask delegate if we should trust the\n\t// server and then call SSLHandshake again to resume the handshake or close the connection\n\t// errSSLPeerBadCert SSL error.\n\t// Otherwise, the return value indicates an error code.\n\t\n\tOSStatus status = SSLHandshake(sslContext);\n\tlastSSLHandshakeError = status;\n\t\n\tif (status == noErr)\n\t{\n\t\tLogVerbose(@\"SSLHandshake complete\");\n\t\t\n\t\tflags &= ~kStartingReadTLS;\n\t\tflags &= ~kStartingWriteTLS;\n\t\t\n\t\tflags |=  kSocketSecure;\n\t\t\n\t\t__strong id<GCDAsyncSocketDelegate> theDelegate = delegate;\n\n\t\tif (delegateQueue && [theDelegate respondsToSelector:@selector(socketDidSecure:)])\n\t\t{\n\t\t\tdispatch_async(delegateQueue, ^{ @autoreleasepool {\n\t\t\t\t\n\t\t\t\t[theDelegate socketDidSecure:self];\n\t\t\t}});\n\t\t}\n\t\t\n\t\t[self endCurrentRead];\n\t\t[self endCurrentWrite];\n\t\t\n\t\t[self maybeDequeueRead];\n\t\t[self maybeDequeueWrite];\n\t}\n\telse if (status == errSSLPeerAuthCompleted)\n\t{\n\t\tLogVerbose(@\"SSLHandshake peerAuthCompleted - awaiting delegate approval\");\n\t\t\n\t\t__block SecTrustRef trust = NULL;\n\t\tstatus = SSLCopyPeerTrust(sslContext, &trust);\n\t\tif (status != noErr)\n\t\t{\n\t\t\t[self closeWithError:[self sslError:status]];\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tint aStateIndex = stateIndex;\n\t\tdispatch_queue_t theSocketQueue = socketQueue;\n\t\t\n\t\t__weak GCDAsyncSocket *weakSelf = self;\n\t\t\n\t\tvoid (^comletionHandler)(BOOL) = ^(BOOL shouldTrust){ @autoreleasepool {\n\t\t#pragma clang diagnostic push\n\t\t#pragma clang diagnostic warning \"-Wimplicit-retain-self\"\n\t\t\t\n\t\t\tdispatch_async(theSocketQueue, ^{ @autoreleasepool {\n\t\t\t\t\n\t\t\t\tif (trust) {\n\t\t\t\t\tCFRelease(trust);\n\t\t\t\t\ttrust = NULL;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t__strong GCDAsyncSocket *strongSelf = weakSelf;\n\t\t\t\tif (strongSelf)\n\t\t\t\t{\n\t\t\t\t\t[strongSelf ssl_shouldTrustPeer:shouldTrust stateIndex:aStateIndex];\n\t\t\t\t}\n\t\t\t}});\n\t\t\t\n\t\t#pragma clang diagnostic pop\n\t\t}};\n\t\t\n\t\t__strong id<GCDAsyncSocketDelegate> theDelegate = delegate;\n\t\t\n\t\tif (delegateQueue && [theDelegate respondsToSelector:@selector(socket:didReceiveTrust:completionHandler:)])\n\t\t{\n\t\t\tdispatch_async(delegateQueue, ^{ @autoreleasepool {\n\t\t\t\n\t\t\t\t[theDelegate socket:self didReceiveTrust:trust completionHandler:comletionHandler];\n\t\t\t}});\n\t\t}\n\t\telse\n\t\t{\n\t\t\tif (trust) {\n\t\t\t\tCFRelease(trust);\n\t\t\t\ttrust = NULL;\n\t\t\t}\n\t\t\t\n\t\t\tNSString *msg = @\"GCDAsyncSocketManuallyEvaluateTrust specified in tlsSettings,\"\n\t\t\t                @\" but delegate doesn't implement socket:shouldTrustPeer:\";\n\t\t\t\n\t\t\t[self closeWithError:[self otherError:msg]];\n\t\t\treturn;\n\t\t}\n\t}\n\telse if (status == errSSLWouldBlock)\n\t{\n\t\tLogVerbose(@\"SSLHandshake continues...\");\n\t\t\n\t\t// Handshake continues...\n\t\t// \n\t\t// This method will be called again from doReadData or doWriteData.\n\t}\n\telse\n\t{\n\t\t[self closeWithError:[self sslError:status]];\n\t}\n}\n\n- (void)ssl_shouldTrustPeer:(BOOL)shouldTrust stateIndex:(int)aStateIndex\n{\n\tLogTrace();\n\t\n\tif (aStateIndex != stateIndex)\n\t{\n\t\tLogInfo(@\"Ignoring ssl_shouldTrustPeer - invalid state (maybe disconnected)\");\n\t\t\n\t\t// One of the following is true\n\t\t// - the socket was disconnected\n\t\t// - the startTLS operation timed out\n\t\t// - the completionHandler was already invoked once\n\t\t\n\t\treturn;\n\t}\n\t\n\t// Increment stateIndex to ensure completionHandler can only be called once.\n\tstateIndex++;\n\t\n\tif (shouldTrust)\n\t{\n        NSAssert(lastSSLHandshakeError == errSSLPeerAuthCompleted, @\"ssl_shouldTrustPeer called when last error is %d and not errSSLPeerAuthCompleted\", (int)lastSSLHandshakeError);\n\t\t[self ssl_continueSSLHandshake];\n\t}\n\telse\n\t{\n\t\t[self closeWithError:[self sslError:errSSLPeerBadCert]];\n\t}\n}\n\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n#pragma mark Security via CFStream\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\n#if TARGET_OS_IPHONE\n\n- (void)cf_finishSSLHandshake\n{\n\tLogTrace();\n\t\n\tif ((flags & kStartingReadTLS) && (flags & kStartingWriteTLS))\n\t{\n\t\tflags &= ~kStartingReadTLS;\n\t\tflags &= ~kStartingWriteTLS;\n\t\t\n\t\tflags |= kSocketSecure;\n\t\t\n\t\t__strong id<GCDAsyncSocketDelegate> theDelegate = delegate;\n\n\t\tif (delegateQueue && [theDelegate respondsToSelector:@selector(socketDidSecure:)])\n\t\t{\n\t\t\tdispatch_async(delegateQueue, ^{ @autoreleasepool {\n\t\t\t\t\n\t\t\t\t[theDelegate socketDidSecure:self];\n\t\t\t}});\n\t\t}\n\t\t\n\t\t[self endCurrentRead];\n\t\t[self endCurrentWrite];\n\t\t\n\t\t[self maybeDequeueRead];\n\t\t[self maybeDequeueWrite];\n\t}\n}\n\n- (void)cf_abortSSLHandshake:(NSError *)error\n{\n\tLogTrace();\n\t\n\tif ((flags & kStartingReadTLS) && (flags & kStartingWriteTLS))\n\t{\n\t\tflags &= ~kStartingReadTLS;\n\t\tflags &= ~kStartingWriteTLS;\n\t\t\n\t\t[self closeWithError:error];\n\t}\n}\n\n- (void)cf_startTLS\n{\n\tLogTrace();\n\t\n\tLogVerbose(@\"Starting TLS (via CFStream)...\");\n\t\n\tif ([preBuffer availableBytes] > 0)\n\t{\n\t\tNSString *msg = @\"Invalid TLS transition. Handshake has already been read from socket.\";\n\t\t\n\t\t[self closeWithError:[self otherError:msg]];\n\t\treturn;\n\t}\n\t\n\t[self suspendReadSource];\n\t[self suspendWriteSource];\n\t\n\tsocketFDBytesAvailable = 0;\n\tflags &= ~kSocketCanAcceptBytes;\n\tflags &= ~kSecureSocketHasBytesAvailable;\n\t\n\tflags |=  kUsingCFStreamForTLS;\n\t\n\tif (![self createReadAndWriteStream])\n\t{\n\t\t[self closeWithError:[self otherError:@\"Error in CFStreamCreatePairWithSocket\"]];\n\t\treturn;\n\t}\n\t\n\tif (![self registerForStreamCallbacksIncludingReadWrite:YES])\n\t{\n\t\t[self closeWithError:[self otherError:@\"Error in CFStreamSetClient\"]];\n\t\treturn;\n\t}\n\t\n\tif (![self addStreamsToRunLoop])\n\t{\n\t\t[self closeWithError:[self otherError:@\"Error in CFStreamScheduleWithRunLoop\"]];\n\t\treturn;\n\t}\n\t\n\tNSAssert([currentRead isKindOfClass:[GCDAsyncSpecialPacket class]], @\"Invalid read packet for startTLS\");\n\tNSAssert([currentWrite isKindOfClass:[GCDAsyncSpecialPacket class]], @\"Invalid write packet for startTLS\");\n\t\n\tGCDAsyncSpecialPacket *tlsPacket = (GCDAsyncSpecialPacket *)currentRead;\n\tCFDictionaryRef tlsSettings = (__bridge CFDictionaryRef)tlsPacket->tlsSettings;\n\t\n\t// Getting an error concerning kCFStreamPropertySSLSettings ?\n\t// You need to add the CFNetwork framework to your iOS application.\n\t\n\tBOOL r1 = CFReadStreamSetProperty(readStream, kCFStreamPropertySSLSettings, tlsSettings);\n\tBOOL r2 = CFWriteStreamSetProperty(writeStream, kCFStreamPropertySSLSettings, tlsSettings);\n\t\n\t// For some reason, starting around the time of iOS 4.3,\n\t// the first call to set the kCFStreamPropertySSLSettings will return true,\n\t// but the second will return false.\n\t// \n\t// Order doesn't seem to matter.\n\t// So you could call CFReadStreamSetProperty and then CFWriteStreamSetProperty, or you could reverse the order.\n\t// Either way, the first call will return true, and the second returns false.\n\t// \n\t// Interestingly, this doesn't seem to affect anything.\n\t// Which is not altogether unusual, as the documentation seems to suggest that (for many settings)\n\t// setting it on one side of the stream automatically sets it for the other side of the stream.\n\t// \n\t// Although there isn't anything in the documentation to suggest that the second attempt would fail.\n\t// \n\t// Furthermore, this only seems to affect streams that are negotiating a security upgrade.\n\t// In other words, the socket gets connected, there is some back-and-forth communication over the unsecure\n\t// connection, and then a startTLS is issued.\n\t// So this mostly affects newer protocols (XMPP, IMAP) as opposed to older protocols (HTTPS).\n\t\n\tif (!r1 && !r2) // Yes, the && is correct - workaround for apple bug.\n\t{\n\t\t[self closeWithError:[self otherError:@\"Error in CFStreamSetProperty\"]];\n\t\treturn;\n\t}\n\t\n\tif (![self openStreams])\n\t{\n\t\t[self closeWithError:[self otherError:@\"Error in CFStreamOpen\"]];\n\t\treturn;\n\t}\n\t\n\tLogVerbose(@\"Waiting for SSL Handshake to complete...\");\n}\n\n#endif\n\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n#pragma mark CFStream\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\n#if TARGET_OS_IPHONE\n\n+ (void)ignore:(id)_\n{}\n\n+ (void)startCFStreamThreadIfNeeded\n{\n\tLogTrace();\n\t\n\tstatic dispatch_once_t predicate;\n\tdispatch_once(&predicate, ^{\n\t\t\n\t\tcfstreamThreadRetainCount = 0;\n\t\tcfstreamThreadSetupQueue = dispatch_queue_create(\"GCDAsyncSocket-CFStreamThreadSetup\", DISPATCH_QUEUE_SERIAL);\n\t});\n\t\n\tdispatch_sync(cfstreamThreadSetupQueue, ^{ @autoreleasepool {\n\t\t\n\t\tif (++cfstreamThreadRetainCount == 1)\n\t\t{\n\t\t\tcfstreamThread = [[NSThread alloc] initWithTarget:self\n\t\t\t                                         selector:@selector(cfstreamThread:)\n\t\t\t                                           object:nil];\n\t\t\t[cfstreamThread start];\n\t\t}\n\t}});\n}\n\n+ (void)stopCFStreamThreadIfNeeded\n{\n\tLogTrace();\n\t\n\t// The creation of the cfstreamThread is relatively expensive.\n\t// So we'd like to keep it available for recycling.\n\t// However, there's a tradeoff here, because it shouldn't remain alive forever.\n\t// So what we're going to do is use a little delay before taking it down.\n\t// This way it can be reused properly in situations where multiple sockets are continually in flux.\n\t\n\tint delayInSeconds = 30;\n\tdispatch_time_t when = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC));\n\tdispatch_after(when, cfstreamThreadSetupQueue, ^{ @autoreleasepool {\n\t#pragma clang diagnostic push\n\t#pragma clang diagnostic warning \"-Wimplicit-retain-self\"\n\t\t\n\t\tif (cfstreamThreadRetainCount == 0)\n\t\t{\n\t\t\tLogWarn(@\"Logic error concerning cfstreamThread start / stop\");\n\t\t\treturn_from_block;\n\t\t}\n\t\t\n\t\tif (--cfstreamThreadRetainCount == 0)\n\t\t{\n\t\t\t[cfstreamThread cancel]; // set isCancelled flag\n\t\t\t\n\t\t\t// wake up the thread\n            [[self class] performSelector:@selector(ignore:)\n                                 onThread:cfstreamThread\n                               withObject:[NSNull null]\n                            waitUntilDone:NO];\n            \n\t\t\tcfstreamThread = nil;\n\t\t}\n\t\t\n\t#pragma clang diagnostic pop\n\t}});\n}\n\n+ (void)cfstreamThread:(id)unused { @autoreleasepool\n{\n\t[[NSThread currentThread] setName:GCDAsyncSocketThreadName];\n\t\n\tLogInfo(@\"CFStreamThread: Started\");\n\t\n\t// We can't run the run loop unless it has an associated input source or a timer.\n\t// So we'll just create a timer that will never fire - unless the server runs for decades.\n\t[NSTimer scheduledTimerWithTimeInterval:[[NSDate distantFuture] timeIntervalSinceNow]\n\t                                 target:self\n\t                               selector:@selector(ignore:)\n\t                               userInfo:nil\n\t                                repeats:YES];\n\t\n\tNSThread *currentThread = [NSThread currentThread];\n\tNSRunLoop *currentRunLoop = [NSRunLoop currentRunLoop];\n\t\n\tBOOL isCancelled = [currentThread isCancelled];\n\t\n\twhile (!isCancelled && [currentRunLoop runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]])\n\t{\n\t\tisCancelled = [currentThread isCancelled];\n\t}\n\t\n\tLogInfo(@\"CFStreamThread: Stopped\");\n}}\n\n+ (void)scheduleCFStreams:(GCDAsyncSocket *)asyncSocket\n{\n\tLogTrace();\n\tNSAssert([NSThread currentThread] == cfstreamThread, @\"Invoked on wrong thread\");\n\t\n\tCFRunLoopRef runLoop = CFRunLoopGetCurrent();\n\t\n\tif (asyncSocket->readStream)\n\t\tCFReadStreamScheduleWithRunLoop(asyncSocket->readStream, runLoop, kCFRunLoopDefaultMode);\n\t\n\tif (asyncSocket->writeStream)\n\t\tCFWriteStreamScheduleWithRunLoop(asyncSocket->writeStream, runLoop, kCFRunLoopDefaultMode);\n}\n\n+ (void)unscheduleCFStreams:(GCDAsyncSocket *)asyncSocket\n{\n\tLogTrace();\n\tNSAssert([NSThread currentThread] == cfstreamThread, @\"Invoked on wrong thread\");\n\t\n\tCFRunLoopRef runLoop = CFRunLoopGetCurrent();\n\t\n\tif (asyncSocket->readStream)\n\t\tCFReadStreamUnscheduleFromRunLoop(asyncSocket->readStream, runLoop, kCFRunLoopDefaultMode);\n\t\n\tif (asyncSocket->writeStream)\n\t\tCFWriteStreamUnscheduleFromRunLoop(asyncSocket->writeStream, runLoop, kCFRunLoopDefaultMode);\n}\n\nstatic void CFReadStreamCallback (CFReadStreamRef stream, CFStreamEventType type, void *pInfo)\n{\n\tGCDAsyncSocket *asyncSocket = (__bridge GCDAsyncSocket *)pInfo;\n\t\n\tswitch(type)\n\t{\n\t\tcase kCFStreamEventHasBytesAvailable:\n\t\t{\n\t\t\tdispatch_async(asyncSocket->socketQueue, ^{ @autoreleasepool {\n\t\t\t\t\n\t\t\t\tLogCVerbose(@\"CFReadStreamCallback - HasBytesAvailable\");\n\t\t\t\t\n\t\t\t\tif (asyncSocket->readStream != stream)\n\t\t\t\t\treturn_from_block;\n\t\t\t\t\n\t\t\t\tif ((asyncSocket->flags & kStartingReadTLS) && (asyncSocket->flags & kStartingWriteTLS))\n\t\t\t\t{\n\t\t\t\t\t// If we set kCFStreamPropertySSLSettings before we opened the streams, this might be a lie.\n\t\t\t\t\t// (A callback related to the tcp stream, but not to the SSL layer).\n\t\t\t\t\t\n\t\t\t\t\tif (CFReadStreamHasBytesAvailable(asyncSocket->readStream))\n\t\t\t\t\t{\n\t\t\t\t\t\tasyncSocket->flags |= kSecureSocketHasBytesAvailable;\n\t\t\t\t\t\t[asyncSocket cf_finishSSLHandshake];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tasyncSocket->flags |= kSecureSocketHasBytesAvailable;\n\t\t\t\t\t[asyncSocket doReadData];\n\t\t\t\t}\n\t\t\t}});\n\t\t\t\n\t\t\tbreak;\n\t\t}\n\t\tdefault:\n\t\t{\n\t\t\tNSError *error = (__bridge_transfer  NSError *)CFReadStreamCopyError(stream);\n\t\t\t\n\t\t\tif (error == nil && type == kCFStreamEventEndEncountered)\n\t\t\t{\n\t\t\t\terror = [asyncSocket connectionClosedError];\n\t\t\t}\n\t\t\t\n\t\t\tdispatch_async(asyncSocket->socketQueue, ^{ @autoreleasepool {\n\t\t\t\t\n\t\t\t\tLogCVerbose(@\"CFReadStreamCallback - Other\");\n\t\t\t\t\n\t\t\t\tif (asyncSocket->readStream != stream)\n\t\t\t\t\treturn_from_block;\n\t\t\t\t\n\t\t\t\tif ((asyncSocket->flags & kStartingReadTLS) && (asyncSocket->flags & kStartingWriteTLS))\n\t\t\t\t{\n\t\t\t\t\t[asyncSocket cf_abortSSLHandshake:error];\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t[asyncSocket closeWithError:error];\n\t\t\t\t}\n\t\t\t}});\n\t\t\t\n\t\t\tbreak;\n\t\t}\n\t}\n\t\n}\n\nstatic void CFWriteStreamCallback (CFWriteStreamRef stream, CFStreamEventType type, void *pInfo)\n{\n\tGCDAsyncSocket *asyncSocket = (__bridge GCDAsyncSocket *)pInfo;\n\t\n\tswitch(type)\n\t{\n\t\tcase kCFStreamEventCanAcceptBytes:\n\t\t{\n\t\t\tdispatch_async(asyncSocket->socketQueue, ^{ @autoreleasepool {\n\t\t\t\t\n\t\t\t\tLogCVerbose(@\"CFWriteStreamCallback - CanAcceptBytes\");\n\t\t\t\t\n\t\t\t\tif (asyncSocket->writeStream != stream)\n\t\t\t\t\treturn_from_block;\n\t\t\t\t\n\t\t\t\tif ((asyncSocket->flags & kStartingReadTLS) && (asyncSocket->flags & kStartingWriteTLS))\n\t\t\t\t{\n\t\t\t\t\t// If we set kCFStreamPropertySSLSettings before we opened the streams, this might be a lie.\n\t\t\t\t\t// (A callback related to the tcp stream, but not to the SSL layer).\n\t\t\t\t\t\n\t\t\t\t\tif (CFWriteStreamCanAcceptBytes(asyncSocket->writeStream))\n\t\t\t\t\t{\n\t\t\t\t\t\tasyncSocket->flags |= kSocketCanAcceptBytes;\n\t\t\t\t\t\t[asyncSocket cf_finishSSLHandshake];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tasyncSocket->flags |= kSocketCanAcceptBytes;\n\t\t\t\t\t[asyncSocket doWriteData];\n\t\t\t\t}\n\t\t\t}});\n\t\t\t\n\t\t\tbreak;\n\t\t}\n\t\tdefault:\n\t\t{\n\t\t\tNSError *error = (__bridge_transfer NSError *)CFWriteStreamCopyError(stream);\n\t\t\t\n\t\t\tif (error == nil && type == kCFStreamEventEndEncountered)\n\t\t\t{\n\t\t\t\terror = [asyncSocket connectionClosedError];\n\t\t\t}\n\t\t\t\n\t\t\tdispatch_async(asyncSocket->socketQueue, ^{ @autoreleasepool {\n\t\t\t\t\n\t\t\t\tLogCVerbose(@\"CFWriteStreamCallback - Other\");\n\t\t\t\t\n\t\t\t\tif (asyncSocket->writeStream != stream)\n\t\t\t\t\treturn_from_block;\n\t\t\t\t\n\t\t\t\tif ((asyncSocket->flags & kStartingReadTLS) && (asyncSocket->flags & kStartingWriteTLS))\n\t\t\t\t{\n\t\t\t\t\t[asyncSocket cf_abortSSLHandshake:error];\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t[asyncSocket closeWithError:error];\n\t\t\t\t}\n\t\t\t}});\n\t\t\t\n\t\t\tbreak;\n\t\t}\n\t}\n\t\n}\n\n- (BOOL)createReadAndWriteStream\n{\n\tLogTrace();\n\t\n\tNSAssert(dispatch_get_specific(IsOnSocketQueueOrTargetQueueKey), @\"Must be dispatched on socketQueue\");\n\t\n\t\n\tif (readStream || writeStream)\n\t{\n\t\t// Streams already created\n\t\treturn YES;\n\t}\n\t\n\tint socketFD = (socket4FD != SOCKET_NULL) ? socket4FD : (socket6FD != SOCKET_NULL) ? socket6FD : socketUN;\n\t\n\tif (socketFD == SOCKET_NULL)\n\t{\n\t\t// Cannot create streams without a file descriptor\n\t\treturn NO;\n\t}\n\t\n\tif (![self isConnected])\n\t{\n\t\t// Cannot create streams until file descriptor is connected\n\t\treturn NO;\n\t}\n\t\n\tLogVerbose(@\"Creating read and write stream...\");\n\t\n\tCFStreamCreatePairWithSocket(NULL, (CFSocketNativeHandle)socketFD, &readStream, &writeStream);\n\t\n\t// The kCFStreamPropertyShouldCloseNativeSocket property should be false by default (for our case).\n\t// But let's not take any chances.\n\t\n\tif (readStream)\n\t\tCFReadStreamSetProperty(readStream, kCFStreamPropertyShouldCloseNativeSocket, kCFBooleanFalse);\n\tif (writeStream)\n\t\tCFWriteStreamSetProperty(writeStream, kCFStreamPropertyShouldCloseNativeSocket, kCFBooleanFalse);\n\t\n\tif ((readStream == NULL) || (writeStream == NULL))\n\t{\n\t\tLogWarn(@\"Unable to create read and write stream...\");\n\t\t\n\t\tif (readStream)\n\t\t{\n\t\t\tCFReadStreamClose(readStream);\n\t\t\tCFRelease(readStream);\n\t\t\treadStream = NULL;\n\t\t}\n\t\tif (writeStream)\n\t\t{\n\t\t\tCFWriteStreamClose(writeStream);\n\t\t\tCFRelease(writeStream);\n\t\t\twriteStream = NULL;\n\t\t}\n\t\t\n\t\treturn NO;\n\t}\n\t\n\treturn YES;\n}\n\n- (BOOL)registerForStreamCallbacksIncludingReadWrite:(BOOL)includeReadWrite\n{\n\tLogVerbose(@\"%@ %@\", THIS_METHOD, (includeReadWrite ? @\"YES\" : @\"NO\"));\n\t\n\tNSAssert(dispatch_get_specific(IsOnSocketQueueOrTargetQueueKey), @\"Must be dispatched on socketQueue\");\n\tNSAssert((readStream != NULL && writeStream != NULL), @\"Read/Write stream is null\");\n\t\n\tstreamContext.version = 0;\n\tstreamContext.info = (__bridge void *)(self);\n\tstreamContext.retain = nil;\n\tstreamContext.release = nil;\n\tstreamContext.copyDescription = nil;\n\t\n\tCFOptionFlags readStreamEvents = kCFStreamEventErrorOccurred | kCFStreamEventEndEncountered;\n\tif (includeReadWrite)\n\t\treadStreamEvents |= kCFStreamEventHasBytesAvailable;\n\t\n\tif (!CFReadStreamSetClient(readStream, readStreamEvents, &CFReadStreamCallback, &streamContext))\n\t{\n\t\treturn NO;\n\t}\n\t\n\tCFOptionFlags writeStreamEvents = kCFStreamEventErrorOccurred | kCFStreamEventEndEncountered;\n\tif (includeReadWrite)\n\t\twriteStreamEvents |= kCFStreamEventCanAcceptBytes;\n\t\n\tif (!CFWriteStreamSetClient(writeStream, writeStreamEvents, &CFWriteStreamCallback, &streamContext))\n\t{\n\t\treturn NO;\n\t}\n\t\n\treturn YES;\n}\n\n- (BOOL)addStreamsToRunLoop\n{\n\tLogTrace();\n\t\n\tNSAssert(dispatch_get_specific(IsOnSocketQueueOrTargetQueueKey), @\"Must be dispatched on socketQueue\");\n\tNSAssert((readStream != NULL && writeStream != NULL), @\"Read/Write stream is null\");\n\t\n\tif (!(flags & kAddedStreamsToRunLoop))\n\t{\n\t\tLogVerbose(@\"Adding streams to runloop...\");\n\t\t\n\t\t[[self class] startCFStreamThreadIfNeeded];\n        dispatch_sync(cfstreamThreadSetupQueue, ^{\n            [[self class] performSelector:@selector(scheduleCFStreams:)\n                                 onThread:cfstreamThread\n                               withObject:self\n                            waitUntilDone:YES];\n        });\n\t\tflags |= kAddedStreamsToRunLoop;\n\t}\n\t\n\treturn YES;\n}\n\n- (void)removeStreamsFromRunLoop\n{\n\tLogTrace();\n\t\n\tNSAssert(dispatch_get_specific(IsOnSocketQueueOrTargetQueueKey), @\"Must be dispatched on socketQueue\");\n\tNSAssert((readStream != NULL && writeStream != NULL), @\"Read/Write stream is null\");\n\t\n\tif (flags & kAddedStreamsToRunLoop)\n\t{\n\t\tLogVerbose(@\"Removing streams from runloop...\");\n        \n        dispatch_sync(cfstreamThreadSetupQueue, ^{\n            [[self class] performSelector:@selector(unscheduleCFStreams:)\n                                 onThread:cfstreamThread\n                               withObject:self\n                            waitUntilDone:YES];\n        });\n\t\t[[self class] stopCFStreamThreadIfNeeded];\n\t\t\n\t\tflags &= ~kAddedStreamsToRunLoop;\n\t}\n}\n\n- (BOOL)openStreams\n{\n\tLogTrace();\n\t\n\tNSAssert(dispatch_get_specific(IsOnSocketQueueOrTargetQueueKey), @\"Must be dispatched on socketQueue\");\n\tNSAssert((readStream != NULL && writeStream != NULL), @\"Read/Write stream is null\");\n\t\n\tCFStreamStatus readStatus = CFReadStreamGetStatus(readStream);\n\tCFStreamStatus writeStatus = CFWriteStreamGetStatus(writeStream);\n\t\n\tif ((readStatus == kCFStreamStatusNotOpen) || (writeStatus == kCFStreamStatusNotOpen))\n\t{\n\t\tLogVerbose(@\"Opening read and write stream...\");\n\t\t\n\t\tBOOL r1 = CFReadStreamOpen(readStream);\n\t\tBOOL r2 = CFWriteStreamOpen(writeStream);\n\t\t\n\t\tif (!r1 || !r2)\n\t\t{\n\t\t\tLogError(@\"Error in CFStreamOpen\");\n\t\t\treturn NO;\n\t\t}\n\t}\n\t\n\treturn YES;\n}\n\n#endif\n\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n#pragma mark Advanced\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\n/**\n * See header file for big discussion of this method.\n**/\n- (BOOL)autoDisconnectOnClosedReadStream\n{\n\t// Note: YES means kAllowHalfDuplexConnection is OFF\n\t\n\tif (dispatch_get_specific(IsOnSocketQueueOrTargetQueueKey))\n\t{\n\t\treturn ((config & kAllowHalfDuplexConnection) == 0);\n\t}\n\telse\n\t{\n\t\t__block BOOL result;\n\t\t\n\t\tdispatch_sync(socketQueue, ^{\n            result = ((self->config & kAllowHalfDuplexConnection) == 0);\n\t\t});\n\t\t\n\t\treturn result;\n\t}\n}\n\n/**\n * See header file for big discussion of this method.\n**/\n- (void)setAutoDisconnectOnClosedReadStream:(BOOL)flag\n{\n\t// Note: YES means kAllowHalfDuplexConnection is OFF\n\t\n\tdispatch_block_t block = ^{\n\t\t\n\t\tif (flag)\n            self->config &= ~kAllowHalfDuplexConnection;\n\t\telse\n            self->config |= kAllowHalfDuplexConnection;\n\t};\n\t\n\tif (dispatch_get_specific(IsOnSocketQueueOrTargetQueueKey))\n\t\tblock();\n\telse\n\t\tdispatch_async(socketQueue, block);\n}\n\n\n/**\n * See header file for big discussion of this method.\n**/\n- (void)markSocketQueueTargetQueue:(dispatch_queue_t)socketNewTargetQueue\n{\n\tvoid *nonNullUnusedPointer = (__bridge void *)self;\n\tdispatch_queue_set_specific(socketNewTargetQueue, IsOnSocketQueueOrTargetQueueKey, nonNullUnusedPointer, NULL);\n}\n\n/**\n * See header file for big discussion of this method.\n**/\n- (void)unmarkSocketQueueTargetQueue:(dispatch_queue_t)socketOldTargetQueue\n{\n\tdispatch_queue_set_specific(socketOldTargetQueue, IsOnSocketQueueOrTargetQueueKey, NULL, NULL);\n}\n\n/**\n * See header file for big discussion of this method.\n**/\n- (void)performBlock:(dispatch_block_t)block\n{\n\tif (dispatch_get_specific(IsOnSocketQueueOrTargetQueueKey))\n\t\tblock();\n\telse\n\t\tdispatch_sync(socketQueue, block);\n}\n\n/**\n * Questions? Have you read the header file?\n**/\n- (int)socketFD\n{\n\tif (!dispatch_get_specific(IsOnSocketQueueOrTargetQueueKey))\n\t{\n\t\tLogWarn(@\"%@ - Method only available from within the context of a performBlock: invocation\", THIS_METHOD);\n\t\treturn SOCKET_NULL;\n\t}\n\t\n\tif (socket4FD != SOCKET_NULL)\n\t\treturn socket4FD;\n\telse\n\t\treturn socket6FD;\n}\n\n/**\n * Questions? Have you read the header file?\n**/\n- (int)socket4FD\n{\n\tif (!dispatch_get_specific(IsOnSocketQueueOrTargetQueueKey))\n\t{\n\t\tLogWarn(@\"%@ - Method only available from within the context of a performBlock: invocation\", THIS_METHOD);\n\t\treturn SOCKET_NULL;\n\t}\n\t\n\treturn socket4FD;\n}\n\n/**\n * Questions? Have you read the header file?\n**/\n- (int)socket6FD\n{\n\tif (!dispatch_get_specific(IsOnSocketQueueOrTargetQueueKey))\n\t{\n\t\tLogWarn(@\"%@ - Method only available from within the context of a performBlock: invocation\", THIS_METHOD);\n\t\treturn SOCKET_NULL;\n\t}\n\t\n\treturn socket6FD;\n}\n\n#if TARGET_OS_IPHONE\n\n/**\n * Questions? Have you read the header file?\n**/\n- (CFReadStreamRef)readStream\n{\n\tif (!dispatch_get_specific(IsOnSocketQueueOrTargetQueueKey))\n\t{\n\t\tLogWarn(@\"%@ - Method only available from within the context of a performBlock: invocation\", THIS_METHOD);\n\t\treturn NULL;\n\t}\n\t\n\tif (readStream == NULL)\n\t\t[self createReadAndWriteStream];\n\t\n\treturn readStream;\n}\n\n/**\n * Questions? Have you read the header file?\n**/\n- (CFWriteStreamRef)writeStream\n{\n\tif (!dispatch_get_specific(IsOnSocketQueueOrTargetQueueKey))\n\t{\n\t\tLogWarn(@\"%@ - Method only available from within the context of a performBlock: invocation\", THIS_METHOD);\n\t\treturn NULL;\n\t}\n\t\n\tif (writeStream == NULL)\n\t\t[self createReadAndWriteStream];\n\t\n\treturn writeStream;\n}\n\n- (BOOL)enableBackgroundingOnSocketWithCaveat:(BOOL)caveat\n{\n\tif (![self createReadAndWriteStream])\n\t{\n\t\t// Error occurred creating streams (perhaps socket isn't open)\n\t\treturn NO;\n\t}\n\t\n\tBOOL r1, r2;\n\t\n\tLogVerbose(@\"Enabling backgrouding on socket\");\n\t\n#pragma clang diagnostic push\n#pragma clang diagnostic ignored \"-Wdeprecated-declarations\"\n\tr1 = CFReadStreamSetProperty(readStream, kCFStreamNetworkServiceType, kCFStreamNetworkServiceTypeVoIP);\n\tr2 = CFWriteStreamSetProperty(writeStream, kCFStreamNetworkServiceType, kCFStreamNetworkServiceTypeVoIP);\n#pragma clang diagnostic pop\n\n\tif (!r1 || !r2)\n\t{\n\t\treturn NO;\n\t}\n\t\n\tif (!caveat)\n\t{\n\t\tif (![self openStreams])\n\t\t{\n\t\t\treturn NO;\n\t\t}\n\t}\n\t\n\treturn YES;\n}\n\n/**\n * Questions? Have you read the header file?\n**/\n- (BOOL)enableBackgroundingOnSocket\n{\n\tLogTrace();\n\t\n\tif (!dispatch_get_specific(IsOnSocketQueueOrTargetQueueKey))\n\t{\n\t\tLogWarn(@\"%@ - Method only available from within the context of a performBlock: invocation\", THIS_METHOD);\n\t\treturn NO;\n\t}\n\t\n\treturn [self enableBackgroundingOnSocketWithCaveat:NO];\n}\n\n- (BOOL)enableBackgroundingOnSocketWithCaveat // Deprecated in iOS 4.???\n{\n\t// This method was created as a workaround for a bug in iOS.\n\t// Apple has since fixed this bug.\n\t// I'm not entirely sure which version of iOS they fixed it in...\n\t\n\tLogTrace();\n\t\n\tif (!dispatch_get_specific(IsOnSocketQueueOrTargetQueueKey))\n\t{\n\t\tLogWarn(@\"%@ - Method only available from within the context of a performBlock: invocation\", THIS_METHOD);\n\t\treturn NO;\n\t}\n\t\n\treturn [self enableBackgroundingOnSocketWithCaveat:YES];\n}\n\n#endif\n\n- (SSLContextRef)sslContext\n{\n\tif (!dispatch_get_specific(IsOnSocketQueueOrTargetQueueKey))\n\t{\n\t\tLogWarn(@\"%@ - Method only available from within the context of a performBlock: invocation\", THIS_METHOD);\n\t\treturn NULL;\n\t}\n\t\n\treturn sslContext;\n}\n\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n#pragma mark Class Utilities\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\n+ (NSMutableArray *)lookupHost:(NSString *)host port:(uint16_t)port error:(NSError **)errPtr\n{\n\tLogTrace();\n\t\n\tNSMutableArray *addresses = nil;\n\tNSError *error = nil;\n\t\n\tif ([host isEqualToString:@\"localhost\"] || [host isEqualToString:@\"loopback\"])\n\t{\n\t\t// Use LOOPBACK address\n\t\tstruct sockaddr_in nativeAddr4;\n\t\tnativeAddr4.sin_len         = sizeof(struct sockaddr_in);\n\t\tnativeAddr4.sin_family      = AF_INET;\n\t\tnativeAddr4.sin_port        = htons(port);\n\t\tnativeAddr4.sin_addr.s_addr = htonl(INADDR_LOOPBACK);\n\t\tmemset(&(nativeAddr4.sin_zero), 0, sizeof(nativeAddr4.sin_zero));\n\t\t\n\t\tstruct sockaddr_in6 nativeAddr6;\n\t\tnativeAddr6.sin6_len        = sizeof(struct sockaddr_in6);\n\t\tnativeAddr6.sin6_family     = AF_INET6;\n\t\tnativeAddr6.sin6_port       = htons(port);\n\t\tnativeAddr6.sin6_flowinfo   = 0;\n\t\tnativeAddr6.sin6_addr       = in6addr_loopback;\n\t\tnativeAddr6.sin6_scope_id   = 0;\n\t\t\n\t\t// Wrap the native address structures\n\t\t\n\t\tNSData *address4 = [NSData dataWithBytes:&nativeAddr4 length:sizeof(nativeAddr4)];\n\t\tNSData *address6 = [NSData dataWithBytes:&nativeAddr6 length:sizeof(nativeAddr6)];\n\t\t\n\t\taddresses = [NSMutableArray arrayWithCapacity:2];\n\t\t[addresses addObject:address4];\n\t\t[addresses addObject:address6];\n\t}\n\telse\n\t{\n\t\tNSString *portStr = [NSString stringWithFormat:@\"%hu\", port];\n\t\t\n\t\tstruct addrinfo hints, *res, *res0;\n\t\t\n\t\tmemset(&hints, 0, sizeof(hints));\n\t\thints.ai_family   = PF_UNSPEC;\n\t\thints.ai_socktype = SOCK_STREAM;\n\t\thints.ai_protocol = IPPROTO_TCP;\n\t\t\n\t\tint gai_error = getaddrinfo([host UTF8String], [portStr UTF8String], &hints, &res0);\n\t\t\n\t\tif (gai_error)\n\t\t{\n\t\t\terror = [self gaiError:gai_error];\n\t\t}\n\t\telse\n\t\t{\n\t\t\tNSUInteger capacity = 0;\n\t\t\tfor (res = res0; res; res = res->ai_next)\n\t\t\t{\n\t\t\t\tif (res->ai_family == AF_INET || res->ai_family == AF_INET6) {\n\t\t\t\t\tcapacity++;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\taddresses = [NSMutableArray arrayWithCapacity:capacity];\n\t\t\t\n\t\t\tfor (res = res0; res; res = res->ai_next)\n\t\t\t{\n\t\t\t\tif (res->ai_family == AF_INET)\n\t\t\t\t{\n\t\t\t\t\t// Found IPv4 address.\n\t\t\t\t\t// Wrap the native address structure, and add to results.\n\t\t\t\t\t\n\t\t\t\t\tNSData *address4 = [NSData dataWithBytes:res->ai_addr length:res->ai_addrlen];\n\t\t\t\t\t[addresses addObject:address4];\n\t\t\t\t}\n\t\t\t\telse if (res->ai_family == AF_INET6)\n\t\t\t\t{\n\t\t\t\t\t// Fixes connection issues with IPv6\n\t\t\t\t\t// https://github.com/robbiehanson/CocoaAsyncSocket/issues/429#issuecomment-222477158\n\t\t\t\t\t\n\t\t\t\t\t// Found IPv6 address.\n\t\t\t\t\t// Wrap the native address structure, and add to results.\n\t\t\t\t\t\n\t\t\t\t\tstruct sockaddr_in6 *sockaddr = (struct sockaddr_in6 *)(void *)res->ai_addr;\n\t\t\t\t\tin_port_t *portPtr = &sockaddr->sin6_port;\n\t\t\t\t\tif ((portPtr != NULL) && (*portPtr == 0)) {\n\t\t\t\t\t        *portPtr = htons(port);\n\t\t\t\t\t}\n\n\t\t\t\t\tNSData *address6 = [NSData dataWithBytes:res->ai_addr length:res->ai_addrlen];\n\t\t\t\t\t[addresses addObject:address6];\n\t\t\t\t}\n\t\t\t}\n\t\t\tfreeaddrinfo(res0);\n\t\t\t\n\t\t\tif ([addresses count] == 0)\n\t\t\t{\n\t\t\t\terror = [self gaiError:EAI_FAIL];\n\t\t\t}\n\t\t}\n\t}\n\t\n\tif (errPtr) *errPtr = error;\n\treturn addresses;\n}\n\n+ (NSString *)hostFromSockaddr4:(const struct sockaddr_in *)pSockaddr4\n{\n\tchar addrBuf[INET_ADDRSTRLEN];\n\t\n\tif (inet_ntop(AF_INET, &pSockaddr4->sin_addr, addrBuf, (socklen_t)sizeof(addrBuf)) == NULL)\n\t{\n\t\taddrBuf[0] = '\\0';\n\t}\n\t\n\treturn [NSString stringWithCString:addrBuf encoding:NSASCIIStringEncoding];\n}\n\n+ (NSString *)hostFromSockaddr6:(const struct sockaddr_in6 *)pSockaddr6\n{\n\tchar addrBuf[INET6_ADDRSTRLEN];\n\t\n\tif (inet_ntop(AF_INET6, &pSockaddr6->sin6_addr, addrBuf, (socklen_t)sizeof(addrBuf)) == NULL)\n\t{\n\t\taddrBuf[0] = '\\0';\n\t}\n\t\n\treturn [NSString stringWithCString:addrBuf encoding:NSASCIIStringEncoding];\n}\n\n+ (uint16_t)portFromSockaddr4:(const struct sockaddr_in *)pSockaddr4\n{\n\treturn ntohs(pSockaddr4->sin_port);\n}\n\n+ (uint16_t)portFromSockaddr6:(const struct sockaddr_in6 *)pSockaddr6\n{\n\treturn ntohs(pSockaddr6->sin6_port);\n}\n\n+ (NSURL *)urlFromSockaddrUN:(const struct sockaddr_un *)pSockaddr\n{\n\tNSString *path = [NSString stringWithUTF8String:pSockaddr->sun_path];\n\treturn [NSURL fileURLWithPath:path];\n}\n\n+ (NSString *)hostFromAddress:(NSData *)address\n{\n\tNSString *host;\n\t\n\tif ([self getHost:&host port:NULL fromAddress:address])\n\t\treturn host;\n\telse\n\t\treturn nil;\n}\n\n+ (uint16_t)portFromAddress:(NSData *)address\n{\n\tuint16_t port;\n\t\n\tif ([self getHost:NULL port:&port fromAddress:address])\n\t\treturn port;\n\telse\n\t\treturn 0;\n}\n\n+ (BOOL)isIPv4Address:(NSData *)address\n{\n\tif ([address length] >= sizeof(struct sockaddr))\n\t{\n\t\tconst struct sockaddr *sockaddrX = [address bytes];\n\t\t\n\t\tif (sockaddrX->sa_family == AF_INET) {\n\t\t\treturn YES;\n\t\t}\n\t}\n\t\n\treturn NO;\n}\n\n+ (BOOL)isIPv6Address:(NSData *)address\n{\n\tif ([address length] >= sizeof(struct sockaddr))\n\t{\n\t\tconst struct sockaddr *sockaddrX = [address bytes];\n\t\t\n\t\tif (sockaddrX->sa_family == AF_INET6) {\n\t\t\treturn YES;\n\t\t}\n\t}\n\t\n\treturn NO;\n}\n\n+ (BOOL)getHost:(NSString **)hostPtr port:(uint16_t *)portPtr fromAddress:(NSData *)address\n{\n\treturn [self getHost:hostPtr port:portPtr family:NULL fromAddress:address];\n}\n\n+ (BOOL)getHost:(NSString **)hostPtr port:(uint16_t *)portPtr family:(sa_family_t *)afPtr fromAddress:(NSData *)address\n{\n\tif ([address length] >= sizeof(struct sockaddr))\n\t{\n\t\tconst struct sockaddr *sockaddrX = [address bytes];\n\t\t\n\t\tif (sockaddrX->sa_family == AF_INET)\n\t\t{\n\t\t\tif ([address length] >= sizeof(struct sockaddr_in))\n\t\t\t{\n\t\t\t\tstruct sockaddr_in sockaddr4;\n\t\t\t\tmemcpy(&sockaddr4, sockaddrX, sizeof(sockaddr4));\n\t\t\t\t\n\t\t\t\tif (hostPtr) *hostPtr = [self hostFromSockaddr4:&sockaddr4];\n\t\t\t\tif (portPtr) *portPtr = [self portFromSockaddr4:&sockaddr4];\n\t\t\t\tif (afPtr)   *afPtr   = AF_INET;\n\t\t\t\t\n\t\t\t\treturn YES;\n\t\t\t}\n\t\t}\n\t\telse if (sockaddrX->sa_family == AF_INET6)\n\t\t{\n\t\t\tif ([address length] >= sizeof(struct sockaddr_in6))\n\t\t\t{\n\t\t\t\tstruct sockaddr_in6 sockaddr6;\n\t\t\t\tmemcpy(&sockaddr6, sockaddrX, sizeof(sockaddr6));\n\t\t\t\t\n\t\t\t\tif (hostPtr) *hostPtr = [self hostFromSockaddr6:&sockaddr6];\n\t\t\t\tif (portPtr) *portPtr = [self portFromSockaddr6:&sockaddr6];\n\t\t\t\tif (afPtr)   *afPtr   = AF_INET6;\n\t\t\t\t\n\t\t\t\treturn YES;\n\t\t\t}\n\t\t}\n\t}\n\t\n\treturn NO;\n}\n\n+ (NSData *)CRLFData\n{\n\treturn [NSData dataWithBytes:\"\\x0D\\x0A\" length:2];\n}\n\n+ (NSData *)CRData\n{\n\treturn [NSData dataWithBytes:\"\\x0D\" length:1];\n}\n\n+ (NSData *)LFData\n{\n\treturn [NSData dataWithBytes:\"\\x0A\" length:1];\n}\n\n+ (NSData *)ZeroData\n{\n\treturn [NSData dataWithBytes:\"\" length:1];\n}\n\n@end\t\n"
  },
  {
    "path": "Trojan/tcping/tcping.swift",
    "content": "//\n//  tcping.swift\n//  tcping\n//\n//  Created by ParadiseDuo on 2020/3/26.\n//  Copyright © 2020 ParadiseDuo. All rights reserved.\n//\n\nimport Cocoa\n\nclass TcpCollection {\n    \n    fileprivate var list = [tcping]()\n    \n    func append(_ newElm: tcping) {\n        list.append(newElm)\n    }\n    \n    var count: Int {\n        get {\n            return list.count\n        }\n    }\n    \n    var first: tcping? {\n        get {\n            return list.first\n        }\n    }\n    \n    subscript(index:Int) -> tcping {\n        get {\n            return list[index]\n        }\n        set(newElm) {\n            list.insert(newElm, at: index)\n        }\n    }\n    \n    func insert(_ newElm: tcping, index: Int)  {\n        list.insert(newElm, at: index)\n    }\n    \n    func averageSpeed() -> NSNumber {\n        let successArr = list.filter { (p) -> Bool in\n            return p.speed != TimeInterval.infinity\n        }\n        if successArr.count > 0 {\n            let avge = successArr.reduce(0.0) { (result: Double, p: tcping) -> Double in return result+p.speed}/Double(successArr.count)\n            return NSNumber(value: avge)\n        }\n        return NSNumber(value: Double.infinity)\n    }\n}\n\nclass tcping: NSObject, GCDAsyncSocketDelegate {\n    var socket:GCDAsyncSocket?\n    var startTime = Date()\n    var speed = TimeInterval.infinity\n    var domain = \"\"\n    var host = \"\"\n    var port:UInt16 = 80\n    \n    func connectSocket(domain: String, port: UInt16) {\n        self.domain = domain\n        self.port = port\n        self.socket = GCDAsyncSocket(delegate: self, delegateQueue: DispatchQueue.main)\n        if !self.socket!.isConnected {\n            do {\n                startTime = Date()\n                try self.socket?.connect(toHost: domain, onPort: port, withTimeout: Tcping.timeout)\n            } catch let error {\n                print(error)\n            }\n        }\n    }\n    \n    func socket(_ sock: GCDAsyncSocket, didConnectToHost host: String, port: UInt16) {\n        self.host = host\n        self.speed = Date().timeIntervalSince(startTime) * 1000\n        sock.disconnect()\n    }\n}\n\nclass Tcping {\n    static let timeout:TimeInterval = 0.9\n    \n    var count = 5\n    var timer:Timer?\n    var speedStringDomain = [String: TcpCollection]()\n    var pings = [tcping]()\n    \n    func ping(finish: @escaping ()->()) {\n        let SerMgr = Profiles.shared\n        if SerMgr.profiles.count <= 0 {\n            finish()\n            return\n        }\n        nerverTestBefore = false\n        count = 5\n        if let _ = self.timer {\n            self.timer?.invalidate()\n            self.timer = nil\n        }\n        self.timer = Timer(timeInterval: Tcping.timeout+0.1, repeats: true) { [weak self] (t) in\n            guard let w = self else {\n                finish()\n                return\n            }\n            if w.count > 0 {\n                print(\"Tcping Residual times \\(w.count)\")\n                for item in SerMgr.profiles {\n                    let t = tcping()\n                    w.pings.append(t)\n                    t.connectSocket(domain: item.client.remote_addr, port: UInt16(item.client.remote_port))\n                }\n                w.count-=1\n            } else {\n                w.timer?.invalidate()\n                w.timer = nil\n                //对结果按照域名进行分组\n                for item in w.pings {\n                    var inserted = false\n                    if let ts = w.speedStringDomain[item.domain] {\n                        ts.append(item)\n                        inserted = true\n                    }\n                    if !inserted {\n                        let ts = TcpCollection()\n                        ts.append(item)\n                        w.speedStringDomain[item.domain] = ts\n                    }\n                }\n                \n                let nf = NumberFormatter()\n                nf.numberStyle = .decimal\n                nf.maximumFractionDigits = 3\n                var fastID = 0\n                var fastSpeed = Double.infinity\n                //存数据与找出最快节点\n                for i in 0..<SerMgr.profiles.count {\n                    let speed = w.speedStringDomain[SerMgr.profiles[i].client.remote_addr]!.averageSpeed()\n                    if speed.doubleValue != Double.infinity {\n                        SerMgr.profiles[i].latency = speed\n                    }\n                    if speed.doubleValue < fastSpeed {\n                        fastSpeed = speed.doubleValue\n                        fastID = i\n                    }\n                }\n                \n                if fastSpeed != Double.infinity {\n                    let ft = NumberFormatter.three(SerMgr.profiles[fastID].latency)\n                    let notice = NSUserNotification()\n                    notice.title = \"TCP测试完成！最快\\(ft)ms\"\n                    notice.subtitle = \"最快的是\\(SerMgr.profiles[fastID].name)\"\n                    \n                    NSUserNotificationCenter.default.deliver(notice)\n                    \n                    UserDefaults.standard.setValue(\"\\(ft)\", forKey: USERDEFAULTS_FASTEST_NODE)\n                    UserDefaults.standard.synchronize()\n                    \n                    DispatchQueue.main.async {\n                        finish()\n                    }\n                }\n            }\n        }\n        RunLoop.main.add(self.timer!, forMode: RunLoop.Mode.common)\n    }\n    \n    deinit {\n        print(\"&&&&& tcping deinit &&&&&\")\n    }\n}\n"
  },
  {
    "path": "Trojan/zh-Hans.lproj/Localizable.strings",
    "content": "/* \n  Localizable.strings\n  Trojan\n\n  Created by Paradiseduo on 2020/6/19.\n  Copyright © 2020 ParadiseDuo. All rights reserved.\n*/\n\n\"Turn Trojan On\" = \"启动Trojan\";\n\"Turn Trojan Off\" = \"关闭Trojan\";\n\"Trojan: Off\" = \"Trojan: 关闭\";\n\"Trojan: On\" = \"Trojan: 启动\";\n\"Export Command Copied.\" = \"命令已拷贝\";\n\"Export Command Copied Failed.\" = \"拷贝命令失败\";\n\"Logs Cleand\" = \"日志已清除\";\n"
  },
  {
    "path": "Trojan/zh-Hans.lproj/MainMenu.strings",
    "content": "\n/* Class = \"NSMenuItem\"; title = \"Clean Logs\"; ObjectID = \"0PN-XY-ZXt\"; */\n\"0PN-XY-ZXt.title\" = \"清除日志\";\n\n/* Class = \"NSMenuItem\"; title = \"Quit\"; ObjectID = \"9WC-iB-Jq8\"; */\n\"9WC-iB-Jq8.title\" = \"退出\";\n\n/* Class = \"NSMenuItem\"; title = \"Check Update\"; ObjectID = \"BLJ-op-AkG\"; */\n\"BLJ-op-AkG.title\" = \"检查更新\";\n\n/* Class = \"NSMenuItem\"; title = \"Export Command Line To Pasteboard\"; ObjectID = \"Bea-Hp-fhg\"; */\n\"Bea-Hp-fhg.title\" = \"复制终端代理命令\";\n\n/* Class = \"NSMenuItem\"; title = \"ACL Auto\"; ObjectID = \"NEA-Fa-rON\"; */\n\"NEA-Fa-rON.title\" = \"ACL自动\";\n\n/* Class = \"NSMenuItem\"; title = \"Manual Mode\"; ObjectID = \"REy-hH-h4P\"; */\n\"REy-hH-h4P.title\" = \"手动模式\";\n\n/* Class = \"NSMenuItem\"; title = \"Turn Trojan On\"; ObjectID = \"SL2-0h-OFw\"; */\n\"SL2-0h-OFw.title\" = \"Turn Trojan On\";\n\n/* Class = \"NSMenuItem\"; title = \"Trojan: On\"; ObjectID = \"VPI-fv-1dZ\"; */\n\"VPI-fv-1dZ.title\" = \"Trojan: On\";\n\n/* Class = \"NSMenuItem\"; title = \"About\"; ObjectID = \"YkQ-MK-047\"; */\n\"YkQ-MK-047.title\" = \"关于\";\n\n/* Class = \"NSMenuItem\"; title = \"ACL Mode\"; ObjectID = \"b2z-2C-t82\"; */\n\"b2z-2C-t82.title\" = \"ACL模式\";\n\n/* Class = \"NSMenuItem\"; title = \"White List Mode\"; ObjectID = \"czN-6H-Giu\"; */\n\"czN-6H-Giu.title\" = \"白名单模式\";\n\n/* Class = \"NSMenuItem\"; title = \"Global Mode\"; ObjectID = \"fvC-5Z-4w5\"; */\n\"fvC-5Z-4w5.title\" = \"全局模式\";\n\n/* Class = \"NSMenuItem\"; title = \"Auto Mode Base On PAC\"; ObjectID = \"gh3-ld-apY\"; */\n\"gh3-ld-apY.title\" = \"PAC自动模式\";\n\n/* Class = \"NSMenuItem\"; title = \"Help\"; ObjectID = \"i2H-13-hlp\"; */\n\"i2H-13-hlp.title\" = \"帮助\";\n\n/* Class = \"NSMenuItem\"; title = \"⚙ Servers Setting\"; ObjectID = \"nGS-Ow-TSH\"; */\n\"nGS-Ow-TSH.title\" = \"⚙ 服务器设置\";\n\n/* Class = \"NSMenuItem\"; title = \"Feedback\"; ObjectID = \"nHU-cq-FkI\"; */\n\"nHU-cq-FkI.title\" = \"问题反馈\";\n\n/* Class = \"NSMenuItem\"; title = \"⚙ Settings\"; ObjectID = \"nzW-Ph-yuS\"; */\n\"nzW-Ph-yuS.title\" = \"⚙ 设置\";\n\n/* Class = \"NSMenuItem\"; title = \"⚙ View Logs\"; ObjectID = \"p8A-3V-2aa\"; */\n\"p8A-3V-2aa.title\" = \"⚙ 查看日志\";\n\n/* Class = \"NSMenuItem\"; title = \"Proxy Back China\"; ObjectID = \"x6U-Ur-hKu\"; */\n\"x6U-Ur-hKu.title\" = \"代理大陆IP\";\n\n\"qJU-bB-Y5c.title\" = \"固定宽度\";\n\n\"mwK-zU-e1F.title\" = \"关闭\";\n\n\"Eur-eP-1FK.title\" = \"选择服务器\";\n\n\"KTm-qa-dNf.title\" = \"服务器订阅\";\n\n\"ags-VN-M7s.title\" = \"⚙ 订阅设置\";\n\n\"hEu-gf-24N.title\" = \"更新订阅（通过代理）\";\n\n\"Gga-2f-cc5.title\" = \"更新订阅（不通过代理）\";\n\n\"CpR-44-ZNN.title\" = \"服务器延迟测试\";\n"
  },
  {
    "path": "Trojan.xcodeproj/project.pbxproj",
    "content": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 51;\n\tobjects = {\n\n/* Begin PBXBuildFile section */\n\t\t39900A524BE139E9D8616552 /* libPods-ProxyConfHelper.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1130D936E0F21D05BF85D0A1 /* libPods-ProxyConfHelper.a */; };\n\t\t83415DA4E43B0E97B0148C26 /* Pods_Trojan.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2D6A00262839FD947FB40D30 /* Pods_Trojan.framework */; };\n\t\tBE11D0A224611D9100075E25 /* install_helper.sh in Resources */ = {isa = PBXBuildFile; fileRef = BE11D0A124611D9100075E25 /* install_helper.sh */; };\n\t\tBE11D0A52461204C00075E25 /* ProxyConfHelper in Resources */ = {isa = PBXBuildFile; fileRef = BE524E04245EFF3C003F3E80 /* ProxyConfHelper */; };\n\t\tBE11D0B12461232E00075E25 /* LaunchAgentHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = BE11D0B02461232E00075E25 /* LaunchAgentHelper.swift */; };\n\t\tBE11D0B32461243600075E25 /* install_privoxy.sh in Resources */ = {isa = PBXBuildFile; fileRef = BE11D0B22461243600075E25 /* install_privoxy.sh */; };\n\t\tBE11D0B52461246A00075E25 /* privoxy in Resources */ = {isa = PBXBuildFile; fileRef = BE11D0B42461246A00075E25 /* privoxy */; };\n\t\tBE11D0B92461248700075E25 /* reload_conf_privoxy.sh in Resources */ = {isa = PBXBuildFile; fileRef = BE11D0B82461248700075E25 /* reload_conf_privoxy.sh */; };\n\t\tBE11D0BB246124A700075E25 /* start_privoxy.sh in Resources */ = {isa = PBXBuildFile; fileRef = BE11D0BA246124A700075E25 /* start_privoxy.sh */; };\n\t\tBE11D0BD246124BA00075E25 /* stop_privoxy.sh in Resources */ = {isa = PBXBuildFile; fileRef = BE11D0BC246124BA00075E25 /* stop_privoxy.sh */; };\n\t\tBE11D0BF246124D600075E25 /* remove_privoxy.sh in Resources */ = {isa = PBXBuildFile; fileRef = BE11D0BE246124D600075E25 /* remove_privoxy.sh */; };\n\t\tBE11D0C12461256100075E25 /* privoxy.config.example in Resources */ = {isa = PBXBuildFile; fileRef = BE11D0C02461256100075E25 /* privoxy.config.example */; };\n\t\tBE11D0C22461289400075E25 /* libpcre.1.dylib in Resources */ = {isa = PBXBuildFile; fileRef = BE11D0B62461247100075E25 /* libpcre.1.dylib */; };\n\t\tBE464A03243C29CE00BE8336 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = BE464A02243C29CE00BE8336 /* AppDelegate.swift */; };\n\t\tBE464A05243C29CE00BE8336 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = BE464A04243C29CE00BE8336 /* Assets.xcassets */; };\n\t\tBE464A08243C29CE00BE8336 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = BE464A06243C29CE00BE8336 /* MainMenu.xib */; };\n\t\tBE464A11243C29DA00BE8336 /* trojan in Resources */ = {isa = PBXBuildFile; fileRef = BE464A10243C29DA00BE8336 /* trojan */; };\n\t\tBE464A13243C2A7E00BE8336 /* StatusMenuManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = BE464A12243C2A7E00BE8336 /* StatusMenuManager.swift */; };\n\t\tBE464A15243C2A8300BE8336 /* Profile.swift in Sources */ = {isa = PBXBuildFile; fileRef = BE464A14243C2A8300BE8336 /* Profile.swift */; };\n\t\tBE464A17243C2A8900BE8336 /* Json.swift in Sources */ = {isa = PBXBuildFile; fileRef = BE464A16243C2A8900BE8336 /* Json.swift */; };\n\t\tBE464A1B243C2AA100BE8336 /* CommandLine.swift in Sources */ = {isa = PBXBuildFile; fileRef = BE464A1A243C2AA100BE8336 /* CommandLine.swift */; };\n\t\tBE464A1D243C2AA500BE8336 /* Configuration.swift in Sources */ = {isa = PBXBuildFile; fileRef = BE464A1C243C2AA500BE8336 /* Configuration.swift */; };\n\t\tBE464A1F243C2AA900BE8336 /* VersionChecker.swift in Sources */ = {isa = PBXBuildFile; fileRef = BE464A1E243C2AA900BE8336 /* VersionChecker.swift */; };\n\t\tBE464A28243C2ABC00BE8336 /* LogWindowController.xib in Resources */ = {isa = PBXBuildFile; fileRef = BE464A22243C2ABC00BE8336 /* LogWindowController.xib */; };\n\t\tBE464A29243C2ABC00BE8336 /* ToastWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BE464A23243C2ABC00BE8336 /* ToastWindowController.swift */; };\n\t\tBE464A2A243C2ABC00BE8336 /* LogWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BE464A24243C2ABC00BE8336 /* LogWindowController.swift */; };\n\t\tBE464A2B243C2ABC00BE8336 /* SettingWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BE464A25243C2ABC00BE8336 /* SettingWindowController.swift */; };\n\t\tBE464A2C243C2ABC00BE8336 /* ToastWindowController.xib in Resources */ = {isa = PBXBuildFile; fileRef = BE464A26243C2ABC00BE8336 /* ToastWindowController.xib */; };\n\t\tBE47162B252092A6001F8B18 /* NetSpeedMonitor.m in Sources */ = {isa = PBXBuildFile; fileRef = BE47162A252092A6001F8B18 /* NetSpeedMonitor.m */; };\n\t\tBE47162F25209534001F8B18 /* SpeedTools.swift in Sources */ = {isa = PBXBuildFile; fileRef = BE47162E25209534001F8B18 /* SpeedTools.swift */; };\n\t\tBE524E07245EFF3C003F3E80 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = BE524E06245EFF3C003F3E80 /* main.m */; };\n\t\tBE524E0E245F00E6003F3E80 /* ProxyConfHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = BE524E0C245F00E6003F3E80 /* ProxyConfHelper.m */; };\n\t\tBE59998A247923C5002177A2 /* SettingsWIndowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BE599988247923C5002177A2 /* SettingsWIndowController.swift */; };\n\t\tBE59998D24792E06002177A2 /* LoginServiceKit.swift in Sources */ = {isa = PBXBuildFile; fileRef = BE59998C24792E06002177A2 /* LoginServiceKit.swift */; };\n\t\tBEA246B9253031EB00F7B080 /* SubscribePreferenceWindowController.xib in Resources */ = {isa = PBXBuildFile; fileRef = BEA246BB253031EB00F7B080 /* SubscribePreferenceWindowController.xib */; };\n\t\tBEA246E825303F4200F7B080 /* ConnectTestigManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = BEA246E725303F4200F7B080 /* ConnectTestigManager.swift */; };\n\t\tBEA246EF25303F9500F7B080 /* GCDAsyncSocket.m in Sources */ = {isa = PBXBuildFile; fileRef = BEA246ED25303F9500F7B080 /* GCDAsyncSocket.m */; };\n\t\tBEA246F025303F9500F7B080 /* tcping.swift in Sources */ = {isa = PBXBuildFile; fileRef = BEA246EE25303F9500F7B080 /* tcping.swift */; };\n\t\tBEAB090F252FFE8C00B0BD3E /* Subscribe.swift in Sources */ = {isa = PBXBuildFile; fileRef = BEAB090E252FFE8C00B0BD3E /* Subscribe.swift */; };\n\t\tBEAB0913252FFEEA00B0BD3E /* Network.swift in Sources */ = {isa = PBXBuildFile; fileRef = BEAB0912252FFEEA00B0BD3E /* Network.swift */; };\n\t\tBEAB09172530006000B0BD3E /* Utils.swift in Sources */ = {isa = PBXBuildFile; fileRef = BEAB09162530006000B0BD3E /* Utils.swift */; };\n\t\tBEAB091B25300F5E00B0BD3E /* SubscribeManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = BEAB091A25300F5E00B0BD3E /* SubscribeManager.swift */; };\n\t\tBEAB09232530104700B0BD3E /* SubscribePreferenceWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BEAB09212530104700B0BD3E /* SubscribePreferenceWindowController.swift */; };\n\t\tBEC48A01245FC79000891EAC /* PAC.swift in Sources */ = {isa = PBXBuildFile; fileRef = BEC48A00245FC79000891EAC /* PAC.swift */; };\n\t\tBEC48A0B245FC8C600891EAC /* backchn.acl in Resources */ = {isa = PBXBuildFile; fileRef = BEC48A03245FC8C500891EAC /* backchn.acl */; };\n\t\tBEC48A0C245FC8C600891EAC /* whitelist.pac in Resources */ = {isa = PBXBuildFile; fileRef = BEC48A04245FC8C600891EAC /* whitelist.pac */; };\n\t\tBEC48A0D245FC8C600891EAC /* chn.acl in Resources */ = {isa = PBXBuildFile; fileRef = BEC48A05245FC8C600891EAC /* chn.acl */; };\n\t\tBEC48A0E245FC8C600891EAC /* gfwlist.txt in Resources */ = {isa = PBXBuildFile; fileRef = BEC48A06245FC8C600891EAC /* gfwlist.txt */; };\n\t\tBEC48A0F245FC8C600891EAC /* whiteiplist.pac in Resources */ = {isa = PBXBuildFile; fileRef = BEC48A07245FC8C600891EAC /* whiteiplist.pac */; };\n\t\tBEC48A10245FC8C600891EAC /* abp.js in Resources */ = {isa = PBXBuildFile; fileRef = BEC48A08245FC8C600891EAC /* abp.js */; };\n\t\tBEC48A11245FC8C600891EAC /* user-rule.txt in Resources */ = {isa = PBXBuildFile; fileRef = BEC48A09245FC8C600891EAC /* user-rule.txt */; };\n\t\tBEC48A12245FC8C600891EAC /* gfwlist.acl in Resources */ = {isa = PBXBuildFile; fileRef = BEC48A0A245FC8C600891EAC /* gfwlist.acl */; };\n\t\tBEFBF63E243CC1D0006972DF /* EditableNSTextView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BEFBF63D243CC1D0006972DF /* EditableNSTextView.swift */; };\n\t\tE82CD55F249C781000EA38FD /* SettingWindowController.xib in Resources */ = {isa = PBXBuildFile; fileRef = E82CD561249C781000EA38FD /* SettingWindowController.xib */; };\n\t\tE82CD565249C788400EA38FD /* SettingsWIndowController.xib in Resources */ = {isa = PBXBuildFile; fileRef = E82CD567249C788400EA38FD /* SettingsWIndowController.xib */; };\n\t\tE82CD56D249C7A3E00EA38FD /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = E82CD56F249C7A3E00EA38FD /* Localizable.strings */; };\n\t\tE8BA62A7247CD3EE00557A6E /* install_trojan.sh in Resources */ = {isa = PBXBuildFile; fileRef = E8BA62A6247CD3EE00557A6E /* install_trojan.sh */; };\n\t\tE8BA62A9247CD47800557A6E /* start_trojan.sh in Resources */ = {isa = PBXBuildFile; fileRef = E8BA62A8247CD47800557A6E /* start_trojan.sh */; };\n\t\tE8BA62AB247CD49600557A6E /* stop_trojan.sh in Resources */ = {isa = PBXBuildFile; fileRef = E8BA62AA247CD49600557A6E /* stop_trojan.sh */; };\n\t\tE8BA62AD247CD4B900557A6E /* reload_conf_trojan.sh in Resources */ = {isa = PBXBuildFile; fileRef = E8BA62AC247CD4B900557A6E /* reload_conf_trojan.sh */; };\n\t\tE8BA62AF247CD4DA00557A6E /* remove_trojan.sh in Resources */ = {isa = PBXBuildFile; fileRef = E8BA62AE247CD4DA00557A6E /* remove_trojan.sh */; };\n\t\tE8BA62B2247CEBA500557A6E /* ModeSwitcher.swift in Sources */ = {isa = PBXBuildFile; fileRef = E8BA62B1247CEBA500557A6E /* ModeSwitcher.swift */; };\n/* End PBXBuildFile section */\n\n/* Begin PBXContainerItemProxy section */\n\t\tBE11D0A32461204300075E25 /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = BE4649F7243C29CE00BE8336 /* Project object */;\n\t\t\tproxyType = 1;\n\t\t\tremoteGlobalIDString = BE524E03245EFF3C003F3E80;\n\t\t\tremoteInfo = ProxyConfHelper;\n\t\t};\n/* End PBXContainerItemProxy section */\n\n/* Begin PBXCopyFilesBuildPhase section */\n\t\tBE524E02245EFF3C003F3E80 /* CopyFiles */ = {\n\t\t\tisa = PBXCopyFilesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tdstPath = /usr/share/man/man1/;\n\t\t\tdstSubfolderSpec = 0;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 1;\n\t\t};\n/* End PBXCopyFilesBuildPhase section */\n\n/* Begin PBXFileReference section */\n\t\t1130D936E0F21D05BF85D0A1 /* libPods-ProxyConfHelper.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = \"libPods-ProxyConfHelper.a\"; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t1AC85AC4F6A665FFBF5E32F6 /* Pods-Trojan.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = \"Pods-Trojan.release.xcconfig\"; path = \"Target Support Files/Pods-Trojan/Pods-Trojan.release.xcconfig\"; sourceTree = \"<group>\"; };\n\t\t2D6A00262839FD947FB40D30 /* Pods_Trojan.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Trojan.framework; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t5D8AA9966E1D35373DF930DB /* Pods-Trojan.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = \"Pods-Trojan.debug.xcconfig\"; path = \"Target Support Files/Pods-Trojan/Pods-Trojan.debug.xcconfig\"; sourceTree = \"<group>\"; };\n\t\t67B6D44C12B2FDD442F3F62D /* Pods-ProxyConfHelper.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = \"Pods-ProxyConfHelper.release.xcconfig\"; path = \"Target Support Files/Pods-ProxyConfHelper/Pods-ProxyConfHelper.release.xcconfig\"; sourceTree = \"<group>\"; };\n\t\tBE11D0A124611D9100075E25 /* install_helper.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = install_helper.sh; sourceTree = \"<group>\"; };\n\t\tBE11D0B02461232E00075E25 /* LaunchAgentHelper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LaunchAgentHelper.swift; sourceTree = \"<group>\"; };\n\t\tBE11D0B22461243600075E25 /* install_privoxy.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = install_privoxy.sh; sourceTree = \"<group>\"; };\n\t\tBE11D0B42461246A00075E25 /* privoxy */ = {isa = PBXFileReference; lastKnownFileType = \"compiled.mach-o.executable\"; path = privoxy; sourceTree = \"<group>\"; };\n\t\tBE11D0B62461247100075E25 /* libpcre.1.dylib */ = {isa = PBXFileReference; lastKnownFileType = \"compiled.mach-o.dylib\"; path = libpcre.1.dylib; sourceTree = \"<group>\"; };\n\t\tBE11D0B82461248700075E25 /* reload_conf_privoxy.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = reload_conf_privoxy.sh; sourceTree = \"<group>\"; };\n\t\tBE11D0BA246124A700075E25 /* start_privoxy.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = start_privoxy.sh; sourceTree = \"<group>\"; };\n\t\tBE11D0BC246124BA00075E25 /* stop_privoxy.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = stop_privoxy.sh; sourceTree = \"<group>\"; };\n\t\tBE11D0BE246124D600075E25 /* remove_privoxy.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = remove_privoxy.sh; sourceTree = \"<group>\"; };\n\t\tBE11D0C02461256100075E25 /* privoxy.config.example */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = privoxy.config.example; sourceTree = \"<group>\"; };\n\t\tBE4649FF243C29CE00BE8336 /* Trojan.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Trojan.app; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\tBE464A02243C29CE00BE8336 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = \"<group>\"; };\n\t\tBE464A04243C29CE00BE8336 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = \"<group>\"; };\n\t\tBE464A07243C29CE00BE8336 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = \"<group>\"; };\n\t\tBE464A09243C29CE00BE8336 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = \"<group>\"; };\n\t\tBE464A0A243C29CE00BE8336 /* Trojan.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Trojan.entitlements; sourceTree = \"<group>\"; };\n\t\tBE464A10243C29DA00BE8336 /* trojan */ = {isa = PBXFileReference; lastKnownFileType = \"compiled.mach-o.executable\"; path = trojan; sourceTree = \"<group>\"; };\n\t\tBE464A12243C2A7E00BE8336 /* StatusMenuManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StatusMenuManager.swift; sourceTree = \"<group>\"; };\n\t\tBE464A14243C2A8300BE8336 /* Profile.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Profile.swift; sourceTree = \"<group>\"; };\n\t\tBE464A16243C2A8900BE8336 /* Json.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Json.swift; sourceTree = \"<group>\"; };\n\t\tBE464A1A243C2AA100BE8336 /* CommandLine.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CommandLine.swift; sourceTree = \"<group>\"; };\n\t\tBE464A1C243C2AA500BE8336 /* Configuration.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Configuration.swift; sourceTree = \"<group>\"; };\n\t\tBE464A1E243C2AA900BE8336 /* VersionChecker.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = VersionChecker.swift; sourceTree = \"<group>\"; };\n\t\tBE464A22243C2ABC00BE8336 /* LogWindowController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = LogWindowController.xib; sourceTree = \"<group>\"; };\n\t\tBE464A23243C2ABC00BE8336 /* ToastWindowController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ToastWindowController.swift; sourceTree = \"<group>\"; };\n\t\tBE464A24243C2ABC00BE8336 /* LogWindowController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LogWindowController.swift; sourceTree = \"<group>\"; };\n\t\tBE464A25243C2ABC00BE8336 /* SettingWindowController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingWindowController.swift; sourceTree = \"<group>\"; };\n\t\tBE464A26243C2ABC00BE8336 /* ToastWindowController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ToastWindowController.xib; sourceTree = \"<group>\"; };\n\t\tBE471629252092A6001F8B18 /* NetSpeedMonitor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NetSpeedMonitor.h; sourceTree = \"<group>\"; };\n\t\tBE47162A252092A6001F8B18 /* NetSpeedMonitor.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NetSpeedMonitor.m; sourceTree = \"<group>\"; };\n\t\tBE47162E25209534001F8B18 /* SpeedTools.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SpeedTools.swift; sourceTree = \"<group>\"; };\n\t\tBE524E04245EFF3C003F3E80 /* ProxyConfHelper */ = {isa = PBXFileReference; explicitFileType = \"compiled.mach-o.executable\"; includeInIndex = 0; path = ProxyConfHelper; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\tBE524E06245EFF3C003F3E80 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = \"<group>\"; };\n\t\tBE524E0B245F00E5003F3E80 /* Trojan-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = \"Trojan-Bridging-Header.h\"; sourceTree = \"<group>\"; };\n\t\tBE524E0C245F00E6003F3E80 /* ProxyConfHelper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ProxyConfHelper.m; sourceTree = \"<group>\"; };\n\t\tBE524E0D245F00E6003F3E80 /* ProxyConfHelper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ProxyConfHelper.h; sourceTree = \"<group>\"; };\n\t\tBE524E0F245F0142003F3E80 /* version.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = version.h; sourceTree = \"<group>\"; };\n\t\tBE599988247923C5002177A2 /* SettingsWIndowController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsWIndowController.swift; sourceTree = \"<group>\"; };\n\t\tBE59998C24792E06002177A2 /* LoginServiceKit.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LoginServiceKit.swift; sourceTree = \"<group>\"; };\n\t\tBEA246BA253031EB00F7B080 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/SubscribePreferenceWindowController.xib; sourceTree = \"<group>\"; };\n\t\tBEA246BF253031F000F7B080 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = \"zh-Hans\"; path = \"zh-Hans.lproj/SubscribePreferenceWindowController.strings\"; sourceTree = \"<group>\"; };\n\t\tBEA246E725303F4200F7B080 /* ConnectTestigManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConnectTestigManager.swift; sourceTree = \"<group>\"; };\n\t\tBEA246EC25303F9500F7B080 /* GCDAsyncSocket.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GCDAsyncSocket.h; sourceTree = \"<group>\"; };\n\t\tBEA246ED25303F9500F7B080 /* GCDAsyncSocket.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GCDAsyncSocket.m; sourceTree = \"<group>\"; };\n\t\tBEA246EE25303F9500F7B080 /* tcping.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = tcping.swift; sourceTree = \"<group>\"; };\n\t\tBEAB090E252FFE8C00B0BD3E /* Subscribe.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Subscribe.swift; sourceTree = \"<group>\"; };\n\t\tBEAB0912252FFEEA00B0BD3E /* Network.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Network.swift; sourceTree = \"<group>\"; };\n\t\tBEAB09162530006000B0BD3E /* Utils.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Utils.swift; sourceTree = \"<group>\"; };\n\t\tBEAB091A25300F5E00B0BD3E /* SubscribeManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SubscribeManager.swift; sourceTree = \"<group>\"; };\n\t\tBEAB09212530104700B0BD3E /* SubscribePreferenceWindowController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SubscribePreferenceWindowController.swift; sourceTree = \"<group>\"; };\n\t\tBEC48A00245FC79000891EAC /* PAC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PAC.swift; sourceTree = \"<group>\"; };\n\t\tBEC48A03245FC8C500891EAC /* backchn.acl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = backchn.acl; sourceTree = \"<group>\"; };\n\t\tBEC48A04245FC8C600891EAC /* whitelist.pac */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = whitelist.pac; sourceTree = \"<group>\"; };\n\t\tBEC48A05245FC8C600891EAC /* chn.acl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = chn.acl; sourceTree = \"<group>\"; };\n\t\tBEC48A06245FC8C600891EAC /* gfwlist.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = gfwlist.txt; sourceTree = \"<group>\"; };\n\t\tBEC48A07245FC8C600891EAC /* whiteiplist.pac */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = whiteiplist.pac; sourceTree = \"<group>\"; };\n\t\tBEC48A08245FC8C600891EAC /* abp.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = abp.js; sourceTree = \"<group>\"; };\n\t\tBEC48A09245FC8C600891EAC /* user-rule.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = \"user-rule.txt\"; sourceTree = \"<group>\"; };\n\t\tBEC48A0A245FC8C600891EAC /* gfwlist.acl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = gfwlist.acl; sourceTree = \"<group>\"; };\n\t\tBEC48A13245FCBA800891EAC /* DefaultsConfig.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DefaultsConfig.h; sourceTree = \"<group>\"; };\n\t\tBEFBF63D243CC1D0006972DF /* EditableNSTextView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EditableNSTextView.swift; sourceTree = \"<group>\"; };\n\t\tCDE35465A9F1F101A2188BCB /* Pods_StartAtLoginLauncher.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_StartAtLoginLauncher.framework; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\tD2DDA8340BA68165A3F556B5 /* Pods-StartAtLoginLauncher.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = \"Pods-StartAtLoginLauncher.release.xcconfig\"; path = \"Target Support Files/Pods-StartAtLoginLauncher/Pods-StartAtLoginLauncher.release.xcconfig\"; sourceTree = \"<group>\"; };\n\t\tE82CD55E249C736500EA38FD /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = \"zh-Hans\"; path = \"zh-Hans.lproj/MainMenu.strings\"; sourceTree = \"<group>\"; };\n\t\tE82CD562249C781600EA38FD /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/SettingWindowController.xib; sourceTree = \"<group>\"; };\n\t\tE82CD564249C784000EA38FD /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = \"zh-Hans\"; path = \"zh-Hans.lproj/SettingWindowController.strings\"; sourceTree = \"<group>\"; };\n\t\tE82CD566249C788400EA38FD /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/SettingsWIndowController.xib; sourceTree = \"<group>\"; };\n\t\tE82CD569249C788900EA38FD /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = \"zh-Hans\"; path = \"zh-Hans.lproj/SettingsWIndowController.strings\"; sourceTree = \"<group>\"; };\n\t\tE82CD56E249C7A3E00EA38FD /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = \"zh-Hans\"; path = \"zh-Hans.lproj/Localizable.strings\"; sourceTree = \"<group>\"; };\n\t\tE82CD570249C7B7900EA38FD /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Localizable.strings; sourceTree = \"<group>\"; };\n\t\tE8BA62A6247CD3EE00557A6E /* install_trojan.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = install_trojan.sh; sourceTree = \"<group>\"; };\n\t\tE8BA62A8247CD47800557A6E /* start_trojan.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = start_trojan.sh; sourceTree = \"<group>\"; };\n\t\tE8BA62AA247CD49600557A6E /* stop_trojan.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = stop_trojan.sh; sourceTree = \"<group>\"; };\n\t\tE8BA62AC247CD4B900557A6E /* reload_conf_trojan.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = reload_conf_trojan.sh; sourceTree = \"<group>\"; };\n\t\tE8BA62AE247CD4DA00557A6E /* remove_trojan.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = remove_trojan.sh; sourceTree = \"<group>\"; };\n\t\tE8BA62B1247CEBA500557A6E /* ModeSwitcher.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ModeSwitcher.swift; sourceTree = \"<group>\"; };\n\t\tEC62B1D04D8D5DC345607E41 /* Pods-ProxyConfHelper.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = \"Pods-ProxyConfHelper.debug.xcconfig\"; path = \"Target Support Files/Pods-ProxyConfHelper/Pods-ProxyConfHelper.debug.xcconfig\"; sourceTree = \"<group>\"; };\n\t\tF7AD288CA94EC1B48B84342B /* Pods-StartAtLoginLauncher.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = \"Pods-StartAtLoginLauncher.debug.xcconfig\"; path = \"Target Support Files/Pods-StartAtLoginLauncher/Pods-StartAtLoginLauncher.debug.xcconfig\"; sourceTree = \"<group>\"; };\n/* End PBXFileReference section */\n\n/* Begin PBXFrameworksBuildPhase section */\n\t\tBE4649FC243C29CE00BE8336 /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t83415DA4E43B0E97B0148C26 /* Pods_Trojan.framework in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tBE524E01245EFF3C003F3E80 /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t39900A524BE139E9D8616552 /* libPods-ProxyConfHelper.a in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXFrameworksBuildPhase section */\n\n/* Begin PBXGroup section */\n\t\t22116DD016CA1C073684B4DC /* Frameworks */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tCDE35465A9F1F101A2188BCB /* Pods_StartAtLoginLauncher.framework */,\n\t\t\t\t2D6A00262839FD947FB40D30 /* Pods_Trojan.framework */,\n\t\t\t\t1130D936E0F21D05BF85D0A1 /* libPods-ProxyConfHelper.a */,\n\t\t\t);\n\t\t\tname = Frameworks;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t2DB9494A13EC7C5A78F99948 /* Pods */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tEC62B1D04D8D5DC345607E41 /* Pods-ProxyConfHelper.debug.xcconfig */,\n\t\t\t\t67B6D44C12B2FDD442F3F62D /* Pods-ProxyConfHelper.release.xcconfig */,\n\t\t\t\tF7AD288CA94EC1B48B84342B /* Pods-StartAtLoginLauncher.debug.xcconfig */,\n\t\t\t\tD2DDA8340BA68165A3F556B5 /* Pods-StartAtLoginLauncher.release.xcconfig */,\n\t\t\t\t5D8AA9966E1D35373DF930DB /* Pods-Trojan.debug.xcconfig */,\n\t\t\t\t1AC85AC4F6A665FFBF5E32F6 /* Pods-Trojan.release.xcconfig */,\n\t\t\t);\n\t\t\tpath = Pods;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tBE11D0A024611D6F00075E25 /* InstallHelper */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tBE464A10243C29DA00BE8336 /* trojan */,\n\t\t\t\tBE11D0B42461246A00075E25 /* privoxy */,\n\t\t\t\tBE11D0B62461247100075E25 /* libpcre.1.dylib */,\n\t\t\t\tBE11D0A124611D9100075E25 /* install_helper.sh */,\n\t\t\t\tBE11D0B22461243600075E25 /* install_privoxy.sh */,\n\t\t\t\tBE11D0B82461248700075E25 /* reload_conf_privoxy.sh */,\n\t\t\t\tBE11D0BA246124A700075E25 /* start_privoxy.sh */,\n\t\t\t\tBE11D0BC246124BA00075E25 /* stop_privoxy.sh */,\n\t\t\t\tBE11D0BE246124D600075E25 /* remove_privoxy.sh */,\n\t\t\t\tBE11D0C02461256100075E25 /* privoxy.config.example */,\n\t\t\t\tE8BA62A6247CD3EE00557A6E /* install_trojan.sh */,\n\t\t\t\tE8BA62A8247CD47800557A6E /* start_trojan.sh */,\n\t\t\t\tE8BA62AA247CD49600557A6E /* stop_trojan.sh */,\n\t\t\t\tE8BA62AC247CD4B900557A6E /* reload_conf_trojan.sh */,\n\t\t\t\tE8BA62AE247CD4DA00557A6E /* remove_trojan.sh */,\n\t\t\t);\n\t\t\tpath = InstallHelper;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tBE4649F6243C29CE00BE8336 = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tBE464A01243C29CE00BE8336 /* Trojan */,\n\t\t\t\tBE524E05245EFF3C003F3E80 /* ProxyConfHelper */,\n\t\t\t\tBE464A00243C29CE00BE8336 /* Products */,\n\t\t\t\t2DB9494A13EC7C5A78F99948 /* Pods */,\n\t\t\t\t22116DD016CA1C073684B4DC /* Frameworks */,\n\t\t\t);\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tBE464A00243C29CE00BE8336 /* Products */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tBE4649FF243C29CE00BE8336 /* Trojan.app */,\n\t\t\t\tBE524E04245EFF3C003F3E80 /* ProxyConfHelper */,\n\t\t\t);\n\t\t\tname = Products;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tBE464A01243C29CE00BE8336 /* Trojan */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tBE464A06243C29CE00BE8336 /* MainMenu.xib */,\n\t\t\t\tBE464A02243C29CE00BE8336 /* AppDelegate.swift */,\n\t\t\t\tBE464A12243C2A7E00BE8336 /* StatusMenuManager.swift */,\n\t\t\t\tBE464A1A243C2AA100BE8336 /* CommandLine.swift */,\n\t\t\t\tBE464A1E243C2AA900BE8336 /* VersionChecker.swift */,\n\t\t\t\tBEC48A00245FC79000891EAC /* PAC.swift */,\n\t\t\t\tBE11D0B02461232E00075E25 /* LaunchAgentHelper.swift */,\n\t\t\t\tBE59998C24792E06002177A2 /* LoginServiceKit.swift */,\n\t\t\t\tE8BA62B1247CEBA500557A6E /* ModeSwitcher.swift */,\n\t\t\t\tBE524E0D245F00E6003F3E80 /* ProxyConfHelper.h */,\n\t\t\t\tBE524E0C245F00E6003F3E80 /* ProxyConfHelper.m */,\n\t\t\t\tBEA246EB25303F8200F7B080 /* tcping */,\n\t\t\t\tBEAB090B252FFD9700B0BD3E /* Profile */,\n\t\t\t\tBEAB090A252FFD6700B0BD3E /* NetworkMonitor */,\n\t\t\t\tBEAB0909252FFD5500B0BD3E /* Subscribe */,\n\t\t\t\tBE11D0A024611D6F00075E25 /* InstallHelper */,\n\t\t\t\tBEC48A02245FC8A200891EAC /* File */,\n\t\t\t\tBE464A20243C2AAF00BE8336 /* WIndows */,\n\t\t\t\tBE464A04243C29CE00BE8336 /* Assets.xcassets */,\n\t\t\t\tBE464A09243C29CE00BE8336 /* Info.plist */,\n\t\t\t\tBE464A0A243C29CE00BE8336 /* Trojan.entitlements */,\n\t\t\t\tBE524E0B245F00E5003F3E80 /* Trojan-Bridging-Header.h */,\n\t\t\t\tE82CD56F249C7A3E00EA38FD /* Localizable.strings */,\n\t\t\t);\n\t\t\tpath = Trojan;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tBE464A20243C2AAF00BE8336 /* WIndows */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tBEAB09212530104700B0BD3E /* SubscribePreferenceWindowController.swift */,\n\t\t\t\tBEA246BB253031EB00F7B080 /* SubscribePreferenceWindowController.xib */,\n\t\t\t\tBE464A24243C2ABC00BE8336 /* LogWindowController.swift */,\n\t\t\t\tBE464A22243C2ABC00BE8336 /* LogWindowController.xib */,\n\t\t\t\tBE464A25243C2ABC00BE8336 /* SettingWindowController.swift */,\n\t\t\t\tE82CD561249C781000EA38FD /* SettingWindowController.xib */,\n\t\t\t\tBE464A23243C2ABC00BE8336 /* ToastWindowController.swift */,\n\t\t\t\tBE464A26243C2ABC00BE8336 /* ToastWindowController.xib */,\n\t\t\t\tBEFBF63D243CC1D0006972DF /* EditableNSTextView.swift */,\n\t\t\t\tBE599988247923C5002177A2 /* SettingsWIndowController.swift */,\n\t\t\t\tE82CD567249C788400EA38FD /* SettingsWIndowController.xib */,\n\t\t\t);\n\t\t\tpath = WIndows;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tBE524E05245EFF3C003F3E80 /* ProxyConfHelper */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tBE524E06245EFF3C003F3E80 /* main.m */,\n\t\t\t\tBE524E0F245F0142003F3E80 /* version.h */,\n\t\t\t);\n\t\t\tpath = ProxyConfHelper;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tBEA246EB25303F8200F7B080 /* tcping */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tBEA246E725303F4200F7B080 /* ConnectTestigManager.swift */,\n\t\t\t\tBEA246EC25303F9500F7B080 /* GCDAsyncSocket.h */,\n\t\t\t\tBEA246ED25303F9500F7B080 /* GCDAsyncSocket.m */,\n\t\t\t\tBEA246EE25303F9500F7B080 /* tcping.swift */,\n\t\t\t);\n\t\t\tpath = tcping;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tBEAB0909252FFD5500B0BD3E /* Subscribe */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tBEAB0912252FFEEA00B0BD3E /* Network.swift */,\n\t\t\t\tBEAB090E252FFE8C00B0BD3E /* Subscribe.swift */,\n\t\t\t\tBEAB091A25300F5E00B0BD3E /* SubscribeManager.swift */,\n\t\t\t\tBEAB09162530006000B0BD3E /* Utils.swift */,\n\t\t\t);\n\t\t\tpath = Subscribe;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tBEAB090A252FFD6700B0BD3E /* NetworkMonitor */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tBE47162E25209534001F8B18 /* SpeedTools.swift */,\n\t\t\t\tBE471629252092A6001F8B18 /* NetSpeedMonitor.h */,\n\t\t\t\tBE47162A252092A6001F8B18 /* NetSpeedMonitor.m */,\n\t\t\t);\n\t\t\tpath = NetworkMonitor;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tBEAB090B252FFD9700B0BD3E /* Profile */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tBEC48A13245FCBA800891EAC /* DefaultsConfig.h */,\n\t\t\t\tBE464A1C243C2AA500BE8336 /* Configuration.swift */,\n\t\t\t\tBE464A14243C2A8300BE8336 /* Profile.swift */,\n\t\t\t\tBE464A16243C2A8900BE8336 /* Json.swift */,\n\t\t\t);\n\t\t\tpath = Profile;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tBEC48A02245FC8A200891EAC /* File */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tBEC48A09245FC8C600891EAC /* user-rule.txt */,\n\t\t\t\tBEC48A05245FC8C600891EAC /* chn.acl */,\n\t\t\t\tBEC48A03245FC8C500891EAC /* backchn.acl */,\n\t\t\t\tBEC48A04245FC8C600891EAC /* whitelist.pac */,\n\t\t\t\tBEC48A07245FC8C600891EAC /* whiteiplist.pac */,\n\t\t\t\tBEC48A0A245FC8C600891EAC /* gfwlist.acl */,\n\t\t\t\tBEC48A06245FC8C600891EAC /* gfwlist.txt */,\n\t\t\t\tBEC48A08245FC8C600891EAC /* abp.js */,\n\t\t\t);\n\t\t\tpath = File;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n/* End PBXGroup section */\n\n/* Begin PBXNativeTarget section */\n\t\tBE4649FE243C29CE00BE8336 /* Trojan */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = BE464A0D243C29CE00BE8336 /* Build configuration list for PBXNativeTarget \"Trojan\" */;\n\t\t\tbuildPhases = (\n\t\t\t\t6EA2092E5692357C5BF73C8E /* [CP] Check Pods Manifest.lock */,\n\t\t\t\tBE4649FB243C29CE00BE8336 /* Sources */,\n\t\t\t\tBE4649FC243C29CE00BE8336 /* Frameworks */,\n\t\t\t\tBE4649FD243C29CE00BE8336 /* Resources */,\n\t\t\t\tCF7283FE56C93B4CD1F4F80E /* [CP] Embed Pods Frameworks */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t\tBE11D0A42461204300075E25 /* PBXTargetDependency */,\n\t\t\t);\n\t\t\tname = Trojan;\n\t\t\tproductName = Trojan;\n\t\t\tproductReference = BE4649FF243C29CE00BE8336 /* Trojan.app */;\n\t\t\tproductType = \"com.apple.product-type.application\";\n\t\t};\n\t\tBE524E03245EFF3C003F3E80 /* ProxyConfHelper */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = BE524E0A245EFF3C003F3E80 /* Build configuration list for PBXNativeTarget \"ProxyConfHelper\" */;\n\t\t\tbuildPhases = (\n\t\t\t\tFBF25DEDE67A777C265FCA57 /* [CP] Check Pods Manifest.lock */,\n\t\t\t\tBE524E00245EFF3C003F3E80 /* Sources */,\n\t\t\t\tBE524E01245EFF3C003F3E80 /* Frameworks */,\n\t\t\t\tBE524E02245EFF3C003F3E80 /* CopyFiles */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t);\n\t\t\tname = ProxyConfHelper;\n\t\t\tproductName = ProxyConfHelper;\n\t\t\tproductReference = BE524E04245EFF3C003F3E80 /* ProxyConfHelper */;\n\t\t\tproductType = \"com.apple.product-type.tool\";\n\t\t};\n/* End PBXNativeTarget section */\n\n/* Begin PBXProject section */\n\t\tBE4649F7243C29CE00BE8336 /* Project object */ = {\n\t\t\tisa = PBXProject;\n\t\t\tattributes = {\n\t\t\t\tLastSwiftUpdateCheck = 1140;\n\t\t\t\tLastUpgradeCheck = 1140;\n\t\t\t\tORGANIZATIONNAME = ParadiseDuo;\n\t\t\t\tTargetAttributes = {\n\t\t\t\t\tBE4649FE243C29CE00BE8336 = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 11.4;\n\t\t\t\t\t\tLastSwiftMigration = 1140;\n\t\t\t\t\t};\n\t\t\t\t\tBE524E03245EFF3C003F3E80 = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 11.4.1;\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t};\n\t\t\tbuildConfigurationList = BE4649FA243C29CE00BE8336 /* Build configuration list for PBXProject \"Trojan\" */;\n\t\t\tcompatibilityVersion = \"Xcode 9.3\";\n\t\t\tdevelopmentRegion = en;\n\t\t\thasScannedForEncodings = 0;\n\t\t\tknownRegions = (\n\t\t\t\ten,\n\t\t\t\tBase,\n\t\t\t\t\"zh-Hans\",\n\t\t\t);\n\t\t\tmainGroup = BE4649F6243C29CE00BE8336;\n\t\t\tproductRefGroup = BE464A00243C29CE00BE8336 /* Products */;\n\t\t\tprojectDirPath = \"\";\n\t\t\tprojectRoot = \"\";\n\t\t\ttargets = (\n\t\t\t\tBE4649FE243C29CE00BE8336 /* Trojan */,\n\t\t\t\tBE524E03245EFF3C003F3E80 /* ProxyConfHelper */,\n\t\t\t);\n\t\t};\n/* End PBXProject section */\n\n/* Begin PBXResourcesBuildPhase section */\n\t\tBE4649FD243C29CE00BE8336 /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tBE11D0C22461289400075E25 /* libpcre.1.dylib in Resources */,\n\t\t\t\tBE11D0B92461248700075E25 /* reload_conf_privoxy.sh in Resources */,\n\t\t\t\tE8BA62AB247CD49600557A6E /* stop_trojan.sh in Resources */,\n\t\t\t\tE8BA62A9247CD47800557A6E /* start_trojan.sh in Resources */,\n\t\t\t\tBE11D0A52461204C00075E25 /* ProxyConfHelper in Resources */,\n\t\t\t\tBEC48A10245FC8C600891EAC /* abp.js in Resources */,\n\t\t\t\tBE464A11243C29DA00BE8336 /* trojan in Resources */,\n\t\t\t\tBE11D0BF246124D600075E25 /* remove_privoxy.sh in Resources */,\n\t\t\t\tE82CD565249C788400EA38FD /* SettingsWIndowController.xib in Resources */,\n\t\t\t\tBEC48A0C245FC8C600891EAC /* whitelist.pac in Resources */,\n\t\t\t\tBEC48A12245FC8C600891EAC /* gfwlist.acl in Resources */,\n\t\t\t\tBE464A2C243C2ABC00BE8336 /* ToastWindowController.xib in Resources */,\n\t\t\t\tBEC48A0D245FC8C600891EAC /* chn.acl in Resources */,\n\t\t\t\tBEC48A0B245FC8C600891EAC /* backchn.acl in Resources */,\n\t\t\t\tBE11D0A224611D9100075E25 /* install_helper.sh in Resources */,\n\t\t\t\tBE11D0C12461256100075E25 /* privoxy.config.example in Resources */,\n\t\t\t\tE82CD56D249C7A3E00EA38FD /* Localizable.strings in Resources */,\n\t\t\t\tE8BA62AF247CD4DA00557A6E /* remove_trojan.sh in Resources */,\n\t\t\t\tBE464A05243C29CE00BE8336 /* Assets.xcassets in Resources */,\n\t\t\t\tBEC48A0F245FC8C600891EAC /* whiteiplist.pac in Resources */,\n\t\t\t\tBE11D0B32461243600075E25 /* install_privoxy.sh in Resources */,\n\t\t\t\tBEA246B9253031EB00F7B080 /* SubscribePreferenceWindowController.xib in Resources */,\n\t\t\t\tBE11D0B52461246A00075E25 /* privoxy in Resources */,\n\t\t\t\tE8BA62A7247CD3EE00557A6E /* install_trojan.sh in Resources */,\n\t\t\t\tE82CD55F249C781000EA38FD /* SettingWindowController.xib in Resources */,\n\t\t\t\tBE11D0BD246124BA00075E25 /* stop_privoxy.sh in Resources */,\n\t\t\t\tBE11D0BB246124A700075E25 /* start_privoxy.sh in Resources */,\n\t\t\t\tBEC48A0E245FC8C600891EAC /* gfwlist.txt in Resources */,\n\t\t\t\tBEC48A11245FC8C600891EAC /* user-rule.txt in Resources */,\n\t\t\t\tBE464A28243C2ABC00BE8336 /* LogWindowController.xib in Resources */,\n\t\t\t\tBE464A08243C29CE00BE8336 /* MainMenu.xib in Resources */,\n\t\t\t\tE8BA62AD247CD4B900557A6E /* reload_conf_trojan.sh in Resources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXResourcesBuildPhase section */\n\n/* Begin PBXShellScriptBuildPhase section */\n\t\t6EA2092E5692357C5BF73C8E /* [CP] Check Pods Manifest.lock */ = {\n\t\t\tisa = PBXShellScriptBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\tinputFileListPaths = (\n\t\t\t);\n\t\t\tinputPaths = (\n\t\t\t\t\"${PODS_PODFILE_DIR_PATH}/Podfile.lock\",\n\t\t\t\t\"${PODS_ROOT}/Manifest.lock\",\n\t\t\t);\n\t\t\tname = \"[CP] Check Pods Manifest.lock\";\n\t\t\toutputFileListPaths = (\n\t\t\t);\n\t\t\toutputPaths = (\n\t\t\t\t\"$(DERIVED_FILE_DIR)/Pods-Trojan-checkManifestLockResult.txt\",\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t\tshellPath = /bin/sh;\n\t\t\tshellScript = \"diff \\\"${PODS_PODFILE_DIR_PATH}/Podfile.lock\\\" \\\"${PODS_ROOT}/Manifest.lock\\\" > /dev/null\\nif [ $? != 0 ] ; then\\n    # print error to STDERR\\n    echo \\\"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\\\" >&2\\n    exit 1\\nfi\\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\\necho \\\"SUCCESS\\\" > \\\"${SCRIPT_OUTPUT_FILE_0}\\\"\\n\";\n\t\t\tshowEnvVarsInLog = 0;\n\t\t};\n\t\tCF7283FE56C93B4CD1F4F80E /* [CP] Embed Pods Frameworks */ = {\n\t\t\tisa = PBXShellScriptBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\tinputFileListPaths = (\n\t\t\t\t\"${PODS_ROOT}/Target Support Files/Pods-Trojan/Pods-Trojan-frameworks-${CONFIGURATION}-input-files.xcfilelist\",\n\t\t\t);\n\t\t\tname = \"[CP] Embed Pods Frameworks\";\n\t\t\toutputFileListPaths = (\n\t\t\t\t\"${PODS_ROOT}/Target Support Files/Pods-Trojan/Pods-Trojan-frameworks-${CONFIGURATION}-output-files.xcfilelist\",\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t\tshellPath = /bin/sh;\n\t\t\tshellScript = \"\\\"${PODS_ROOT}/Target Support Files/Pods-Trojan/Pods-Trojan-frameworks.sh\\\"\\n\";\n\t\t\tshowEnvVarsInLog = 0;\n\t\t};\n\t\tFBF25DEDE67A777C265FCA57 /* [CP] Check Pods Manifest.lock */ = {\n\t\t\tisa = PBXShellScriptBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\tinputFileListPaths = (\n\t\t\t);\n\t\t\tinputPaths = (\n\t\t\t\t\"${PODS_PODFILE_DIR_PATH}/Podfile.lock\",\n\t\t\t\t\"${PODS_ROOT}/Manifest.lock\",\n\t\t\t);\n\t\t\tname = \"[CP] Check Pods Manifest.lock\";\n\t\t\toutputFileListPaths = (\n\t\t\t);\n\t\t\toutputPaths = (\n\t\t\t\t\"$(DERIVED_FILE_DIR)/Pods-ProxyConfHelper-checkManifestLockResult.txt\",\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t\tshellPath = /bin/sh;\n\t\t\tshellScript = \"diff \\\"${PODS_PODFILE_DIR_PATH}/Podfile.lock\\\" \\\"${PODS_ROOT}/Manifest.lock\\\" > /dev/null\\nif [ $? != 0 ] ; then\\n    # print error to STDERR\\n    echo \\\"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\\\" >&2\\n    exit 1\\nfi\\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\\necho \\\"SUCCESS\\\" > \\\"${SCRIPT_OUTPUT_FILE_0}\\\"\\n\";\n\t\t\tshowEnvVarsInLog = 0;\n\t\t};\n/* End PBXShellScriptBuildPhase section */\n\n/* Begin PBXSourcesBuildPhase section */\n\t\tBE4649FB243C29CE00BE8336 /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tBE464A2A243C2ABC00BE8336 /* LogWindowController.swift in Sources */,\n\t\t\t\tBE524E0E245F00E6003F3E80 /* ProxyConfHelper.m in Sources */,\n\t\t\t\tBE464A2B243C2ABC00BE8336 /* SettingWindowController.swift in Sources */,\n\t\t\t\tBE464A13243C2A7E00BE8336 /* StatusMenuManager.swift in Sources */,\n\t\t\t\tBE464A1F243C2AA900BE8336 /* VersionChecker.swift in Sources */,\n\t\t\t\tBEA246F025303F9500F7B080 /* tcping.swift in Sources */,\n\t\t\t\tBE464A1D243C2AA500BE8336 /* Configuration.swift in Sources */,\n\t\t\t\tE8BA62B2247CEBA500557A6E /* ModeSwitcher.swift in Sources */,\n\t\t\t\tBE59998A247923C5002177A2 /* SettingsWIndowController.swift in Sources */,\n\t\t\t\tBE47162B252092A6001F8B18 /* NetSpeedMonitor.m in Sources */,\n\t\t\t\tBEAB09232530104700B0BD3E /* SubscribePreferenceWindowController.swift in Sources */,\n\t\t\t\tBE464A15243C2A8300BE8336 /* Profile.swift in Sources */,\n\t\t\t\tBE464A29243C2ABC00BE8336 /* ToastWindowController.swift in Sources */,\n\t\t\t\tBE47162F25209534001F8B18 /* SpeedTools.swift in Sources */,\n\t\t\t\tBE464A1B243C2AA100BE8336 /* CommandLine.swift in Sources */,\n\t\t\t\tBEA246EF25303F9500F7B080 /* GCDAsyncSocket.m in Sources */,\n\t\t\t\tBE11D0B12461232E00075E25 /* LaunchAgentHelper.swift in Sources */,\n\t\t\t\tBEAB091B25300F5E00B0BD3E /* SubscribeManager.swift in Sources */,\n\t\t\t\tBE464A03243C29CE00BE8336 /* AppDelegate.swift in Sources */,\n\t\t\t\tBEAB09172530006000B0BD3E /* Utils.swift in Sources */,\n\t\t\t\tBEAB090F252FFE8C00B0BD3E /* Subscribe.swift in Sources */,\n\t\t\t\tBEAB0913252FFEEA00B0BD3E /* Network.swift in Sources */,\n\t\t\t\tBE59998D24792E06002177A2 /* LoginServiceKit.swift in Sources */,\n\t\t\t\tBEA246E825303F4200F7B080 /* ConnectTestigManager.swift in Sources */,\n\t\t\t\tBEFBF63E243CC1D0006972DF /* EditableNSTextView.swift in Sources */,\n\t\t\t\tBEC48A01245FC79000891EAC /* PAC.swift in Sources */,\n\t\t\t\tBE464A17243C2A8900BE8336 /* Json.swift in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tBE524E00245EFF3C003F3E80 /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tBE524E07245EFF3C003F3E80 /* main.m in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXSourcesBuildPhase section */\n\n/* Begin PBXTargetDependency section */\n\t\tBE11D0A42461204300075E25 /* PBXTargetDependency */ = {\n\t\t\tisa = PBXTargetDependency;\n\t\t\ttarget = BE524E03245EFF3C003F3E80 /* ProxyConfHelper */;\n\t\t\ttargetProxy = BE11D0A32461204300075E25 /* PBXContainerItemProxy */;\n\t\t};\n/* End PBXTargetDependency section */\n\n/* Begin PBXVariantGroup section */\n\t\tBE464A06243C29CE00BE8336 /* MainMenu.xib */ = {\n\t\t\tisa = PBXVariantGroup;\n\t\t\tchildren = (\n\t\t\t\tBE464A07243C29CE00BE8336 /* Base */,\n\t\t\t\tE82CD55E249C736500EA38FD /* zh-Hans */,\n\t\t\t);\n\t\t\tname = MainMenu.xib;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tBEA246BB253031EB00F7B080 /* SubscribePreferenceWindowController.xib */ = {\n\t\t\tisa = PBXVariantGroup;\n\t\t\tchildren = (\n\t\t\t\tBEA246BA253031EB00F7B080 /* Base */,\n\t\t\t\tBEA246BF253031F000F7B080 /* zh-Hans */,\n\t\t\t);\n\t\t\tname = SubscribePreferenceWindowController.xib;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tE82CD561249C781000EA38FD /* SettingWindowController.xib */ = {\n\t\t\tisa = PBXVariantGroup;\n\t\t\tchildren = (\n\t\t\t\tE82CD562249C781600EA38FD /* Base */,\n\t\t\t\tE82CD564249C784000EA38FD /* zh-Hans */,\n\t\t\t);\n\t\t\tname = SettingWindowController.xib;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tE82CD567249C788400EA38FD /* SettingsWIndowController.xib */ = {\n\t\t\tisa = PBXVariantGroup;\n\t\t\tchildren = (\n\t\t\t\tE82CD566249C788400EA38FD /* Base */,\n\t\t\t\tE82CD569249C788900EA38FD /* zh-Hans */,\n\t\t\t);\n\t\t\tname = SettingsWIndowController.xib;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tE82CD56F249C7A3E00EA38FD /* Localizable.strings */ = {\n\t\t\tisa = PBXVariantGroup;\n\t\t\tchildren = (\n\t\t\t\tE82CD56E249C7A3E00EA38FD /* zh-Hans */,\n\t\t\t\tE82CD570249C7B7900EA38FD /* en */,\n\t\t\t);\n\t\t\tname = Localizable.strings;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n/* End PBXVariantGroup section */\n\n/* Begin XCBuildConfiguration section */\n\t\tBE464A0B243C29CE00BE8336 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tCLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++14\";\n\t\t\t\tCLANG_CXX_LIBRARY = \"libc++\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_WEAK = YES;\n\t\t\t\tCLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_DOCUMENTATION_COMMENTS = YES;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_RANGE_LOOP_ANALYSIS = YES;\n\t\t\t\tCLANG_WARN_STRICT_PROTOTYPES = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = dwarf;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tENABLE_TESTABILITY = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu11;\n\t\t\t\tGCC_DYNAMIC_NO_PIC = NO;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_OPTIMIZATION_LEVEL = 0;\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = (\n\t\t\t\t\t\"DEBUG=1\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tMACOSX_DEPLOYMENT_TARGET = 10.12;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;\n\t\t\t\tMTL_FAST_MATH = YES;\n\t\t\t\tONLY_ACTIVE_ARCH = YES;\n\t\t\t\tSDKROOT = macosx;\n\t\t\t\tSWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;\n\t\t\t\tSWIFT_OPTIMIZATION_LEVEL = \"-Onone\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\tBE464A0C243C29CE00BE8336 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tCLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++14\";\n\t\t\t\tCLANG_CXX_LIBRARY = \"libc++\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_WEAK = YES;\n\t\t\t\tCLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_DOCUMENTATION_COMMENTS = YES;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_RANGE_LOOP_ANALYSIS = YES;\n\t\t\t\tCLANG_WARN_STRICT_PROTOTYPES = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = \"dwarf-with-dsym\";\n\t\t\t\tENABLE_NS_ASSERTIONS = NO;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu11;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tMACOSX_DEPLOYMENT_TARGET = 10.12;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = NO;\n\t\t\t\tMTL_FAST_MATH = YES;\n\t\t\t\tSDKROOT = macosx;\n\t\t\t\tSWIFT_COMPILATION_MODE = wholemodule;\n\t\t\t\tSWIFT_OPTIMIZATION_LEVEL = \"-O\";\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\tBE464A0E243C29CE00BE8336 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbaseConfigurationReference = 5D8AA9966E1D35373DF930DB /* Pods-Trojan.debug.xcconfig */;\n\t\t\tbuildSettings = {\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCODE_SIGN_ENTITLEMENTS = Trojan/Trojan.entitlements;\n\t\t\t\tCODE_SIGN_IDENTITY = \"Apple Development\";\n\t\t\t\tCODE_SIGN_STYLE = Automatic;\n\t\t\t\tCOMBINE_HIDPI_IMAGES = YES;\n\t\t\t\tDEVELOPMENT_TEAM = 4J772T4V7C;\n\t\t\t\tENABLE_HARDENED_RUNTIME = YES;\n\t\t\t\tINFOPLIST_FILE = Trojan/Info.plist;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"@executable_path/../Frameworks\",\n\t\t\t\t);\n\t\t\t\tLIBRARY_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"$(PROJECT_DIR)/Trojan/InstallHelper\",\n\t\t\t\t);\n\t\t\t\tMACOSX_DEPLOYMENT_TARGET = 10.12;\n\t\t\t\tMARKETING_VERSION = 2.1;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = MacOS.Trojan;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSWIFT_OBJC_BRIDGING_HEADER = \"Trojan/Trojan-Bridging-Header.h\";\n\t\t\t\tSWIFT_OPTIMIZATION_LEVEL = \"-Onone\";\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\tBE464A0F243C29CE00BE8336 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbaseConfigurationReference = 1AC85AC4F6A665FFBF5E32F6 /* Pods-Trojan.release.xcconfig */;\n\t\t\tbuildSettings = {\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCODE_SIGN_ENTITLEMENTS = Trojan/Trojan.entitlements;\n\t\t\t\tCODE_SIGN_IDENTITY = \"Apple Development\";\n\t\t\t\tCODE_SIGN_STYLE = Automatic;\n\t\t\t\tCOMBINE_HIDPI_IMAGES = YES;\n\t\t\t\tDEVELOPMENT_TEAM = 4J772T4V7C;\n\t\t\t\tENABLE_HARDENED_RUNTIME = YES;\n\t\t\t\tINFOPLIST_FILE = Trojan/Info.plist;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"@executable_path/../Frameworks\",\n\t\t\t\t);\n\t\t\t\tLIBRARY_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"$(PROJECT_DIR)/Trojan/InstallHelper\",\n\t\t\t\t);\n\t\t\t\tMACOSX_DEPLOYMENT_TARGET = 10.12;\n\t\t\t\tMARKETING_VERSION = 2.1;\n\t\t\t\tOTHER_CODE_SIGN_FLAGS = \"--timestamp\";\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = MacOS.Trojan;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSWIFT_OBJC_BRIDGING_HEADER = \"Trojan/Trojan-Bridging-Header.h\";\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\tBE524E08245EFF3C003F3E80 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbaseConfigurationReference = EC62B1D04D8D5DC345607E41 /* Pods-ProxyConfHelper.debug.xcconfig */;\n\t\t\tbuildSettings = {\n\t\t\t\tCODE_SIGN_STYLE = Automatic;\n\t\t\t\tMACOSX_DEPLOYMENT_TARGET = 10.12;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\tBE524E09245EFF3C003F3E80 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbaseConfigurationReference = 67B6D44C12B2FDD442F3F62D /* Pods-ProxyConfHelper.release.xcconfig */;\n\t\t\tbuildSettings = {\n\t\t\t\tCODE_SIGN_STYLE = Automatic;\n\t\t\t\tMACOSX_DEPLOYMENT_TARGET = 10.12;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n/* End XCBuildConfiguration section */\n\n/* Begin XCConfigurationList section */\n\t\tBE4649FA243C29CE00BE8336 /* Build configuration list for PBXProject \"Trojan\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\tBE464A0B243C29CE00BE8336 /* Debug */,\n\t\t\t\tBE464A0C243C29CE00BE8336 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\tBE464A0D243C29CE00BE8336 /* Build configuration list for PBXNativeTarget \"Trojan\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\tBE464A0E243C29CE00BE8336 /* Debug */,\n\t\t\t\tBE464A0F243C29CE00BE8336 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\tBE524E0A245EFF3C003F3E80 /* Build configuration list for PBXNativeTarget \"ProxyConfHelper\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\tBE524E08245EFF3C003F3E80 /* Debug */,\n\t\t\t\tBE524E09245EFF3C003F3E80 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n/* End XCConfigurationList section */\n\t};\n\trootObject = BE4649F7243C29CE00BE8336 /* Project object */;\n}\n"
  }
]