diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -1,3 +1,7 @@
+0.7.6.0
+* Newer GHC support
+* Update regexes
+
 0.7.5.1
 * Resolve deprecation warning in YAML parsing.
 
diff --git a/deps/uap-core/regexes.yaml b/deps/uap-core/regexes.yaml
--- a/deps/uap-core/regexes.yaml
+++ b/deps/uap-core/regexes.yaml
@@ -1,4944 +1,5587 @@
 user_agent_parsers:
   #### SPECIAL CASES TOP ####
 
-  # @note: iOS / OSX Applications
-  - regex: '(CFNetwork)(?:/(\d+)\.(\d+)\.?(\d+)?)?'
-    family_replacement: 'CFNetwork'
-
-  # Pingdom
-  - regex: '(Pingdom.com_bot_version_)(\d+)\.(\d+)'
-    family_replacement: 'PingdomBot'
-    # 'Mozilla/5.0 (Unknown; Linux x86_64) AppleWebKit/534.34 (KHTML, like Gecko) PingdomTMS/0.8.5 Safari/534.34'
-  - regex: '(PingdomTMS)/(\d+)\.(\d+)\.(\d+)'
-    family_replacement: 'PingdomBot'
-
-  #StatusCake
-  - regex: '(\(StatusCake\))'
-    family_replacement: 'StatusCakeBot'
-
-  # Facebook
-  - regex: '(facebookexternalhit)/(\d+)\.(\d+)'
-    family_replacement: 'FacebookBot'
-
-  # Google Plus
-  - regex: 'Google.*/\+/web/snippet'
-    family_replacement: 'GooglePlusBot'
-
-  # Gmail
-  - regex: 'via ggpht.com GoogleImageProxy'
-    family_replacement: 'GmailImageProxy'
-
-  # Twitter
-  - regex: '(Twitterbot)/(\d+)\.(\d+)'
-    family_replacement: 'TwitterBot'
-
-  # Bots Pattern '/name-0.0'
-  - regex: '/((?:Ant-)?Nutch|[A-z]+[Bb]ot|[A-z]+[Ss]pider|Axtaris|fetchurl|Isara|ShopSalad|Tailsweep)[ \-](\d+)(?:\.(\d+)(?:\.(\d+))?)?'
-  # Bots Pattern 'name/0.0'
-  - regex: '\b(008|Altresium|Argus|BaiduMobaider|BoardReader|DNSGroup|DataparkSearch|EDI|Goodzer|Grub|INGRID|Infohelfer|LinkedInBot|LOOQ|Nutch|PathDefender|Peew|PostPost|Steeler|Twitterbot|VSE|WebCrunch|WebZIP|Y!J-BR[A-Z]|YahooSeeker|envolk|sproose|wminer)/(\d+)(?:\.(\d+)(?:\.(\d+))?)?'
-
-  # MSIECrawler
-  - regex: '(MSIE) (\d+)\.(\d+)([a-z]\d?)?;.* MSIECrawler'
-    family_replacement: 'MSIECrawler'
-
-  # Downloader ...
-  - regex: '(Google-HTTP-Java-Client|Apache-HttpClient|http%20client|Python-urllib|HttpMonitor|TLSProber|WinHTTP|JNLP|okhttp)(?:[ /](\d+)(?:\.(\d+)(?:\.(\d+))?)?)?'
-
-  # Bots
-  - regex: '(1470\.net crawler|50\.nu|8bo Crawler Bot|Aboundex|Accoona-[A-z]+-Agent|AdsBot-Google(?:-[a-z]+)?|altavista|AppEngine-Google|archive.*?\.org_bot|archiver|Ask Jeeves|[Bb]ai[Dd]u[Ss]pider(?:-[A-Za-z]+)*|bingbot|BingPreview|blitzbot|BlogBridge|Bloglovin|BoardReader(?: [A-Za-z]+)*|boitho.com-dc|BotSeer|\b\w*favicon\w*\b|\bYeti(?:-[a-z]+)?|Catchpoint(?: bot)?|[Cc]harlotte|Checklinks|clumboot|Comodo HTTP\(S\) Crawler|Comodo-Webinspector-Crawler|ConveraCrawler|CRAWL-E|CrawlConvera|Daumoa(?:-feedfetcher)?|Feed Seeker Bot|Feedbin|findlinks|Flamingo_SearchEngine|FollowSite Bot|furlbot|Genieo|gigabot|GomezAgent|gonzo1|(?:[a-zA-Z]+-)?Googlebot(?:-[a-zA-Z]+)?|Google SketchUp|grub-client|gsa-crawler|heritrix|HiddenMarket|holmes|HooWWWer|htdig|ia_archiver|ICC-Crawler|Icarus6j|ichiro(?:/mobile)?|IconSurf|IlTrovatore(?:-Setaccio)?|InfuzApp|Innovazion Crawler|InternetArchive|IP2[a-z]+Bot|jbot\b|KaloogaBot|Kraken|Kurzor|larbin|LEIA|LesnikBot|Linguee Bot|LinkAider|LinkedInBot|Lite Bot|Llaut|lycos|Mail\.RU_Bot|masscan|masidani_bot|Mediapartners-Google|Microsoft .*? Bot|mogimogi|mozDex|MJ12bot|msnbot(?:-media *)?|msrbot|Mtps Feed Aggregation System|netresearch|Netvibes|NewsGator[^/]*|^NING|Nutch[^/]*|Nymesis|ObjectsSearch|Orbiter|OOZBOT|PagePeeker|PagesInventory|PaxleFramework|Peeplo Screenshot Bot|PlantyNet_WebRobot|Pompos|Qwantify|Read%20Later|Reaper|RedCarpet|Retreiver|Riddler|Rival IQ|scooter|Scrapy|Scrubby|searchsight|seekbot|semanticdiscovery|Simpy|SimplePie|SEOstats|SimpleRSS|SiteCon|Slackbot-LinkExpanding|Slack-ImgProxy|Slurp|snappy|Speedy Spider|Squrl Java|Stringer|TheUsefulbot|ThumbShotsBot|Thumbshots\.ru|Tiny Tiny RSS|TwitterBot|WhatsApp|URL2PNG|Vagabondo|VoilaBot|^vortex|Votay bot|^voyager|WASALive.Bot|Web-sniffer|WebThumb|WeSEE:[A-z]+|WhatWeb|WIRE|WordPress|Wotbox|www\.almaden\.ibm\.com|Xenu(?:.s)? Link Sleuth|Xerka [A-z]+Bot|yacy(?:bot)?|Yahoo[a-z]*Seeker|Yahoo! Slurp|Yandex\w+|YodaoBot(?:-[A-z]+)?|YottaaMonitor|Yowedo|^Zao|^Zao-Crawler|ZeBot_www\.ze\.bz|ZooShot|ZyBorg)(?:[ /]v?(\d+)(?:\.(\d+)(?:\.(\d+))?)?)?'
-
-  # Bots General matcher 'name/0.0'
-  - regex: '(?:\/[A-Za-z0-9\.]+)? *([A-Za-z0-9 \-_\!\[\]:]*(?:[Aa]rchiver|[Ii]ndexer|[Ss]craper|[Bb]ot|[Ss]pider|[Cc]rawl[a-z]*))/(\d+)(?:\.(\d+)(?:\.(\d+))?)?'
-  # Bots General matcher 'name 0.0'
-  - regex: '(?:\/[A-Za-z0-9\.]+)? *([A-Za-z0-9 _\!\[\]:]*(?:[Aa]rchiver|[Ii]ndexer|[Ss]craper|[Bb]ot|[Ss]pider|[Cc]rawl[a-z]*)) (\d+)(?:\.(\d+)(?:\.(\d+))?)?'
-  # Bots containing spider|scrape|bot(but not CUBOT)|Crawl
-  - regex: '((?:[A-z0-9]+|[A-z\-]+ ?)?(?: the )?(?:[Ss][Pp][Ii][Dd][Ee][Rr]|[Ss]crape|[A-Za-z0-9-]*(?:[^C][^Uu])[Bb]ot|[Cc][Rr][Aa][Ww][Ll])[A-z0-9]*)(?:(?:[ /]| v)(\d+)(?:\.(\d+)(?:\.(\d+))?)?)?'
-
-  # HbbTV standard defines what features the browser should understand.
-  # but it's like targeting "HTML5 browsers", effective browser support depends on the model
-  # See os_parsers if you want to target a specific TV
-  - regex: '(HbbTV)/(\d+)\.(\d+)\.(\d+) \('
-
-  # must go before Firefox to catch Chimera/SeaMonkey/Camino
-  - regex: '(Chimera|SeaMonkey|Camino)/(\d+)\.(\d+)\.?([ab]?\d+[a-z]*)?'
-
-  # Social Networks
-  # Facebook
-  - regex: '\[FB.*;(FBAV)/(\d+)(?:\.(\d+)(?:\.(\d)+)?)?'
-    family_replacement: 'Facebook'
-  # Pinterest
-  - regex: '\[(Pinterest)/[^\]]+\]'
-  - regex: '(Pinterest)(?: for Android(?: Tablet)?)?/(\d+)(?:\.(\d+)(?:\.(\d)+)?)?'
-
-  # Pale Moon
-  - regex: '(PaleMoon)/(\d+)\.(\d+)\.?(\d+)?'
-    family_replacement: 'Pale Moon'
-
-  # Firefox
-  - regex: '(Fennec)/(\d+)\.(\d+)\.?([ab]?\d+[a-z]*)'
-    family_replacement: 'Firefox Mobile'
-  - regex: '(Fennec)/(\d+)\.(\d+)(pre)'
-    family_replacement: 'Firefox Mobile'
-  - regex: '(Fennec)/(\d+)\.(\d+)'
-    family_replacement: 'Firefox Mobile'
-  - regex: '(?:Mobile|Tablet);.*(Firefox)/(\d+)\.(\d+)'
-    family_replacement: 'Firefox Mobile'
-  - regex: '(Namoroka|Shiretoko|Minefield)/(\d+)\.(\d+)\.(\d+(?:pre)?)'
-    family_replacement: 'Firefox ($1)'
-  - regex: '(Firefox)/(\d+)\.(\d+)(a\d+[a-z]*)'
-    family_replacement: 'Firefox Alpha'
-  - regex: '(Firefox)/(\d+)\.(\d+)(b\d+[a-z]*)'
-    family_replacement: 'Firefox Beta'
-  - regex: '(Firefox)-(?:\d+\.\d+)?/(\d+)\.(\d+)(a\d+[a-z]*)'
-    family_replacement: 'Firefox Alpha'
-  - regex: '(Firefox)-(?:\d+\.\d+)?/(\d+)\.(\d+)(b\d+[a-z]*)'
-    family_replacement: 'Firefox Beta'
-  - regex: '(Namoroka|Shiretoko|Minefield)/(\d+)\.(\d+)([ab]\d+[a-z]*)?'
-    family_replacement: 'Firefox ($1)'
-  - regex: '(Firefox).*Tablet browser (\d+)\.(\d+)\.(\d+)'
-    family_replacement: 'MicroB'
-  - regex: '(MozillaDeveloperPreview)/(\d+)\.(\d+)([ab]\d+[a-z]*)?'
-  - regex: '(FxiOS)/(\d+)\.(\d+)(\.(\d+))?(\.(\d+))?'
-    family_replacement: 'Firefox iOS'
-
-  # e.g.: Flock/2.0b2
-  - regex: '(Flock)/(\d+)\.(\d+)(b\d+?)'
-
-  # RockMelt
-  - regex: '(RockMelt)/(\d+)\.(\d+)\.(\d+)'
-
-  # e.g.: Fennec/0.9pre
-  - regex: '(Navigator)/(\d+)\.(\d+)\.(\d+)'
-    family_replacement: 'Netscape'
-
-  - regex: '(Navigator)/(\d+)\.(\d+)([ab]\d+)'
-    family_replacement: 'Netscape'
-
-  - regex: '(Netscape6)/(\d+)\.(\d+)\.?([ab]?\d+)?'
-    family_replacement: 'Netscape'
-
-  - regex: '(MyIBrow)/(\d+)\.(\d+)'
-    family_replacement: 'My Internet Browser'
-
-  # UC Browser
-  # we need check it before opera. In other case case UC Browser detected look like Opera Mini
-  - regex: '(UC? ?Browser|UCWEB|U3)[ /]?(\d+)\.(\d+)\.(\d+)'
-    family_replacement: 'UC Browser'
-
-  # Opera will stop at 9.80 and hide the real version in the Version string.
-  # see: http://dev.opera.com/articles/view/opera-ua-string-changes/
-  - regex: '(Opera Tablet).*Version/(\d+)\.(\d+)(?:\.(\d+))?'
-  - regex: '(Opera Mini)(?:/att)?/?(\d+)?(?:\.(\d+))?(?:\.(\d+))?'
-  - regex: '(Opera)/.+Opera Mobi.+Version/(\d+)\.(\d+)'
-    family_replacement: 'Opera Mobile'
-  - regex: '(Opera)/(\d+)\.(\d+).+Opera Mobi'
-    family_replacement: 'Opera Mobile'
-  - regex: 'Opera Mobi.+(Opera)(?:/|\s+)(\d+)\.(\d+)'
-    family_replacement: 'Opera Mobile'
-  - regex: 'Opera Mobi'
-    family_replacement: 'Opera Mobile'
-  - regex: '(Opera)/9.80.*Version/(\d+)\.(\d+)(?:\.(\d+))?'
-
-  # Opera 14 for Android uses a WebKit render engine.
-  - regex: '(?:Mobile Safari).*(OPR)/(\d+)\.(\d+)\.(\d+)'
-    family_replacement: 'Opera Mobile'
-
-  # Opera >=15 for Desktop is similar to Chrome but includes an "OPR" Version string.
-  - regex: '(?:Chrome).*(OPR)/(\d+)\.(\d+)\.(\d+)'
-    family_replacement: 'Opera'
-
-  # Opera Coast
-  - regex: '(Coast)/(\d+).(\d+).(\d+)'
-    family_replacement: 'Opera Coast'
-
-  # Opera Mini for iOS (from version 8.0.0)
-  - regex: '(OPiOS)/(\d+).(\d+).(\d+)'
-    family_replacement: 'Opera Mini'
-
-  # Opera Neon
-  - regex: 'Chrome/.+( MMS)/(\d+).(\d+).(\d+)'
-    family_replacement: 'Opera Neon'
-
-  # Palm WebOS looks a lot like Safari.
-  - regex: '(hpw|web)OS/(\d+)\.(\d+)(?:\.(\d+))?'
-    family_replacement: 'webOS Browser'
-
-  # LuaKit has no version info.
-  # http://luakit.org/projects/luakit/
-  - regex: '(luakit)'
-    family_replacement: 'LuaKit'
-
-  # Snowshoe
-  - regex: '(Snowshoe)/(\d+)\.(\d+).(\d+)'
-
-  # Lightning (for Thunderbird)
-  # http://www.mozilla.org/projects/calendar/lightning/
-  - regex: 'Gecko/\d+ (Lightning)/(\d+)\.(\d+)\.?((?:[ab]?\d+[a-z]*)|(?:\d*))'
-
-  # Swiftfox
-  - regex: '(Firefox)/(\d+)\.(\d+)\.(\d+(?:pre)?) \(Swiftfox\)'
-    family_replacement: 'Swiftfox'
-  - regex: '(Firefox)/(\d+)\.(\d+)([ab]\d+[a-z]*)? \(Swiftfox\)'
-    family_replacement: 'Swiftfox'
-
-  # Rekonq
-  - regex: '(rekonq)/(\d+)\.(\d+)\.?(\d+)? Safari'
-    family_replacement: 'Rekonq'
-  - regex: 'rekonq'
-    family_replacement: 'Rekonq'
-
-  # Conkeror lowercase/uppercase
-  # http://conkeror.org/
-  - regex: '(conkeror|Conkeror)/(\d+)\.(\d+)\.?(\d+)?'
-    family_replacement: 'Conkeror'
-
-  # catches lower case konqueror
-  - regex: '(konqueror)/(\d+)\.(\d+)\.(\d+)'
-    family_replacement: 'Konqueror'
-
-  - regex: '(WeTab)-Browser'
-
-  - regex: '(Comodo_Dragon)/(\d+)\.(\d+)\.(\d+)'
-    family_replacement: 'Comodo Dragon'
-
-  - regex: '(Symphony) (\d+).(\d+)'
-
-  - regex: 'PLAYSTATION 3.+WebKit'
-    family_replacement: 'NetFront NX'
-  - regex: 'PLAYSTATION 3'
-    family_replacement: 'NetFront'
-  - regex: '(PlayStation Portable)'
-    family_replacement: 'NetFront'
-  - regex: '(PlayStation Vita)'
-    family_replacement: 'NetFront NX'
-
-  - regex: 'AppleWebKit.+ (NX)/(\d+)\.(\d+)\.(\d+)'
-    family_replacement: 'NetFront NX'
-  - regex: '(Nintendo 3DS)'
-    family_replacement: 'NetFront NX'
-
-  # Amazon Silk, should go before Safari and Chrome Mobile
-  - regex: '(Silk)/(\d+)\.(\d+)(?:\.([0-9\-]+))?'
-    family_replacement: 'Amazon Silk'
-
-  # @ref: http://www.puffinbrowser.com
-  - regex: '(Puffin)/(\d+)\.(\d+)(?:\.(\d+))?'
-
-  # Edge Mobile
-  - regex: 'Windows Phone .*(Edge)/(\d+)\.(\d+)'
-    family_replacement: 'Edge Mobile'
-
-  # Samsung Internet (based on Chrome, but lacking some features)
-  - regex: '(SamsungBrowser)/(\d+)\.(\d+)'
-    family_replacement: 'Samsung Internet'
-
-  # Seznam.cz browser (based on WebKit)
-  - regex: '(SznProhlizec)/(\d+)\.(\d+)(?:\.(\d+))?'
-    family_replacement: 'Seznam.cz'
-
-  # Coc Coc browser, based on Chrome (used in Vietnam)
-  - regex: '(coc_coc_browser)/(\d+)\.(\d+)(?:\.(\d+))?'
-    family_replacement: 'Coc Coc'
-
-  # Baidu Browsers (desktop spoofs chrome & IE, explorer is mobile)
-  - regex: '(baidubrowser)[/\s](\d+)(?:\.(\d+)(?:\.(\d+))?)?'
-    family_replacement: 'Baidu Browser'
-  - regex: '(FlyFlow)/(\d+)\.(\d+)'
-    family_replacement: 'Baidu Explorer'
-
-  # MxBrowser is Maxthon. Must go before Mobile Chrome for Android
-  - regex: '(MxBrowser)/(\d+)\.(\d+)(?:\.(\d+))?'
-    family_replacement: 'Maxthon'
-
-  # Crosswalk must go before Mobile Chrome for Android
-  - regex: '(Crosswalk)/(\d+)\.(\d+)\.(\d+)\.(\d+)'
-
-  # Chrome Mobile
-  - regex: '; wv\).+(Chrome)/(\d+)\.(\d+)\.(\d+)\.(\d+)'
-    family_replacement: 'Chrome Mobile WebView'
-  - regex: '(CrMo)/(\d+)\.(\d+)\.(\d+)\.(\d+)'
-    family_replacement: 'Chrome Mobile'
-  - regex: '(CriOS)/(\d+)\.(\d+)\.(\d+)\.(\d+)'
-    family_replacement: 'Chrome Mobile iOS'
-  - regex: '(Chrome)/(\d+)\.(\d+)\.(\d+)\.(\d+) Mobile(?:[ /]|$)'
-    family_replacement: 'Chrome Mobile'
-  - regex: ' Mobile .*(Chrome)/(\d+)\.(\d+)\.(\d+)\.(\d+)'
-    family_replacement: 'Chrome Mobile'
-
-  # Chrome Frame must come before MSIE.
-  - regex: '(chromeframe)/(\d+)\.(\d+)\.(\d+)'
-    family_replacement: 'Chrome Frame'
-
-  # Tizen Browser (second case included in browser/major.minor regex)
-  - regex: '(SLP Browser)/(\d+)\.(\d+)'
-    family_replacement: 'Tizen Browser'
-
-  # Sogou Explorer 2.X
-  - regex: '(SE 2\.X) MetaSr (\d+)\.(\d+)'
-    family_replacement: 'Sogou Explorer'
-
-  # QQ Browsers
-  - regex: '(MQQBrowser/Mini)(?:(\d+)(?:\.(\d+)(?:\.(\d+))?)?)?'
-    family_replacement: 'QQ Browser Mini'
-  - regex: '(MQQBrowser)(?:/(\d+)(?:\.(\d+)(?:\.(\d+))?)?)?'
-    family_replacement: 'QQ Browser Mobile'
-  - regex: '(QQBrowser)(?:/(\d+)(?:\.(\d+)\.(\d+)(?:\.(\d+))?)?)?'
-    family_replacement: 'QQ Browser'
-
-  # Rackspace Monitoring
-  - regex: '(Rackspace Monitoring)/(\d+)\.(\d+)'
-    family_replacement: 'RackspaceBot'
-
-  # PyAMF
-  - regex: '(PyAMF)/(\d+)\.(\d+)\.(\d+)'
-
-  # Yandex Browser
-  - regex: '(YaBrowser)/(\d+)\.(\d+)\.(\d+)'
-    family_replacement: 'Yandex Browser'
-
-  # Mail.ru Amigo/Internet Browser (Chromium-based)
-  - regex: '(Chrome)/(\d+)\.(\d+)\.(\d+).* MRCHROME'
-    family_replacement: 'Mail.ru Chromium Browser'
-
-  # AOL Browser (IE-based)
-  - regex: '(AOL) (\d+)\.(\d+); AOLBuild (\d+)'
-
-  #### END SPECIAL CASES TOP ####
-
-  #### MAIN CASES - this catches > 50% of all browsers ####
-
-
-  # Slack desktop client (needs to be before Apple Mail, Electron, and Chrome as it gets wrongly detected on Mac OS otherwise)
-  - regex: '(Slack_SSB)/(\d+)\.(\d+)\.(\d+)'
-    family_replacement: 'Slack Desktop Client'
-  
-  # HipChat provides a version on Mac, but not on Windows.
-  # Needs to be before Chrome on Windows, and AppleMail on Mac.
-  - regex: '(HipChat)/?(\d+)?'
-    family_replacement: 'HipChat Desktop Client'
-
-  # Browser/major_version.minor_version.beta_version
-  - regex: '\b(MobileIron|FireWeb|Jasmine|ANTGalio|Midori|Fresco|Lobo|PaleMoon|Maxthon|Lynx|OmniWeb|Dillo|Camino|Demeter|Fluid|Fennec|Epiphany|Shiira|Sunrise|Spotify|Flock|Netscape|Lunascape|WebPilot|NetFront|Netfront|Konqueror|SeaMonkey|Kazehakase|Vienna|Iceape|Iceweasel|IceWeasel|Iron|K-Meleon|Sleipnir|Galeon|GranParadiso|Opera Mini|iCab|NetNewsWire|ThunderBrowse|Iris|UP\.Browser|Bunjalloo|Google Earth|Raven for Mac|Openwave|MacOutlook|Electron)/(\d+)\.(\d+)\.(\d+)'
-
-  # Outlook 2007
-  - regex: 'Microsoft Office Outlook 12\.\d+\.\d+|MSOffice 12'
-    family_replacement: 'Outlook'
-    v1_replacement: '2007'
-
-  # Outlook 2010
-  - regex: 'Microsoft Outlook 14\.\d+\.\d+|MSOffice 14'
-    family_replacement: 'Outlook'
-    v1_replacement: '2010'
-
-  # Outlook 2013
-  - regex: 'Microsoft Outlook 15\.\d+\.\d+'
-    family_replacement: 'Outlook'
-    v1_replacement: '2013'
-
-  # Outlook 2016
-  - regex: 'Microsoft Outlook (?:Mail )?16\.\d+\.\d+'
-    family_replacement: 'Outlook'
-    v1_replacement: '2016'
-
-  # Windows Live Mail
-  - regex: 'Outlook-Express\/7\.0.*'
-    family_replacement: 'Windows Live Mail'
-
-  # Apple Air Mail
-  - regex: '(Airmail) (\d+)\.(\d+)(?:\.(\d+))?'
-
-  # Thunderbird
-  - regex: '(Thunderbird)/(\d+)\.(\d+)(?:\.(\d+(?:pre)?))?'
-    family_replacement: 'Thunderbird'
-
-  # Postbox
-  - regex: '(Postbox)/(\d+)\.(\d+)\.(\d+)'
-    family_replacement: 'Postbox'
-
-  # Barca
-  - regex: '(Barca(?:Pro)?)/(\d+)\.(\d+)(?:\.(\d+))?'
-    family_replacement: 'Barca'
-
-  # Lotus Notes
-  - regex: '(Lotus-Notes)/(\d+)\.(\d+)(?:\.(\d+))?'
-    family_replacement: 'Lotus Notes'
-
-  # Vivaldi uses "Vivaldi"
-  - regex: '(Vivaldi)/(\d+)\.(\d+)\.(\d+)'
-
-  # Edge/major_version.minor_version
-  - regex: '(Edge)/(\d+)(?:\.(\d+))?'
-
-  # Brave Browser https://brave.com/
-  - regex: '(brave)/(\d+)\.(\d+)\.(\d+) Chrome'
-    family_replacement: 'Brave'
-
-  # Iron Browser ~since version 50
-  - regex: '(Chrome)/(\d+)\.(\d+)\.(\d+)[\d.]* Iron[^/]'
-    family_replacement: 'Iron'
-
-  # Dolphin Browser
-  # @ref: http://www.dolphin.com
-  - regex: '\b(Dolphin)(?: |HDCN/|/INT\-)(\d+)\.(\d+)\.?(\d+)?'
-
-  # Headless Chrome
-  # https://chromium.googlesource.com/chromium/src/+/lkgr/headless/README.md
-  # Currently only available on Linux
-  - regex: 'HeadlessChrome'
-    family_replacement: 'HeadlessChrome'
-
-  # Browser/major_version.minor_version
-  - regex: '(bingbot|Bolt|AdobeAIR|Jasmine|IceCat|Skyfire|Midori|Maxthon|Lynx|Arora|IBrowse|Dillo|Camino|Shiira|Fennec|Phoenix|Flock|Netscape|Lunascape|Epiphany|WebPilot|Opera Mini|Opera|NetFront|Netfront|Konqueror|Googlebot|SeaMonkey|Kazehakase|Vienna|Iceape|Iceweasel|IceWeasel|Iron|K-Meleon|Sleipnir|Galeon|GranParadiso|iCab|iTunes|MacAppStore|NetNewsWire|Space Bison|Stainless|Orca|Dolfin|BOLT|Minimo|Tizen Browser|Polaris|Abrowser|Planetweb|ICE Browser|mDolphin|qutebrowser|Otter|QupZilla|MailBar|kmail2|YahooMobileMail|ExchangeWebServices|ExchangeServicesClient|Dragon|Outlook-iOS-Android)/(\d+)\.(\d+)(?:\.(\d+))?'
-
-  # Chrome/Chromium/major_version.minor_version
-  - regex: '(Chromium|Chrome)/(\d+)\.(\d+)(?:\.(\d+))?'
-
-  ##########
-  # IE Mobile needs to happen before Android to catch cases such as:
-  # Mozilla/5.0 (Mobile; Windows Phone 8.1; Android 4.0; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; NOKIA; Lumia 920)...
-  # Mozilla/5.0 (Mobile; Windows Phone 8.1; Android 4.0; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; NOKIA; Lumia 920; ANZ821)...
-  # Mozilla/5.0 (Mobile; Windows Phone 8.1; Android 4.0; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; NOKIA; Lumia 920; Orange)...
-  # Mozilla/5.0 (Mobile; Windows Phone 8.1; Android 4.0; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; NOKIA; Lumia 920; Vodafone)...
-  ##########
-
-  # IE Mobile
-  - regex: '(IEMobile)[ /](\d+)\.(\d+)'
-    family_replacement: 'IE Mobile'
-
-  # Baca Berita App News Reader
-  - regex: '(BacaBerita App)\/(\d+)\.(\d+)\.(\d+)'
-
-  # Browser major_version.minor_version.beta_version (space instead of slash)
-  - regex: '(iRider|Crazy Browser|SkipStone|iCab|Lunascape|Sleipnir|Maemo Browser) (\d+)\.(\d+)\.(\d+)'
-  # Browser major_version.minor_version (space instead of slash)
-  - regex: '(iCab|Lunascape|Opera|Android|Jasmine|Polaris|Microsoft SkyDriveSync|The Bat!) (\d+)\.(\d+)\.?(\d+)?'
-
-  # Kindle WebKit
-  - regex: '(Kindle)/(\d+)\.(\d+)'
-
-  # weird android UAs
-  - regex: '(Android) Donut'
-    v1_replacement: '1'
-    v2_replacement: '2'
-
-  - regex: '(Android) Eclair'
-    v1_replacement: '2'
-    v2_replacement: '1'
-
-  - regex: '(Android) Froyo'
-    v1_replacement: '2'
-    v2_replacement: '2'
-
-  - regex: '(Android) Gingerbread'
-    v1_replacement: '2'
-    v2_replacement: '3'
-
-  - regex: '(Android) Honeycomb'
-    v1_replacement: '3'
-
-  # desktop mode
-  # http://www.anandtech.com/show/3982/windows-phone-7-review
-  - regex: '(MSIE) (\d+)\.(\d+).*XBLWP7'
-    family_replacement: 'IE Large Screen'
-
-
-  #### END MAIN CASES ####
-
-  #### SPECIAL CASES ####
-  - regex: '(Obigo)InternetBrowser'
-  - regex: '(Obigo)\-Browser'
-  - regex: '(Obigo|OBIGO)[^\d]*(\d+)(?:.(\d+))?'
-    family_replacement: 'Obigo'
-
-  - regex: '(MAXTHON|Maxthon) (\d+)\.(\d+)'
-    family_replacement: 'Maxthon'
-  - regex: '(Maxthon|MyIE2|Uzbl|Shiira)'
-    v1_replacement: '0'
-
-  - regex: '(BrowseX) \((\d+)\.(\d+)\.(\d+)'
-
-  - regex: '(NCSA_Mosaic)/(\d+)\.(\d+)'
-    family_replacement: 'NCSA Mosaic'
-
-  # Polaris/d.d is above
-  - regex: '(POLARIS)/(\d+)\.(\d+)'
-    family_replacement: 'Polaris'
-  - regex: '(Embider)/(\d+)\.(\d+)'
-    family_replacement: 'Polaris'
-
-  - regex: '(BonEcho)/(\d+)\.(\d+)\.?([ab]?\d+)?'
-    family_replacement: 'Bon Echo'
-
-  # @note: iOS / OSX Applications
-  - regex: '(iPod|iPhone|iPad).+Version/(\d+)\.(\d+)(?:\.(\d+))?.*[ +]Safari'
-    family_replacement: 'Mobile Safari'
-  - regex: '(iPod|iPhone|iPad).+Version/(\d+)\.(\d+)(?:\.(\d+))?'
-    family_replacement: 'Mobile Safari UI/WKWebView'
-  - regex: '(iPod|iPod touch|iPhone|iPad);.*CPU.*OS[ +](\d+)_(\d+)(?:_(\d+))?.*Mobile.*[ +]Safari'
-    family_replacement: 'Mobile Safari'
-  - regex: '(iPod|iPod touch|iPhone|iPad);.*CPU.*OS[ +](\d+)_(\d+)(?:_(\d+))?.*Mobile'
-    family_replacement: 'Mobile Safari UI/WKWebView'
-  - regex: '(iPod|iPhone|iPad).* Safari'
-    family_replacement: 'Mobile Safari'
-  - regex: '(iPod|iPhone|iPad)'
-    family_replacement: 'Mobile Safari UI/WKWebView'
-
-  - regex: '(AvantGo) (\d+).(\d+)'
-
-  - regex: '(OneBrowser)/(\d+).(\d+)'
-    family_replacement: 'ONE Browser'
-
-  - regex: '(Avant)'
-    v1_replacement: '1'
-
-  # This is the Tesla Model S (see similar entry in device parsers)
-  - regex: '(QtCarBrowser)'
-    v1_replacement: '1'
-
-  - regex: '^(iBrowser/Mini)(\d+).(\d+)'
-    family_replacement: 'iBrowser Mini'
-  - regex: '^(iBrowser|iRAPP)/(\d+).(\d+)'
-
-  # nokia browsers
-  # based on: http://www.developer.nokia.com/Community/Wiki/User-Agent_headers_for_Nokia_devices
-  - regex: '^(Nokia)'
-    family_replacement: 'Nokia Services (WAP) Browser'
-  - regex: '(NokiaBrowser)/(\d+)\.(\d+).(\d+)\.(\d+)'
-    family_replacement: 'Nokia Browser'
-  - regex: '(NokiaBrowser)/(\d+)\.(\d+).(\d+)'
-    family_replacement: 'Nokia Browser'
-  - regex: '(NokiaBrowser)/(\d+)\.(\d+)'
-    family_replacement: 'Nokia Browser'
-  - regex: '(BrowserNG)/(\d+)\.(\d+).(\d+)'
-    family_replacement: 'Nokia Browser'
-  - regex: '(Series60)/5\.0'
-    family_replacement: 'Nokia Browser'
-    v1_replacement: '7'
-    v2_replacement: '0'
-  - regex: '(Series60)/(\d+)\.(\d+)'
-    family_replacement: 'Nokia OSS Browser'
-  - regex: '(S40OviBrowser)/(\d+)\.(\d+)\.(\d+)\.(\d+)'
-    family_replacement: 'Ovi Browser'
-  - regex: '(Nokia)[EN]?(\d+)'
-
-  # BlackBerry devices
-  - regex: '(PlayBook).+RIM Tablet OS (\d+)\.(\d+)\.(\d+)'
-    family_replacement: 'BlackBerry WebKit'
-  - regex: '(Black[bB]erry|BB10).+Version/(\d+)\.(\d+)\.(\d+)'
-    family_replacement: 'BlackBerry WebKit'
-  - regex: '(Black[bB]erry)\s?(\d+)'
-    family_replacement: 'BlackBerry'
-
-  - regex: '(OmniWeb)/v(\d+)\.(\d+)'
-
-  - regex: '(Blazer)/(\d+)\.(\d+)'
-    family_replacement: 'Palm Blazer'
-
-  - regex: '(Pre)/(\d+)\.(\d+)'
-    family_replacement: 'Palm Pre'
-
-  # fork of Links
-  - regex: '(ELinks)/(\d+)\.(\d+)'
-  - regex: '(ELinks) \((\d+)\.(\d+)'
-  - regex: '(Links) \((\d+)\.(\d+)'
-
-  - regex: '(QtWeb) Internet Browser/(\d+)\.(\d+)'
-
-  #- regex: '\(iPad;.+(Version)/(\d+)\.(\d+)(?:\.(\d+))?.*Safari/'
-  #  family_replacement: 'iPad'
-
-  # Phantomjs, should go before Safari
-  - regex: '(PhantomJS)/(\d+)\.(\d+)\.(\d+)'
-
-  # WebKit Nightly
-  - regex: '(AppleWebKit)/(\d+)\.?(\d+)?\+ .* Safari'
-    family_replacement: 'WebKit Nightly'
-
-  # Safari
-  - regex: '(Version)/(\d+)\.(\d+)(?:\.(\d+))?.*Safari/'
-    family_replacement: 'Safari'
-  # Safari didn't provide "Version/d.d.d" prior to 3.0
-  - regex: '(Safari)/\d+'
-
-  - regex: '(OLPC)/Update(\d+)\.(\d+)'
-
-  - regex: '(OLPC)/Update()\.(\d+)'
-    v1_replacement: '0'
-
-  - regex: '(SEMC\-Browser)/(\d+)\.(\d+)'
-
-  - regex: '(Teleca)'
-    family_replacement: 'Teleca Browser'
-
-  - regex: '(Phantom)/V(\d+)\.(\d+)'
-    family_replacement: 'Phantom Browser'
-
-  - regex: 'Trident(.*)rv.(\d+)\.(\d+)'
-    family_replacement: 'IE'
-
-  # Espial
-  - regex: '(Espial)/(\d+)(?:\.(\d+))?(?:\.(\d+))?'
-
- # Apple Mail
-
-  # apple mail - not directly detectable, have it after Safari stuff
-  - regex: '(AppleWebKit)/(\d+)\.(\d+)\.(\d+)'
-    family_replacement: 'Apple Mail'
-
-  # AFTER THE EDGE CASES ABOVE!
-  # AFTER IE11
-  # BEFORE all other IE
-  - regex: '(Firefox)/(\d+)\.(\d+)\.(\d+)'
-  - regex: '(Firefox)/(\d+)\.(\d+)(pre|[ab]\d+[a-z]*)?'
-
-  - regex: '([MS]?IE) (\d+)\.(\d+)'
-    family_replacement: 'IE'
-
-  - regex: '(python-requests)/(\d+)\.(\d+)'
-    family_replacement: 'Python Requests'
-
-  # headless user-agents
-  - regex: '\b(Windows-Update-Agent|Microsoft-CryptoAPI|SophosUpdateManager|SophosAgent|Debian APT-HTTP|Ubuntu APT-HTTP|libcurl-agent|libwww-perl|urlgrabber|curl|Wget|OpenBSD ftp|jupdate)(?:[ /](\d+)(?:\.(\d+)(?:\.(\d+))?)?)?'
-
-  - regex: '(Java)[/ ]{0,1}\d+\.(\d+)\.(\d+)[_-]*([a-zA-Z0-9]+)*'
-
-  # Roku Digital-Video-Players https://www.roku.com/
-  - regex: '^(Roku)/DVP-(\d+)\.(\d+)'
-
-  # Kurio App News Reader https://kurio.co.id/
-  - regex: '(Kurio)\/(\d+)\.(\d+)\.(\d+)'
-    family_replacement: 'Kurio App'
-
-
-os_parsers:
-  ##########
-  # HbbTV vendors
-  ##########
-
-  # starts with the easy one : Panasonic seems consistent across years, hope it will continue
-  #HbbTV/1.1.1 (;Panasonic;VIERA 2011;f.532;0071-0802 2000-0000;)
-  #HbbTV/1.1.1 (;Panasonic;VIERA 2012;1.261;0071-3103 2000-0000;)
-  #HbbTV/1.2.1 (;Panasonic;VIERA 2013;3.672;4101-0003 0002-0000;)
-  #- regex: 'HbbTV/\d+\.\d+\.\d+ \(;(Panasonic);VIERA ([0-9]{4});'
-
-  # Sony is consistent too but do not place year like the other
-  # Opera/9.80 (Linux armv7l; HbbTV/1.1.1 (; Sony; KDL32W650A; PKG3.211EUA; 2013;); ) Presto/2.12.362 Version/12.11
-  # Opera/9.80 (Linux mips; U;  HbbTV/1.1.1 (; Sony; KDL40HX751; PKG1.902EUA; 2012;);; en) Presto/2.10.250 Version/11.60
-  # Opera/9.80 (Linux mips; U;  HbbTV/1.1.1 (; Sony; KDL22EX320; PKG4.017EUA; 2011;);; en) Presto/2.7.61 Version/11.00
-  #- regex: 'HbbTV/\d+\.\d+\.\d+ \(; (Sony);.*;.*; ([0-9]{4});\)'
-
-
-  # LG is consistent too, but we need to add manually the year model
-  #Mozilla/5.0 (Unknown; Linux armv7l) AppleWebKit/537.1+ (KHTML, like Gecko) Safari/537.1+ HbbTV/1.1.1 ( ;LGE ;NetCast 4.0 ;03.20.30 ;1.0M ;)
-  #Mozilla/5.0 (DirectFB; Linux armv7l) AppleWebKit/534.26+ (KHTML, like Gecko) Version/5.0 Safari/534.26+ HbbTV/1.1.1 ( ;LGE ;NetCast 3.0 ;1.0 ;1.0M ;)
-  - regex: 'HbbTV/\d+\.\d+\.\d+ \( ;(LG)E ;NetCast 4.0'
-    os_v1_replacement: '2013'
-  - regex: 'HbbTV/\d+\.\d+\.\d+ \( ;(LG)E ;NetCast 3.0'
-    os_v1_replacement: '2012'
-
-  # Samsung is on its way of normalizing their user-agent
-  # HbbTV/1.1.1 (;Samsung;SmartTV2013;T-FXPDEUC-1102.2;;) WebKit
-  # HbbTV/1.1.1 (;Samsung;SmartTV2013;T-MST12DEUC-1102.1;;) WebKit
-  # HbbTV/1.1.1 (;Samsung;SmartTV2012;;;) WebKit
-  # HbbTV/1.1.1 (;;;;;) Maple_2011
-  - regex: 'HbbTV/1.1.1 \(;;;;;\) Maple_2011'
-    os_replacement: 'Samsung'
-    os_v1_replacement: '2011'
-  # manage the two models of 2013
-  - regex: 'HbbTV/\d+\.\d+\.\d+ \(;(Samsung);SmartTV([0-9]{4});.*FXPDEUC'
-    os_v2_replacement: 'UE40F7000'
-  - regex: 'HbbTV/\d+\.\d+\.\d+ \(;(Samsung);SmartTV([0-9]{4});.*MST12DEUC'
-    os_v2_replacement: 'UE32F4500'
-  # generic Samsung (works starting in 2012)
-  #- regex: 'HbbTV/\d+\.\d+\.\d+ \(;(Samsung);SmartTV([0-9]{4});'
-
-  # Philips : not found any other way than a manual mapping
-  # Opera/9.80 (Linux mips; U; HbbTV/1.1.1 (; Philips; ; ; ; ) CE-HTML/1.0 NETTV/4.1.3 PHILIPSTV/1.1.1; en) Presto/2.10.250 Version/11.60
-  # Opera/9.80 (Linux mips ; U; HbbTV/1.1.1 (; Philips; ; ; ; ) CE-HTML/1.0 NETTV/3.2.1; en) Presto/2.6.33 Version/10.70
-  - regex: 'HbbTV/1.1.1 \(; (Philips);.*NETTV/4'
-    os_v1_replacement: '2013'
-  - regex: 'HbbTV/1.1.1 \(; (Philips);.*NETTV/3'
-    os_v1_replacement: '2012'
-  - regex: 'HbbTV/1.1.1 \(; (Philips);.*NETTV/2'
-    os_v1_replacement: '2011'
-
-  # the HbbTV emulator developers use HbbTV/1.1.1 (;;;;;) firetv-firefox-plugin 1.1.20
-  - regex: 'HbbTV/\d+\.\d+\.\d+.*(firetv)-firefox-plugin (\d+).(\d+).(\d+)'
-    os_replacement: 'FireHbbTV'
-
-  # generic HbbTV, hoping to catch manufacturer name (always after 2nd comma) and the first string that looks like a 2011-2019 year
-  - regex: 'HbbTV/\d+\.\d+\.\d+ \(.*; ?([a-zA-Z]+) ?;.*(201[1-9]).*\)'
-
-  ##########
-  # @note: Windows Phone needs to come before Windows NT 6.1 *and* before Android to catch cases such as:
-  # Mozilla/5.0 (Mobile; Windows Phone 8.1; Android 4.0; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; NOKIA; Lumia 920)...
-  # Mozilla/5.0 (Mobile; Windows Phone 8.1; Android 4.0; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; NOKIA; Lumia 920; ANZ821)...
-  # Mozilla/5.0 (Mobile; Windows Phone 8.1; Android 4.0; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; NOKIA; Lumia 920; Orange)...
-  # Mozilla/5.0 (Mobile; Windows Phone 8.1; Android 4.0; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; NOKIA; Lumia 920; Vodafone)...
-  ##########
-
-  - regex: '(Windows Phone) (?:OS[ /])?(\d+)\.(\d+)'
-
-  # Again a MS-special one: iPhone.*Outlook-iOS-Android/x.x is erroneously detected as Android
-  - regex: '(CPU[ +]OS|iPhone[ +]OS|CPU[ +]iPhone)[ +]+(\d+)[_\.](\d+)(?:[_\.](\d+))?.*Outlook-iOS-Android'
-    os_replacement: 'iOS'
-
-  ##########
-  # Android
-  # can actually detect rooted android os. do we care?
-  ##########
-  - regex: '(Android)[ \-/](\d+)\.(\d+)(?:[.\-]([a-z0-9]+))?'
-
-  - regex: '(Android) Donut'
-    os_v1_replacement: '1'
-    os_v2_replacement: '2'
-
-  - regex: '(Android) Eclair'
-    os_v1_replacement: '2'
-    os_v2_replacement: '1'
-
-  - regex: '(Android) Froyo'
-    os_v1_replacement: '2'
-    os_v2_replacement: '2'
-
-  - regex: '(Android) Gingerbread'
-    os_v1_replacement: '2'
-    os_v2_replacement: '3'
-
-  - regex: '(Android) Honeycomb'
-    os_v1_replacement: '3'
-
-  # UCWEB
-  - regex: '^UCWEB.*; (Adr) (\d+)\.(\d+)(?:[.\-]([a-z0-9]+))?;'
-    os_replacement: 'Android'
-  - regex: '^UCWEB.*; (iPad|iPh|iPd) OS (\d+)_(\d+)(?:_(\d+))?;'
-    os_replacement: 'iOS'
-  - regex: '^UCWEB.*; (wds) (\d+)\.(\d+)(?:\.(\d+))?;'
-    os_replacement: 'Windows Phone'
-  # JUC
-  - regex: '^(JUC).*; ?U; ?(?:Android)?(\d+)\.(\d+)(?:[\.\-]([a-z0-9]+))?'
-    os_replacement: 'Android'
-
-  ##########
-  # Kindle Android
-  ##########
-  - regex: '(Silk-Accelerated=[a-z]{4,5})'
-    os_replacement: 'Android'
-
-  ##########
-  # Windows
-  # http://en.wikipedia.org/wiki/Windows_NT#Releases
-  # possibility of false positive when different marketing names share same NT kernel
-  # e.g. windows server 2003 and windows xp
-  # lots of ua strings have Windows NT 4.1 !?!?!?!? !?!? !? !????!?! !!! ??? !?!?! ?
-  # (very) roughly ordered in terms of frequency of occurence of regex (win xp currently most frequent, etc)
-  ##########
-
-  # ie mobile desktop mode
-  # spoofs nt 6.1. must come before windows 7
-  - regex: '(XBLWP7)'
-    os_replacement: 'Windows Phone'
-
-  # @note: This needs to come before Windows NT 6.1
-  - regex: '(Windows ?Mobile)'
-    os_replacement: 'Windows Mobile'
-
-  - regex: '(Windows (?:NT 5\.2|NT 5\.1))'
-    os_replacement: 'Windows XP'
-
-  - regex: '(Windows NT 6\.1)'
-    os_replacement: 'Windows 7'
-
-  - regex: '(Windows NT 6\.0)'
-    os_replacement: 'Windows Vista'
-
-  - regex: '(Win 9x 4\.90)'
-    os_replacement: 'Windows ME'
-
-  - regex: '(Windows 98|Windows XP|Windows ME|Windows 95|Windows CE|Windows 7|Windows NT 4\.0|Windows Vista|Windows 2000|Windows 3.1)'
-
-  - regex: '(Windows NT 6\.2; ARM;)'
-    os_replacement: 'Windows RT'
-  - regex: '(Windows NT 6\.2)'
-    os_replacement: 'Windows 8'
-
-  - regex: '(Windows NT 6\.3; ARM;)'
-    os_replacement: 'Windows RT 8.1'
-  - regex: '(Windows NT 6\.3)'
-    os_replacement: 'Windows 8.1'
-
-  - regex: '(Windows NT 6\.4)'
-    os_replacement: 'Windows 10'
-  - regex: '(Windows NT 10\.0)'
-    os_replacement: 'Windows 10'
-
-  - regex: '(Windows NT 5\.0)'
-    os_replacement: 'Windows 2000'
-
-  - regex: '(WinNT4.0)'
-    os_replacement: 'Windows NT 4.0'
-
-  - regex: '(Windows ?CE)'
-    os_replacement: 'Windows CE'
-
-  - regex: 'Win ?(95|98|3.1|NT|ME|2000)'
-    os_replacement: 'Windows $1'
-
-  - regex: 'Win16'
-    os_replacement: 'Windows 3.1'
-
-  - regex: 'Win32'
-    os_replacement: 'Windows 95'
-
-  ##########
-  # Tizen OS from Samsung
-  # spoofs Android so pushing it above
-  ##########
-  - regex: '(Tizen)[/ ](\d+)\.(\d+)'
-
-  ##########
-  # Mac OS
-  # @ref: http://en.wikipedia.org/wiki/Mac_OS_X#Versions
-  # @ref: http://www.puredarwin.org/curious/versions
-  ##########
-  - regex: '((?:Mac[ +]?|; )OS[ +]X)[\s+/](?:(\d+)[_.](\d+)(?:[_.](\d+))?|Mach-O)'
-    os_replacement: 'Mac OS X'
-  # Leopard
-  - regex: ' (Dar)(win)/(9).(\d+).*\((?:i386|x86_64|Power Macintosh)\)'
-    os_replacement: 'Mac OS X'
-    os_v1_replacement: '10'
-    os_v2_replacement: '5'
-  # Snow Leopard
-  - regex: ' (Dar)(win)/(10).(\d+).*\((?:i386|x86_64)\)'
-    os_replacement: 'Mac OS X'
-    os_v1_replacement: '10'
-    os_v2_replacement: '6'
-  # Lion
-  - regex: ' (Dar)(win)/(11).(\d+).*\((?:i386|x86_64)\)'
-    os_replacement: 'Mac OS X'
-    os_v1_replacement: '10'
-    os_v2_replacement: '7'
-  # Mountain Lion
-  - regex: ' (Dar)(win)/(12).(\d+).*\((?:i386|x86_64)\)'
-    os_replacement: 'Mac OS X'
-    os_v1_replacement: '10'
-    os_v2_replacement: '8'
-  # Mavericks
-  - regex: ' (Dar)(win)/(13).(\d+).*\((?:i386|x86_64)\)'
-    os_replacement: 'Mac OS X'
-    os_v1_replacement: '10'
-    os_v2_replacement: '9'
-  # Yosemite is Darwin/14.x but patch versions are inconsistent in the Darwin string;
-  # more accurately covered by CFNetwork regexes downstream
-
-  # IE on Mac doesn't specify version number
-  - regex: 'Mac_PowerPC'
-    os_replacement: 'Mac OS'
-
-  # builds before tiger don't seem to specify version?
-
-  # ios devices spoof (mac os x), so including intel/ppc prefixes
-  - regex: '(?:PPC|Intel) (Mac OS X)'
-
-  ##########
-  # iOS
-  # http://en.wikipedia.org/wiki/IOS_version_history
-  ##########
-  # keep this above generic iOS, since AppleTV UAs contain 'CPU OS'
-  - regex: '(Apple\s?TV)(?:/(\d+)\.(\d+))?'
-    os_replacement: 'ATV OS X'
-
-  - regex: '(CPU[ +]OS|iPhone[ +]OS|CPU[ +]iPhone|CPU IPhone OS)[ +]+(\d+)[_\.](\d+)(?:[_\.](\d+))?'
-    os_replacement: 'iOS'
-
-  # remaining cases are mostly only opera uas, so catch opera as to not catch iphone spoofs
-  - regex: '(iPhone|iPad|iPod); Opera'
-    os_replacement: 'iOS'
-
-  # few more stragglers
-  - regex: '(iPhone|iPad|iPod).*Mac OS X.*Version/(\d+)\.(\d+)'
-    os_replacement: 'iOS'
-
-  # CFNetwork/Darwin - The specific CFNetwork or Darwin version determines
-  # whether the os maps to Mac OS, or iOS, or just Darwin.
-  # See: http://user-agents.me/cfnetwork-version-list
-  - regex: '(CFNetwork)/(5)48\.0\.3.* Darwin/11\.0\.0'
-    os_replacement: 'iOS'
-  - regex: '(CFNetwork)/(5)48\.(0)\.4.* Darwin/(1)1\.0\.0'
-    os_replacement: 'iOS'
-  - regex: '(CFNetwork)/(5)48\.(1)\.4'
-    os_replacement: 'iOS'
-  - regex: '(CFNetwork)/(4)85\.1(3)\.9'
-    os_replacement: 'iOS'
-  - regex: '(CFNetwork)/(6)09\.(1)\.4'
-    os_replacement: 'iOS'
-  - regex: '(CFNetwork)/(6)(0)9'
-    os_replacement: 'iOS'
-  - regex: '(CFNetwork)/6(7)2\.(1)\.13'
-    os_replacement: 'iOS'
-  - regex: '(CFNetwork)/6(7)2\.(1)\.(1)4'
-    os_replacement: 'iOS'
-  - regex: '(CF)(Network)/6(7)(2)\.1\.15'
-    os_replacement: 'iOS'
-    os_v1_replacement: '7'
-    os_v2_replacement: '1'
-  - regex: '(CFNetwork)/6(7)2\.(0)\.(?:2|8)'
-    os_replacement: 'iOS'
-  - regex: '(CFNetwork)/709\.1'
-    os_replacement: 'iOS'
-    os_v1_replacement: '8'
-    os_v2_replacement: '0.b5'
-  - regex: '(CF)(Network)/711\.(\d)'
-    os_replacement: 'iOS'
-    os_v1_replacement: '8'
-  - regex: '(CF)(Network)/(720)\.(\d)'
-    os_replacement: 'Mac OS X'
-    os_v1_replacement: '10'
-    os_v2_replacement: '10'
-  - regex: '(CF)(Network)/(760)\.(\d)'
-    os_replacement: 'Mac OS X'
-    os_v1_replacement: '10'
-    os_v2_replacement: '11'
-  - regex: '(CF)(Network)/758\.(\d)'
-    os_replacement: 'iOS'
-    os_v1_replacement: '9'
-  - regex: '(CF)(Network)/808\.(\d)'
-    os_replacement: 'iOS'
-    os_v1_replacement: '10'
-
-  ##########
-  # CFNetwork macOS Apps (must be before CFNetwork iOS Apps
-  # @ref: https://en.wikipedia.org/wiki/Darwin_(operating_system)#Release_history
-  ##########
-  - regex: 'CFNetwork/.* Darwin/16\.\d+.*\(x86_64\)'
-    os_replacement: 'Mac OS X'
-    os_v1_replacement: '10'
-    os_v2_replacement: '12'
-  - regex: 'CFNetwork/8.* Darwin/15\.\d+.*\(x86_64\)'
-    os_replacement: 'Mac OS X'
-    os_v1_replacement: '10'
-    os_v2_replacement: '11'
-  ##########
-  # CFNetwork iOS Apps
-  # @ref: https://en.wikipedia.org/wiki/Darwin_(operating_system)#Release_history
-  ##########
-  - regex: 'CFNetwork/.* Darwin/(9)\.\d+'
-    os_replacement: 'iOS'
-    os_v1_replacement: '1'
-  - regex: 'CFNetwork/.* Darwin/(10)\.\d+'
-    os_replacement: 'iOS'
-    os_v1_replacement: '4'
-  - regex: 'CFNetwork/.* Darwin/(11)\.\d+'
-    os_replacement: 'iOS'
-    os_v1_replacement: '5'
-  - regex: 'CFNetwork/.* Darwin/(13)\.\d+'
-    os_replacement: 'iOS'
-    os_v1_replacement: '6'
-  - regex: 'CFNetwork/6.* Darwin/(14)\.\d+'
-    os_replacement: 'iOS'
-    os_v1_replacement: '7'
-  - regex: 'CFNetwork/7.* Darwin/(14)\.\d+'
-    os_replacement: 'iOS'
-    os_v1_replacement: '8'
-    os_v2_replacement: '0'
-  - regex: 'CFNetwork/7.* Darwin/(15)\.\d+'
-    os_replacement: 'iOS'
-    os_v1_replacement: '9'
-    os_v2_replacement: '0'
-  - regex: 'CFNetwork/8.* Darwin/(16)\.\d+'
-    os_replacement: 'iOS'
-    os_v1_replacement: '10'
-  # iOS Apps
-  - regex: '\b(iOS[ /]|iOS; |iPhone(?:/| v|[ _]OS[/,]|; | OS : |\d,\d/|\d,\d; )|iPad/)(\d{1,2})[_\.](\d{1,2})(?:[_\.](\d+))?'
-    os_replacement: 'iOS'
-  - regex: '\((iOS);'
-
-  ##########
-  # Apple TV
-  ##########
-  - regex: '(tvOS)/(\d+).(\d+)'
-    os_replacement: 'tvOS'
-
-  ##########
-  # Chrome OS
-  # if version 0.0.0, probably this stuff:
-  # http://code.google.com/p/chromium-os/issues/detail?id=11573
-  # http://code.google.com/p/chromium-os/issues/detail?id=13790
-  ##########
-  - regex: '(CrOS) [a-z0-9_]+ (\d+)\.(\d+)(?:\.(\d+))?'
-    os_replacement: 'Chrome OS'
-
-  ##########
-  # Linux distros
-  ##########
-  - regex: '([Dd]ebian)'
-    os_replacement: 'Debian'
-  - regex: '(Linux Mint)(?:/(\d+))?'
-  - regex: '(Mandriva)(?: Linux)?/(?:[\d.-]+m[a-z]{2}(\d+).(\d))?'
-
-  ##########
-  # Symbian + Symbian OS
-  # http://en.wikipedia.org/wiki/History_of_Symbian
-  ##########
-  - regex: '(Symbian[Oo][Ss])[/ ](\d+)\.(\d+)'
-    os_replacement: 'Symbian OS'
-  - regex: '(Symbian/3).+NokiaBrowser/7\.3'
-    os_replacement: 'Symbian^3 Anna'
-  - regex: '(Symbian/3).+NokiaBrowser/7\.4'
-    os_replacement: 'Symbian^3 Belle'
-  - regex: '(Symbian/3)'
-    os_replacement: 'Symbian^3'
-  - regex: '\b(Series 60|SymbOS|S60Version|S60V\d|S60\b)'
-    os_replacement: 'Symbian OS'
-  - regex: '(MeeGo)'
-  - regex: 'Symbian [Oo][Ss]'
-    os_replacement: 'Symbian OS'
-  - regex: 'Series40;'
-    os_replacement: 'Nokia Series 40'
-  - regex: 'Series30Plus;'
-    os_replacement: 'Nokia Series 30 Plus'
-
-  ##########
-  # BlackBerry devices
-  ##########
-  - regex: '(BB10);.+Version/(\d+)\.(\d+)\.(\d+)'
-    os_replacement: 'BlackBerry OS'
-  - regex: '(Black[Bb]erry)[0-9a-z]+/(\d+)\.(\d+)\.(\d+)(?:\.(\d+))?'
-    os_replacement: 'BlackBerry OS'
-  - regex: '(Black[Bb]erry).+Version/(\d+)\.(\d+)\.(\d+)(?:\.(\d+))?'
-    os_replacement: 'BlackBerry OS'
-  - regex: '(RIM Tablet OS) (\d+)\.(\d+)\.(\d+)'
-    os_replacement: 'BlackBerry Tablet OS'
-  - regex: '(Play[Bb]ook)'
-    os_replacement: 'BlackBerry Tablet OS'
-  - regex: '(Black[Bb]erry)'
-    os_replacement: 'BlackBerry OS'
-
-  ##########
-  # Firefox OS
-  ##########
-  - regex: '\((?:Mobile|Tablet);.+Gecko/18.0 Firefox/\d+\.\d+'
-    os_replacement: 'Firefox OS'
-    os_v1_replacement: '1'
-    os_v2_replacement: '0'
-    os_v3_replacement: '1'
-
-  - regex: '\((?:Mobile|Tablet);.+Gecko/18.1 Firefox/\d+\.\d+'
-    os_replacement: 'Firefox OS'
-    os_v1_replacement: '1'
-    os_v2_replacement: '1'
-
-  - regex: '\((?:Mobile|Tablet);.+Gecko/26.0 Firefox/\d+\.\d+'
-    os_replacement: 'Firefox OS'
-    os_v1_replacement: '1'
-    os_v2_replacement: '2'
-
-  - regex: '\((?:Mobile|Tablet);.+Gecko/28.0 Firefox/\d+\.\d+'
-    os_replacement: 'Firefox OS'
-    os_v1_replacement: '1'
-    os_v2_replacement: '3'
-
-  - regex: '\((?:Mobile|Tablet);.+Gecko/30.0 Firefox/\d+\.\d+'
-    os_replacement: 'Firefox OS'
-    os_v1_replacement: '1'
-    os_v2_replacement: '4'
-
-  - regex: '\((?:Mobile|Tablet);.+Gecko/32.0 Firefox/\d+\.\d+'
-    os_replacement: 'Firefox OS'
-    os_v1_replacement: '2'
-    os_v2_replacement: '0'
-
-  - regex: '\((?:Mobile|Tablet);.+Gecko/34.0 Firefox/\d+\.\d+'
-    os_replacement: 'Firefox OS'
-    os_v1_replacement: '2'
-    os_v2_replacement: '1'
-
-  # Firefox OS Generic
-  - regex: '\((?:Mobile|Tablet);.+Firefox/\d+\.\d+'
-    os_replacement: 'Firefox OS'
-
-
-  ##########
-  # BREW
-  # yes, Brew is lower-cased for Brew MP
-  ##########
-  - regex: '(BREW)[ /](\d+)\.(\d+)\.(\d+)'
-  - regex: '(BREW);'
-  - regex: '(Brew MP|BMP)[ /](\d+)\.(\d+)\.(\d+)'
-    os_replacement: 'Brew MP'
-  - regex: 'BMP;'
-    os_replacement: 'Brew MP'
-
-  ##########
-  # Google TV
-  ##########
-  - regex: '(GoogleTV)(?: (\d+)\.(\d+)(?:\.(\d+))?|/[\da-z]+)'
-
-  - regex: '(WebTV)/(\d+).(\d+)'
-
-  ##########
-  # Chromecast
-  ##########
-  - regex: '(CrKey)(?:[/](\d+)\.(\d+)(?:\.(\d+))?)?'
-    os_replacement: 'Chromecast'
-
-  ##########
-  # Misc mobile
-  ##########
-  - regex: '(hpw|web)OS/(\d+)\.(\d+)(?:\.(\d+))?'
-    os_replacement: 'webOS'
-  - regex: '(VRE);'
-
-  ##########
-  # Generic patterns
-  # since the majority of os cases are very specific, these go last
-  ##########
-  - regex: '(Fedora|Red Hat|PCLinuxOS|Puppy|Ubuntu|Kindle|Bada|Lubuntu|BackTrack|Slackware|(?:Free|Open|Net|\b)BSD)[/ ](\d+)\.(\d+)(?:\.(\d+)(?:\.(\d+))?)?'
-
-  # Gentoo Linux + Kernel Version
-  - regex: '(Linux)[ /](\d+)\.(\d+)(?:\.(\d+))?.*gentoo'
-    os_replacement: 'Gentoo'
-
-  # Opera Mini Bada
-  - regex: '\((Bada);'
-
-  # just os
-  - regex: '(Windows|Android|WeTab|Maemo|Web0S)'
-  - regex: '(Ubuntu|Kubuntu|Arch Linux|CentOS|Slackware|Gentoo|openSUSE|SUSE|Red Hat|Fedora|PCLinuxOS|Mageia|(?:Free|Open|Net|\b)BSD)'
-  # Linux + Kernel Version
-  - regex: '(Linux)(?:[ /](\d+)\.(\d+)(?:\.(\d+))?)?'
-  - regex: 'SunOS'
-    os_replacement: 'Solaris'
-
-  # Roku Digital-Video-Players https://www.roku.com/
-  - regex: '^(Roku)/DVP-(\d+)\.(\d+)'
-
-device_parsers:
-
-  #########
-  # Mobile Spiders
-  # Catch the mobile crawler before checking for iPhones / Androids.
-  #########
-  - regex: '(?:(?:iPhone|Windows CE|Windows Phone|Android).*(?:(?:Bot|Yeti)-Mobile|YRSpider|BingPreview|bots?/\d|(?:bot|spider)\.html)|AdsBot-Google-Mobile.*iPhone)'
-    regex_flag: 'i'
-    device_replacement: 'Spider'
-    brand_replacement: 'Spider'
-    model_replacement: 'Smartphone'
-  - regex: '(?:DoCoMo|\bMOT\b|\bLG\b|Nokia|Samsung|SonyEricsson).*(?:(?:Bot|Yeti)-Mobile|bots?/\d|(?:bot|crawler)\.html|(?:jump|google|Wukong)bot|ichiro/mobile|/spider|YahooSeeker)'
-    regex_flag: 'i'
-    device_replacement: 'Spider'
-    brand_replacement: 'Spider'
-    model_replacement: 'Feature Phone'
-
-  #########
-  # WebBrowser for SmartWatch
-  # @ref: https://play.google.com/store/apps/details?id=se.vaggan.webbrowser&hl=en
-  #########
-  - regex: '\bSmartWatch *\( *([^;]+) *; *([^;]+) *;'
-    device_replacement: '$1 $2'
-    brand_replacement: '$1'
-    model_replacement: '$2'
-
-  ######################################################################
-  # Android parsers
-  #
-  # @ref: https://support.google.com/googleplay/answer/1727131?hl=en
-  ######################################################################
-
-  # Android Application
-  - regex: 'Android Application[^\-]+ - (Sony) ?(Ericsson)? (.+) \w+ - '
-    device_replacement: '$1 $2'
-    brand_replacement: '$1$2'
-    model_replacement: '$3'
-  - regex: 'Android Application[^\-]+ - (?:HTC|HUAWEI|LGE|LENOVO|MEDION|TCT) (HTC|HUAWEI|LG|LENOVO|MEDION|ALCATEL)[ _\-](.+) \w+ - '
-    regex_flag: 'i'
-    device_replacement: '$1 $2'
-    brand_replacement: '$1'
-    model_replacement: '$2'
-  - regex: 'Android Application[^\-]+ - ([^ ]+) (.+) \w+ - '
-    device_replacement: '$1 $2'
-    brand_replacement: '$1'
-    model_replacement: '$2'
-
-  #########
-  # 3Q
-  # @ref: http://www.3q-int.com/
-  #########
-  - regex: '; *([BLRQ]C\d{4}[A-Z]+) +Build/'
-    device_replacement: '3Q $1'
-    brand_replacement: '3Q'
-    model_replacement: '$1'
-  - regex: '; *(?:3Q_)([^;/]+) +Build'
-    device_replacement: '3Q $1'
-    brand_replacement: '3Q'
-    model_replacement: '$1'
-
-  #########
-  # Acer
-  # @ref: http://us.acer.com/ac/en/US/content/group/tablets
-  #########
-  - regex: 'Android [34].*; *(A100|A101|A110|A200|A210|A211|A500|A501|A510|A511|A700(?: Lite| 3G)?|A701|B1-A71|A1-\d{3}|B1-\d{3}|V360|V370|W500|W500P|W501|W501P|W510|W511|W700|Slider SL101|DA22[^;/]+) Build'
-    device_replacement: '$1'
-    brand_replacement: 'Acer'
-    model_replacement: '$1'
-  - regex: '; *Acer Iconia Tab ([^;/]+) Build'
-    device_replacement: '$1'
-    brand_replacement: 'Acer'
-    model_replacement: '$1'
-  - regex: '; *(Z1[1235]0|E320[^/]*|S500|S510|Liquid[^;/]*|Iconia A\d+) Build'
-    device_replacement: '$1'
-    brand_replacement: 'Acer'
-    model_replacement: '$1'
-  - regex: '; *(Acer |ACER )([^;/]+) Build'
-    device_replacement: '$1$2'
-    brand_replacement: 'Acer'
-    model_replacement: '$2'
-
-  #########
-  # Advent
-  # @ref: https://en.wikipedia.org/wiki/Advent_Vega
-  # @note: VegaBean and VegaComb (names derived from jellybean, honeycomb) are
-  #   custom ROM builds for Vega
-  #########
-  - regex: '; *(Advent )?(Vega(?:Bean|Comb)?).* Build'
-    device_replacement: '$1$2'
-    brand_replacement: 'Advent'
-    model_replacement: '$2'
-
-  #########
-  # Ainol
-  # @ref: http://www.ainol.com/plugin.php?identifier=ainol&module=product
-  #########
-  - regex: '; *(Ainol )?((?:NOVO|[Nn]ovo)[^;/]+) Build'
-    device_replacement: '$1$2'
-    brand_replacement: 'Ainol'
-    model_replacement: '$2'
-
-  #########
-  # Airis
-  # @ref: http://airis.es/Tienda/Default.aspx?idG=001
-  #########
-  - regex: '; *AIRIS[ _\-]?([^/;\)]+) *(?:;|\)|Build)'
-    regex_flag: 'i'
-    device_replacement: '$1'
-    brand_replacement: 'Airis'
-    model_replacement: '$1'
-  - regex: '; *(OnePAD[^;/]+) Build'
-    regex_flag: 'i'
-    device_replacement: '$1'
-    brand_replacement: 'Airis'
-    model_replacement: '$1'
-
-  #########
-  # Airpad
-  # @ref: ??
-  #########
-  - regex: '; *Airpad[ \-]([^;/]+) Build'
-    device_replacement: 'Airpad $1'
-    brand_replacement: 'Airpad'
-    model_replacement: '$1'
-
-  #########
-  # Alcatel - TCT
-  # @ref: http://www.alcatelonetouch.com/global-en/products/smartphones.html
-  #########
-  - regex: '; *(one ?touch) (EVO7|T10|T20) Build'
-    device_replacement: 'Alcatel One Touch $2'
-    brand_replacement: 'Alcatel'
-    model_replacement: 'One Touch $2'
-  - regex: '; *(?:alcatel[ _])?(?:(?:one[ _]?touch[ _])|ot[ \-])([^;/]+);? Build'
-    regex_flag: 'i'
-    device_replacement: 'Alcatel One Touch $1'
-    brand_replacement: 'Alcatel'
-    model_replacement: 'One Touch $1'
-  - regex: '; *(TCL)[ _]([^;/]+) Build'
-    device_replacement: '$1 $2'
-    brand_replacement: '$1'
-    model_replacement: '$2'
-  # operator specific models
-  - regex: '; *(Vodafone Smart II|Optimus_Madrid) Build'
-    device_replacement: 'Alcatel $1'
-    brand_replacement: 'Alcatel'
-    model_replacement: '$1'
-  - regex: '; *BASE_Lutea_3 Build'
-    device_replacement: 'Alcatel One Touch 998'
-    brand_replacement: 'Alcatel'
-    model_replacement: 'One Touch 998'
-  - regex: '; *BASE_Varia Build'
-    device_replacement: 'Alcatel One Touch 918D'
-    brand_replacement: 'Alcatel'
-    model_replacement: 'One Touch 918D'
-
-  #########
-  # Allfine
-  # @ref: http://www.myallfine.com/Products.asp
-  #########
-  - regex: '; *((?:FINE|Fine)\d[^;/]+) Build'
-    device_replacement: '$1'
-    brand_replacement: 'Allfine'
-    model_replacement: '$1'
-
-  #########
-  # Allview
-  # @ref: http://www.allview.ro/produse/droseries/lista-tablete-pc/
-  #########
-  - regex: '; *(ALLVIEW[ _]?|Allview[ _]?)((?:Speed|SPEED).*) Build/'
-    device_replacement: '$1$2'
-    brand_replacement: 'Allview'
-    model_replacement: '$2'
-  - regex: '; *(ALLVIEW[ _]?|Allview[ _]?)?(AX1_Shine|AX2_Frenzy) Build'
-    device_replacement: '$1$2'
-    brand_replacement: 'Allview'
-    model_replacement: '$2'
-  - regex: '; *(ALLVIEW[ _]?|Allview[ _]?)([^;/]*) Build'
-    device_replacement: '$1$2'
-    brand_replacement: 'Allview'
-    model_replacement: '$2'
-
-  #########
-  # Allwinner
-  # @ref: http://www.allwinner.com/
-  # @models: A31 (13.3"),A20,A10,
-  #########
-  - regex: '; *(A13-MID) Build'
-    device_replacement: '$1'
-    brand_replacement: 'Allwinner'
-    model_replacement: '$1'
-  - regex: '; *(Allwinner)[ _\-]?([^;/]+) Build'
-    device_replacement: '$1 $2'
-    brand_replacement: 'Allwinner'
-    model_replacement: '$1'
-
-  #########
-  # Amaway
-  # @ref: http://www.amaway.cn/
-  #########
-  - regex: '; *(A651|A701B?|A702|A703|A705|A706|A707|A711|A712|A713|A717|A722|A785|A801|A802|A803|A901|A902|A1002|A1003|A1006|A1007|A9701|A9703|Q710|Q80) Build'
-    device_replacement: '$1'
-    brand_replacement: 'Amaway'
-    model_replacement: '$1'
-
-  #########
-  # Amoi
-  # @ref: http://www.amoi.com/en/prd/prd_index.jspx
-  #########
-  - regex: '; *(?:AMOI|Amoi)[ _]([^;/]+) Build'
-    device_replacement: 'Amoi $1'
-    brand_replacement: 'Amoi'
-    model_replacement: '$1'
-  - regex: '^(?:AMOI|Amoi)[ _]([^;/]+) Linux'
-    device_replacement: 'Amoi $1'
-    brand_replacement: 'Amoi'
-    model_replacement: '$1'
-
-  #########
-  # Aoc
-  # @ref: http://latin.aoc.com/media_tablet
-  #########
-  - regex: '; *(MW(?:0[789]|10)[^;/]+) Build'
-    device_replacement: '$1'
-    brand_replacement: 'Aoc'
-    model_replacement: '$1'
-
-  #########
-  # Aoson
-  # @ref: http://www.luckystar.com.cn/en/mid.aspx?page=1
-  # @ref: http://www.luckystar.com.cn/en/mobiletel.aspx?page=1
-  # @note: brand owned by luckystar
-  #########
-  - regex: '; *(G7|M1013|M1015G|M11[CG]?|M-?12[B]?|M15|M19[G]?|M30[ACQ]?|M31[GQ]|M32|M33[GQ]|M36|M37|M38|M701T|M710|M712B|M713|M715G|M716G|M71(?:G|GS|T)?|M72[T]?|M73[T]?|M75[GT]?|M77G|M79T|M7L|M7LN|M81|M810|M81T|M82|M92|M92KS|M92S|M717G|M721|M722G|M723|M725G|M739|M785|M791|M92SK|M93D) Build'
-    device_replacement: 'Aoson $1'
-    brand_replacement: 'Aoson'
-    model_replacement: '$1'
-  - regex: '; *Aoson ([^;/]+) Build'
-    regex_flag: 'i'
-    device_replacement: 'Aoson $1'
-    brand_replacement: 'Aoson'
-    model_replacement: '$1'
-
-  #########
-  # Apanda
-  # @ref: http://www.apanda.com.cn/
-  #########
-  - regex: '; *[Aa]panda[ _\-]([^;/]+) Build'
-    device_replacement: 'Apanda $1'
-    brand_replacement: 'Apanda'
-    model_replacement: '$1'
-
-  #########
-  # Archos
-  # @ref: http://www.archos.com/de/products/tablets.html
-  # @ref: http://www.archos.com/de/products/smartphones/index.html
-  #########
-  - regex: '; *(?:ARCHOS|Archos) ?(GAMEPAD.*?)(?: Build|[;/\(\)\-])'
-    device_replacement: 'Archos $1'
-    brand_replacement: 'Archos'
-    model_replacement: '$1'
-  - regex: 'ARCHOS; GOGI; ([^;]+);'
-    device_replacement: 'Archos $1'
-    brand_replacement: 'Archos'
-    model_replacement: '$1'
-  - regex: '(?:ARCHOS|Archos)[ _]?(.*?)(?: Build|[;/\(\)\-]|$)'
-    device_replacement: 'Archos $1'
-    brand_replacement: 'Archos'
-    model_replacement: '$1'
-  - regex: '; *(AN(?:7|8|9|10|13)[A-Z0-9]{1,4}) Build'
-    device_replacement: 'Archos $1'
-    brand_replacement: 'Archos'
-    model_replacement: '$1'
-  - regex: '; *(A28|A32|A43|A70(?:BHT|CHT|HB|S|X)|A101(?:B|C|IT)|A7EB|A7EB-WK|101G9|80G9) Build'
-    device_replacement: 'Archos $1'
-    brand_replacement: 'Archos'
-    model_replacement: '$1'
-
-  #########
-  # A-rival
-  # @ref: http://www.a-rival.de/de/
-  #########
-  - regex: '; *(PAD-FMD[^;/]+) Build'
-    device_replacement: '$1'
-    brand_replacement: 'Arival'
-    model_replacement: '$1'
-  - regex: '; *(BioniQ) ?([^;/]+) Build'
-    device_replacement: '$1 $2'
-    brand_replacement: 'Arival'
-    model_replacement: '$1 $2'
-
-  #########
-  # Arnova
-  # @ref: http://arnovatech.com/
-  #########
-  - regex: '; *(AN\d[^;/]+|ARCHM\d+) Build'
-    device_replacement: 'Arnova $1'
-    brand_replacement: 'Arnova'
-    model_replacement: '$1'
-  - regex: '; *(?:ARNOVA|Arnova) ?([^;/]+) Build'
-    device_replacement: 'Arnova $1'
-    brand_replacement: 'Arnova'
-    model_replacement: '$1'
-
-  #########
-  # Assistant
-  # @ref: http://www.assistant.ua
-  #########
-  - regex: '; *(?:ASSISTANT )?(AP)-?([1789]\d{2}[A-Z]{0,2}|80104) Build'
-    device_replacement: 'Assistant $1-$2'
-    brand_replacement: 'Assistant'
-    model_replacement: '$1-$2'
-
-  #########
-  # Asus
-  # @ref: http://www.asus.com/uk/Tablets_Mobile/
-  #########
-  - regex: '; *(ME17\d[^;/]*|ME3\d{2}[^;/]+|K00[A-Z]|Nexus 10|Nexus 7(?: 2013)?|PadFone[^;/]*|Transformer[^;/]*|TF\d{3}[^;/]*|eeepc) Build'
-    device_replacement: 'Asus $1'
-    brand_replacement: 'Asus'
-    model_replacement: '$1'
-  - regex: '; *ASUS[ _]*([^;/]+) Build'
-    device_replacement: 'Asus $1'
-    brand_replacement: 'Asus'
-    model_replacement: '$1'
-
-  #########
-  # Garmin-Asus
-  #########
-  - regex: '; *Garmin-Asus ([^;/]+) Build'
-    device_replacement: 'Garmin-Asus $1'
-    brand_replacement: 'Garmin-Asus'
-    model_replacement: '$1'
-  - regex: '; *(Garminfone) Build'
-    device_replacement: 'Garmin $1'
-    brand_replacement: 'Garmin-Asus'
-    model_replacement: '$1'
-
-  #########
-  # Attab
-  # @ref: http://www.theattab.com/
-  #########
-  - regex: '; (@TAB-[^;/]+) Build'
-    device_replacement: '$1'
-    brand_replacement: 'Attab'
-    model_replacement: '$1'
-
-  #########
-  # Audiosonic
-  # @ref: ??
-  # @note: Take care with Docomo T-01 Toshiba
-  #########
-  - regex: '; *(T-(?:07|[^0]\d)[^;/]+) Build'
-    device_replacement: '$1'
-    brand_replacement: 'Audiosonic'
-    model_replacement: '$1'
-
-  #########
-  # Axioo
-  # @ref: http://www.axiooworld.com/ww/index.php
-  #########
-  - regex: '; *(?:Axioo[ _\-]([^;/]+)|(picopad)[ _\-]([^;/]+)) Build'
-    regex_flag: 'i'
-    device_replacement: 'Axioo $1$2 $3'
-    brand_replacement: 'Axioo'
-    model_replacement: '$1$2 $3'
-
-  #########
-  # Azend
-  # @ref: http://azendcorp.com/index.php/products/portable-electronics
-  #########
-  - regex: '; *(V(?:100|700|800)[^;/]*) Build'
-    device_replacement: '$1'
-    brand_replacement: 'Azend'
-    model_replacement: '$1'
-
-  #########
-  # Bak
-  # @ref: http://www.bakinternational.com/produtos.php?cat=80
-  #########
-  - regex: '; *(IBAK\-[^;/]*) Build'
-    regex_flag: 'i'
-    device_replacement: '$1'
-    brand_replacement: 'Bak'
-    model_replacement: '$1'
-
-  #########
-  # Bedove
-  # @ref: http://www.bedove.com/product.html
-  # @models: HY6501|HY5001|X12|X21|I5
-  #########
-  - regex: '; *(HY5001|HY6501|X12|X21|I5) Build'
-    device_replacement: 'Bedove $1'
-    brand_replacement: 'Bedove'
-    model_replacement: '$1'
-
-  #########
-  # Benss
-  # @ref: http://www.benss.net/
-  #########
-  - regex: '; *(JC-[^;/]*) Build'
-    device_replacement: 'Benss $1'
-    brand_replacement: 'Benss'
-    model_replacement: '$1'
-
-  #########
-  # Blackberry
-  # @ref: http://uk.blackberry.com/
-  # @note: Android Apps seams to be used here
-  #########
-  - regex: '; *(BB) ([^;/]+) Build'
-    device_replacement: '$1 $2'
-    brand_replacement: 'Blackberry'
-    model_replacement: '$2'
-
-  #########
-  # Blackbird
-  # @ref: http://iblackbird.co.kr
-  #########
-  - regex: '; *(BlackBird)[ _](I8.*) Build'
-    device_replacement: '$1 $2'
-    brand_replacement: '$1'
-    model_replacement: '$2'
-  - regex: '; *(BlackBird)[ _](.*) Build'
-    device_replacement: '$1 $2'
-    brand_replacement: '$1'
-    model_replacement: '$2'
-
-  #########
-  # Blaupunkt
-  # @ref: http://www.blaupunkt.com
-  #########
-  # Endeavour
-  - regex: '; *([0-9]+BP[EM][^;/]*|Endeavour[^;/]+) Build'
-    device_replacement: 'Blaupunkt $1'
-    brand_replacement: 'Blaupunkt'
-    model_replacement: '$1'
-
-  #########
-  # Blu
-  # @ref: http://bluproducts.com
-  #########
-  - regex: '; *((?:BLU|Blu)[ _\-])([^;/]+) Build'
-    device_replacement: '$1$2'
-    brand_replacement: 'Blu'
-    model_replacement: '$2'
-  # BMOBILE = operator branded device
-  - regex: '; *(?:BMOBILE )?(Blu|BLU|DASH [^;/]+|VIVO 4\.3|TANK 4\.5) Build'
-    device_replacement: '$1'
-    brand_replacement: 'Blu'
-    model_replacement: '$1'
-
-  #########
-  # Blusens
-  # @ref: http://www.blusens.com/es/?sg=1&sv=al&roc=1
-  #########
-  # tablet
-  - regex: '; *(TOUCH\d[^;/]+) Build'
-    device_replacement: '$1'
-    brand_replacement: 'Blusens'
-    model_replacement: '$1'
-
-  #########
-  # Bmobile
-  # @ref: http://bmobile.eu.com/?categoria=smartphones-2
-  # @note: Might collide with Maxx as AX is used also there.
-  #########
-  # smartphone
-  - regex: '; *(AX5\d+) Build'
-    device_replacement: '$1'
-    brand_replacement: 'Bmobile'
-    model_replacement: '$1'
-
-  #########
-  # bq
-  # @ref: http://bqreaders.com
-  #########
-  - regex: '; *([Bb]q) ([^;/]+);? Build'
-    device_replacement: '$1 $2'
-    brand_replacement: 'bq'
-    model_replacement: '$2'
-  - regex: '; *(Maxwell [^;/]+) Build'
-    device_replacement: '$1'
-    brand_replacement: 'bq'
-    model_replacement: '$1'
-
-  #########
-  # Braun Phototechnik
-  # @ref: http://www.braun-phototechnik.de/en/products/list/~pcat.250/Tablet-PC.html
-  #########
-  - regex: '; *((?:B-Tab|B-TAB) ?\d[^;/]+) Build'
-    device_replacement: '$1'
-    brand_replacement: 'Braun'
-    model_replacement: '$1'
-
-  #########
-  # Broncho
-  # @ref: http://www.broncho.cn/
-  #########
-  - regex: '; *(Broncho) ([^;/]+) Build'
-    device_replacement: '$1 $2'
-    brand_replacement: '$1'
-    model_replacement: '$2'
-
-  #########
-  # Captiva
-  # @ref: http://www.captiva-power.de
-  #########
-  - regex: '; *CAPTIVA ([^;/]+) Build'
-    device_replacement: 'Captiva $1'
-    brand_replacement: 'Captiva'
-    model_replacement: '$1'
-
-  #########
-  # Casio
-  # @ref: http://www.casiogzone.com/
-  #########
-  - regex: '; *(C771|CAL21|IS11CA) Build'
-    device_replacement: '$1'
-    brand_replacement: 'Casio'
-    model_replacement: '$1'
-
-  #########
-  # Cat
-  # @ref: http://www.cat-sound.com
-  #########
-  - regex: '; *(?:Cat|CAT) ([^;/]+) Build'
-    device_replacement: 'Cat $1'
-    brand_replacement: 'Cat'
-    model_replacement: '$1'
-  - regex: '; *(?:Cat)(Nova.*) Build'
-    device_replacement: 'Cat $1'
-    brand_replacement: 'Cat'
-    model_replacement: '$1'
-  - regex: '; *(INM8002KP|ADM8000KP_[AB]) Build'
-    device_replacement: '$1'
-    brand_replacement: 'Cat'
-    model_replacement: 'Tablet PHOENIX 8.1J0'
-
-  #########
-  # Celkon
-  # @ref: http://www.celkonmobiles.com/?_a=products
-  # @models: A10, A19Q, A101, A105, A107, A107\+, A112, A118, A119, A119Q, A15, A19, A20, A200, A220, A225, A22 Race, A27, A58, A59, A60, A62, A63, A64, A66, A67, A69, A75, A77, A79, A8\+, A83, A85, A86, A87, A89 Ultima, A9\+, A90, A900, A95, A97i, A98, AR 40, AR 45, AR 50, ML5
-  #########
-  - regex: '; *(?:[Cc]elkon[ _\*]|CELKON[ _\*])([^;/\)]+) ?(?:Build|;|\))'
-    device_replacement: '$1'
-    brand_replacement: 'Celkon'
-    model_replacement: '$1'
-  - regex: 'Build/(?:[Cc]elkon)+_?([^;/_\)]+)'
-    device_replacement: '$1'
-    brand_replacement: 'Celkon'
-    model_replacement: '$1'
-  - regex: '; *(CT)-?(\d+) Build'
-    device_replacement: '$1$2'
-    brand_replacement: 'Celkon'
-    model_replacement: '$1$2'
-  # smartphones
-  - regex: '; *(A19|A19Q|A105|A107[^;/\)]*) ?(?:Build|;|\))'
-    device_replacement: '$1'
-    brand_replacement: 'Celkon'
-    model_replacement: '$1'
-
-  #########
-  # ChangJia
-  # @ref: http://www.cjshowroom.com/eproducts.aspx?classcode=004001001
-  # @brief: China manufacturer makes tablets for different small brands
-  #         (eg. http://www.zeepad.net/index.html)
-  #########
-  - regex: '; *(TPC[0-9]{4,5}) Build'
-    device_replacement: '$1'
-    brand_replacement: 'ChangJia'
-    model_replacement: '$1'
-
-  #########
-  # Cloudfone
-  # @ref: http://www.cloudfonemobile.com/
-  #########
-  - regex: '; *(Cloudfone)[ _](Excite)([^ ][^;/]+) Build'
-    device_replacement: '$1 $2 $3'
-    brand_replacement: 'Cloudfone'
-    model_replacement: '$1 $2 $3'
-  - regex: '; *(Excite|ICE)[ _](\d+[^;/]+) Build'
-    device_replacement: 'Cloudfone $1 $2'
-    brand_replacement: 'Cloudfone'
-    model_replacement: 'Cloudfone $1 $2'
-  - regex: '; *(Cloudfone|CloudPad)[ _]([^;/]+) Build'
-    device_replacement: '$1 $2'
-    brand_replacement: 'Cloudfone'
-    model_replacement: '$1 $2'
-
-  #########
-  # Cmx
-  # @ref: http://cmx.at/de/
-  #########
-  - regex: '; *((?:Aquila|Clanga|Rapax)[^;/]+) Build'
-    regex_flag: 'i'
-    device_replacement: '$1'
-    brand_replacement: 'Cmx'
-    model_replacement: '$1'
-
-  #########
-  # CobyKyros
-  # @ref: http://cobykyros.com
-  # @note: Be careful with MID\d{3} from MpMan or Manta
-  #########
-  - regex: '; *(?:CFW-|Kyros )?(MID[0-9]{4}(?:[ABC]|SR|TV)?)(\(3G\)-4G| GB 8K| 3G| 8K| GB)? *(?:Build|[;\)])'
-    device_replacement: 'CobyKyros $1$2'
-    brand_replacement: 'CobyKyros'
-    model_replacement: '$1$2'
-
-  #########
-  # Coolpad
-  # @ref: ??
-  #########
-  - regex: '; *([^;/]*)Coolpad[ _]([^;/]+) Build'
-    device_replacement: '$1$2'
-    brand_replacement: 'Coolpad'
-    model_replacement: '$1$2'
-
-  #########
-  # Cube
-  # @ref: http://www.cube-tablet.com/buy-products.html
-  #########
-  - regex: '; *(CUBE[ _])?([KU][0-9]+ ?GT.*|A5300) Build'
-    regex_flag: 'i'
-    device_replacement: '$1$2'
-    brand_replacement: 'Cube'
-    model_replacement: '$2'
-
-  #########
-  # Cubot
-  # @ref: http://www.cubotmall.com/
-  #########
-  - regex: '; *CUBOT ([^;/]+) Build'
-    regex_flag: 'i'
-    device_replacement: '$1'
-    brand_replacement: 'Cubot'
-    model_replacement: '$1'
-  - regex: '; *(BOBBY) Build'
-    regex_flag: 'i'
-    device_replacement: '$1'
-    brand_replacement: 'Cubot'
-    model_replacement: '$1'
-
-  #########
-  # Danew
-  # @ref: http://www.danew.com/produits-tablette.php
-  #########
-  - regex: '; *(Dslide [^;/]+) Build'
-    device_replacement: '$1'
-    brand_replacement: 'Danew'
-    model_replacement: '$1'
-
-  #########
-  # Dell
-  # @ref: http://www.dell.com
-  # @ref: http://www.softbank.jp/mobile/support/product/101dl/
-  # @ref: http://www.softbank.jp/mobile/support/product/001dl/
-  # @ref: http://developer.emnet.ne.jp/android.html
-  # @ref: http://www.dell.com/in/p/mobile-xcd28/pd
-  # @ref: http://www.dell.com/in/p/mobile-xcd35/pd
-  #########
-  - regex: '; *(XCD)[ _]?(28|35) Build'
-    device_replacement: 'Dell $1$2'
-    brand_replacement: 'Dell'
-    model_replacement: '$1$2'
-  - regex: '; *(001DL) Build'
-    device_replacement: 'Dell $1'
-    brand_replacement: 'Dell'
-    model_replacement: 'Streak'
-  - regex: '; *(?:Dell|DELL) (Streak) Build'
-    device_replacement: 'Dell $1'
-    brand_replacement: 'Dell'
-    model_replacement: 'Streak'
-  - regex: '; *(101DL|GS01|Streak Pro[^;/]*) Build'
-    device_replacement: 'Dell $1'
-    brand_replacement: 'Dell'
-    model_replacement: 'Streak Pro'
-  - regex: '; *([Ss]treak ?7) Build'
-    device_replacement: 'Dell $1'
-    brand_replacement: 'Dell'
-    model_replacement: 'Streak 7'
-  - regex: '; *(Mini-3iX) Build'
-    device_replacement: 'Dell $1'
-    brand_replacement: 'Dell'
-    model_replacement: '$1'
-  - regex: '; *(?:Dell|DELL)[ _](Aero|Venue|Thunder|Mini.*|Streak[ _]Pro) Build'
-    device_replacement: 'Dell $1'
-    brand_replacement: 'Dell'
-    model_replacement: '$1'
-  - regex: '; *Dell[ _]([^;/]+) Build'
-    device_replacement: 'Dell $1'
-    brand_replacement: 'Dell'
-    model_replacement: '$1'
-  - regex: '; *Dell ([^;/]+) Build'
-    device_replacement: 'Dell $1'
-    brand_replacement: 'Dell'
-    model_replacement: '$1'
-
-  #########
-  # Denver
-  # @ref: http://www.denver-electronics.com/tablets1/
-  #########
-  - regex: '; *(TA[CD]-\d+[^;/]*) Build'
-    device_replacement: '$1'
-    brand_replacement: 'Denver'
-    model_replacement: '$1'
-
-  #########
-  # Dex
-  # @ref: http://dex.ua/
-  #########
-  - regex: '; *(iP[789]\d{2}(?:-3G)?|IP10\d{2}(?:-8GB)?) Build'
-    device_replacement: '$1'
-    brand_replacement: 'Dex'
-    model_replacement: '$1'
-
-  #########
-  # DNS AirTab
-  # @ref: http://www.dns-shop.ru/
-  #########
-  - regex: '; *(AirTab)[ _\-]([^;/]+) Build'
-    device_replacement: '$1 $2'
-    brand_replacement: 'DNS'
-    model_replacement: '$1 $2'
-
-  #########
-  # Docomo (Operator Branded Device)
-  # @ref: http://www.ipentec.com/document/document.aspx?page=android-useragent
-  #########
-  - regex: '; *(F\-\d[^;/]+) Build'
-    device_replacement: '$1'
-    brand_replacement: 'Fujitsu'
-    model_replacement: '$1'
-  - regex: '; *(HT-03A) Build'
-    device_replacement: '$1'
-    brand_replacement: 'HTC'
-    model_replacement: 'Magic'
-  - regex: '; *(HT\-\d[^;/]+) Build'
-    device_replacement: '$1'
-    brand_replacement: 'HTC'
-    model_replacement: '$1'
-  - regex: '; *(L\-\d[^;/]+) Build'
-    device_replacement: '$1'
-    brand_replacement: 'LG'
-    model_replacement: '$1'
-  - regex: '; *(N\-\d[^;/]+) Build'
-    device_replacement: '$1'
-    brand_replacement: 'Nec'
-    model_replacement: '$1'
-  - regex: '; *(P\-\d[^;/]+) Build'
-    device_replacement: '$1'
-    brand_replacement: 'Panasonic'
-    model_replacement: '$1'
-  - regex: '; *(SC\-\d[^;/]+) Build'
-    device_replacement: '$1'
-    brand_replacement: 'Samsung'
-    model_replacement: '$1'
-  - regex: '; *(SH\-\d[^;/]+) Build'
-    device_replacement: '$1'
-    brand_replacement: 'Sharp'
-    model_replacement: '$1'
-  - regex: '; *(SO\-\d[^;/]+) Build'
-    device_replacement: '$1'
-    brand_replacement: 'SonyEricsson'
-    model_replacement: '$1'
-  - regex: '; *(T\-0[12][^;/]+) Build'
-    device_replacement: '$1'
-    brand_replacement: 'Toshiba'
-    model_replacement: '$1'
-
-  #########
-  # DOOV
-  # @ref: http://www.doov.com.cn/
-  #########
-  - regex: '; *(DOOV)[ _]([^;/]+) Build'
-    device_replacement: '$1 $2'
-    brand_replacement: 'DOOV'
-    model_replacement: '$2'
-
-  #########
-  # Enot
-  # @ref: http://www.enot.ua/
-  #########
-  - regex: '; *(Enot|ENOT)[ -]?([^;/]+) Build'
-    device_replacement: '$1 $2'
-    brand_replacement: 'Enot'
-    model_replacement: '$2'
-
-  #########
-  # Evercoss
-  # @ref: http://evercoss.com/android/
-  #########
-  - regex: '; *[^;/]+ Build/(?:CROSS|Cross)+[ _\-]([^\)]+)'
-    device_replacement: 'CROSS $1'
-    brand_replacement: 'Evercoss'
-    model_replacement: 'Cross $1'
-  - regex: '; *(CROSS|Cross)[ _\-]([^;/]+) Build'
-    device_replacement: '$1 $2'
-    brand_replacement: 'Evercoss'
-    model_replacement: 'Cross $2'
-
-  #########
-  # Explay
-  # @ref: http://explay.ru/
-  #########
-  - regex: '; *Explay[_ ](.+?)(?:[\)]| Build)'
-    device_replacement: '$1'
-    brand_replacement: 'Explay'
-    model_replacement: '$1'
-
-  #########
-  # Fly
-  # @ref: http://www.fly-phone.com/
-  #########
-  - regex: '; *(IQ.*) Build'
-    device_replacement: '$1'
-    brand_replacement: 'Fly'
-    model_replacement: '$1'
-  - regex: '; *(Fly|FLY)[ _](IQ[^;]+|F[34]\d+[^;]*);? Build'
-    device_replacement: '$1 $2'
-    brand_replacement: 'Fly'
-    model_replacement: '$2'
-
-  #########
-  # Fujitsu
-  # @ref: http://www.fujitsu.com/global/
-  #########
-  - regex: '; *(M532|Q572|FJL21) Build/'
-    device_replacement: '$1'
-    brand_replacement: 'Fujitsu'
-    model_replacement: '$1'
-
-  #########
-  # Galapad
-  # @ref: http://www.galapad.net/product.html
-  #########
-  - regex: '; *(G1) Build'
-    device_replacement: '$1'
-    brand_replacement: 'Galapad'
-    model_replacement: '$1'
-
-  #########
-  # Geeksphone
-  # @ref: http://www.geeksphone.com/
-  #########
-  - regex: '; *(Geeksphone) ([^;/]+) Build'
-    device_replacement: '$1 $2'
-    brand_replacement: '$1'
-    model_replacement: '$2'
-
-  #########
-  # Gfive
-  # @ref: http://www.gfivemobile.com/en
-  #########
-  #- regex: '; *(G\'?FIVE) ([^;/]+) Build' # there is a problem with python yaml parser here
-  - regex: '; *(G[^F]?FIVE) ([^;/]+) Build'
-    device_replacement: '$1 $2'
-    brand_replacement: 'Gfive'
-    model_replacement: '$2'
-
-  #########
-  # Gionee
-  # @ref: http://www.gionee.com/
-  #########
-  - regex: '; *(Gionee)[ _\-]([^;/]+)(?:/[^;/]+)? Build'
-    regex_flag: 'i'
-    device_replacement: '$1 $2'
-    brand_replacement: 'Gionee'
-    model_replacement: '$2'
-  - regex: '; *(GN\d+[A-Z]?|INFINITY_PASSION|Ctrl_V1) Build'
-    device_replacement: 'Gionee $1'
-    brand_replacement: 'Gionee'
-    model_replacement: '$1'
-  - regex: '; *(E3) Build/JOP40D'
-    device_replacement: 'Gionee $1'
-    brand_replacement: 'Gionee'
-    model_replacement: '$1'
-
-  #########
-  # GoClever
-  # @ref: http://www.goclever.com
-  #########
-  - regex: '; *((?:FONE|QUANTUM|INSIGNIA) \d+[^;/]*|PLAYTAB) Build'
-    device_replacement: 'GoClever $1'
-    brand_replacement: 'GoClever'
-    model_replacement: '$1'
-  - regex: '; *GOCLEVER ([^;/]+) Build'
-    device_replacement: 'GoClever $1'
-    brand_replacement: 'GoClever'
-    model_replacement: '$1'
-
-  #########
-  # Google
-  # @ref: http://www.google.de/glass/start/
-  #########
-  - regex: '; *(Glass \d+) Build'
-    device_replacement: '$1'
-    brand_replacement: 'Google'
-    model_replacement: '$1'
-  - regex: '; *(Pixel \w+) Build'
-    device_replacement: '$1'
-    brand_replacement: 'Google'
-    model_replacement: '$1'
-
-  #########
-  # Gigabyte
-  # @ref: http://gsmart.gigabytecm.com/en/
-  #########
-  - regex: '; *(GSmart)[ -]([^/]+) Build'
-    device_replacement: '$1 $2'
-    brand_replacement: 'Gigabyte'
-    model_replacement: '$1 $2'
-
-  #########
-  # Freescale development boards
-  # @ref: http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=IMX53QSB
-  #########
-  - regex: '; *(imx5[13]_[^/]+) Build'
-    device_replacement: 'Freescale $1'
-    brand_replacement: 'Freescale'
-    model_replacement: '$1'
-
-  #########
-  # Haier
-  # @ref: http://www.haier.com/
-  # @ref: http://www.haier.com/de/produkte/tablet/
-  #########
-  - regex: '; *Haier[ _\-]([^/]+) Build'
-    device_replacement: 'Haier $1'
-    brand_replacement: 'Haier'
-    model_replacement: '$1'
-  - regex: '; *(PAD1016) Build'
-    device_replacement: 'Haipad $1'
-    brand_replacement: 'Haipad'
-    model_replacement: '$1'
-
-  #########
-  # Haipad
-  # @ref: http://www.haipad.net/
-  # @models: V7P|M7SM7S|M9XM9X|M7XM7X|M9|M8|M7-M|M1002|M7|M701
-  #########
-  - regex: '; *(M701|M7|M8|M9) Build'
-    device_replacement: 'Haipad $1'
-    brand_replacement: 'Haipad'
-    model_replacement: '$1'
-
-  #########
-  # Hannspree
-  # @ref: http://www.hannspree.eu/
-  # @models: SN10T1|SN10T2|SN70T31B|SN70T32W
-  #########
-  - regex: '; *(SN\d+T[^;\)/]*)(?: Build|[;\)])'
-    device_replacement: 'Hannspree $1'
-    brand_replacement: 'Hannspree'
-    model_replacement: '$1'
-
-  #########
-  # HCLme
-  # @ref: http://www.hclmetablet.com/india/
-  #########
-  - regex: 'Build/HCL ME Tablet ([^;\)]+)[\);]'
-    device_replacement: 'HCLme $1'
-    brand_replacement: 'HCLme'
-    model_replacement: '$1'
-  - regex: '; *([^;\/]+) Build/HCL'
-    device_replacement: 'HCLme $1'
-    brand_replacement: 'HCLme'
-    model_replacement: '$1'
-
-  #########
-  # Hena
-  # @ref: http://www.henadigital.com/en/product/index.asp?id=6
-  #########
-  - regex: '; *(MID-?\d{4}C[EM]) Build'
-    device_replacement: 'Hena $1'
-    brand_replacement: 'Hena'
-    model_replacement: '$1'
-
-  #########
-  # Hisense
-  # @ref: http://www.hisense.com/
-  #########
-  - regex: '; *(EG\d{2,}|HS-[^;/]+|MIRA[^;/]+) Build'
-    device_replacement: 'Hisense $1'
-    brand_replacement: 'Hisense'
-    model_replacement: '$1'
-  - regex: '; *(andromax[^;/]+) Build'
-    regex_flag: 'i'
-    device_replacement: 'Hisense $1'
-    brand_replacement: 'Hisense'
-    model_replacement: '$1'
-
-  #########
-  # hitech
-  # @ref: http://www.hitech-mobiles.com/
-  #########
-  - regex: '; *(?:AMAZE[ _](S\d+)|(S\d+)[ _]AMAZE) Build'
-    device_replacement: 'AMAZE $1$2'
-    brand_replacement: 'hitech'
-    model_replacement: 'AMAZE $1$2'
-
-  #########
-  # HP
-  # @ref: http://www.hp.com/
-  #########
-  - regex: '; *(PlayBook) Build'
-    device_replacement: 'HP $1'
-    brand_replacement: 'HP'
-    model_replacement: '$1'
-  - regex: '; *HP ([^/]+) Build'
-    device_replacement: 'HP $1'
-    brand_replacement: 'HP'
-    model_replacement: '$1'
-  - regex: '; *([^/]+_tenderloin) Build'
-    device_replacement: 'HP TouchPad'
-    brand_replacement: 'HP'
-    model_replacement: 'TouchPad'
-
-  #########
-  # Huawei
-  # @ref: http://www.huaweidevice.com
-  # @note: Needs to be before HTC due to Desire HD Build on U8815
-  #########
-  - regex: '; *(HUAWEI |Huawei-)?([UY][^;/]+) Build/(?:Huawei|HUAWEI)([UY][^\);]+)\)'
-    device_replacement: '$1$2'
-    brand_replacement: 'Huawei'
-    model_replacement: '$2'
-  - regex: '; *([^;/]+) Build[/ ]Huawei(MT1-U06|[A-Z]+\d+[^\);]+)[^\);]*\)'
-    device_replacement: '$1'
-    brand_replacement: 'Huawei'
-    model_replacement: '$2'
-  - regex: '; *(S7|M860) Build'
-    device_replacement: '$1'
-    brand_replacement: 'Huawei'
-    model_replacement: '$1'
-  - regex: '; *((?:HUAWEI|Huawei)[ \-]?)(MediaPad) Build'
-    device_replacement: '$1$2'
-    brand_replacement: 'Huawei'
-    model_replacement: '$2'
-  - regex: '; *((?:HUAWEI[ _]?|Huawei[ _])?Ascend[ _])([^;/]+) Build'
-    device_replacement: '$1$2'
-    brand_replacement: 'Huawei'
-    model_replacement: '$2'
-  - regex: '; *((?:HUAWEI|Huawei)[ _\-]?)((?:G700-|MT-)[^;/]+) Build'
-    device_replacement: '$1$2'
-    brand_replacement: 'Huawei'
-    model_replacement: '$2'
-  - regex: '; *((?:HUAWEI|Huawei)[ _\-]?)([^;/]+) Build'
-    device_replacement: '$1$2'
-    brand_replacement: 'Huawei'
-    model_replacement: '$2'
-  - regex: '; *(MediaPad[^;]+|SpringBoard) Build/Huawei'
-    device_replacement: '$1'
-    brand_replacement: 'Huawei'
-    model_replacement: '$1'
-  - regex: '; *([^;]+) Build/(?:Huawei|HUAWEI)'
-    device_replacement: '$1'
-    brand_replacement: 'Huawei'
-    model_replacement: '$1'
-  - regex: '; *([Uu])([89]\d{3}) Build'
-    device_replacement: '$1$2'
-    brand_replacement: 'Huawei'
-    model_replacement: 'U$2'
-  - regex: '; *(?:Ideos |IDEOS )(S7) Build'
-    device_replacement: 'Huawei Ideos$1'
-    brand_replacement: 'Huawei'
-    model_replacement: 'Ideos$1'
-  - regex: '; *(?:Ideos |IDEOS )([^;/]+\s*|\s*)Build'
-    device_replacement: 'Huawei Ideos$1'
-    brand_replacement: 'Huawei'
-    model_replacement: 'Ideos$1'
-  - regex: '; *(Orange Daytona|Pulse|Pulse Mini|Vodafone 858|C8500|C8600|C8650|C8660|Nexus 6P|ATH-.+?) Build[/ ]'
-    device_replacement: 'Huawei $1'
-    brand_replacement: 'Huawei'
-    model_replacement: '$1'
-
-  #########
-  # HTC
-  # @ref: http://www.htc.com/www/products/
-  # @ref: http://en.wikipedia.org/wiki/List_of_HTC_phones
-  #########
-
-  - regex: '; *HTC[ _]([^;]+); Windows Phone'
-    device_replacement: 'HTC $1'
-    brand_replacement: 'HTC'
-    model_replacement: '$1'
-
-  # Android HTC with Version Number matcher
-  # ; HTC_0P3Z11/1.12.161.3 Build
-  # ;HTC_A3335 V2.38.841.1 Build
-  - regex: '; *(?:HTC[ _/])+([^ _/]+)(?:[/\\]1\.0 | V|/| +)\d+\.\d[\d\.]*(?: *Build|\))'
-    device_replacement: 'HTC $1'
-    brand_replacement: 'HTC'
-    model_replacement: '$1'
-  - regex: '; *(?:HTC[ _/])+([^ _/]+)(?:[ _/]([^ _/]+))?(?:[/\\]1\.0 | V|/| +)\d+\.\d[\d\.]*(?: *Build|\))'
-    device_replacement: 'HTC $1 $2'
-    brand_replacement: 'HTC'
-    model_replacement: '$1 $2'
-  - regex: '; *(?:HTC[ _/])+([^ _/]+)(?:[ _/]([^ _/]+)(?:[ _/]([^ _/]+))?)?(?:[/\\]1\.0 | V|/| +)\d+\.\d[\d\.]*(?: *Build|\))'
-    device_replacement: 'HTC $1 $2 $3'
-    brand_replacement: 'HTC'
-    model_replacement: '$1 $2 $3'
-  - regex: '; *(?:HTC[ _/])+([^ _/]+)(?:[ _/]([^ _/]+)(?:[ _/]([^ _/]+)(?:[ _/]([^ _/]+))?)?)?(?:[/\\]1\.0 | V|/| +)\d+\.\d[\d\.]*(?: *Build|\))'
-    device_replacement: 'HTC $1 $2 $3 $4'
-    brand_replacement: 'HTC'
-    model_replacement: '$1 $2 $3 $4'
-
-  # Android HTC without Version Number matcher
-  - regex: '; *(?:(?:HTC|htc)(?:_blocked)*[ _/])+([^ _/;]+)(?: *Build|[;\)]| - )'
-    device_replacement: 'HTC $1'
-    brand_replacement: 'HTC'
-    model_replacement: '$1'
-  - regex: '; *(?:(?:HTC|htc)(?:_blocked)*[ _/])+([^ _/]+)(?:[ _/]([^ _/;\)]+))?(?: *Build|[;\)]| - )'
-    device_replacement: 'HTC $1 $2'
-    brand_replacement: 'HTC'
-    model_replacement: '$1 $2'
-  - regex: '; *(?:(?:HTC|htc)(?:_blocked)*[ _/])+([^ _/]+)(?:[ _/]([^ _/]+)(?:[ _/]([^ _/;\)]+))?)?(?: *Build|[;\)]| - )'
-    device_replacement: 'HTC $1 $2 $3'
-    brand_replacement: 'HTC'
-    model_replacement: '$1 $2 $3'
-  - regex: '; *(?:(?:HTC|htc)(?:_blocked)*[ _/])+([^ _/]+)(?:[ _/]([^ _/]+)(?:[ _/]([^ _/]+)(?:[ _/]([^ /;]+))?)?)?(?: *Build|[;\)]| - )'
-    device_replacement: 'HTC $1 $2 $3 $4'
-    brand_replacement: 'HTC'
-    model_replacement: '$1 $2 $3 $4'
-
-  # HTC Streaming Player
-  - regex: 'HTC Streaming Player [^\/]*/[^\/]*/ htc_([^/]+) /'
-    device_replacement: 'HTC $1'
-    brand_replacement: 'HTC'
-    model_replacement: '$1'
-  # general matcher for anything else
-  - regex: '(?:[;,] *|^)(?:htccn_chs-)?HTC[ _-]?([^;]+?)(?: *Build|clay|Android|-?Mozilla| Opera| Profile| UNTRUSTED|[;/\(\)]|$)'
-    regex_flag: 'i'
-    device_replacement: 'HTC $1'
-    brand_replacement: 'HTC'
-    model_replacement: '$1'
-  # Android matchers without HTC
-  - regex: '; *(A6277|ADR6200|ADR6300|ADR6350|ADR6400[A-Z]*|ADR6425[A-Z]*|APX515CKT|ARIA|Desire[^_ ]*|Dream|EndeavorU|Eris|Evo|Flyer|HD2|Hero|HERO200|Hero CDMA|HTL21|Incredible|Inspire[A-Z0-9]*|Legend|Liberty|Nexus ?(?:One|HD2)|One|One S C2|One[ _]?(?:S|V|X\+?)\w*|PC36100|PG06100|PG86100|S31HT|Sensation|Wildfire)(?: Build|[/;\(\)])'
-    regex_flag: 'i'
-    device_replacement: 'HTC $1'
-    brand_replacement: 'HTC'
-    model_replacement: '$1'
-  - regex: '; *(ADR6200|ADR6400L|ADR6425LVW|Amaze|DesireS?|EndeavorU|Eris|EVO|Evo\d[A-Z]+|HD2|IncredibleS?|Inspire[A-Z0-9]*|Inspire[A-Z0-9]*|Sensation[A-Z0-9]*|Wildfire)[ _-](.+?)(?:[/;\)]|Build|MIUI|1\.0)'
-    regex_flag: 'i'
-    device_replacement: 'HTC $1 $2'
-    brand_replacement: 'HTC'
-    model_replacement: '$1 $2'
-
-  #########
-  # Hyundai
-  # @ref: http://www.hyundaitechnologies.com
-  #########
-  - regex: '; *HYUNDAI (T\d[^/]*) Build'
-    device_replacement: 'Hyundai $1'
-    brand_replacement: 'Hyundai'
-    model_replacement: '$1'
-  - regex: '; *HYUNDAI ([^;/]+) Build'
-    device_replacement: 'Hyundai $1'
-    brand_replacement: 'Hyundai'
-    model_replacement: '$1'
-  # X900? http://www.amazon.com/Hyundai-X900-Retina-Android-Bluetooth/dp/B00AO07H3O
-  - regex: '; *(X700|Hold X|MB-6900) Build'
-    device_replacement: 'Hyundai $1'
-    brand_replacement: 'Hyundai'
-    model_replacement: '$1'
-
-  #########
-  # iBall
-  # @ref: http://www.iball.co.in/Category/Mobiles/22
-  #########
-  - regex: '; *(?:iBall[ _\-])?(Andi)[ _]?(\d[^;/]*) Build'
-    regex_flag: 'i'
-    device_replacement: '$1 $2'
-    brand_replacement: 'iBall'
-    model_replacement: '$1 $2'
-  - regex: '; *(IBall)(?:[ _]([^;/]+)|) Build'
-    regex_flag: 'i'
-    device_replacement: '$1 $2'
-    brand_replacement: 'iBall'
-    model_replacement: '$2'
-
-  #########
-  # IconBIT
-  # @ref: http://www.iconbit.com/catalog/tablets/
-  #########
-  - regex: '; *(NT-\d+[^ ;/]*|Net[Tt]AB [^;/]+|Mercury [A-Z]+|iconBIT)(?: S/N:[^;/]+)? Build'
-    device_replacement: '$1'
-    brand_replacement: 'IconBIT'
-    model_replacement: '$1'
-
-  #########
-  # IMO
-  # @ref: http://www.ponselimo.com/
-  #########
-  - regex: '; *(IMO)[ _]([^;/]+) Build'
-    regex_flag: 'i'
-    device_replacement: '$1 $2'
-    brand_replacement: 'IMO'
-    model_replacement: '$2'
-
-  #########
-  # i-mobile
-  # @ref: http://www.i-mobilephone.com/
-  #########
-  - regex: '; *i-?mobile[ _]([^/]+) Build/'
-    regex_flag: 'i'
-    device_replacement: 'i-mobile $1'
-    brand_replacement: 'imobile'
-    model_replacement: '$1'
-  - regex: '; *(i-(?:style|note)[^/]*) Build/'
-    regex_flag: 'i'
-    device_replacement: 'i-mobile $1'
-    brand_replacement: 'imobile'
-    model_replacement: '$1'
-
-  #########
-  # Impression
-  # @ref: http://impression.ua/planshetnye-kompyutery
-  #########
-  - regex: '; *(ImPAD) ?(\d+(?:.)*) Build'
-    device_replacement: '$1 $2'
-    brand_replacement: 'Impression'
-    model_replacement: '$1 $2'
-
-  #########
-  # Infinix
-  # @ref: http://www.infinixmobility.com/index.html
-  #########
-  - regex: '; *(Infinix)[ _]([^;/]+) Build'
-    device_replacement: '$1 $2'
-    brand_replacement: 'Infinix'
-    model_replacement: '$2'
-
-  #########
-  # Informer
-  # @ref: ??
-  #########
-  - regex: '; *(Informer)[ \-]([^;/]+) Build'
-    device_replacement: '$1 $2'
-    brand_replacement: 'Informer'
-    model_replacement: '$2'
-
-  #########
-  # Intenso
-  # @ref: http://www.intenso.de
-  # @models: 7":TAB 714,TAB 724;8":TAB 814,TAB 824;10":TAB 1004
-  #########
-  - regex: '; *(TAB) ?([78][12]4) Build'
-    device_replacement: 'Intenso $1'
-    brand_replacement: 'Intenso'
-    model_replacement: '$1 $2'
-
-  #########
-  # Intex
-  # @ref: http://intexmobile.in/index.aspx
-  # @note: Zync also offers a "Cloud Z5" device
-  #########
-  # smartphones
-  - regex: '; *(?:Intex[ _])?(AQUA|Aqua)([ _\.\-])([^;/]+) *(?:Build|;)'
-    device_replacement: '$1$2$3'
-    brand_replacement: 'Intex'
-    model_replacement: '$1 $3'
-  # matches "INTEX CLOUD X1"
-  - regex: '; *(?:INTEX|Intex)(?:[_ ]([^\ _;/]+))(?:[_ ]([^\ _;/]+))? *(?:Build|;)'
-    device_replacement: '$1 $2'
-    brand_replacement: 'Intex'
-    model_replacement: '$1 $2'
-  # tablets
-  - regex: '; *([iI]Buddy)[ _]?(Connect)(?:_|\?_| )?([^;/]*) *(?:Build|;)'
-    device_replacement: '$1 $2 $3'
-    brand_replacement: 'Intex'
-    model_replacement: 'iBuddy $2 $3'
-  - regex: '; *(I-Buddy)[ _]([^;/]+) *(?:Build|;)'
-    device_replacement: '$1 $2'
-    brand_replacement: 'Intex'
-    model_replacement: 'iBuddy $2'
-
-  #########
-  # iOCEAN
-  # @ref: http://www.iocean.cc/
-  #########
-  - regex: '; *(iOCEAN) ([^/]+) Build'
-    regex_flag: 'i'
-    device_replacement: '$1 $2'
-    brand_replacement: 'iOCEAN'
-    model_replacement: '$2'
-
-  #########
-  # i.onik
-  # @ref: http://www.i-onik.de/
-  #########
-  - regex: '; *(TP\d+(?:\.\d+)?\-\d[^;/]+) Build'
-    device_replacement: 'ionik $1'
-    brand_replacement: 'ionik'
-    model_replacement: '$1'
-
-  #########
-  # IRU.ru
-  # @ref: http://www.iru.ru/catalog/soho/planetable/
-  #########
-  - regex: '; *(M702pro) Build'
-    device_replacement: '$1'
-    brand_replacement: 'Iru'
-    model_replacement: '$1'
-
-  #########
-  # Ivio
-  # @ref: http://www.ivio.com/mobile.php
-  # @models: DG80,DG20,DE38,DE88,MD70
-  #########
-  - regex: '; *(DE88Plus|MD70) Build'
-    device_replacement: '$1'
-    brand_replacement: 'Ivio'
-    model_replacement: '$1'
-  - regex: '; *IVIO[_\-]([^;/]+) Build'
-    device_replacement: '$1'
-    brand_replacement: 'Ivio'
-    model_replacement: '$1'
-
-  #########
-  # Jaytech
-  # @ref: http://www.jay-tech.de/jaytech/servlet/frontend/
-  #########
-  - regex: '; *(TPC-\d+|JAY-TECH) Build'
-    device_replacement: '$1'
-    brand_replacement: 'Jaytech'
-    model_replacement: '$1'
-
-  #########
-  # Jiayu
-  # @ref: http://www.ejiayu.com/en/Product.html
-  #########
-  - regex: '; *(JY-[^;/]+|G[234]S?) Build'
-    device_replacement: '$1'
-    brand_replacement: 'Jiayu'
-    model_replacement: '$1'
-
-  #########
-  # JXD
-  # @ref: http://www.jxd.hk/
-  #########
-  - regex: '; *(JXD)[ _\-]([^;/]+) Build'
-    device_replacement: '$1 $2'
-    brand_replacement: 'JXD'
-    model_replacement: '$2'
-
-  #########
-  # Karbonn
-  # @ref: http://www.karbonnmobiles.com/products_tablet.php
-  #########
-  - regex: '; *Karbonn[ _]?([^;/]+) *(?:Build|;)'
-    regex_flag: 'i'
-    device_replacement: '$1'
-    brand_replacement: 'Karbonn'
-    model_replacement: '$1'
-  - regex: '; *([^;]+) Build/Karbonn'
-    device_replacement: '$1'
-    brand_replacement: 'Karbonn'
-    model_replacement: '$1'
-  - regex: '; *(A11|A39|A37|A34|ST8|ST10|ST7|Smart Tab3|Smart Tab2|Titanium S\d) +Build'
-    device_replacement: '$1'
-    brand_replacement: 'Karbonn'
-    model_replacement: '$1'
-
-  #########
-  # KDDI (Operator Branded Device)
-  # @ref: http://www.ipentec.com/document/document.aspx?page=android-useragent
-  #########
-  - regex: '; *(IS01|IS03|IS05|IS\d{2}SH) Build'
-    device_replacement: '$1'
-    brand_replacement: 'Sharp'
-    model_replacement: '$1'
-  - regex: '; *(IS04) Build'
-    device_replacement: '$1'
-    brand_replacement: 'Regza'
-    model_replacement: '$1'
-  - regex: '; *(IS06|IS\d{2}PT) Build'
-    device_replacement: '$1'
-    brand_replacement: 'Pantech'
-    model_replacement: '$1'
-  - regex: '; *(IS11S) Build'
-    device_replacement: '$1'
-    brand_replacement: 'SonyEricsson'
-    model_replacement: 'Xperia Acro'
-  - regex: '; *(IS11CA) Build'
-    device_replacement: '$1'
-    brand_replacement: 'Casio'
-    model_replacement: 'GzOne $1'
-  - regex: '; *(IS11LG) Build'
-    device_replacement: '$1'
-    brand_replacement: 'LG'
-    model_replacement: 'Optimus X'
-  - regex: '; *(IS11N) Build'
-    device_replacement: '$1'
-    brand_replacement: 'Medias'
-    model_replacement: '$1'
-  - regex: '; *(IS11PT) Build'
-    device_replacement: '$1'
-    brand_replacement: 'Pantech'
-    model_replacement: 'MIRACH'
-  - regex: '; *(IS12F) Build'
-    device_replacement: '$1'
-    brand_replacement: 'Fujitsu'
-    model_replacement: 'Arrows ES'
-  # @ref: https://ja.wikipedia.org/wiki/IS12M
-  - regex: '; *(IS12M) Build'
-    device_replacement: '$1'
-    brand_replacement: 'Motorola'
-    model_replacement: 'XT909'
-  - regex: '; *(IS12S) Build'
-    device_replacement: '$1'
-    brand_replacement: 'SonyEricsson'
-    model_replacement: 'Xperia Acro HD'
-  - regex: '; *(ISW11F) Build'
-    device_replacement: '$1'
-    brand_replacement: 'Fujitsu'
-    model_replacement: 'Arrowz Z'
-  - regex: '; *(ISW11HT) Build'
-    device_replacement: '$1'
-    brand_replacement: 'HTC'
-    model_replacement: 'EVO'
-  - regex: '; *(ISW11K) Build'
-    device_replacement: '$1'
-    brand_replacement: 'Kyocera'
-    model_replacement: 'DIGNO'
-  - regex: '; *(ISW11M) Build'
-    device_replacement: '$1'
-    brand_replacement: 'Motorola'
-    model_replacement: 'Photon'
-  - regex: '; *(ISW11SC) Build'
-    device_replacement: '$1'
-    brand_replacement: 'Samsung'
-    model_replacement: 'GALAXY S II WiMAX'
-  - regex: '; *(ISW12HT) Build'
-    device_replacement: '$1'
-    brand_replacement: 'HTC'
-    model_replacement: 'EVO 3D'
-  - regex: '; *(ISW13HT) Build'
-    device_replacement: '$1'
-    brand_replacement: 'HTC'
-    model_replacement: 'J'
-  - regex: '; *(ISW?[0-9]{2}[A-Z]{0,2}) Build'
-    device_replacement: '$1'
-    brand_replacement: 'KDDI'
-    model_replacement: '$1'
-  - regex: '; *(INFOBAR [^;/]+) Build'
-    device_replacement: '$1'
-    brand_replacement: 'KDDI'
-    model_replacement: '$1'
-
-  #########
-  # Kingcom
-  # @ref: http://www.e-kingcom.com
-  #########
-  - regex: '; *(JOYPAD|Joypad)[ _]([^;/]+) Build/'
-    device_replacement: '$1 $2'
-    brand_replacement: 'Kingcom'
-    model_replacement: '$1 $2'
-
-  #########
-  # Kobo
-  # @ref: https://en.wikipedia.org/wiki/Kobo_Inc.
-  # @ref: http://www.kobo.com/devices#tablets
-  #########
-  - regex: '; *(Vox|VOX|Arc|K080) Build/'
-    regex_flag: 'i'
-    device_replacement: '$1'
-    brand_replacement: 'Kobo'
-    model_replacement: '$1'
-  - regex: '\b(Kobo Touch)\b'
-    device_replacement: '$1'
-    brand_replacement: 'Kobo'
-    model_replacement: '$1'
-
-  #########
-  # K-Touch
-  # @ref: ??
-  #########
-  - regex: '; *(K-Touch)[ _]([^;/]+) Build'
-    regex_flag: 'i'
-    device_replacement: '$1 $2'
-    brand_replacement: 'Ktouch'
-    model_replacement: '$2'
-
-  #########
-  # KT Tech
-  # @ref: http://www.kttech.co.kr
-  #########
-  - regex: '; *((?:EV|KM)-S\d+[A-Z]?) Build'
-    regex_flag: 'i'
-    device_replacement: '$1'
-    brand_replacement: 'KTtech'
-    model_replacement: '$1'
-
-  #########
-  # Kyocera
-  # @ref: http://www.android.com/devices/?country=all&m=kyocera
-  #########
-  - regex: '; *(Zio|Hydro|Torque|Event|EVENT|Echo|Milano|Rise|URBANO PROGRESSO|WX04K|WX06K|WX10K|KYL21|101K|C5[12]\d{2}) Build/'
-    device_replacement: '$1'
-    brand_replacement: 'Kyocera'
-    model_replacement: '$1'
-
-  #########
-  # Lava
-  # @ref: http://www.lavamobiles.com/
-  #########
-  - regex: '; *(?:LAVA[ _])?IRIS[ _\-]?([^/;\)]+) *(?:;|\)|Build)'
-    regex_flag: 'i'
-    device_replacement: 'Iris $1'
-    brand_replacement: 'Lava'
-    model_replacement: 'Iris $1'
-  - regex: '; *LAVA[ _]([^;/]+) Build'
-    device_replacement: '$1'
-    brand_replacement: 'Lava'
-    model_replacement: '$1'
-
-  #########
-  # Lemon
-  # @ref: http://www.lemonmobiles.com/products.php?type=1
-  #########
-  - regex: '; *(?:(Aspire A1)|(?:LEMON|Lemon)[ _]([^;/]+))_? Build'
-    device_replacement: 'Lemon $1$2'
-    brand_replacement: 'Lemon'
-    model_replacement: '$1$2'
-
-  #########
-  # Lenco
-  # @ref: http://www.lenco.com/c/tablets/
-  #########
-  - regex: '; *(TAB-1012) Build/'
-    device_replacement: 'Lenco $1'
-    brand_replacement: 'Lenco'
-    model_replacement: '$1'
-  - regex: '; Lenco ([^;/]+) Build/'
-    device_replacement: 'Lenco $1'
-    brand_replacement: 'Lenco'
-    model_replacement: '$1'
-
-  #########
-  # Lenovo
-  # @ref: http://support.lenovo.com/en_GB/downloads/default.page?#
-  #########
-  - regex: '; *(A1_07|A2107A-H|S2005A-H|S1-37AH0) Build'
-    device_replacement: '$1'
-    brand_replacement: 'Lenovo'
-    model_replacement: '$1'
-  - regex: '; *(Idea[Tp]ab)[ _]([^;/]+);? Build'
-    device_replacement: 'Lenovo $1 $2'
-    brand_replacement: 'Lenovo'
-    model_replacement: '$1 $2'
-  - regex: '; *(Idea(?:Tab|pad)) ?([^;/]+) Build'
-    device_replacement: 'Lenovo $1 $2'
-    brand_replacement: 'Lenovo'
-    model_replacement: '$1 $2'
-  - regex: '; *(ThinkPad) ?(Tablet) Build/'
-    device_replacement: 'Lenovo $1 $2'
-    brand_replacement: 'Lenovo'
-    model_replacement: '$1 $2'
-  - regex: '; *(?:LNV-)?(?:=?[Ll]enovo[ _\-]?|LENOVO[ _])+(.+?)(?:Build|[;/\)])'
-    device_replacement: 'Lenovo $1'
-    brand_replacement: 'Lenovo'
-    model_replacement: '$1'
-  - regex: '[;,] (?:Vodafone )?(SmartTab) ?(II) ?(\d+) Build/'
-    device_replacement: 'Lenovo $1 $2 $3'
-    brand_replacement: 'Lenovo'
-    model_replacement: '$1 $2 $3'
-  - regex: '; *(?:Ideapad )?K1 Build/'
-    device_replacement: 'Lenovo Ideapad K1'
-    brand_replacement: 'Lenovo'
-    model_replacement: 'Ideapad K1'
-  - regex: '; *(3GC101|3GW10[01]|A390) Build/'
-    device_replacement: '$1'
-    brand_replacement: 'Lenovo'
-    model_replacement: '$1'
-  - regex: '\b(?:Lenovo|LENOVO)+[ _\-]?([^,;:/ ]+)'
-    device_replacement: 'Lenovo $1'
-    brand_replacement: 'Lenovo'
-    model_replacement: '$1'
-
-  #########
-  # Lexibook
-  # @ref: http://www.lexibook.com/fr
-  #########
-  - regex: '; *(MFC\d+)[A-Z]{2}([^;,/]*),? Build'
-    device_replacement: '$1$2'
-    brand_replacement: 'Lexibook'
-    model_replacement: '$1$2'
-
-  #########
-  # LG
-  # @ref: http://www.lg.com/uk/mobile
-  #########
-  - regex: '; *(E[34][0-9]{2}|LS[6-8][0-9]{2}|VS[6-9][0-9]+[^;/]+|Nexus 4|Nexus 5X?|GT540f?|Optimus (?:2X|G|4X HD)|OptimusX4HD) *(?:Build|;)'
-    device_replacement: '$1'
-    brand_replacement: 'LG'
-    model_replacement: '$1'
-  - regex: '[;:] *(L-\d+[A-Z]|LGL\d+[A-Z]?)(?:/V\d+)? *(?:Build|[;\)])'
-    device_replacement: '$1'
-    brand_replacement: 'LG'
-    model_replacement: '$1'
-  - regex: '; *(LG-)([A-Z]{1,2}\d{2,}[^,;/\)\(]*?)(?:Build| V\d+|[,;/\)\(]|$)'
-    device_replacement: '$1$2'
-    brand_replacement: 'LG'
-    model_replacement: '$2'
-  - regex: '; *(LG[ \-]|LG)([^;/]+)[;/]? Build'
-    device_replacement: '$1$2'
-    brand_replacement: 'LG'
-    model_replacement: '$2'
-  - regex: '^(LG)-([^;/]+)/ Mozilla/.*; Android'
-    device_replacement: '$1 $2'
-    brand_replacement: 'LG'
-    model_replacement: '$2'
-  - regex: '(Web0S); Linux/(SmartTV)'
-    device_replacement: 'LG $1 $2'
-    brand_replacement: 'LG'
-    model_replacement: '$1 $2'
-
-  #########
-  # Malata
-  # @ref: http://www.malata.com/en/products.aspx?classid=680
-  #########
-  - regex: '; *((?:SMB|smb)[^;/]+) Build/'
-    device_replacement: '$1'
-    brand_replacement: 'Malata'
-    model_replacement: '$1'
-  - regex: '; *(?:Malata|MALATA) ([^;/]+) Build/'
-    device_replacement: '$1'
-    brand_replacement: 'Malata'
-    model_replacement: '$1'
-
-  #########
-  # Manta
-  # @ref: http://www.manta.com.pl/en
-  #########
-  - regex: '; *(MS[45][0-9]{3}|MID0[568][NS]?|MID[1-9]|MID[78]0[1-9]|MID970[1-9]|MID100[1-9]) Build/'
-    device_replacement: '$1'
-    brand_replacement: 'Manta'
-    model_replacement: '$1'
-
-  #########
-  # Match
-  # @ref: http://www.match.net.cn/products.asp
-  #########
-  - regex: '; *(M1052|M806|M9000|M9100|M9701|MID100|MID120|MID125|MID130|MID135|MID140|MID701|MID710|MID713|MID727|MID728|MID731|MID732|MID733|MID735|MID736|MID737|MID760|MID800|MID810|MID820|MID830|MID833|MID835|MID860|MID900|MID930|MID933|MID960|MID980) Build/'
-    device_replacement: '$1'
-    brand_replacement: 'Match'
-    model_replacement: '$1'
-
-  #########
-  # Maxx
-  # @ref: http://www.maxxmobile.in/
-  # @models: Maxx MSD7-Play, Maxx MX245+ Trance, Maxx AX8 Race, Maxx MSD7 3G- AX50, Maxx Genx Droid 7 - AX40, Maxx AX5 Duo,
-  #   Maxx AX3 Duo, Maxx AX3, Maxx AX8 Note II (Note 2), Maxx AX8 Note I, Maxx AX8, Maxx AX5 Plus, Maxx MSD7 Smarty,
-  #   Maxx AX9Z Race,
-  #   Maxx MT150, Maxx MQ601, Maxx M2020, Maxx Sleek MX463neo, Maxx MX525, Maxx MX192-Tune, Maxx Genx Droid 7 AX353,
-  # @note: Need more User-Agents!!!
-  #########
-  - regex: '; *(GenxDroid7|MSD7.*|AX\d.*|Tab 701|Tab 722) Build/'
-    device_replacement: 'Maxx $1'
-    brand_replacement: 'Maxx'
-    model_replacement: '$1'
-
-  #########
-  # Mediacom
-  # @ref: http://www.mediacomeurope.it/
-  #########
-  - regex: '; *(M-PP[^;/]+|PhonePad ?\d{2,}[^;/]+) Build'
-    device_replacement: 'Mediacom $1'
-    brand_replacement: 'Mediacom'
-    model_replacement: '$1'
-  - regex: '; *(M-MP[^;/]+|SmartPad ?\d{2,}[^;/]+) Build'
-    device_replacement: 'Mediacom $1'
-    brand_replacement: 'Mediacom'
-    model_replacement: '$1'
-
-  #########
-  # Medion
-  # @ref: http://www.medion.com/en/
-  #########
-  - regex: '; *(?:MD_)?LIFETAB[ _]([^;/]+) Build'
-    regex_flag: 'i'
-    device_replacement: 'Medion Lifetab $1'
-    brand_replacement: 'Medion'
-    model_replacement: 'Lifetab $1'
-  - regex: '; *MEDION ([^;/]+) Build'
-    device_replacement: 'Medion $1'
-    brand_replacement: 'Medion'
-    model_replacement: '$1'
-
-  #########
-  # Meizu
-  # @ref: http://www.meizu.com
-  #########
-  - regex: '; *(M030|M031|M035|M040|M065|m9) Build'
-    device_replacement: 'Meizu $1'
-    brand_replacement: 'Meizu'
-    model_replacement: '$1'
-  - regex: '; *(?:meizu_|MEIZU )(.+?) *(?:Build|[;\)])'
-    device_replacement: 'Meizu $1'
-    brand_replacement: 'Meizu'
-    model_replacement: '$1'
-
-  #########
-  # Micromax
-  # @ref: http://www.micromaxinfo.com
-  #########
-  - regex: '; *(?:Micromax[ _](A111|A240)|(A111|A240)) Build'
-    regex_flag: 'i'
-    device_replacement: 'Micromax $1$2'
-    brand_replacement: 'Micromax'
-    model_replacement: '$1$2'
-  - regex: '; *Micromax[ _](A\d{2,3}[^;/]*) Build'
-    regex_flag: 'i'
-    device_replacement: 'Micromax $1'
-    brand_replacement: 'Micromax'
-    model_replacement: '$1'
-  # be carefull here with Acer e.g. A500
-  - regex: '; *(A\d{2}|A[12]\d{2}|A90S|A110Q) Build'
-    regex_flag: 'i'
-    device_replacement: 'Micromax $1'
-    brand_replacement: 'Micromax'
-    model_replacement: '$1'
-  - regex: '; *Micromax[ _](P\d{3}[^;/]*) Build'
-    regex_flag: 'i'
-    device_replacement: 'Micromax $1'
-    brand_replacement: 'Micromax'
-    model_replacement: '$1'
-  - regex: '; *(P\d{3}|P\d{3}\(Funbook\)) Build'
-    regex_flag: 'i'
-    device_replacement: 'Micromax $1'
-    brand_replacement: 'Micromax'
-    model_replacement: '$1'
-
-  #########
-  # Mito
-  # @ref: http://new.mitomobile.com/
-  #########
-  - regex: '; *(MITO)[ _\-]?([^;/]+) Build'
-    regex_flag: 'i'
-    device_replacement: '$1 $2'
-    brand_replacement: 'Mito'
-    model_replacement: '$2'
-
-  #########
-  # Mobistel
-  # @ref: http://www.mobistel.com/
-  #########
-  - regex: '; *(Cynus)[ _](F5|T\d|.+?) *(?:Build|[;/\)])'
-    regex_flag: 'i'
-    device_replacement: '$1 $2'
-    brand_replacement: 'Mobistel'
-    model_replacement: '$1 $2'
-
-  #########
-  # Modecom
-  # @ref: http://www.modecom.eu/tablets/portal/
-  #########
-  - regex: '; *(MODECOM )?(FreeTab) ?([^;/]+) Build'
-    regex_flag: 'i'
-    device_replacement: '$1$2 $3'
-    brand_replacement: 'Modecom'
-    model_replacement: '$2 $3'
-  - regex: '; *(MODECOM )([^;/]+) Build'
-    regex_flag: 'i'
-    device_replacement: '$1 $2'
-    brand_replacement: 'Modecom'
-    model_replacement: '$2'
-
-  #########
-  # Motorola
-  # @ref: http://www.motorola.com/us/shop-all-mobile-phones/
-  #########
-  - regex: '; *(MZ\d{3}\+?|MZ\d{3} 4G|Xoom|XOOM[^;/]*) Build'
-    device_replacement: 'Motorola $1'
-    brand_replacement: 'Motorola'
-    model_replacement: '$1'
-  - regex: '; *(Milestone )(XT[^;/]*) Build'
-    device_replacement: 'Motorola $1$2'
-    brand_replacement: 'Motorola'
-    model_replacement: '$2'
-  - regex: '; *(Motoroi ?x|Droid X|DROIDX) Build'
-    regex_flag: 'i'
-    device_replacement: 'Motorola $1'
-    brand_replacement: 'Motorola'
-    model_replacement: 'DROID X'
-  - regex: '; *(Droid[^;/]*|DROID[^;/]*|Milestone[^;/]*|Photon|Triumph|Devour|Titanium) Build'
-    device_replacement: 'Motorola $1'
-    brand_replacement: 'Motorola'
-    model_replacement: '$1'
-  - regex: '; *(A555|A85[34][^;/]*|A95[356]|ME[58]\d{2}\+?|ME600|ME632|ME722|MB\d{3}\+?|MT680|MT710|MT870|MT887|MT917|WX435|WX453|WX44[25]|XT\d{3,4}[A-Z\+]*|CL[iI]Q|CL[iI]Q XT) Build'
-    device_replacement: '$1'
-    brand_replacement: 'Motorola'
-    model_replacement: '$1'
-  - regex: '; *(Motorola MOT-|Motorola[ _\-]|MOT\-?)([^;/]+) Build'
-    device_replacement: '$1$2'
-    brand_replacement: 'Motorola'
-    model_replacement: '$2'
-  - regex: '; *(Moto[_ ]?|MOT\-)([^;/]+) Build'
-    device_replacement: '$1$2'
-    brand_replacement: 'Motorola'
-    model_replacement: '$2'
-
-  #########
-  # MpMan
-  # @ref: http://www.mpmaneurope.com
-  #########
-  - regex: '; *((?:MP[DQ]C|MPG\d{1,4}|MP\d{3,4}|MID(?:(?:10[234]|114|43|7[247]|8[24]|7)C|8[01]1))[^;/]*) Build'
-    device_replacement: '$1'
-    brand_replacement: 'Mpman'
-    model_replacement: '$1'
-
-  #########
-  # MSI
-  # @ref: http://www.msi.com/product/windpad/
-  #########
-  - regex: '; *(?:MSI[ _])?(Primo\d+|Enjoy[ _\-][^;/]+) Build'
-    regex_flag: 'i'
-    device_replacement: '$1'
-    brand_replacement: 'Msi'
-    model_replacement: '$1'
-
-  #########
-  # Multilaser
-  # http://www.multilaser.com.br/listagem_produtos.php?cat=5
-  #########
-  - regex: '; *Multilaser[ _]([^;/]+) Build'
-    device_replacement: '$1'
-    brand_replacement: 'Multilaser'
-    model_replacement: '$1'
-
-  #########
-  # MyPhone
-  # @ref: http://myphone.com.ph/
-  #########
-  - regex: '; *(My)[_]?(Pad)[ _]([^;/]+) Build'
-    device_replacement: '$1$2 $3'
-    brand_replacement: 'MyPhone'
-    model_replacement: '$1$2 $3'
-  - regex: '; *(My)\|?(Phone)[ _]([^;/]+) Build'
-    device_replacement: '$1$2 $3'
-    brand_replacement: 'MyPhone'
-    model_replacement: '$3'
-  - regex: '; *(A\d+)[ _](Duo)? Build'
-    regex_flag: 'i'
-    device_replacement: '$1 $2'
-    brand_replacement: 'MyPhone'
-    model_replacement: '$1 $2'
-
-  #########
-  # Mytab
-  # @ref: http://www.mytab.eu/en/category/mytab-products/
-  #########
-  - regex: '; *(myTab[^;/]*) Build'
-    device_replacement: '$1'
-    brand_replacement: 'Mytab'
-    model_replacement: '$1'
-
-  #########
-  # Nabi
-  # @ref: https://www.nabitablet.com
-  #########
-  - regex: '; *(NABI2?-)([^;/]+) Build/'
-    device_replacement: '$1$2'
-    brand_replacement: 'Nabi'
-    model_replacement: '$2'
-
-  #########
-  # Nec Medias
-  # @ref: http://www.n-keitai.com/
-  #########
-  - regex: '; *(N-\d+[CDE]) Build/'
-    device_replacement: '$1'
-    brand_replacement: 'Nec'
-    model_replacement: '$1'
-  - regex: '; ?(NEC-)(.*) Build/'
-    device_replacement: '$1$2'
-    brand_replacement: 'Nec'
-    model_replacement: '$2'
-  - regex: '; *(LT-NA7) Build/'
-    device_replacement: '$1'
-    brand_replacement: 'Nec'
-    model_replacement: 'Lifetouch Note'
-
-  #########
-  # Nextbook
-  # @ref: http://nextbookusa.com
-  #########
-  - regex: '; *(NXM\d+[A-z0-9_]*|Next\d[A-z0-9_ \-]*|NEXT\d[A-z0-9_ \-]*|Nextbook [A-z0-9_ ]*|DATAM803HC|M805)(?: Build|[\);])'
-    device_replacement: '$1'
-    brand_replacement: 'Nextbook'
-    model_replacement: '$1'
-
-  #########
-  # Nokia
-  # @ref: http://www.nokia.com
-  #########
-  - regex: '; *(Nokia)([ _\-]*)([^;/]*) Build'
-    regex_flag: 'i'
-    device_replacement: '$1$2$3'
-    brand_replacement: 'Nokia'
-    model_replacement: '$3'
-
-  #########
-  # Nook
-  # @ref:
-  # TODO nook browser/1.0
-  #########
-  - regex: '; *(Nook ?|Barnes & Noble Nook |BN )([^;/]+) Build'
-    device_replacement: '$1$2'
-    brand_replacement: 'Nook'
-    model_replacement: '$2'
-  - regex: '; *(NOOK )?(BNRV200|BNRV200A|BNTV250|BNTV250A|BNTV400|BNTV600|LogicPD Zoom2) Build'
-    device_replacement: '$1$2'
-    brand_replacement: 'Nook'
-    model_replacement: '$2'
-  - regex: '; Build/(Nook)'
-    device_replacement: '$1'
-    brand_replacement: 'Nook'
-    model_replacement: 'Tablet'
-
-  #########
-  # Olivetti
-  # @ref: http://www.olivetti.de/EN/Page/t02/view_html?idp=348
-  #########
-  - regex: '; *(OP110|OliPad[^;/]+) Build'
-    device_replacement: 'Olivetti $1'
-    brand_replacement: 'Olivetti'
-    model_replacement: '$1'
-
-  #########
-  # Omega
-  # @ref: http://omega-technology.eu/en/produkty/346/tablets
-  # @note: MID tablets might get matched by CobyKyros first
-  # @models: (T107|MID(?:700[2-5]|7031|7108|7132|750[02]|8001|8500|9001|971[12])
-  #########
-  - regex: '; *OMEGA[ _\-](MID[^;/]+) Build'
-    device_replacement: 'Omega $1'
-    brand_replacement: 'Omega'
-    model_replacement: '$1'
-  - regex: '^(MID7500|MID\d+) Mozilla/5\.0 \(iPad;'
-    device_replacement: 'Omega $1'
-    brand_replacement: 'Omega'
-    model_replacement: '$1'
-
-  #########
-  # OpenPeak
-  # @ref: https://support.google.com/googleplay/answer/1727131?hl=en
-  #########
-  - regex: '; *((?:CIUS|cius)[^;/]*) Build'
-    device_replacement: 'Openpeak $1'
-    brand_replacement: 'Openpeak'
-    model_replacement: '$1'
-
-  #########
-  # Oppo
-  # @ref: http://en.oppo.com/products/
-  #########
-  - regex: '; *(Find ?(?:5|7a)|R8[012]\d{1,2}|T703\d{0,1}|U70\d{1,2}T?|X90\d{1,2}) Build'
-    device_replacement: 'Oppo $1'
-    brand_replacement: 'Oppo'
-    model_replacement: '$1'
-  - regex: '; *OPPO ?([^;/]+) Build/'
-    device_replacement: 'Oppo $1'
-    brand_replacement: 'Oppo'
-    model_replacement: '$1'
-
-  #########
-  # Odys
-  # @ref: http://odys.de
-  #########
-  - regex: '; *(?:Odys\-|ODYS\-|ODYS )([^;/]+) Build'
-    device_replacement: 'Odys $1'
-    brand_replacement: 'Odys'
-    model_replacement: '$1'
-  - regex: '; *(SELECT) ?(7) Build'
-    device_replacement: 'Odys $1 $2'
-    brand_replacement: 'Odys'
-    model_replacement: '$1 $2'
-  - regex: '; *(PEDI)_(PLUS)_(W) Build'
-    device_replacement: 'Odys $1 $2 $3'
-    brand_replacement: 'Odys'
-    model_replacement: '$1 $2 $3'
-  # Weltbild - Tablet PC 4 = Cat Phoenix = Odys Tablet PC 4?
-  - regex: '; *(AEON|BRAVIO|FUSION|FUSION2IN1|Genio|EOS10|IEOS[^;/]*|IRON|Loox|LOOX|LOOX Plus|Motion|NOON|NOON_PRO|NEXT|OPOS|PEDI[^;/]*|PRIME[^;/]*|STUDYTAB|TABLO|Tablet-PC-4|UNO_X8|XELIO[^;/]*|Xelio ?\d+ ?[Pp]ro|XENO10|XPRESS PRO) Build'
-    device_replacement: 'Odys $1'
-    brand_replacement: 'Odys'
-    model_replacement: '$1'
-
-  #########
-  # OnePlus
-  # @ref https://oneplus.net/
-  #########
-  - regex: '; (ONE [a-zA-Z]\d+) Build/'
-    device_replacement: 'OnePlus $1'
-    brand_replacement: 'OnePlus'
-    model_replacement: '$1'
-  - regex: '; (ONEPLUS [a-zA-Z]\d+) Build/'
-    device_replacement: 'OnePlus $1'
-    brand_replacement: 'OnePlus'
-    model_replacement: '$1'
-
-  #########
-  # Orion
-  # @ref: http://www.orion.ua/en/products/computer-products/tablet-pcs.html
-  #########
-  - regex: '; *(TP-\d+) Build/'
-    device_replacement: 'Orion $1'
-    brand_replacement: 'Orion'
-    model_replacement: '$1'
-
-  #########
-  # PackardBell
-  # @ref: http://www.packardbell.com/pb/en/AE/content/productgroup/tablets
-  #########
-  - regex: '; *(G100W?) Build/'
-    device_replacement: 'PackardBell $1'
-    brand_replacement: 'PackardBell'
-    model_replacement: '$1'
-
-  #########
-  # Panasonic
-  # @ref: http://panasonic.jp/mobile/
-  # @models: T11, T21, T31, P11, P51, Eluga Power, Eluga DL1
-  # @models: (tab) Toughpad FZ-A1, Toughpad JT-B1
-  #########
-  - regex: '; *(Panasonic)[_ ]([^;/]+) Build'
-    device_replacement: '$1 $2'
-    brand_replacement: '$1'
-    model_replacement: '$2'
-  # Toughpad
-  - regex: '; *(FZ-A1B|JT-B1) Build'
-    device_replacement: 'Panasonic $1'
-    brand_replacement: 'Panasonic'
-    model_replacement: '$1'
-  # Eluga Power
-  - regex: '; *(dL1|DL1) Build'
-    device_replacement: 'Panasonic $1'
-    brand_replacement: 'Panasonic'
-    model_replacement: '$1'
-
-  #########
-  # Pantech
-  # @href: http://www.pantech.co.kr/en/prod/prodList.do?gbrand=PANTECH
-  # @href: http://www.pantech.co.kr/en/prod/prodList.do?gbrand=VEGA
-  # @models: ADR8995, ADR910L, ADR930VW, C790, CDM8992, CDM8999, IS06, IS11PT, P2000, P2020, P2030, P4100, P5000, P6010, P6020, P6030, P7000, P7040, P8000, P8010, P9020, P9050, P9060, P9070, P9090, PT001, PT002, PT003, TXT8040, TXT8045, VEGA PTL21
-  #########
-  - regex: '; *(SKY[ _])?(IM\-[AT]\d{3}[^;/]+).* Build/'
-    device_replacement: 'Pantech $1$2'
-    brand_replacement: 'Pantech'
-    model_replacement: '$1$2'
-  - regex: '; *((?:ADR8995|ADR910L|ADR930L|ADR930VW|PTL21|P8000)(?: 4G)?) Build/'
-    device_replacement: '$1'
-    brand_replacement: 'Pantech'
-    model_replacement: '$1'
-  - regex: '; *Pantech([^;/]+).* Build/'
-    device_replacement: 'Pantech $1'
-    brand_replacement: 'Pantech'
-    model_replacement: '$1'
-
-  #########
-  # Papayre
-  # @ref: http://grammata.es/
-  #########
-  - regex: '; *(papyre)[ _\-]([^;/]+) Build/'
-    regex_flag: 'i'
-    device_replacement: '$1 $2'
-    brand_replacement: 'Papyre'
-    model_replacement: '$2'
-
-  #########
-  # Pearl
-  # @ref: http://www.pearl.de/c-1540.shtml
-  #########
-  - regex: '; *(?:Touchlet )?(X10\.[^;/]+) Build/'
-    device_replacement: 'Pearl $1'
-    brand_replacement: 'Pearl'
-    model_replacement: '$1'
-
-  #########
-  # Phicomm
-  # @ref: http://www.phicomm.com.cn/
-  #########
-  - regex: '; PHICOMM (i800) Build/'
-    device_replacement: 'Phicomm $1'
-    brand_replacement: 'Phicomm'
-    model_replacement: '$1'
-  - regex: '; PHICOMM ([^;/]+) Build/'
-    device_replacement: 'Phicomm $1'
-    brand_replacement: 'Phicomm'
-    model_replacement: '$1'
-  - regex: '; *(FWS\d{3}[^;/]+) Build/'
-    device_replacement: 'Phicomm $1'
-    brand_replacement: 'Phicomm'
-    model_replacement: '$1'
-
-  #########
-  # Philips
-  # @ref: http://www.support.philips.com/support/catalog/products.jsp?_dyncharset=UTF-8&country=&categoryid=MOBILE_PHONES_SMART_SU_CN_CARE&userLanguage=en&navCount=2&groupId=PC_PRODUCTS_AND_PHONES_GR_CN_CARE&catalogType=&navAction=push&userCountry=cn&title=Smartphones&cateId=MOBILE_PHONES_CA_CN_CARE
-  # @TODO: Philips Tablets User-Agents missing!
-  # @ref: http://www.support.philips.com/support/catalog/products.jsp?_dyncharset=UTF-8&country=&categoryid=ENTERTAINMENT_TABLETS_SU_CN_CARE&userLanguage=en&navCount=0&groupId=&catalogType=&navAction=push&userCountry=cn&title=Entertainment+Tablets&cateId=TABLETS_CA_CN_CARE
-  #########
-  # @note: this a best guess according to available philips models. Need more User-Agents
-  - regex: '; *(D633|D822|D833|T539|T939|V726|W335|W336|W337|W3568|W536|W5510|W626|W632|W6350|W6360|W6500|W732|W736|W737|W7376|W820|W832|W8355|W8500|W8510|W930) Build'
-    device_replacement: '$1'
-    brand_replacement: 'Philips'
-    model_replacement: '$1'
-  - regex: '; *(?:Philips|PHILIPS)[ _]([^;/]+) Build'
-    device_replacement: 'Philips $1'
-    brand_replacement: 'Philips'
-    model_replacement: '$1'
-
-  #########
-  # Pipo
-  # @ref: http://www.pipo.cn/En/
-  #########
-  - regex: 'Android 4\..*; *(M[12356789]|U[12368]|S[123])\ ?(pro)? Build'
-    device_replacement: 'Pipo $1$2'
-    brand_replacement: 'Pipo'
-    model_replacement: '$1$2'
-
-  #########
-  # Ployer
-  # @ref: http://en.ployer.cn/
-  #########
-  - regex: '; *(MOMO[^;/]+) Build'
-    device_replacement: '$1'
-    brand_replacement: 'Ployer'
-    model_replacement: '$1'
-
-  #########
-  # Polaroid/ Acho
-  # @ref: http://polaroidstore.com/store/start.asp?category_id=382&category_id2=0&order=title&filter1=&filter2=&filter3=&view=all
-  #########
-  - regex: '; *(?:Polaroid[ _])?((?:MIDC\d{3,}|PMID\d{2,}|PTAB\d{3,})[^;/]*)(\/[^;/]*)? Build/'
-    device_replacement: '$1'
-    brand_replacement: 'Polaroid'
-    model_replacement: '$1'
-  - regex: '; *(?:Polaroid )(Tablet) Build/'
-    device_replacement: '$1'
-    brand_replacement: 'Polaroid'
-    model_replacement: '$1'
-
-  #########
-  # Pomp
-  # @ref: http://pompmobileshop.com/
-  #########
-  #~ TODO
-  - regex: '; *(POMP)[ _\-](.+?) *(?:Build|[;/\)])'
-    device_replacement: '$1 $2'
-    brand_replacement: 'Pomp'
-    model_replacement: '$2'
-
-  #########
-  # Positivo
-  # @ref: http://www.positivoinformatica.com.br/www/pessoal/tablet-ypy/
-  #########
-  - regex: '; *(TB07STA|TB10STA|TB07FTA|TB10FTA) Build/'
-    device_replacement: '$1'
-    brand_replacement: 'Positivo'
-    model_replacement: '$1'
-  - regex: '; *(?:Positivo )?((?:YPY|Ypy)[^;/]+) Build/'
-    device_replacement: '$1'
-    brand_replacement: 'Positivo'
-    model_replacement: '$1'
-
-  #########
-  # POV
-  # @ref: http://www.pointofview-online.com/default2.php
-  # @TODO: Smartphone Models MOB-3515, MOB-5045-B missing
-  #########
-  - regex: '; *(MOB-[^;/]+) Build/'
-    device_replacement: '$1'
-    brand_replacement: 'POV'
-    model_replacement: '$1'
-  - regex: '; *POV[ _\-]([^;/]+) Build/'
-    device_replacement: 'POV $1'
-    brand_replacement: 'POV'
-    model_replacement: '$1'
-  - regex: '; *((?:TAB-PLAYTAB|TAB-PROTAB|PROTAB|PlayTabPro|Mobii[ _\-]|TAB-P)[^;/]*) Build/'
-    device_replacement: 'POV $1'
-    brand_replacement: 'POV'
-    model_replacement: '$1'
-
-  #########
-  # Prestigio
-  # @ref: http://www.prestigio.com/catalogue/MultiPhones
-  # @ref: http://www.prestigio.com/catalogue/MultiPads
-  #########
-  - regex: '; *(?:Prestigio )?((?:PAP|PMP)\d[^;/]+) Build/'
-    device_replacement: 'Prestigio $1'
-    brand_replacement: 'Prestigio'
-    model_replacement: '$1'
-
-  #########
-  # Proscan
-  # @ref: http://www.proscanvideo.com/products-search.asp?itemClass=TABLET&itemnmbr=
-  #########
-  - regex: '; *(PLT[0-9]{4}.*) Build/'
-    device_replacement: '$1'
-    brand_replacement: 'Proscan'
-    model_replacement: '$1'
-
-  #########
-  # QMobile
-  # @ref: http://www.qmobile.com.pk/
-  #########
-  - regex: '; *(A2|A5|A8|A900)_?(Classic)? Build'
-    device_replacement: '$1 $2'
-    brand_replacement: 'Qmobile'
-    model_replacement: '$1 $2'
-  - regex: '; *(Q[Mm]obile)_([^_]+)_([^_]+) Build'
-    device_replacement: 'Qmobile $2 $3'
-    brand_replacement: 'Qmobile'
-    model_replacement: '$2 $3'
-  - regex: '; *(Q\-?[Mm]obile)[_ ](A[^;/]+) Build'
-    device_replacement: 'Qmobile $2'
-    brand_replacement: 'Qmobile'
-    model_replacement: '$2'
-
-  #########
-  # Qmobilevn
-  # @ref: http://qmobile.vn/san-pham.html
-  #########
-  - regex: '; *(Q\-Smart)[ _]([^;/]+) Build/'
-    device_replacement: '$1 $2'
-    brand_replacement: 'Qmobilevn'
-    model_replacement: '$2'
-  - regex: '; *(Q\-?[Mm]obile)[ _\-](S[^;/]+) Build/'
-    device_replacement: '$1 $2'
-    brand_replacement: 'Qmobilevn'
-    model_replacement: '$2'
-
-  #########
-  # Quanta
-  # @ref: ?
-  #########
-  - regex: '; *(TA1013) Build'
-    device_replacement: '$1'
-    brand_replacement: 'Quanta'
-    model_replacement: '$1'
-
-  #########
-  # RCA
-  # @ref: http://rcamobilephone.com/
-  #########
-  - regex: '; (RCT\w+) Build/'
-    device_replacement: '$1'
-    brand_replacement: 'RCA'
-    model_replacement: '$1'
-
-  #########
-  # Rockchip
-  # @ref: http://www.rock-chips.com/a/cn/product/index.html
-  # @note: manufacturer sells chipsets - I assume that these UAs are dev-boards
-  #########
-  - regex: '; *(RK\d+),? Build/'
-    device_replacement: '$1'
-    brand_replacement: 'Rockchip'
-    model_replacement: '$1'
-  - regex: ' Build/(RK\d+)'
-    device_replacement: '$1'
-    brand_replacement: 'Rockchip'
-    model_replacement: '$1'
-
-  #########
-  # Samsung Android Devices
-  # @ref: http://www.samsung.com/us/mobile/cell-phones/all-products
-  #########
-  - regex: '; *(SAMSUNG |Samsung )?((?:Galaxy (?:Note II|S\d)|GT-I9082|GT-I9205|GT-N7\d{3}|SM-N9005)[^;/]*)\/?[^;/]* Build/'
-    device_replacement: 'Samsung $1$2'
-    brand_replacement: 'Samsung'
-    model_replacement: '$2'
-  - regex: '; *(Google )?(Nexus [Ss](?: 4G)?) Build/'
-    device_replacement: 'Samsung $1$2'
-    brand_replacement: 'Samsung'
-    model_replacement: '$2'
-  - regex: '; *(SAMSUNG |Samsung )([^\/]*)\/[^ ]* Build/'
-    device_replacement: 'Samsung $2'
-    brand_replacement: 'Samsung'
-    model_replacement: '$2'
-  - regex: '; *(Galaxy(?: Ace| Nexus| S ?II+|Nexus S| with MCR 1.2| Mini Plus 4G)?) Build/'
-    device_replacement: 'Samsung $1'
-    brand_replacement: 'Samsung'
-    model_replacement: '$1'
-  - regex: '; *(SAMSUNG[ _\-] *)+([^;/]+) Build'
-    device_replacement: 'Samsung $2'
-    brand_replacement: 'Samsung'
-    model_replacement: '$2'
-  - regex: '; *(SAMSUNG-)?(GT\-[BINPS]\d{4}[^\/]*)(\/[^ ]*) Build'
-    device_replacement: 'Samsung $1$2$3'
-    brand_replacement: 'Samsung'
-    model_replacement: '$2'
-  - regex: '(?:; *|^)((?:GT\-[BIiNPS]\d{4}|I9\d{2}0[A-Za-z\+]?\b)[^;/\)]*?)(?:Build|Linux|MIUI|[;/\)])'
-    device_replacement: 'Samsung $1'
-    brand_replacement: 'Samsung'
-    model_replacement: '$1'
-  - regex: '; (SAMSUNG-)([A-Za-z0-9\-]+).* Build/'
-    device_replacement: 'Samsung $1$2'
-    brand_replacement: 'Samsung'
-    model_replacement: '$2'
-  - regex: '; *((?:SCH|SGH|SHV|SHW|SPH|SC|SM)\-[A-Za-z0-9 ]+)(/?[^ ]*)? Build'
-    device_replacement: 'Samsung $1'
-    brand_replacement: 'Samsung'
-    model_replacement: '$1'
-  - regex: ' ((?:SCH)\-[A-Za-z0-9 ]+)(/?[^ ]*)? Build'
-    device_replacement: 'Samsung $1'
-    brand_replacement: 'Samsung'
-    model_replacement: '$1'
-  - regex: '; *(Behold ?(?:2|II)|YP\-G[^;/]+|EK-GC100|SCL21|I9300) Build'
-    device_replacement: 'Samsung $1'
-    brand_replacement: 'Samsung'
-    model_replacement: '$1'
-
-  #########
-  # Sharp
-  # @ref: http://www.sharp-phone.com/en/index.html
-  # @ref: http://www.android.com/devices/?country=all&m=sharp
-  #########
-  - regex: '; *(SH\-?\d\d[^;/]+|SBM\d[^;/]+) Build'
-    device_replacement: '$1'
-    brand_replacement: 'Sharp'
-    model_replacement: '$1'
-  - regex: '; *(SHARP[ -])([^;/]+) Build'
-    device_replacement: '$1$2'
-    brand_replacement: 'Sharp'
-    model_replacement: '$2'
-
-  #########
-  # Simvalley
-  # @ref: http://www.simvalley-mobile.de/
-  #########
-  - regex: '; *(SPX[_\-]\d[^;/]*) Build/'
-    device_replacement: '$1'
-    brand_replacement: 'Simvalley'
-    model_replacement: '$1'
-  - regex: '; *(SX7\-PEARL\.GmbH) Build/'
-    device_replacement: '$1'
-    brand_replacement: 'Simvalley'
-    model_replacement: '$1'
-  - regex: '; *(SP[T]?\-\d{2}[^;/]*) Build/'
-    device_replacement: '$1'
-    brand_replacement: 'Simvalley'
-    model_replacement: '$1'
-
-  #########
-  # SK Telesys
-  # @ref: http://www.sk-w.com/phone/phone_list.jsp
-  # @ref: http://www.android.com/devices/?country=all&m=sk-telesys
-  #########
-  - regex: '; *(SK\-.*) Build/'
-    device_replacement: '$1'
-    brand_replacement: 'SKtelesys'
-    model_replacement: '$1'
-
-  #########
-  # Skytex
-  # @ref: http://skytex.com/android
-  #########
-  - regex: '; *(?:SKYTEX|SX)-([^;/]+) Build'
-    device_replacement: '$1'
-    brand_replacement: 'Skytex'
-    model_replacement: '$1'
-  - regex: '; *(IMAGINE [^;/]+) Build'
-    device_replacement: '$1'
-    brand_replacement: 'Skytex'
-    model_replacement: '$1'
-
-  #########
-  # SmartQ
-  # @ref: http://en.smartdevices.com.cn/Products/
-  # @models: Z8, X7, U7H, U7, T30, T20, Ten3, V5-II, T7-3G, SmartQ5, K7, S7, Q8, T19, Ten2, Ten, R10, T7, R7, V5, V7, SmartQ7
-  #########
-  - regex: '; *(SmartQ) ?([^;/]+) Build/'
-    device_replacement: '$1 $2'
-    brand_replacement: '$1'
-    model_replacement: '$2'
-
-  #########
-  # Smartbitt
-  # @ref: http://www.smartbitt.com/
-  # @missing: SBT Useragents
-  #########
-  - regex: '; *(WF7C|WF10C|SBT[^;/]+) Build'
-    device_replacement: '$1'
-    brand_replacement: 'Smartbitt'
-    model_replacement: '$1'
-
-  #########
-  # Softbank (Operator Branded Devices)
-  # @ref: http://www.ipentec.com/document/document.aspx?page=android-useragent
-  #########
-  - regex: '; *(SBM(?:003SH|005SH|006SH|007SH|102SH)) Build'
-    device_replacement: '$1'
-    brand_replacement: 'Sharp'
-    model_replacement: '$1'
-  - regex: '; *(003P|101P|101P11C|102P) Build'
-    device_replacement: '$1'
-    brand_replacement: 'Panasonic'
-    model_replacement: '$1'
-  - regex: '; *(00\dZ) Build/'
-    device_replacement: '$1'
-    brand_replacement: 'ZTE'
-    model_replacement: '$1'
-  - regex: '; HTC(X06HT) Build'
-    device_replacement: '$1'
-    brand_replacement: 'HTC'
-    model_replacement: '$1'
-  - regex: '; *(001HT|X06HT) Build'
-    device_replacement: '$1'
-    brand_replacement: 'HTC'
-    model_replacement: '$1'
-  - regex: '; *(201M) Build'
-    device_replacement: '$1'
-    brand_replacement: 'Motorola'
-    model_replacement: 'XT902'
-
-  #########
-  # Trekstor
-  # @ref: http://www.trekstor.co.uk/surftabs-en.html
-  # @note: Must come before SonyEricsson
-  #########
-  - regex: '; *(ST\d{4}.*)Build/ST'
-    device_replacement: 'Trekstor $1'
-    brand_replacement: 'Trekstor'
-    model_replacement: '$1'
-  - regex: '; *(ST\d{4}.*) Build/'
-    device_replacement: 'Trekstor $1'
-    brand_replacement: 'Trekstor'
-    model_replacement: '$1'
-
-  #########
-  # SonyEricsson
-  # @note: Must come before nokia since they also use symbian
-  # @ref: http://www.android.com/devices/?country=all&m=sony-ericssons
-  # @TODO: type!
-  #########
-  # android matchers
-  - regex: '; *(Sony ?Ericsson ?)([^;/]+) Build'
-    device_replacement: '$1$2'
-    brand_replacement: 'SonyEricsson'
-    model_replacement: '$2'
-  - regex: '; *((?:SK|ST|E|X|LT|MK|MT|WT)\d{2}[a-z0-9]*(?:-o)?|R800i|U20i) Build'
-    device_replacement: '$1'
-    brand_replacement: 'SonyEricsson'
-    model_replacement: '$1'
-  # TODO X\d+ is wrong
-  - regex: '; *(Xperia (?:A8|Arc|Acro|Active|Live with Walkman|Mini|Neo|Play|Pro|Ray|X\d+)[^;/]*) Build'
-    regex_flag: 'i'
-    device_replacement: '$1'
-    brand_replacement: 'SonyEricsson'
-    model_replacement: '$1'
-
-  #########
-  # Sony
-  # @ref: http://www.sonymobile.co.jp/index.html
-  # @ref: http://www.sonymobile.com/global-en/products/phones/
-  # @ref: http://www.sony.jp/tablet/
-  #########
-  - regex: '; Sony (Tablet[^;/]+) Build'
-    device_replacement: 'Sony $1'
-    brand_replacement: 'Sony'
-    model_replacement: '$1'
-  - regex: '; Sony ([^;/]+) Build'
-    device_replacement: 'Sony $1'
-    brand_replacement: 'Sony'
-    model_replacement: '$1'
-  - regex: '; *(Sony)([A-Za-z0-9\-]+) Build'
-    device_replacement: '$1 $2'
-    brand_replacement: '$1'
-    model_replacement: '$2'
-  - regex: '; *(Xperia [^;/]+) Build'
-    device_replacement: '$1'
-    brand_replacement: 'Sony'
-    model_replacement: '$1'
-  - regex: '; *(C(?:1[0-9]|2[0-9]|53|55|6[0-9])[0-9]{2}|D[25]\d{3}|D6[56]\d{2}) Build'
-    device_replacement: '$1'
-    brand_replacement: 'Sony'
-    model_replacement: '$1'
-  - regex: '; *(SGP\d{3}|SGPT\d{2}) Build'
-    device_replacement: '$1'
-    brand_replacement: 'Sony'
-    model_replacement: '$1'
-  - regex: '; *(NW-Z1000Series) Build'
-    device_replacement: '$1'
-    brand_replacement: 'Sony'
-    model_replacement: '$1'
-
-  ##########
-  # Sony PlayStation
-  # @ref: http://playstation.com
-  # The Vita spoofs the Kindle
-  ##########
-  - regex: 'PLAYSTATION 3'
-    device_replacement: 'PlayStation 3'
-    brand_replacement: 'Sony'
-    model_replacement: 'PlayStation 3'
-  - regex: '(PlayStation (?:Portable|Vita|\d+))'
-    device_replacement: '$1'
-    brand_replacement: 'Sony'
-    model_replacement: '$1'
-
-  #########
-  # Spice
-  # @ref: http://www.spicemobilephones.co.in/
-  #########
-  - regex: '; *((?:CSL_Spice|Spice|SPICE|CSL)[ _\-]?)?([Mm][Ii])([ _\-])?(\d{3}[^;/]*) Build/'
-    device_replacement: '$1$2$3$4'
-    brand_replacement: 'Spice'
-    model_replacement: 'Mi$4'
-
-  #########
-  # Sprint (Operator Branded Devices)
-  # @ref:
-  #########
-  - regex: '; *(Sprint )(.+?) *(?:Build|[;/])'
-    device_replacement: '$1$2'
-    brand_replacement: 'Sprint'
-    model_replacement: '$2'
-  - regex: '\b(Sprint)[: ]([^;,/ ]+)'
-    device_replacement: '$1$2'
-    brand_replacement: 'Sprint'
-    model_replacement: '$2'
-
-  #########
-  # Tagi
-  # @ref: ??
-  #########
-  - regex: '; *(TAGI[ ]?)(MID) ?([^;/]+) Build/'
-    device_replacement: '$1$2$3'
-    brand_replacement: 'Tagi'
-    model_replacement: '$2$3'
-
-  #########
-  # Tecmobile
-  # @ref: http://www.tecmobile.com/
-  #########
-  - regex: '; *(Oyster500|Opal 800) Build'
-    device_replacement: 'Tecmobile $1'
-    brand_replacement: 'Tecmobile'
-    model_replacement: '$1'
-
-  #########
-  # Tecno
-  # @ref: www.tecno-mobile.com/‎
-  #########
-  - regex: '; *(TECNO[ _])([^;/]+) Build/'
-    device_replacement: '$1$2'
-    brand_replacement: 'Tecno'
-    model_replacement: '$2'
-
-  #########
-  # Telechips, Techvision evaluation boards
-  # @ref:
-  #########
-  - regex: '; *Android for (Telechips|Techvision) ([^ ]+) '
-    regex_flag: 'i'
-    device_replacement: '$1 $2'
-    brand_replacement: '$1'
-    model_replacement: '$2'
-
-  #########
-  # Telstra
-  # @ref: http://www.telstra.com.au/home-phone/thub-2/
-  # @ref: https://support.google.com/googleplay/answer/1727131?hl=en
-  #########
-  - regex: '; *(T-Hub2) Build/'
-    device_replacement: '$1'
-    brand_replacement: 'Telstra'
-    model_replacement: '$1'
-
-  #########
-  # Terra
-  # @ref: http://www.wortmann.de/
-  #########
-  - regex: '; *(PAD) ?(100[12]) Build/'
-    device_replacement: 'Terra $1$2'
-    brand_replacement: 'Terra'
-    model_replacement: '$1$2'
-
-  #########
-  # Texet
-  # @ref: http://www.texet.ru/tablet/
-  #########
-  - regex: '; *(T[BM]-\d{3}[^;/]+) Build/'
-    device_replacement: '$1'
-    brand_replacement: 'Texet'
-    model_replacement: '$1'
-
-  #########
-  # Thalia
-  # @ref: http://www.thalia.de/shop/tolino-shine-ereader/show/
-  #########
-  - regex: '; *(tolino [^;/]+) Build'
-    device_replacement: '$1'
-    brand_replacement: 'Thalia'
-    model_replacement: '$1'
-  - regex: '; *Build/.* (TOLINO_BROWSER)'
-    device_replacement: '$1'
-    brand_replacement: 'Thalia'
-    model_replacement: 'Tolino Shine'
-
-  #########
-  # Thl
-  # @ref: http://en.thl.com.cn/Mobile
-  # @ref: http://thlmobilestore.com
-  #########
-  - regex: '; *(?:CJ[ -])?(ThL|THL)[ -]([^;/]+) Build/'
-    device_replacement: '$1 $2'
-    brand_replacement: 'Thl'
-    model_replacement: '$2'
-  - regex: '; *(T100|T200|T5|W100|W200|W8s) Build/'
-    device_replacement: '$1'
-    brand_replacement: 'Thl'
-    model_replacement: '$1'
-
-  #########
-  # T-Mobile (Operator Branded Devices)
-  #########
-  # @ref: https://en.wikipedia.org/wiki/HTC_Hero
-  - regex: '; *(T-Mobile[ _]G2[ _]Touch) Build'
-    device_replacement: '$1'
-    brand_replacement: 'HTC'
-    model_replacement: 'Hero'
-  # @ref: https://en.wikipedia.org/wiki/HTC_Desire_Z
-  - regex: '; *(T-Mobile[ _]G2) Build'
-    device_replacement: '$1'
-    brand_replacement: 'HTC'
-    model_replacement: 'Desire Z'
-  - regex: '; *(T-Mobile myTouch Q) Build'
-    device_replacement: '$1'
-    brand_replacement: 'Huawei'
-    model_replacement: 'U8730'
-  - regex: '; *(T-Mobile myTouch) Build'
-    device_replacement: '$1'
-    brand_replacement: 'Huawei'
-    model_replacement: 'U8680'
-  - regex: '; *(T-Mobile_Espresso) Build'
-    device_replacement: '$1'
-    brand_replacement: 'HTC'
-    model_replacement: 'Espresso'
-  - regex: '; *(T-Mobile G1) Build'
-    device_replacement: '$1'
-    brand_replacement: 'HTC'
-    model_replacement: 'Dream'
-  - regex: '\b(T-Mobile ?)?(myTouch)[ _]?([34]G)[ _]?([^\/]*) (?:Mozilla|Build)'
-    device_replacement: '$1$2 $3 $4'
-    brand_replacement: 'HTC'
-    model_replacement: '$2 $3 $4'
-  - regex: '\b(T-Mobile)_([^_]+)_(.*) Build'
-    device_replacement: '$1 $2 $3'
-    brand_replacement: 'Tmobile'
-    model_replacement: '$2 $3'
-  - regex: '\b(T-Mobile)[_ ]?(.*?)Build'
-    device_replacement: '$1 $2'
-    brand_replacement: 'Tmobile'
-    model_replacement: '$2'
-
-  #########
-  # Tomtec
-  # @ref: http://www.tom-tec.eu/pages/tablets.php
-  #########
-  - regex: ' (ATP[0-9]{4}) Build'
-    device_replacement: '$1'
-    brand_replacement: 'Tomtec'
-    model_replacement: '$1'
-
-  #########
-  # Tooky
-  # @ref: http://www.tookymobile.com/
-  #########
-  - regex: ' *(TOOKY)[ _\-]([^;/]+) ?(?:Build|;)'
-    regex_flag: 'i'
-    device_replacement: '$1 $2'
-    brand_replacement: 'Tooky'
-    model_replacement: '$2'
-
-  #########
-  # Toshiba
-  # @ref: http://www.toshiba.co.jp/
-  # @missing: LT170, Thrive 7, TOSHIBA STB10
-  #########
-  - regex: '\b(TOSHIBA_AC_AND_AZ|TOSHIBA_FOLIO_AND_A|FOLIO_AND_A)'
-    device_replacement: '$1'
-    brand_replacement: 'Toshiba'
-    model_replacement: 'Folio 100'
-  - regex: '; *([Ff]olio ?100) Build/'
-    device_replacement: '$1'
-    brand_replacement: 'Toshiba'
-    model_replacement: 'Folio 100'
-  - regex: '; *(AT[0-9]{2,3}(?:\-A|LE\-A|PE\-A|SE|a)?|AT7-A|AT1S0|Hikari-iFrame/WDPF-[^;/]+|THRiVE|Thrive) Build/'
-    device_replacement: 'Toshiba $1'
-    brand_replacement: 'Toshiba'
-    model_replacement: '$1'
-
-  #########
-  # Touchmate
-  # @ref: http://touchmatepc.com/new/
-  #########
-  - regex: '; *(TM-MID\d+[^;/]+|TOUCHMATE|MID-750) Build'
-    device_replacement: '$1'
-    brand_replacement: 'Touchmate'
-    model_replacement: '$1'
-  # @todo: needs verification user-agents missing
-  - regex: '; *(TM-SM\d+[^;/]+) Build'
-    device_replacement: '$1'
-    brand_replacement: 'Touchmate'
-    model_replacement: '$1'
-
-  #########
-  # Treq
-  # @ref: http://www.treq.co.id/product
-  #########
-  - regex: '; *(A10 [Bb]asic2?) Build/'
-    device_replacement: '$1'
-    brand_replacement: 'Treq'
-    model_replacement: '$1'
-  - regex: '; *(TREQ[ _\-])([^;/]+) Build'
-    regex_flag: 'i'
-    device_replacement: '$1$2'
-    brand_replacement: 'Treq'
-    model_replacement: '$2'
-
-  #########
-  # Umeox
-  # @ref: http://umeox.com/
-  # @models: A936|A603|X-5|X-3
-  #########
-  # @todo: guessed markers
-  - regex: '; *(X-?5|X-?3) Build/'
-    device_replacement: '$1'
-    brand_replacement: 'Umeox'
-    model_replacement: '$1'
-  # @todo: guessed markers
-  - regex: '; *(A502\+?|A936|A603|X1|X2) Build/'
-    device_replacement: '$1'
-    brand_replacement: 'Umeox'
-    model_replacement: '$1'
-
-  #########
-  # Versus
-  # @ref: http://versusuk.com/support.html
-  #########
-  - regex: '(TOUCH(?:TAB|PAD).+?) Build/'
-    regex_flag: 'i'
-    device_replacement: 'Versus $1'
-    brand_replacement: 'Versus'
-    model_replacement: '$1'
-
-  #########
-  # Vertu
-  # @ref: http://www.vertu.com/
-  #########
-  - regex: '(VERTU) ([^;/]+) Build/'
-    device_replacement: '$1 $2'
-    brand_replacement: 'Vertu'
-    model_replacement: '$2'
-
-  #########
-  # Videocon
-  # @ref: http://www.videoconmobiles.com
-  #########
-  - regex: '; *(Videocon)[ _\-]([^;/]+) *(?:Build|;)'
-    device_replacement: '$1 $2'
-    brand_replacement: 'Videocon'
-    model_replacement: '$2'
-  - regex: ' (VT\d{2}[A-Za-z]*) Build'
-    device_replacement: '$1'
-    brand_replacement: 'Videocon'
-    model_replacement: '$1'
-
-  #########
-  # Viewsonic
-  # @ref: http://viewsonic.com
-  #########
-  - regex: '; *((?:ViewPad|ViewPhone|VSD)[^;/]+) Build/'
-    device_replacement: '$1'
-    brand_replacement: 'Viewsonic'
-    model_replacement: '$1'
-  - regex: '; *(ViewSonic-)([^;/]+) Build/'
-    device_replacement: '$1$2'
-    brand_replacement: 'Viewsonic'
-    model_replacement: '$2'
-  - regex: '; *(GTablet.*) Build/'
-    device_replacement: '$1'
-    brand_replacement: 'Viewsonic'
-    model_replacement: '$1'
-
-  #########
-  # vivo
-  # @ref: http://vivo.cn/
-  #########
-  - regex: '; *([Vv]ivo)[ _]([^;/]+) Build'
-    device_replacement: '$1 $2'
-    brand_replacement: 'vivo'
-    model_replacement: '$2'
-
-  #########
-  # Vodafone (Operator Branded Devices)
-  # @ref: ??
-  #########
-  - regex: '(Vodafone) (.*) Build/'
-    device_replacement: '$1 $2'
-    brand_replacement: '$1'
-    model_replacement: '$2'
-
-  #########
-  # Walton
-  # @ref: http://www.waltonbd.com/
-  #########
-  - regex: '; *(?:Walton[ _\-])?(Primo[ _\-][^;/]+) Build'
-    regex_flag: 'i'
-    device_replacement: 'Walton $1'
-    brand_replacement: 'Walton'
-    model_replacement: '$1'
-
-  #########
-  # Wiko
-  # @ref: http://fr.wikomobile.com/collection.php?s=Smartphones
-  #########
-  - regex: '; *(?:WIKO[ \-])?(CINK\+?|BARRY|BLOOM|DARKFULL|DARKMOON|DARKNIGHT|DARKSIDE|FIZZ|HIGHWAY|IGGY|OZZY|RAINBOW|STAIRWAY|SUBLIM|WAX|CINK [^;/]+) Build/'
-    regex_flag: 'i'
-    device_replacement: 'Wiko $1'
-    brand_replacement: 'Wiko'
-    model_replacement: '$1'
-
-  #########
-  # WellcoM
-  # @ref: ??
-  #########
-  - regex: '; *WellcoM-([^;/]+) Build'
-    device_replacement: 'Wellcom $1'
-    brand_replacement: 'Wellcom'
-    model_replacement: '$1'
-
-  ##########
-  # WeTab
-  # @ref: http://wetab.mobi/
-  ##########
-  - regex: '(?:(WeTab)-Browser|; (wetab) Build)'
-    device_replacement: '$1'
-    brand_replacement: 'WeTab'
-    model_replacement: 'WeTab'
-
-  #########
-  # Wolfgang
-  # @ref: http://wolfgangmobile.com/
-  #########
-  - regex: '; *(AT-AS[^;/]+) Build'
-    device_replacement: 'Wolfgang $1'
-    brand_replacement: 'Wolfgang'
-    model_replacement: '$1'
-
-  #########
-  # Woxter
-  # @ref: http://www.woxter.es/es-es/categories/index
-  #########
-  - regex: '; *(?:Woxter|Wxt) ([^;/]+) Build'
-    device_replacement: 'Woxter $1'
-    brand_replacement: 'Woxter'
-    model_replacement: '$1'
-
-  #########
-  # Yarvik Zania
-  # @ref: http://yarvik.com
-  #########
-  - regex: '; *(?:Xenta |Luna )?(TAB[234][0-9]{2}|TAB0[78]-\d{3}|TAB0?9-\d{3}|TAB1[03]-\d{3}|SMP\d{2}-\d{3}) Build/'
-    device_replacement: 'Yarvik $1'
-    brand_replacement: 'Yarvik'
-    model_replacement: '$1'
-
-  #########
-  # Yifang
-  # @note: Needs to be at the very last as manufacturer builds for other brands.
-  # @ref: http://www.yifangdigital.com/
-  # @models: M1010, M1011, M1007, M1008, M1005, M899, M899LP, M909, M8000,
-  #   M8001, M8002, M8003, M849, M815, M816, M819, M805, M878, M780LPW,
-  #   M778, M7000, M7000AD, M7000NBD, M7001, M7002, M7002KBD, M777, M767,
-  #   M789, M799, M769, M757, M755, M753, M752, M739, M729, M723, M712, M727
-  #########
-  - regex: '; *([A-Z]{2,4})(M\d{3,}[A-Z]{2})([^;\)\/]*)(?: Build|[;\)])'
-    device_replacement: 'Yifang $1$2$3'
-    brand_replacement: 'Yifang'
-    model_replacement: '$2'
-
-  #########
-  # XiaoMi
-  # @ref: http://www.xiaomi.com/event/buyphone
-  #########
-  - regex: '; *((MI|HM|MI-ONE|Redmi)[ -](NOTE |Note )?[^;/]*) (Build|MIUI)/'
-    device_replacement: 'XiaoMi $1'
-    brand_replacement: 'XiaoMi'
-    model_replacement: '$1'
-
-  #########
-  # Xolo
-  # @ref: http://www.xolo.in/
-  #########
-  - regex: '; *XOLO[ _]([^;/]*tab.*) Build'
-    regex_flag: 'i'
-    device_replacement: 'Xolo $1'
-    brand_replacement: 'Xolo'
-    model_replacement: '$1'
-  - regex: '; *XOLO[ _]([^;/]+) Build'
-    regex_flag: 'i'
-    device_replacement: 'Xolo $1'
-    brand_replacement: 'Xolo'
-    model_replacement: '$1'
-  - regex: '; *(q\d0{2,3}[a-z]?) Build'
-    regex_flag: 'i'
-    device_replacement: 'Xolo $1'
-    brand_replacement: 'Xolo'
-    model_replacement: '$1'
-
-  #########
-  # Xoro
-  # @ref: http://www.xoro.de/produkte/
-  #########
-  - regex: '; *(PAD ?[79]\d+[^;/]*|TelePAD\d+[^;/]) Build'
-    device_replacement: 'Xoro $1'
-    brand_replacement: 'Xoro'
-    model_replacement: '$1'
-
-  #########
-  # Zopo
-  # @ref: http://www.zopomobiles.com/products.html
-  #########
-  - regex: '; *(?:(?:ZOPO|Zopo)[ _]([^;/]+)|(ZP ?(?:\d{2}[^;/]+|C2))|(C[2379])) Build'
-    device_replacement: '$1$2$3'
-    brand_replacement: 'Zopo'
-    model_replacement: '$1$2$3'
-
-  #########
-  # ZiiLabs
-  # @ref: http://www.ziilabs.com/products/platforms/androidreferencetablets.php
-  #########
-  - regex: '; *(ZiiLABS) (Zii[^;/]*) Build'
-    device_replacement: '$1 $2'
-    brand_replacement: 'ZiiLabs'
-    model_replacement: '$2'
-  - regex: '; *(Zii)_([^;/]*) Build'
-    device_replacement: '$1 $2'
-    brand_replacement: 'ZiiLabs'
-    model_replacement: '$2'
-
-  #########
-  # ZTE
-  # @ref: http://www.ztedevices.com/
-  #########
-  - regex: '; *(ARIZONA|(?:ATLAS|Atlas) W|D930|Grand (?:[SX][^;]*|Era|Memo[^;]*)|JOE|(?:Kis|KIS)\b[^;]*|Libra|Light [^;]*|N8[056][01]|N850L|N8000|N9[15]\d{2}|N9810|NX501|Optik|(?:Vip )Racer[^;]*|RacerII|RACERII|San Francisco[^;]*|V9[AC]|V55|V881|Z[679][0-9]{2}[A-z]?) Build'
-    device_replacement: '$1'
-    brand_replacement: 'ZTE'
-    model_replacement: '$1'
-  - regex: '; *([A-Z]\d+)_USA_[^;]* Build'
-    device_replacement: '$1'
-    brand_replacement: 'ZTE'
-    model_replacement: '$1'
-  - regex: '; *(SmartTab\d+)[^;]* Build'
-    device_replacement: '$1'
-    brand_replacement: 'ZTE'
-    model_replacement: '$1'
-  - regex: '; *(?:Blade|BLADE|ZTE-BLADE)([^;/]*) Build'
-    device_replacement: 'ZTE Blade$1'
-    brand_replacement: 'ZTE'
-    model_replacement: 'Blade$1'
-  - regex: '; *(?:Skate|SKATE|ZTE-SKATE)([^;/]*) Build'
-    device_replacement: 'ZTE Skate$1'
-    brand_replacement: 'ZTE'
-    model_replacement: 'Skate$1'
-  - regex: '; *(Orange |Optimus )(Monte Carlo|San Francisco) Build'
-    device_replacement: '$1$2'
-    brand_replacement: 'ZTE'
-    model_replacement: '$1$2'
-  - regex: '; *(?:ZXY-ZTE_|ZTE\-U |ZTE[\- _]|ZTE-C[_ ])([^;/]+) Build'
-    device_replacement: 'ZTE $1'
-    brand_replacement: 'ZTE'
-    model_replacement: '$1'
-  # operator specific
-  - regex: '; (BASE) (lutea|Lutea 2|Tab[^;]*) Build'
-    device_replacement: '$1 $2'
-    brand_replacement: 'ZTE'
-    model_replacement: '$1 $2'
-  - regex: '; (Avea inTouch 2|soft stone|tmn smart a7|Movistar[ _]Link) Build'
-    regex_flag: 'i'
-    device_replacement: '$1'
-    brand_replacement: 'ZTE'
-    model_replacement: '$1'
-  - regex: '; *(vp9plus)\)'
-    device_replacement: '$1'
-    brand_replacement: 'ZTE'
-    model_replacement: '$1'
-
-  ##########
-  # Zync
-  # @ref: http://www.zync.in/index.php/our-products/tablet-phablets
-  ##########
-  - regex: '; ?(Cloud[ _]Z5|z1000|Z99 2G|z99|z930|z999|z990|z909|Z919|z900) Build/'
-    device_replacement: '$1'
-    brand_replacement: 'Zync'
-    model_replacement: '$1'
-
-  ##########
-  # Kindle
-  # @note: Needs to be after Sony Playstation Vita as this UA contains Silk/3.2
-  # @ref: https://developer.amazon.com/sdk/fire/specifications.html
-  # @ref: http://amazonsilk.wordpress.com/useful-bits/silk-user-agent/
-  ##########
-  - regex: '; ?(KFOT|Kindle Fire) Build\b'
-    device_replacement: 'Kindle Fire'
-    brand_replacement: 'Amazon'
-    model_replacement: 'Kindle Fire'
-  - regex: '; ?(KFOTE|Amazon Kindle Fire2) Build\b'
-    device_replacement: 'Kindle Fire 2'
-    brand_replacement: 'Amazon'
-    model_replacement: 'Kindle Fire 2'
-  - regex: '; ?(KFTT) Build\b'
-    device_replacement: 'Kindle Fire HD'
-    brand_replacement: 'Amazon'
-    model_replacement: 'Kindle Fire HD 7"'
-  - regex: '; ?(KFJWI) Build\b'
-    device_replacement: 'Kindle Fire HD 8.9" WiFi'
-    brand_replacement: 'Amazon'
-    model_replacement: 'Kindle Fire HD 8.9" WiFi'
-  - regex: '; ?(KFJWA) Build\b'
-    device_replacement: 'Kindle Fire HD 8.9" 4G'
-    brand_replacement: 'Amazon'
-    model_replacement: 'Kindle Fire HD 8.9" 4G'
-  - regex: '; ?(KFSOWI) Build\b'
-    device_replacement: 'Kindle Fire HD 7" WiFi'
-    brand_replacement: 'Amazon'
-    model_replacement: 'Kindle Fire HD 7" WiFi'
-  - regex: '; ?(KFTHWI) Build\b'
-    device_replacement: 'Kindle Fire HDX 7" WiFi'
-    brand_replacement: 'Amazon'
-    model_replacement: 'Kindle Fire HDX 7" WiFi'
-  - regex: '; ?(KFTHWA) Build\b'
-    device_replacement: 'Kindle Fire HDX 7" 4G'
-    brand_replacement: 'Amazon'
-    model_replacement: 'Kindle Fire HDX 7" 4G'
-  - regex: '; ?(KFAPWI) Build\b'
-    device_replacement: 'Kindle Fire HDX 8.9" WiFi'
-    brand_replacement: 'Amazon'
-    model_replacement: 'Kindle Fire HDX 8.9" WiFi'
-  - regex: '; ?(KFAPWA) Build\b'
-    device_replacement: 'Kindle Fire HDX 8.9" 4G'
-    brand_replacement: 'Amazon'
-    model_replacement: 'Kindle Fire HDX 8.9" 4G'
-  - regex: '; ?Amazon ([^;/]+) Build\b'
-    device_replacement: '$1'
-    brand_replacement: 'Amazon'
-    model_replacement: '$1'
-  - regex: '; ?(Kindle) Build\b'
-    device_replacement: 'Kindle'
-    brand_replacement: 'Amazon'
-    model_replacement: 'Kindle'
-  - regex: '; ?(Silk)/(\d+)\.(\d+)(?:\.([0-9\-]+))? Build\b'
-    device_replacement: 'Kindle Fire'
-    brand_replacement: 'Amazon'
-    model_replacement: 'Kindle Fire$2'
-  - regex: ' (Kindle)/(\d+\.\d+)'
-    device_replacement: 'Kindle'
-    brand_replacement: 'Amazon'
-    model_replacement: '$1 $2'
-  - regex: ' (Silk|Kindle)/(\d+)\.'
-    device_replacement: 'Kindle'
-    brand_replacement: 'Amazon'
-    model_replacement: 'Kindle'
-
-  #########
-  # Devices from chinese manufacturer(s)
-  # @note: identified by x-wap-profile http://218.249.47.94/Xianghe/.*
-  #########
-  - regex: '(sprd)\-([^/]+)/'
-    device_replacement: '$1 $2'
-    brand_replacement: '$1'
-    model_replacement: '$2'
-  # @ref: http://eshinechina.en.alibaba.com/
-  - regex: '; *(H\d{2}00\+?) Build'
-    device_replacement: '$1'
-    brand_replacement: 'Hero'
-    model_replacement: '$1'
-  - regex: '; *(iphone|iPhone5) Build/'
-    device_replacement: 'Xianghe $1'
-    brand_replacement: 'Xianghe'
-    model_replacement: '$1'
-  - regex: '; *(e\d{4}[a-z]?_?v\d+|v89_[^;/]+)[^;/]+ Build/'
-    device_replacement: 'Xianghe $1'
-    brand_replacement: 'Xianghe'
-    model_replacement: '$1'
-
-  #########
-  # Cellular
-  # @ref:
-  # @note: Operator branded devices
-  #########
-  - regex: '\bUSCC[_\-]?([^ ;/\)]+)'
-    device_replacement: '$1'
-    brand_replacement: 'Cellular'
-    model_replacement: '$1'
-
-  ######################################################################
-  # Windows Phone Parsers
-  ######################################################################
-
-  #########
-  # Alcatel Windows Phones
-  #########
-  - regex: 'Windows Phone [^;]+; .*?IEMobile/[^;\)]+[;\)] ?(?:ARM; ?Touch; ?|Touch; ?)?(?:ALCATEL)[^;]*; *([^;,\)]+)'
-    device_replacement: 'Alcatel $1'
-    brand_replacement: 'Alcatel'
-    model_replacement: '$1'
-
-  #########
-  # Asus Windows Phones
-  #########
-  #~ - regex: 'Windows Phone [^;]+; .*?IEMobile/[^;\)]+[;\)] ?(?:ARM; ?Touch; ?|Touch; ?|WpsLondonTest; ?)?(?:ASUS|Asus)[^;]*; *([^;,\)]+)'
-  - regex: 'Windows Phone [^;]+; .*?IEMobile/[^;\)]+[;\)] ?(?:ARM; ?Touch; ?|Touch; ?|WpsLondonTest; ?)?(?:ASUS|Asus)[^;]*; *([^;,\)]+)'
-    device_replacement: 'Asus $1'
-    brand_replacement: 'Asus'
-    model_replacement: '$1'
-
-  #########
-  # Dell Windows Phones
-  #########
-  - regex: 'Windows Phone [^;]+; .*?IEMobile/[^;\)]+[;\)] ?(?:ARM; ?Touch; ?|Touch; ?)?(?:DELL|Dell)[^;]*; *([^;,\)]+)'
-    device_replacement: 'Dell $1'
-    brand_replacement: 'Dell'
-    model_replacement: '$1'
-
-  #########
-  # HTC Windows Phones
-  #########
-  - regex: 'Windows Phone [^;]+; .*?IEMobile/[^;\)]+[;\)] ?(?:ARM; ?Touch; ?|Touch; ?|WpsLondonTest; ?)?(?:HTC|Htc|HTC_blocked[^;]*)[^;]*; *(?:HTC)?([^;,\)]+)'
-    device_replacement: 'HTC $1'
-    brand_replacement: 'HTC'
-    model_replacement: '$1'
-
-  #########
-  # Huawei Windows Phones
-  #########
-  - regex: 'Windows Phone [^;]+; .*?IEMobile/[^;\)]+[;\)] ?(?:ARM; ?Touch; ?|Touch; ?)?(?:HUAWEI)[^;]*; *(?:HUAWEI )?([^;,\)]+)'
-    device_replacement: 'Huawei $1'
-    brand_replacement: 'Huawei'
-    model_replacement: '$1'
-
-  #########
-  # LG Windows Phones
-  #########
-  - regex: 'Windows Phone [^;]+; .*?IEMobile/[^;\)]+[;\)] ?(?:ARM; ?Touch; ?|Touch; ?)?(?:LG|Lg)[^;]*; *(?:LG[ \-])?([^;,\)]+)'
-    device_replacement: 'LG $1'
-    brand_replacement: 'LG'
-    model_replacement: '$1'
-
-  #########
-  # Noka Windows Phones
-  #########
-  - regex: 'Windows Phone [^;]+; .*?IEMobile/[^;\)]+[;\)] ?(?:ARM; ?Touch; ?|Touch; ?)?(?:rv:11; )?(?:NOKIA|Nokia)[^;]*; *(?:NOKIA ?|Nokia ?|LUMIA ?|[Ll]umia ?)*(\d{3,}[^;\)]*)'
-    device_replacement: 'Lumia $1'
-    brand_replacement: 'Nokia'
-    model_replacement: 'Lumia $1'
-  - regex: 'Windows Phone [^;]+; .*?IEMobile/[^;\)]+[;\)] ?(?:ARM; ?Touch; ?|Touch; ?)?(?:NOKIA|Nokia)[^;]*; *(RM-\d{3,})'
-    device_replacement: 'Nokia $1'
-    brand_replacement: 'Nokia'
-    model_replacement: '$1'
-  - regex: '(?:Windows Phone [^;]+; .*?IEMobile/[^;\)]+[;\)]|WPDesktop;) ?(?:ARM; ?Touch; ?|Touch; ?)?(?:NOKIA|Nokia)[^;]*; *(?:NOKIA ?|Nokia ?|LUMIA ?|[Ll]umia ?)*([^;\)]+)'
-    device_replacement: 'Nokia $1'
-    brand_replacement: 'Nokia'
-    model_replacement: '$1'
-
-  #########
-  # Microsoft Windows Phones
-  #########
-  - regex: 'Windows Phone [^;]+; .*?IEMobile/[^;\)]+[;\)] ?(?:ARM; ?Touch; ?|Touch; ?)?(?:Microsoft(?: Corporation)?)[^;]*; *([^;,\)]+)'
-    device_replacement: 'Microsoft $1'
-    brand_replacement: 'Microsoft'
-    model_replacement: '$1'
-
-  #########
-  # Samsung Windows Phones
-  #########
-  - regex: 'Windows Phone [^;]+; .*?IEMobile/[^;\)]+[;\)] ?(?:ARM; ?Touch; ?|Touch; ?|WpsLondonTest; ?)?(?:SAMSUNG)[^;]*; *(?:SAMSUNG )?([^;,\.\)]+)'
-    device_replacement: 'Samsung $1'
-    brand_replacement: 'Samsung'
-    model_replacement: '$1'
-
-  #########
-  # Toshiba Windows Phones
-  #########
-  - regex: 'Windows Phone [^;]+; .*?IEMobile/[^;\)]+[;\)] ?(?:ARM; ?Touch; ?|Touch; ?|WpsLondonTest; ?)?(?:TOSHIBA|FujitsuToshibaMobileCommun)[^;]*; *([^;,\)]+)'
-    device_replacement: 'Toshiba $1'
-    brand_replacement: 'Toshiba'
-    model_replacement: '$1'
-
-  #########
-  # Generic Windows Phones
-  #########
-  - regex: 'Windows Phone [^;]+; .*?IEMobile/[^;\)]+[;\)] ?(?:ARM; ?Touch; ?|Touch; ?|WpsLondonTest; ?)?([^;]+); *([^;,\)]+)'
-    device_replacement: '$1 $2'
-    brand_replacement: '$1'
-    model_replacement: '$2'
-
-  ######################################################################
-  # Other Devices Parser
-  ######################################################################
-
-  #########
-  # Samsung Bada Phones
-  #########
-  - regex: '(?:^|; )SAMSUNG\-([A-Za-z0-9\-]+).* Bada/'
-    device_replacement: 'Samsung $1'
-    brand_replacement: 'Samsung'
-    model_replacement: '$1'
-
-  #########
-  # Firefox OS
-  #########
-  - regex: '\(Mobile; ALCATEL ?(One|ONE) ?(Touch|TOUCH) ?([^;/]+)(?:/[^;]+)?; rv:[^\)]+\) Gecko/[^\/]+ Firefox/'
-    device_replacement: 'Alcatel $1 $2 $3'
-    brand_replacement: 'Alcatel'
-    model_replacement: 'One Touch $3'
-  - regex: '\(Mobile; (?:ZTE([^;]+)|(OpenC)); rv:[^\)]+\) Gecko/[^\/]+ Firefox/'
-    device_replacement: 'ZTE $1$2'
-    brand_replacement: 'ZTE'
-    model_replacement: '$1$2'
-
-  ##########
-  # NOKIA
-  # @note: NokiaN8-00 comes before iphone. Sometimes spoofs iphone
-  ##########
-  - regex: 'Nokia(N[0-9]+)([A-z_\-][A-z0-9_\-]*)'
-    device_replacement: 'Nokia $1'
-    brand_replacement: 'Nokia'
-    model_replacement: '$1$2'
-  - regex: '(?:NOKIA|Nokia)(?:\-| *)(?:([A-Za-z0-9]+)\-[0-9a-f]{32}|([A-Za-z0-9\-]+)(?:UCBrowser)|([A-Za-z0-9\-]+))'
-    device_replacement: 'Nokia $1$2$3'
-    brand_replacement: 'Nokia'
-    model_replacement: '$1$2$3'
-  - regex: 'Lumia ([A-Za-z0-9\-]+)'
-    device_replacement: 'Lumia $1'
-    brand_replacement: 'Nokia'
-    model_replacement: 'Lumia $1'
-  # UCWEB Browser on Symbian
-  - regex: '\(Symbian; U; S60 V5; [A-z]{2}\-[A-z]{2}; (SonyEricsson|Samsung|Nokia|LG)([^;/]+)\)'
-    device_replacement: '$1 $2'
-    brand_replacement: '$1'
-    model_replacement: '$2'
-  # Nokia Symbian
-  - regex: '\(Symbian(?:/3)?; U; ([^;]+);'
-    device_replacement: 'Nokia $1'
-    brand_replacement: 'Nokia'
-    model_replacement: '$1'
-
-  ##########
-  # BlackBerry
-  # @ref: http://www.useragentstring.com/pages/BlackBerry/
-  ##########
-  - regex: 'BB10; ([A-Za-z0-9\- ]+)\)'
-    device_replacement: 'BlackBerry $1'
-    brand_replacement: 'BlackBerry'
-    model_replacement: '$1'
-  - regex: 'Play[Bb]ook.+RIM Tablet OS'
-    device_replacement: 'BlackBerry Playbook'
-    brand_replacement: 'BlackBerry'
-    model_replacement: 'Playbook'
-  - regex: 'Black[Bb]erry ([0-9]+);'
-    device_replacement: 'BlackBerry $1'
-    brand_replacement: 'BlackBerry'
-    model_replacement: '$1'
-  - regex: 'Black[Bb]erry([0-9]+)'
-    device_replacement: 'BlackBerry $1'
-    brand_replacement: 'BlackBerry'
-    model_replacement: '$1'
-  - regex: 'Black[Bb]erry;'
-    device_replacement: 'BlackBerry'
-    brand_replacement: 'BlackBerry'
-
-  ##########
-  # PALM / HP
-  # @note: some palm devices must come before iphone. sometimes spoofs iphone in ua
-  ##########
-  - regex: '(Pre|Pixi)/\d+\.\d+'
-    device_replacement: 'Palm $1'
-    brand_replacement: 'Palm'
-    model_replacement: '$1'
-  - regex: 'Palm([0-9]+)'
-    device_replacement: 'Palm $1'
-    brand_replacement: 'Palm'
-    model_replacement: '$1'
-  - regex: 'Treo([A-Za-z0-9]+)'
-    device_replacement: 'Palm Treo $1'
-    brand_replacement: 'Palm'
-    model_replacement: 'Treo $1'
-  - regex: 'webOS.*(P160U(?:NA)?)/(\d+).(\d+)'
-    device_replacement: 'HP Veer'
-    brand_replacement: 'HP'
-    model_replacement: 'Veer'
-  - regex: '(Touch[Pp]ad)/\d+\.\d+'
-    device_replacement: 'HP TouchPad'
-    brand_replacement: 'HP'
-    model_replacement: 'TouchPad'
-  - regex: 'HPiPAQ([A-Za-z0-9]+)/\d+.\d+'
-    device_replacement: 'HP iPAQ $1'
-    brand_replacement: 'HP'
-    model_replacement: 'iPAQ $1'
-  - regex: 'PDA; (PalmOS)/sony/model ([a-z]+)/Revision'
-    device_replacement: '$1'
-    brand_replacement: 'Sony'
-    model_replacement: '$1 $2'
-
-  ##########
-  # AppleTV
-  # No built in browser that I can tell
-  # Stack Overflow indicated iTunes-AppleTV/4.1 as a known UA for app available and I'm seeing it in live traffic
-  ##########
-  - regex: '(Apple\s?TV)'
-    device_replacement: 'AppleTV'
-    brand_replacement: 'Apple'
-    model_replacement: 'AppleTV'
-
-  #########
-  # Tesla Model S
-  #########
-  - regex: '(QtCarBrowser)'
-    device_replacement: 'Tesla Model S'
-    brand_replacement: 'Tesla'
-    model_replacement: 'Model S'
-
-  ##########
-  # iSTUFF
-  # @note: complete but probably catches spoofs
-  #   ipad and ipod must be parsed before iphone
-  #   cannot determine specific device type from ua string. (3g, 3gs, 4, etc)
-  ##########
-  # @note: on some ua the device can be identified e.g. iPhone5,1
-  - regex: '(iPhone|iPad|iPod)(\d+,\d+)'
-    device_replacement: '$1'
-    brand_replacement: 'Apple'
-    model_replacement: '$1$2'
-  # @note: iPad needs to be before iPhone
-  - regex: '(iPad)(?:;| Simulator;)'
-    device_replacement: '$1'
-    brand_replacement: 'Apple'
-    model_replacement: '$1'
-  - regex: '(iPod)(?:;| touch;| Simulator;)'
-    device_replacement: '$1'
-    brand_replacement: 'Apple'
-    model_replacement: '$1'
-  - regex: '(iPhone)(?:;| Simulator;)'
-    device_replacement: '$1'
-    brand_replacement: 'Apple'
-    model_replacement: '$1'
-  # @note: desktop applications show device info
-  - regex: 'CFNetwork/.* Darwin/\d.*\(((?:Mac|iMac|PowerMac|PowerBook)[^\d]*)(\d+)(?:,|%2C)(\d+)'
-    device_replacement: '$1$2,$3'
-    brand_replacement: 'Apple'
-    model_replacement: '$1$2,$3'
-  # @note: newer desktop applications don't show device info
-  # This is here so as to not have them recorded as iOS-Device
-  - regex: 'CFNetwork/.* Darwin/\d+\.\d+\.\d+ \(x86_64\)'
-    device_replacement: 'Mac'
-    brand_replacement: 'Apple'
-    model_replacement: 'Mac'
-  # @note: iOS applications do not show device info
-  - regex: 'CFNetwork/.* Darwin/\d'
-    device_replacement: 'iOS-Device'
-    brand_replacement: 'Apple'
-    model_replacement: 'iOS-Device'
-
-  ##########
-  # Acer
-  ##########
-  - regex: 'acer_([A-Za-z0-9]+)_'
-    device_replacement: 'Acer $1'
-    brand_replacement: 'Acer'
-    model_replacement: '$1'
-
-  ##########
-  # Alcatel
-  ##########
-  - regex: '(?:ALCATEL|Alcatel)-([A-Za-z0-9\-]+)'
-    device_replacement: 'Alcatel $1'
-    brand_replacement: 'Alcatel'
-    model_replacement: '$1'
-
-  ##########
-  # Amoi
-  ##########
-  - regex: '(?:Amoi|AMOI)\-([A-Za-z0-9]+)'
-    device_replacement: 'Amoi $1'
-    brand_replacement: 'Amoi'
-    model_replacement: '$1'
-
-  ##########
-  # Asus
-  ##########
-  - regex: '(?:; |\/|^)((?:Transformer (?:Pad|Prime) |Transformer |PadFone[ _]?)[A-Za-z0-9]*)'
-    device_replacement: 'Asus $1'
-    brand_replacement: 'Asus'
-    model_replacement: '$1'
-  - regex: '(?:asus.*?ASUS|Asus|ASUS|asus)[\- ;]*((?:Transformer (?:Pad|Prime) |Transformer |Padfone |Nexus[ _])?[A-Za-z0-9]+)'
-    device_replacement: 'Asus $1'
-    brand_replacement: 'Asus'
-    model_replacement: '$1'
-
-
-  ##########
-  # Bird
-  ##########
-  - regex: '\bBIRD[ \-\.]([A-Za-z0-9]+)'
-    device_replacement: 'Bird $1'
-    brand_replacement: 'Bird'
-    model_replacement: '$1'
-
-  ##########
-  # Dell
-  ##########
-  - regex: '\bDell ([A-Za-z0-9]+)'
-    device_replacement: 'Dell $1'
-    brand_replacement: 'Dell'
-    model_replacement: '$1'
-
-  ##########
-  # DoCoMo
-  ##########
-  - regex: 'DoCoMo/2\.0 ([A-Za-z0-9]+)'
-    device_replacement: 'DoCoMo $1'
-    brand_replacement: 'DoCoMo'
-    model_replacement: '$1'
-  - regex: '([A-Za-z0-9]+)_W;FOMA'
-    device_replacement: 'DoCoMo $1'
-    brand_replacement: 'DoCoMo'
-    model_replacement: '$1'
-  - regex: '([A-Za-z0-9]+);FOMA'
-    device_replacement: 'DoCoMo $1'
-    brand_replacement: 'DoCoMo'
-    model_replacement: '$1'
-
-  ##########
-  # htc
-  ##########
-  - regex: '\b(?:HTC/|HTC/[a-z0-9]+/)?HTC[ _\-;]? *(.*?)(?:-?Mozilla|fingerPrint|[;/\(\)]|$)'
-    device_replacement: 'HTC $1'
-    brand_replacement: 'HTC'
-    model_replacement: '$1'
-
-  ##########
-  # Huawei
-  ##########
-  - regex: 'Huawei([A-Za-z0-9]+)'
-    device_replacement: 'Huawei $1'
-    brand_replacement: 'Huawei'
-    model_replacement: '$1'
-  - regex: 'HUAWEI-([A-Za-z0-9]+)'
-    device_replacement: 'Huawei $1'
-    brand_replacement: 'Huawei'
-    model_replacement: '$1'
-  - regex: 'vodafone([A-Za-z0-9]+)'
-    device_replacement: 'Huawei Vodafone $1'
-    brand_replacement: 'Huawei'
-    model_replacement: 'Vodafone $1'
-
-  ##########
-  # i-mate
-  ##########
-  - regex: 'i\-mate ([A-Za-z0-9]+)'
-    device_replacement: 'i-mate $1'
-    brand_replacement: 'i-mate'
-    model_replacement: '$1'
-
-  ##########
-  # kyocera
-  ##########
-  - regex: 'Kyocera\-([A-Za-z0-9]+)'
-    device_replacement: 'Kyocera $1'
-    brand_replacement: 'Kyocera'
-    model_replacement: '$1'
-  - regex: 'KWC\-([A-Za-z0-9]+)'
-    device_replacement: 'Kyocera $1'
-    brand_replacement: 'Kyocera'
-    model_replacement: '$1'
-
-  ##########
-  # lenovo
-  ##########
-  - regex: 'Lenovo[_\-]([A-Za-z0-9]+)'
-    device_replacement: 'Lenovo $1'
-    brand_replacement: 'Lenovo'
-    model_replacement: '$1'
-
-  ##########
-  # HbbTV (European and Australian standard)
-  # written before the LG regexes, as LG is making HbbTV too
-  ##########
-  - regex: '(HbbTV)/[0-9]+\.[0-9]+\.[0-9]+ \([^;]*; *(LG)E *; *([^;]*) *;[^;]*;[^;]*;\)'
-    device_replacement: '$1'
-    brand_replacement: '$2'
-    model_replacement: '$3'
-  - regex: '(HbbTV)/1\.1\.1.*CE-HTML/1\.\d;(Vendor/)*(THOM[^;]*?)[;\s](?:.*SW-Version/.*)*(LF[^;]+);?'
-    device_replacement: '$1'
-    brand_replacement: 'Thomson'
-    model_replacement: '$4'
-  - regex: '(HbbTV)(?:/1\.1\.1)?(?: ?\(;;;;;\))?; *CE-HTML(?:/1\.\d)?; *([^ ]+) ([^;]+);'
-    device_replacement: '$1'
-    brand_replacement: '$2'
-    model_replacement: '$3'
-  - regex: '(HbbTV)/1\.1\.1 \(;;;;;\) Maple_2011'
-    device_replacement: '$1'
-    brand_replacement: 'Samsung'
-  - regex: '(HbbTV)/[0-9]+\.[0-9]+\.[0-9]+ \([^;]*; *(?:CUS:([^;]*)|([^;]+)) *; *([^;]*) *;.*;'
-    device_replacement: '$1'
-    brand_replacement: '$2$3'
-    model_replacement: '$4'
-  - regex: '(HbbTV)/[0-9]+\.[0-9]+\.[0-9]+'
-    device_replacement: '$1'
-
-  ##########
-  # LGE NetCast TV
-  ##########
-  - regex: 'LGE; (?:Media\/)?([^;]*);[^;]*;[^;]*;?\); "?LG NetCast(\.TV|\.Media|)-\d+'
-    device_replacement: 'NetCast$2'
-    brand_replacement: 'LG'
-    model_replacement: '$1'
-
-  ##########
-  # InettvBrowser
-  ##########
-  - regex: 'InettvBrowser/[0-9]+\.[0-9A-Z]+ \([^;]*;(Sony)([^;]*);[^;]*;[^\)]*\)'
-    device_replacement: 'Inettv'
-    brand_replacement: '$1'
-    model_replacement: '$2'
-  - regex: 'InettvBrowser/[0-9]+\.[0-9A-Z]+ \([^;]*;([^;]*);[^;]*;[^\)]*\)'
-    device_replacement: 'Inettv'
-    brand_replacement: 'Generic_Inettv'
-    model_replacement: '$1'
-  - regex: '(?:InettvBrowser|TSBNetTV|NETTV|HBBTV)'
-    device_replacement: 'Inettv'
-    brand_replacement: 'Generic_Inettv'
-
-  ##########
-  # lg
-  ##########
-  # LG Symbian Phones
-  - regex: 'Series60/\d\.\d (LG)[\-]?([A-Za-z0-9 \-]+)'
-    device_replacement: '$1 $2'
-    brand_replacement: '$1'
-    model_replacement: '$2'
-  # other LG phones
-  - regex: '\b(?:LGE[ \-]LG\-(?:AX)?|LGE |LGE?-LG|LGE?[ \-]|LG[ /\-]|lg[\-])([A-Za-z0-9]+)\b'
-    device_replacement: 'LG $1'
-    brand_replacement: 'LG'
-    model_replacement: '$1'
-  - regex: '(?:^LG[\-]?|^LGE[\-/]?)([A-Za-z]+[0-9]+[A-Za-z]*)'
-    device_replacement: 'LG $1'
-    brand_replacement: 'LG'
-    model_replacement: '$1'
-  - regex: '^LG([0-9]+[A-Za-z]*)'
-    device_replacement: 'LG $1'
-    brand_replacement: 'LG'
-    model_replacement: '$1'
-
-  ##########
-  # microsoft
-  ##########
-  - regex: '(KIN\.[^ ]+) (\d+)\.(\d+)'
-    device_replacement: 'Microsoft $1'
-    brand_replacement: 'Microsoft'
-    model_replacement: '$1'
-  - regex: '(?:MSIE|XBMC).*\b(Xbox)\b'
-    device_replacement: '$1'
-    brand_replacement: 'Microsoft'
-    model_replacement: '$1'
-  - regex: '; ARM; Trident/6\.0; Touch[\);]'
-    device_replacement: 'Microsoft Surface RT'
-    brand_replacement: 'Microsoft'
-    model_replacement: 'Surface RT'
-
-  ##########
-  # motorola
-  ##########
-  - regex: 'Motorola\-([A-Za-z0-9]+)'
-    device_replacement: 'Motorola $1'
-    brand_replacement: 'Motorola'
-    model_replacement: '$1'
-  - regex: 'MOTO\-([A-Za-z0-9]+)'
-    device_replacement: 'Motorola $1'
-    brand_replacement: 'Motorola'
-    model_replacement: '$1'
-  - regex: 'MOT\-([A-z0-9][A-z0-9\-]*)'
-    device_replacement: 'Motorola $1'
-    brand_replacement: 'Motorola'
-    model_replacement: '$1'
-
-  ##########
-  # nintendo
-  ##########
-  - regex: 'Nintendo WiiU'
-    device_replacement: 'Nintendo Wii U'
-    brand_replacement: 'Nintendo'
-    model_replacement: 'Wii U'
-  - regex: 'Nintendo (DS|3DS|DSi|Wii);'
-    device_replacement: 'Nintendo $1'
-    brand_replacement: 'Nintendo'
-    model_replacement: '$1'
-
-  ##########
-  # pantech
-  ##########
-  - regex: '(?:Pantech|PANTECH)[ _-]?([A-Za-z0-9\-]+)'
-    device_replacement: 'Pantech $1'
-    brand_replacement: 'Pantech'
-    model_replacement: '$1'
-
-  ##########
-  # philips
-  ##########
-  - regex: 'Philips([A-Za-z0-9]+)'
-    device_replacement: 'Philips $1'
-    brand_replacement: 'Philips'
-    model_replacement: '$1'
-  - regex: 'Philips ([A-Za-z0-9]+)'
-    device_replacement: 'Philips $1'
-    brand_replacement: 'Philips'
-    model_replacement: '$1'
-
-  ##########
-  # Samsung
-  ##########
-  # Samsung Smart-TV
-  - regex: '(SMART-TV); .* Tizen '
-    device_replacement: 'Samsung $1'
-    brand_replacement: 'Samsung'
-    model_replacement: '$1'
-  # Samsung Symbian Devices
-  - regex: 'SymbianOS/9\.\d.* Samsung[/\-]([A-Za-z0-9 \-]+)'
-    device_replacement: 'Samsung $1'
-    brand_replacement: 'Samsung'
-    model_replacement: '$1'
-  - regex: '(Samsung)(SGH)(i[0-9]+)'
-    device_replacement: '$1 $2$3'
-    brand_replacement: '$1'
-    model_replacement: '$2-$3'
-  - regex: 'SAMSUNG-ANDROID-MMS/([^;/]+)'
-    device_replacement: '$1'
-    brand_replacement: 'Samsung'
-    model_replacement: '$1'
-  # Other Samsung
-  #- regex: 'SAMSUNG(?:; |-)([A-Za-z0-9\-]+)'
-  - regex: 'SAMSUNG(?:; |[ -/])([A-Za-z0-9\-]+)'
-    regex_flag: 'i'
-    device_replacement: 'Samsung $1'
-    brand_replacement: 'Samsung'
-    model_replacement: '$1'
-
-  ##########
-  # Sega
-  ##########
-  - regex: '(Dreamcast)'
-    device_replacement: 'Sega $1'
-    brand_replacement: 'Sega'
-    model_replacement: '$1'
-
-  ##########
-  # Siemens mobile
-  ##########
-  - regex: '^SIE-([A-Za-z0-9]+)'
-    device_replacement: 'Siemens $1'
-    brand_replacement: 'Siemens'
-    model_replacement: '$1'
-
-  ##########
-  # Softbank
-  ##########
-  - regex: 'Softbank/[12]\.0/([A-Za-z0-9]+)'
-    device_replacement: 'Softbank $1'
-    brand_replacement: 'Softbank'
-    model_replacement: '$1'
-
-  ##########
-  # SonyEricsson
-  ##########
-  - regex: 'SonyEricsson ?([A-Za-z0-9\-]+)'
-    device_replacement: 'Ericsson $1'
-    brand_replacement: 'SonyEricsson'
-    model_replacement: '$1'
-
-  ##########
-  # Sony
-  ##########
-  - regex: 'Android [^;]+; ([^ ]+) (Sony)/'
-    device_replacement: '$2 $1'
-    brand_replacement: '$2'
-    model_replacement: '$1'
-  - regex: '(Sony)(?:BDP\/|\/)?([^ /;\)]+)[ /;\)]'
-    device_replacement: '$1 $2'
-    brand_replacement: '$1'
-    model_replacement: '$2'
-
-  #########
-  # Puffin Browser Device detect
-  # A=Android, I=iOS, P=Phone, T=Tablet
-  # AT=Android+Tablet
-  #########
-  - regex: 'Puffin/[\d\.]+IT'
-    device_replacement: 'iPad'
-    brand_replacement: 'Apple'
-    model_replacement: 'iPad'
-  - regex: 'Puffin/[\d\.]+IP'
-    device_replacement: 'iPhone'
-    brand_replacement: 'Apple'
-    model_replacement: 'iPhone'
-  - regex: 'Puffin/[\d\.]+AT'
-    device_replacement: 'Generic Tablet'
-    brand_replacement: 'Generic'
-    model_replacement: 'Tablet'
-  - regex: 'Puffin/[\d\.]+AP'
-    device_replacement: 'Generic Smartphone'
-    brand_replacement: 'Generic'
-    model_replacement: 'Smartphone'
-
-  #########
-  # Android General Device Matching (far from perfect)
-  #########
-  - regex: 'Android[\- ][\d]+\.[\d]+; [A-Za-z]{2}\-[A-Za-z]{0,2}; WOWMobile (.+) Build[/ ]'
-    brand_replacement: 'Generic_Android'
-    model_replacement: '$1'
-  - regex: 'Android[\- ][\d]+\.[\d]+\-update1; [A-Za-z]{2}\-[A-Za-z]{0,2} *; *(.+?) Build[/ ]'
-    brand_replacement: 'Generic_Android'
-    model_replacement: '$1'
-  - regex: 'Android[\- ][\d]+(?:\.[\d]+){1,2}; *[A-Za-z]{2}[_\-][A-Za-z]{0,2}\-? *; *(.+?) Build[/ ]'
-    brand_replacement: 'Generic_Android'
-    model_replacement: '$1'
-  - regex: 'Android[\- ][\d]+(?:\.[\d]+){1,2}; *[A-Za-z]{0,2}\- *; *(.+?) Build[/ ]'
-    brand_replacement: 'Generic_Android'
-    model_replacement: '$1'
-  # No build info at all - "Build" follows locale immediately
-  - regex: 'Android[\- ][\d]+(?:\.[\d]+){1,2}; *[a-z]{0,2}[_\-]?[A-Za-z]{0,2};? Build[/ ]'
-    device_replacement: 'Generic Smartphone'
-    brand_replacement: 'Generic'
-    model_replacement: 'Smartphone'
-  - regex: 'Android[\- ][\d]+(?:\.[\d]+){1,2}; *\-?[A-Za-z]{2}; *(.+?) Build[/ ]'
-    brand_replacement: 'Generic_Android'
-    model_replacement: '$1'
-  - regex: 'Android[\- ][\d]+(?:\.[\d]+){1,2}(?:;.*)?; *(.+?) Build[/ ]'
-    brand_replacement: 'Generic_Android'
-    model_replacement: '$1'
-
-  ##########
-  # Google TV
-  ##########
-  - regex: '(GoogleTV)'
-    brand_replacement: 'Generic_Inettv'
-    model_replacement: '$1'
-
-  ##########
-  # WebTV
-  ##########
-  - regex: '(WebTV)/\d+.\d+'
-    brand_replacement: 'Generic_Inettv'
-    model_replacement: '$1'
-  # Roku Digital-Video-Players https://www.roku.com/
-  - regex: '^(Roku)/DVP-\d+\.\d+'
-    brand_replacement: 'Generic_Inettv'
-    model_replacement: '$1'
-
-  ##########
-  # Generic Tablet
-  ##########
-  - regex: '(Android 3\.\d|Opera Tablet|Tablet; .+Firefox/|Android.*(?:Tab|Pad))'
-    regex_flag: 'i'
-    device_replacement: 'Generic Tablet'
-    brand_replacement: 'Generic'
-    model_replacement: 'Tablet'
-
-  ##########
-  # Generic Smart Phone
-  ##########
-  - regex: '(Symbian|\bS60(Version|V\d)|\bS60\b|\((Series 60|Windows Mobile|Palm OS|Bada); Opera Mini|Windows CE|Opera Mobi|BREW|Brew|Mobile; .+Firefox/|iPhone OS|Android|MobileSafari|Windows *Phone|\(webOS/|PalmOS)'
-    device_replacement: 'Generic Smartphone'
-    brand_replacement: 'Generic'
-    model_replacement: 'Smartphone'
-  - regex: '(hiptop|avantgo|plucker|xiino|blazer|elaine)'
-    regex_flag: 'i'
-    device_replacement: 'Generic Smartphone'
-    brand_replacement: 'Generic'
-    model_replacement: 'Smartphone'
-
-  ##########
-  # Spiders (this is hack...)
-  ##########
-  - regex: '(bot|zao|borg|DBot|oegp|silk|Xenu|zeal|^NING|CCBot|crawl|htdig|lycos|slurp|teoma|voila|yahoo|Sogou|CiBra|Nutch|^Java/|^JNLP/|Daumoa|Genieo|ichiro|larbin|pompos|Scrapy|snappy|speedy|spider|msnbot|msrbot|vortex|^vortex|crawler|favicon|indexer|Riddler|scooter|scraper|scrubby|WhatWeb|WinHTTP|bingbot|BingPreview|openbot|gigabot|furlbot|polybot|seekbot|^voyager|archiver|Icarus6j|mogimogi|Netvibes|blitzbot|altavista|charlotte|findlinks|Retreiver|TLSProber|WordPress|SeznamBot|ProoXiBot|wsr\-agent|Squrl Java|EtaoSpider|PaperLiBot|SputnikBot|A6\-Indexer|netresearch|searchsight|baiduspider|YisouSpider|ICC\-Crawler|http%20client|Python-urllib|dataparksearch|converacrawler|Screaming Frog|AppEngine-Google|YahooCacheSystem|fast\-webcrawler|Sogou Pic Spider|semanticdiscovery|Innovazion Crawler|facebookexternalhit|Google.*/\+/web/snippet|Google-HTTP-Java-Client|BlogBridge|IlTrovatore-Setaccio|InternetArchive|GomezAgent|WebThumbnail|heritrix|NewsGator|PagePeeker|Reaper|ZooShot|holmes|NL-Crawler|Pingdom|StatusCake|WhatsApp|masscan|Google Web Preview|Qwantify)'
-    regex_flag: 'i'
-    device_replacement: 'Spider'
-    brand_replacement: 'Spider'
-    model_replacement: 'Desktop'
-
-  ##########
-  # Generic Feature Phone
-  # take care to do case insensitive matching
-  ##########
-  - regex: '^(1207|3gso|4thp|501i|502i|503i|504i|505i|506i|6310|6590|770s|802s|a wa|acer|acs\-|airn|alav|asus|attw|au\-m|aur |aus |abac|acoo|aiko|alco|alca|amoi|anex|anny|anyw|aptu|arch|argo|bmobile|bell|bird|bw\-n|bw\-u|beck|benq|bilb|blac|c55/|cdm\-|chtm|capi|comp|cond|dall|dbte|dc\-s|dica|ds\-d|ds12|dait|devi|dmob|doco|dopo|dorado|el(?:38|39|48|49|50|55|58|68)|el[3456]\d{2}dual|erk0|esl8|ex300|ez40|ez60|ez70|ezos|ezze|elai|emul|eric|ezwa|fake|fly\-|fly_|g\-mo|g1 u|g560|gf\-5|grun|gene|go.w|good|grad|hcit|hd\-m|hd\-p|hd\-t|hei\-|hp i|hpip|hs\-c|htc |htc\-|htca|htcg)'
-    regex_flag: 'i'
-    device_replacement: 'Generic Feature Phone'
-    brand_replacement: 'Generic'
-    model_replacement: 'Feature Phone'
-  - regex: '^(htcp|htcs|htct|htc_|haie|hita|huaw|hutc|i\-20|i\-go|i\-ma|i\-mobile|i230|iac|iac\-|iac/|ig01|im1k|inno|iris|jata|kddi|kgt|kgt/|kpt |kwc\-|klon|lexi|lg g|lg\-a|lg\-b|lg\-c|lg\-d|lg\-f|lg\-g|lg\-k|lg\-l|lg\-m|lg\-o|lg\-p|lg\-s|lg\-t|lg\-u|lg\-w|lg/k|lg/l|lg/u|lg50|lg54|lge\-|lge/|leno|m1\-w|m3ga|m50/|maui|mc01|mc21|mcca|medi|meri|mio8|mioa|mo01|mo02|mode|modo|mot |mot\-|mt50|mtp1|mtv |mate|maxo|merc|mits|mobi|motv|mozz|n100|n101|n102|n202|n203|n300|n302|n500|n502|n505|n700|n701|n710|nec\-|nem\-|newg|neon)'
-    regex_flag: 'i'
-    device_replacement: 'Generic Feature Phone'
-    brand_replacement: 'Generic'
-    model_replacement: 'Feature Phone'
-  - regex: '^(netf|noki|nzph|o2 x|o2\-x|opwv|owg1|opti|oran|ot\-s|p800|pand|pg\-1|pg\-2|pg\-3|pg\-6|pg\-8|pg\-c|pg13|phil|pn\-2|pt\-g|palm|pana|pire|pock|pose|psio|qa\-a|qc\-2|qc\-3|qc\-5|qc\-7|qc07|qc12|qc21|qc32|qc60|qci\-|qwap|qtek|r380|r600|raks|rim9|rove|s55/|sage|sams|sc01|sch\-|scp\-|sdk/|se47|sec\-|sec0|sec1|semc|sgh\-|shar|sie\-|sk\-0|sl45|slid|smb3|smt5|sp01|sph\-|spv |spv\-|sy01|samm|sany|sava|scoo|send|siem|smar|smit|soft|sony|t\-mo|t218|t250|t600|t610|t618|tcl\-|tdg\-|telm|tim\-|ts70|tsm\-|tsm3|tsm5|tx\-9|tagt)'
-    regex_flag: 'i'
-    device_replacement: 'Generic Feature Phone'
-    brand_replacement: 'Generic'
-    model_replacement: 'Feature Phone'
-  - regex: '^(talk|teli|topl|tosh|up.b|upg1|utst|v400|v750|veri|vk\-v|vk40|vk50|vk52|vk53|vm40|vx98|virg|vertu|vite|voda|vulc|w3c |w3c\-|wapj|wapp|wapu|wapm|wig |wapi|wapr|wapv|wapy|wapa|waps|wapt|winc|winw|wonu|x700|xda2|xdag|yas\-|your|zte\-|zeto|aste|audi|avan|blaz|brew|brvw|bumb|ccwa|cell|cldc|cmd\-|dang|eml2|fetc|hipt|http|ibro|idea|ikom|ipaq|jbro|jemu|jigs|keji|kyoc|kyok|libw|m\-cr|midp|mmef|moto|mwbp|mywa|newt|nok6|o2im|pant|pdxg|play|pluc|port|prox|rozo|sama|seri|smal|symb|treo|upsi|vx52|vx53|vx60|vx61|vx70|vx80|vx81|vx83|vx85|wap\-|webc|whit|wmlb|xda\-|xda_)'
-    regex_flag: 'i'
-    device_replacement: 'Generic Feature Phone'
-    brand_replacement: 'Generic'
-    model_replacement: 'Feature Phone'
-  - regex: '^(Ice)$'
-    device_replacement: 'Generic Feature Phone'
-    brand_replacement: 'Generic'
-    model_replacement: 'Feature Phone'
-  - regex: '(wap[\-\ ]browser|maui|netfront|obigo|teleca|up\.browser|midp|Opera Mini)'
-    regex_flag: 'i'
-    device_replacement: 'Generic Feature Phone'
-    brand_replacement: 'Generic'
-    model_replacement: 'Feature Phone'
+  # ESRI Server products
+  - regex: '(GeoEvent Server) (\d+)(?:\.(\d+)(?:\.(\d+)|)|)'
+
+  # ESRI ArcGIS Desktop Products
+  - regex: '(ArcGIS Pro)(?: (\d+)\.(\d+)\.([^ ]+)|)'
+
+  - regex: 'ArcGIS Client Using WinInet'
+    family_replacement: 'ArcMap'
+
+  - regex: '(OperationsDashboard)-(?:Windows)-(\d+)\.(\d+)\.(\d+)'
+    family_replacement: 'Operations Dashboard for ArcGIS'
+
+  - regex: '(arcgisearth)/(\d+)\.(\d+)(?:\.(\d+)|)'
+    family_replacement: 'ArcGIS Earth'
+
+  - regex: 'com.esri.(earth).phone/(\d+)\.(\d+)(?:\.(\d+)|)'
+    family_replacement: 'ArcGIS Earth'
+
+  # ESRI ArcGIS Mobile Products
+  - regex: '(arcgis-explorer)/(\d+)\.(\d+)\.(\d+)'
+    family_replacement: 'Explorer for ArcGIS'
+
+  - regex: 'arcgis-(collector|aurora)/(\d+)\.(\d+)\.(\d+)'
+    family_replacement: 'Collector for ArcGIS'
+
+  - regex: '(arcgis-workforce)/(\d+)\.(\d+)\.(\d+)'
+    family_replacement: 'Workforce for ArcGIS'
+
+  - regex: '(Collector|Explorer|Workforce)-(?:Android|iOS)-(\d+)\.(\d+)(?:\.(\d+)|)'
+    family_replacement: '$1 for ArcGIS'
+
+  - regex: '(Explorer|Collector)/(\d+) CFNetwork'
+    family_replacement: '$1 for ArcGIS'
+
+  # ESRI ArcGIS Runtimes
+  - regex: 'ArcGISRuntime-(Android|iOS|NET|Qt)/(\d+)\.(\d+)(?:\.(\d+)|)'
+    family_replacement: 'ArcGIS Runtime SDK for $1'
+
+  - regex: 'ArcGIS\.?(iOS|Android|NET|Qt)(?:-|\.)(\d+)\.(\d+)(?:\.(\d+)|)'
+    family_replacement: 'ArcGIS Runtime SDK for $1'
+  
+  - regex: 'ArcGIS\.Runtime\.(Qt)\.(\d+)\.(\d+)(?:\.(\d+)|)'
+    family_replacement: 'ArcGIS Runtime SDK for $1'
+
+  # CFNetwork Podcast catcher Applications
+  - regex: '^(Luminary)[Stage]+/(\d+) CFNetwork'
+  - regex: '(ESPN)[%20| ]+Radio/(\d+)\.(\d+)\.(\d+) CFNetwork'
+  - regex: '(Antenna)/(\d+) CFNetwork'
+    family_replacement: 'AntennaPod'
+  - regex: '(TopPodcasts)Pro/(\d+) CFNetwork'
+  - regex: '(MusicDownloader)Lite/(\d+)\.(\d+)\.(\d+) CFNetwork'
+  - regex: '^(.*)-iPad\/(\d+)(?:\.(\d+)|)(?:\.(\d+)|)(?:\.(\d+)|) CFNetwork'
+  - regex: '^(.*)-iPhone/(\d+)(?:\.(\d+)|)(?:\.(\d+)|)(?:\.(\d+)|) CFNetwork'
+  - regex: '^(.*)/(\d+)(?:\.(\d+)|)(?:\.(\d+)|)(?:\.(\d+)|) CFNetwork'
+
+  # Podcast catchers
+  - regex: '^(Luminary)/(\d+)(?:\.(\d+)|)(?:\.(\d+)|)'
+  - regex: '(espn\.go)'
+    family_replacement: 'ESPN'
+  - regex: '(espnradio\.com)'
+    family_replacement: 'ESPN'
+  - regex: 'ESPN APP$'
+    family_replacement: 'ESPN'
+  - regex: '(audioboom\.com)'
+    family_replacement: 'AudioBoom'
+  - regex: ' (Rivo) RHYTHM'
+
+  # @note: iOS / OSX Applications
+  - regex: '(CFNetwork)(?:/(\d+)\.(\d+)(?:\.(\d+)|)|)'
+    family_replacement: 'CFNetwork'
+
+  # Pingdom
+  - regex: '(Pingdom\.com_bot_version_)(\d+)\.(\d+)'
+    family_replacement: 'PingdomBot'
+  # 'Mozilla/5.0 (Unknown; Linux x86_64) AppleWebKit/534.34 (KHTML, like Gecko) PingdomTMS/0.8.5 Safari/534.34'
+  - regex: '(PingdomTMS)/(\d+)\.(\d+)\.(\d+)'
+    family_replacement: 'PingdomBot'
+
+  # PTST / WebPageTest.org crawlers
+  - regex: ' (PTST)/(\d+)(?:\.(\d+)|)$'
+    family_replacement: 'WebPageTest.org bot'
+
+  # Datanyze.com spider
+  - regex: 'X11; (Datanyze); Linux'
+
+  # New Relic Pinger
+  - regex: '(NewRelicPinger)/(\d+)\.(\d+)'
+    family_replacement: 'NewRelicPingerBot'
+
+  # Tableau
+  - regex: '(Tableau)/(\d+)\.(\d+)'
+    family_replacement: 'Tableau'
+
+  # Adobe CreativeCloud
+  - regex: 'AppleWebKit/\d+\.\d+.* Safari.* (CreativeCloud)/(\d+)\.(\d+).(\d+)'
+    family_replacement: 'Adobe CreativeCloud'
+
+  # Salesforce
+  - regex: '(Salesforce)(?:.)\/(\d+)\.(\d?)'
+
+  #StatusCake
+  - regex: '(\(StatusCake\))'
+    family_replacement: 'StatusCakeBot'
+
+  # Facebook
+  - regex: '(facebookexternalhit)/(\d+)\.(\d+)'
+    family_replacement: 'FacebookBot'
+
+  # Google Plus
+  - regex: 'Google.*/\+/web/snippet'
+    family_replacement: 'GooglePlusBot'
+
+  # Gmail
+  - regex: 'via ggpht\.com GoogleImageProxy'
+    family_replacement: 'GmailImageProxy'
+
+  # Yahoo
+  - regex: 'YahooMailProxy; https://help\.yahoo\.com/kb/yahoo-mail-proxy-SLN28749\.html'
+    family_replacement: 'YahooMailProxy'
+
+  # Twitter
+  - regex: '(Twitterbot)/(\d+)\.(\d+)'
+    family_replacement: 'Twitterbot'
+
+  # Bots Pattern 'name/0.0.0'
+  - regex: '/((?:Ant-|)Nutch|[A-z]+[Bb]ot|[A-z]+[Ss]pider|Axtaris|fetchurl|Isara|ShopSalad|Tailsweep)[ \-](\d+)(?:\.(\d+)|)(?:\.(\d+)|)'
+  # Bots Pattern 'name/0.0.0'
+  - regex: '\b(008|Altresium|Argus|BaiduMobaider|BoardReader|DNSGroup|DataparkSearch|EDI|Goodzer|Grub|INGRID|Infohelfer|LinkedInBot|LOOQ|Nutch|OgScrper|PathDefender|Peew|PostPost|Steeler|Twitterbot|VSE|WebCrunch|WebZIP|Y!J-BR[A-Z]|YahooSeeker|envolk|sproose|wminer)/(\d+)(?:\.(\d+)|)(?:\.(\d+)|)'
+
+  # MSIECrawler
+  - regex: '(MSIE) (\d+)\.(\d+)([a-z]\d|[a-z]|);.* MSIECrawler'
+    family_replacement: 'MSIECrawler'
+
+  # DAVdroid
+  - regex: '(DAVdroid)/(\d+)\.(\d+)(?:\.(\d+)|)'
+
+  # Downloader ...
+  - regex: '(Google-HTTP-Java-Client|Apache-HttpClient|Go-http-client|scalaj-http|http%20client|Python-urllib|HttpMonitor|TLSProber|WinHTTP|JNLP|okhttp|aihttp|reqwest|axios|unirest-(?:java|python|ruby|nodejs|php|net))(?:[ /](\d+)(?:\.(\d+)|)(?:\.(\d+)|)|)'
+
+  # Pinterestbot
+  - regex: '(Pinterest(?:bot|))/(\d+)(?:\.(\d+)|)(?:\.(\d+)|)[;\s(]+\+https://www.pinterest.com/bot.html'
+    family_replacement: 'Pinterestbot'
+
+  # Bots
+  - regex: '(CSimpleSpider|Cityreview Robot|CrawlDaddy|CrawlFire|Finderbots|Index crawler|Job Roboter|KiwiStatus Spider|Lijit Crawler|QuerySeekerSpider|ScollSpider|Trends Crawler|USyd-NLP-Spider|SiteCat Webbot|BotName\/\$BotVersion|123metaspider-Bot|1470\.net crawler|50\.nu|8bo Crawler Bot|Aboundex|Accoona-[A-z]{1,30}-Agent|AdsBot-Google(?:-[a-z]{1,30}|)|altavista|AppEngine-Google|archive.{0,30}\.org_bot|archiver|Ask Jeeves|[Bb]ai[Dd]u[Ss]pider(?:-[A-Za-z]{1,30})(?:-[A-Za-z]{1,30}|)|bingbot|BingPreview|blitzbot|BlogBridge|Bloglovin|BoardReader Blog Indexer|BoardReader Favicon Fetcher|boitho.com-dc|BotSeer|BUbiNG|\b\w{0,30}favicon\w{0,30}\b|\bYeti(?:-[a-z]{1,30}|)|Catchpoint(?: bot|)|[Cc]harlotte|Checklinks|clumboot|Comodo HTTP\(S\) Crawler|Comodo-Webinspector-Crawler|ConveraCrawler|CRAWL-E|CrawlConvera|Daumoa(?:-feedfetcher|)|Feed Seeker Bot|Feedbin|findlinks|Flamingo_SearchEngine|FollowSite Bot|furlbot|Genieo|gigabot|GomezAgent|gonzo1|(?:[a-zA-Z]{1,30}-|)Googlebot(?:-[a-zA-Z]{1,30}|)|Google SketchUp|grub-client|gsa-crawler|heritrix|HiddenMarket|holmes|HooWWWer|htdig|ia_archiver|ICC-Crawler|Icarus6j|ichiro(?:/mobile|)|IconSurf|IlTrovatore(?:-Setaccio|)|InfuzApp|Innovazion Crawler|InternetArchive|IP2[a-z]{1,30}Bot|jbot\b|KaloogaBot|Kraken|Kurzor|larbin|LEIA|LesnikBot|Linguee Bot|LinkAider|LinkedInBot|Lite Bot|Llaut|lycos|Mail\.RU_Bot|masscan|masidani_bot|Mediapartners-Google|Microsoft .{0,30} Bot|mogimogi|mozDex|MJ12bot|msnbot(?:-media {0,2}|)|msrbot|Mtps Feed Aggregation System|netresearch|Netvibes|NewsGator[^/]{0,30}|^NING|Nutch[^/]{0,30}|Nymesis|ObjectsSearch|OgScrper|Orbiter|OOZBOT|PagePeeker|PagesInventory|PaxleFramework|Peeplo Screenshot Bot|PlantyNet_WebRobot|Pompos|Qwantify|Read%20Later|Reaper|RedCarpet|Retreiver|Riddler|Rival IQ|scooter|Scrapy|Scrubby|searchsight|seekbot|semanticdiscovery|SemrushBot|Simpy|SimplePie|SEOstats|SimpleRSS|SiteCon|Slackbot-LinkExpanding|Slack-ImgProxy|Slurp|snappy|Speedy Spider|Squrl Java|Stringer|TheUsefulbot|ThumbShotsBot|Thumbshots\.ru|Tiny Tiny RSS|Twitterbot|WhatsApp|URL2PNG|Vagabondo|VoilaBot|^vortex|Votay bot|^voyager|WASALive.Bot|Web-sniffer|WebThumb|WeSEE:[A-z]{1,30}|WhatWeb|WIRE|WordPress|Wotbox|www\.almaden\.ibm\.com|Xenu(?:.s|) Link Sleuth|Xerka [A-z]{1,30}Bot|yacy(?:bot|)|YahooSeeker|Yahoo! Slurp|Yandex\w{1,30}|YodaoBot(?:-[A-z]{1,30}|)|YottaaMonitor|Yowedo|^Zao|^Zao-Crawler|ZeBot_www\.ze\.bz|ZooShot|ZyBorg|ArcGIS Hub Indexer)(?:[ /]v?(\d+)(?:\.(\d+)(?:\.(\d+)|)|)|)'
+
+  # AWS S3 Clients
+  # must come before "Bots General matcher" to catch "boto"/"boto3" before "bot"
+  - regex: '\b(Boto3?|JetS3t|aws-(?:cli|sdk-(?:cpp|go|java|nodejs|ruby2?|dotnet-(?:\d{1,2}|core)))|s3fs)/(\d+)\.(\d+)(?:\.(\d+)|)'
+
+  # SAFE FME
+  - regex: '(FME)\/(\d+\.\d+)\.(\d+)\.(\d+)'
+
+  # QGIS
+  - regex: '(QGIS)\/(\d)\.?0?(\d{1,2})\.?0?(\d{1,2})'
+
+  # JOSM
+  - regex: '(JOSM)/(\d+)\.(\d+)'
+
+  # Tygron Platform
+  - regex: '(Tygron Platform) \((\d+)\.(\d+)\.(\d+(?:\.\d+| RC \d+\.\d+))'
+
+  # Facebook
+  # Must come before "Bots General matcher" to catch OrangeBotswana
+  # Facebook Messenger must go before Facebook
+  - regex: '\[(FBAN/MessengerForiOS|FB_IAB/MESSENGER);FBAV/(\d+)(?:\.(\d+)(?:\.(\d+)|)|)'
+    family_replacement: 'Facebook Messenger'
+  # Facebook
+  - regex: '\[FB.*;(FBAV)/(\d+)(?:\.(\d+)|)(?:\.(\d+)|)'
+    family_replacement: 'Facebook'
+  # Sometimes Facebook does not specify a version (FBAV)
+  - regex: '\[FB.*;'
+    family_replacement: 'Facebook'
+
+  # Bots General matcher 'name/0.0'
+  - regex: '(?:\/[A-Za-z0-9\.]+|) {0,5}([A-Za-z0-9 \-_\!\[\]:]{0,50}(?:[Aa]rchiver|[Ii]ndexer|[Ss]craper|[Bb]ot|[Ss]pider|[Cc]rawl[a-z]{0,50}))[/ ](\d+)(?:\.(\d+)(?:\.(\d+)|)|)'
+  # Bots containing bot(but not CUBOT)
+  - regex: '((?:[A-Za-z][A-Za-z0-9 -]{0,50}|)[^C][^Uu][Bb]ot)\b(?:(?:[ /]| v)(\d+)(?:\.(\d+)|)(?:\.(\d+)|)|)'
+  # Bots containing spider|scrape|Crawl
+  - regex: '((?:[A-z0-9]{1,50}|[A-z\-]{1,50} ?|)(?: the |)(?:[Ss][Pp][Ii][Dd][Ee][Rr]|[Ss]crape|[Cc][Rr][Aa][Ww][Ll])[A-z0-9]{0,50})(?:(?:[ /]| v)(\d+)(?:\.(\d+)|)(?:\.(\d+)|)|)'
+
+  # HbbTV standard defines what features the browser should understand.
+  # but it's like targeting "HTML5 browsers", effective browser support depends on the model
+  # See os_parsers if you want to target a specific TV
+  - regex: '(HbbTV)/(\d+)\.(\d+)\.(\d+) \('
+
+  # must go before Firefox to catch Chimera/SeaMonkey/Camino/Waterfox
+  - regex: '(Chimera|SeaMonkey|Camino|Waterfox)/(\d+)\.(\d+)\.?([ab]?\d+[a-z]*|)'
+
+  # must be before Firefox / Gecko to catch SailfishBrowser properly
+  - regex: '(SailfishBrowser)/(\d+)\.(\d+)(?:\.(\d+)|)'
+    family_replacement: 'Sailfish Browser'
+
+  # Social Networks (non-Facebook)
+  # Pinterest
+  - regex: '\[(Pinterest)/[^\]]+\]'
+  - regex: '(Pinterest)(?: for Android(?: Tablet|)|)/(\d+)(?:\.(\d+)|)(?:\.(\d+)|)'
+  # Instagram app
+  - regex: 'Mozilla.*Mobile.*(Instagram).(\d+)\.(\d+)\.(\d+)'
+  # Flipboard app
+  - regex: 'Mozilla.*Mobile.*(Flipboard).(\d+)\.(\d+)\.(\d+)'
+  # Flipboard-briefing app
+  - regex: 'Mozilla.*Mobile.*(Flipboard-Briefing).(\d+)\.(\d+)\.(\d+)'
+  # Onefootball app
+  - regex: 'Mozilla.*Mobile.*(Onefootball)\/Android.(\d+)\.(\d+)\.(\d+)'
+  # Snapchat
+  - regex: '(Snapchat)\/(\d+)\.(\d+)\.(\d+)\.(\d+)'
+  # Twitter
+  - regex: '(Twitter for (?:iPhone|iPad)|TwitterAndroid)(?:\/(\d+)\.(\d+)|)'
+    family_replacement: 'Twitter'
+
+  # aspiegel.com spider (owned by Huawei)
+  - regex: 'Mozilla.*Mobile.*AspiegelBot'
+    family_replacement: 'Spider'
+    brand_replacement: 'Spider'
+    model_replacement: 'Smartphone'
+
+  - regex: 'AspiegelBot'
+    family_replacement: 'Spider'
+    brand_replacement: 'Spider'
+    model_replacement: 'Desktop'
+
+  # Basilisk
+  - regex: '(Firefox)/(\d+)\.(\d+) Basilisk/(\d+)'
+    family_replacement: 'Basilisk'
+
+  # Pale Moon
+  - regex: '(PaleMoon)/(\d+)\.(\d+)(?:\.(\d+)|)'
+    family_replacement: 'Pale Moon'
+
+  # Firefox
+  - regex: '(Fennec)/(\d+)\.(\d+)\.?([ab]?\d+[a-z]*)'
+    family_replacement: 'Firefox Mobile'
+  - regex: '(Fennec)/(\d+)\.(\d+)(pre)'
+    family_replacement: 'Firefox Mobile'
+  - regex: '(Fennec)/(\d+)\.(\d+)'
+    family_replacement: 'Firefox Mobile'
+  - regex: '(?:Mobile|Tablet);.*(Firefox)/(\d+)\.(\d+)'
+    family_replacement: 'Firefox Mobile'
+  - regex: '(Namoroka|Shiretoko|Minefield)/(\d+)\.(\d+)\.(\d+(?:pre|))'
+    family_replacement: 'Firefox ($1)'
+  - regex: '(Firefox)/(\d+)\.(\d+)(a\d+[a-z]*)'
+    family_replacement: 'Firefox Alpha'
+  - regex: '(Firefox)/(\d+)\.(\d+)(b\d+[a-z]*)'
+    family_replacement: 'Firefox Beta'
+  - regex: '(Firefox)-(?:\d+\.\d+|)/(\d+)\.(\d+)(a\d+[a-z]*)'
+    family_replacement: 'Firefox Alpha'
+  - regex: '(Firefox)-(?:\d+\.\d+|)/(\d+)\.(\d+)(b\d+[a-z]*)'
+    family_replacement: 'Firefox Beta'
+  - regex: '(Namoroka|Shiretoko|Minefield)/(\d+)\.(\d+)([ab]\d+[a-z]*|)'
+    family_replacement: 'Firefox ($1)'
+  - regex: '(Firefox).*Tablet browser (\d+)\.(\d+)\.(\d+)'
+    family_replacement: 'MicroB'
+  - regex: '(MozillaDeveloperPreview)/(\d+)\.(\d+)([ab]\d+[a-z]*|)'
+  - regex: '(FxiOS)/(\d+)\.(\d+)(\.(\d+)|)(\.(\d+)|)'
+    family_replacement: 'Firefox iOS'
+
+  # e.g.: Flock/2.0b2
+  - regex: '(Flock)/(\d+)\.(\d+)(b\d+?)'
+
+  # RockMelt
+  - regex: '(RockMelt)/(\d+)\.(\d+)\.(\d+)'
+
+  # e.g.: Fennec/0.9pre
+  - regex: '(Navigator)/(\d+)\.(\d+)\.(\d+)'
+    family_replacement: 'Netscape'
+
+  - regex: '(Navigator)/(\d+)\.(\d+)([ab]\d+)'
+    family_replacement: 'Netscape'
+
+  - regex: '(Netscape6)/(\d+)\.(\d+)\.?([ab]?\d+|)'
+    family_replacement: 'Netscape'
+
+  - regex: '(MyIBrow)/(\d+)\.(\d+)'
+    family_replacement: 'My Internet Browser'
+
+  # UC Browser
+  # we need check it before opera. In other case case UC Browser detected look like Opera Mini
+  - regex: '(UC? ?Browser|UCWEB|U3)[ /]?(\d+)\.(\d+)\.(\d+)'
+    family_replacement: 'UC Browser'
+
+  # Opera will stop at 9.80 and hide the real version in the Version string.
+  # see: http://dev.opera.com/articles/view/opera-ua-string-changes/
+  - regex: '(Opera Tablet).*Version/(\d+)\.(\d+)(?:\.(\d+)|)'
+  - regex: '(Opera Mini)(?:/att|)/?(\d+|)(?:\.(\d+)|)(?:\.(\d+)|)'
+  - regex: '(Opera)/.+Opera Mobi.+Version/(\d+)\.(\d+)'
+    family_replacement: 'Opera Mobile'
+  - regex: '(Opera)/(\d+)\.(\d+).+Opera Mobi'
+    family_replacement: 'Opera Mobile'
+  - regex: 'Opera Mobi.+(Opera)(?:/|\s+)(\d+)\.(\d+)'
+    family_replacement: 'Opera Mobile'
+  - regex: 'Opera Mobi'
+    family_replacement: 'Opera Mobile'
+  - regex: '(Opera)/9.80.*Version/(\d+)\.(\d+)(?:\.(\d+)|)'
+
+  # Opera 14 for Android uses a WebKit render engine.
+  - regex: '(?:Mobile Safari).*(OPR)/(\d+)\.(\d+)\.(\d+)'
+    family_replacement: 'Opera Mobile'
+
+  # Opera >=15 for Desktop is similar to Chrome but includes an "OPR" Version string.
+  - regex: '(?:Chrome).*(OPR)/(\d+)\.(\d+)\.(\d+)'
+    family_replacement: 'Opera'
+
+  # Opera Coast
+  - regex: '(Coast)/(\d+).(\d+).(\d+)'
+    family_replacement: 'Opera Coast'
+
+  # Opera Mini for iOS (from version 8.0.0)
+  - regex: '(OPiOS)/(\d+).(\d+).(\d+)'
+    family_replacement: 'Opera Mini'
+
+  # Opera Neon
+  - regex: 'Chrome/.+( MMS)/(\d+).(\d+).(\d+)'
+    family_replacement: 'Opera Neon'
+
+  # Palm WebOS looks a lot like Safari.
+  - regex: '(hpw|web)OS/(\d+)\.(\d+)(?:\.(\d+)|)'
+    family_replacement: 'webOS Browser'
+
+  # LuaKit has no version info.
+  # http://luakit.org/projects/luakit/
+  - regex: '(luakit)'
+    family_replacement: 'LuaKit'
+
+  # Snowshoe
+  - regex: '(Snowshoe)/(\d+)\.(\d+).(\d+)'
+
+  # Lightning (for Thunderbird)
+  # http://www.mozilla.org/projects/calendar/lightning/
+  - regex: 'Gecko/\d+ (Lightning)/(\d+)\.(\d+)\.?((?:[ab]?\d+[a-z]*)|(?:\d*))'
+
+  # Swiftfox
+  - regex: '(Firefox)/(\d+)\.(\d+)\.(\d+(?:pre|)) \(Swiftfox\)'
+    family_replacement: 'Swiftfox'
+  - regex: '(Firefox)/(\d+)\.(\d+)([ab]\d+[a-z]*|) \(Swiftfox\)'
+    family_replacement: 'Swiftfox'
+
+  # Rekonq
+  - regex: '(rekonq)/(\d+)\.(\d+)(?:\.(\d+)|) Safari'
+    family_replacement: 'Rekonq'
+  - regex: 'rekonq'
+    family_replacement: 'Rekonq'
+
+  # Conkeror lowercase/uppercase
+  # http://conkeror.org/
+  - regex: '(conkeror|Conkeror)/(\d+)\.(\d+)(?:\.(\d+)|)'
+    family_replacement: 'Conkeror'
+
+  # catches lower case konqueror
+  - regex: '(konqueror)/(\d+)\.(\d+)\.(\d+)'
+    family_replacement: 'Konqueror'
+
+  - regex: '(WeTab)-Browser'
+
+  - regex: '(Comodo_Dragon)/(\d+)\.(\d+)\.(\d+)'
+    family_replacement: 'Comodo Dragon'
+
+  - regex: '(Symphony) (\d+).(\d+)'
+
+  - regex: 'PLAYSTATION 3.+WebKit'
+    family_replacement: 'NetFront NX'
+  - regex: 'PLAYSTATION 3'
+    family_replacement: 'NetFront'
+  - regex: '(PlayStation Portable)'
+    family_replacement: 'NetFront'
+  - regex: '(PlayStation Vita)'
+    family_replacement: 'NetFront NX'
+
+  - regex: 'AppleWebKit.+ (NX)/(\d+)\.(\d+)\.(\d+)'
+    family_replacement: 'NetFront NX'
+  - regex: '(Nintendo 3DS)'
+    family_replacement: 'NetFront NX'
+
+  # Amazon Silk, should go before Safari and Chrome Mobile
+  - regex: '(Silk)/(\d+)\.(\d+)(?:\.([0-9\-]+)|)'
+    family_replacement: 'Amazon Silk'
+
+  # @ref: http://www.puffinbrowser.com
+  - regex: '(Puffin)/(\d+)\.(\d+)(?:\.(\d+)|)'
+
+  # Edge Mobile
+  - regex: 'Windows Phone .*(Edge)/(\d+)\.(\d+)'
+    family_replacement: 'Edge Mobile'
+  - regex: '(EdgiOS|EdgA)/(\d+)\.(\d+)\.(\d+)\.(\d+)'
+    family_replacement: 'Edge Mobile'
+
+  # Samsung Internet (based on Chrome, but lacking some features)
+  - regex: '(SamsungBrowser)/(\d+)\.(\d+)'
+    family_replacement: 'Samsung Internet'
+
+  # Seznam.cz browser (based on WebKit)
+  - regex: '(SznProhlizec)/(\d+)\.(\d+)(?:\.(\d+)|)'
+    family_replacement: 'Seznam prohlížeč'
+
+  # Coc Coc browser, based on Chrome (used in Vietnam)
+  - regex: '(coc_coc_browser)/(\d+)\.(\d+)(?:\.(\d+)|)'
+    family_replacement: 'Coc Coc'
+
+  # Baidu Browsers (desktop spoofs chrome & IE, explorer is mobile)
+  - regex: '(baidubrowser)[/\s](\d+)(?:\.(\d+)|)(?:\.(\d+)|)'
+    family_replacement: 'Baidu Browser'
+  - regex: '(FlyFlow)/(\d+)\.(\d+)'
+    family_replacement: 'Baidu Explorer'
+
+  # MxBrowser is Maxthon. Must go before Mobile Chrome for Android
+  - regex: '(MxBrowser)/(\d+)\.(\d+)(?:\.(\d+)|)'
+    family_replacement: 'Maxthon'
+
+  # Crosswalk must go before Mobile Chrome for Android
+  - regex: '(Crosswalk)/(\d+)\.(\d+)\.(\d+)\.(\d+)'
+
+  # LINE https://line.me/en/
+  # Must go before Mobile Chrome for Android
+  - regex: '(Line)/(\d+)\.(\d+)\.(\d+)'
+    family_replacement: 'LINE'
+
+  # MiuiBrowser should got before Mobile Chrome for Android
+  - regex: '(MiuiBrowser)/(\d+)\.(\d+)\.(\d+)'
+    family_replacement: 'MiuiBrowser'
+
+  # Mint Browser should got before Mobile Chrome for Android
+  - regex: '(Mint Browser)/(\d+)\.(\d+)\.(\d+)'
+    family_replacement: 'Mint Browser'
+
+  # TopBuzz Android must go before Chrome Mobile WebView
+  - regex: '(TopBuzz)/(\d+).(\d+).(\d+)'
+    family_replacement: 'TopBuzz'
+
+  # Google Search App on Android, eg:
+  - regex: 'Mozilla.+Android.+(GSA)/(\d+)\.(\d+)\.(\d+)'
+    family_replacement: 'Google'
+
+  # QQ Browsers
+  - regex: '(MQQBrowser/Mini)(?:(\d+)(?:\.(\d+)|)(?:\.(\d+)|)|)'
+    family_replacement: 'QQ Browser Mini'
+  - regex: '(MQQBrowser)(?:/(\d+)(?:\.(\d+)|)(?:\.(\d+)|)|)'
+    family_replacement: 'QQ Browser Mobile'
+  - regex: '(QQBrowser)(?:/(\d+)(?:\.(\d+)\.(\d+)(?:\.(\d+)|)|)|)'
+    family_replacement: 'QQ Browser'
+
+  # Chrome Mobile
+  - regex: 'Version/.+(Chrome)/(\d+)\.(\d+)\.(\d+)\.(\d+)'
+    family_replacement: 'Chrome Mobile WebView'
+  - regex: '; wv\).+(Chrome)/(\d+)\.(\d+)\.(\d+)\.(\d+)'
+    family_replacement: 'Chrome Mobile WebView'
+  - regex: '(CrMo)/(\d+)\.(\d+)\.(\d+)\.(\d+)'
+    family_replacement: 'Chrome Mobile'
+  - regex: '(CriOS)/(\d+)\.(\d+)\.(\d+)\.(\d+)'
+    family_replacement: 'Chrome Mobile iOS'
+  - regex: '(Chrome)/(\d+)\.(\d+)\.(\d+)\.(\d+) Mobile(?:[ /]|$)'
+    family_replacement: 'Chrome Mobile'
+  - regex: ' Mobile .*(Chrome)/(\d+)\.(\d+)\.(\d+)\.(\d+)'
+    family_replacement: 'Chrome Mobile'
+
+  # Chrome Frame must come before MSIE.
+  - regex: '(chromeframe)/(\d+)\.(\d+)\.(\d+)'
+    family_replacement: 'Chrome Frame'
+
+  # Tizen Browser (second case included in browser/major.minor regex)
+  - regex: '(SLP Browser)/(\d+)\.(\d+)'
+    family_replacement: 'Tizen Browser'
+
+  # Sogou Explorer 2.X
+  - regex: '(SE 2\.X) MetaSr (\d+)\.(\d+)'
+    family_replacement: 'Sogou Explorer'
+
+  # Rackspace Monitoring
+  - regex: '(Rackspace Monitoring)/(\d+)\.(\d+)'
+    family_replacement: 'RackspaceBot'
+
+  # PRTG Network Monitoring
+  - regex: '(PRTG Network Monitor)'
+
+  # PyAMF
+  - regex: '(PyAMF)/(\d+)\.(\d+)\.(\d+)'
+
+  # Yandex Browser
+  - regex: '(YaBrowser)/(\d+)\.(\d+)\.(\d+)'
+    family_replacement: 'Yandex Browser'
+
+  # Mail.ru Amigo/Internet Browser (Chromium-based)
+  - regex: '(Chrome)/(\d+)\.(\d+)\.(\d+).* MRCHROME'
+    family_replacement: 'Mail.ru Chromium Browser'
+
+  # AOL Browser (IE-based)
+  - regex: '(AOL) (\d+)\.(\d+); AOLBuild (\d+)'
+
+  # Podcast catcher Applications using iTunes
+  - regex: '(PodCruncher|Downcast)[ /]?(\d+)(?:\.(\d+)|)(?:\.(\d+)|)(?:\.(\d+)|)'
+
+  # Box Notes https://www.box.com/resources/downloads
+  # Must be before Electron
+  - regex: ' (BoxNotes)/(\d+)\.(\d+)\.(\d+)'
+
+  # Whale
+  - regex: '(Whale)/(\d+)\.(\d+)\.(\d+)\.(\d+) Mobile(?:[ /]|$)'
+    family_replacement: 'Whale'
+
+  - regex: '(Whale)/(\d+)\.(\d+)\.(\d+)'
+    family_replacement: 'Whale'
+
+  # 1Password
+  - regex: '(1Password)/(\d+)\.(\d+)\.(\d+)'
+
+  # Ghost
+  # @ref: http://www.ghost.org
+  - regex: '(Ghost)/(\d+)\.(\d+)\.(\d+)'
+
+  #### END SPECIAL CASES TOP ####
+
+  #### MAIN CASES - this catches > 50% of all browsers ####
+
+
+  # Slack desktop client (needs to be before Apple Mail, Electron, and Chrome as it gets wrongly detected on Mac OS otherwise)
+  - regex: '(Slack_SSB)/(\d+)\.(\d+)\.(\d+)'
+    family_replacement: 'Slack Desktop Client'
+
+  # HipChat provides a version on Mac, but not on Windows.
+  # Needs to be before Chrome on Windows, and AppleMail on Mac.
+  - regex: '(HipChat)/?(\d+|)'
+    family_replacement: 'HipChat Desktop Client'
+
+  # Browser/major_version.minor_version.beta_version
+  - regex: '\b(MobileIron|FireWeb|Jasmine|ANTGalio|Midori|Fresco|Lobo|PaleMoon|Maxthon|Lynx|OmniWeb|Dillo|Camino|Demeter|Fluid|Fennec|Epiphany|Shiira|Sunrise|Spotify|Flock|Netscape|Lunascape|WebPilot|NetFront|Netfront|Konqueror|SeaMonkey|Kazehakase|Vienna|Iceape|Iceweasel|IceWeasel|Iron|K-Meleon|Sleipnir|Galeon|GranParadiso|Opera Mini|iCab|NetNewsWire|ThunderBrowse|Iris|UP\.Browser|Bunjalloo|Google Earth|Raven for Mac|Openwave|MacOutlook|Electron|OktaMobile)/(\d+)\.(\d+)\.(\d+)'
+
+  # Outlook 2007
+  - regex: 'Microsoft Office Outlook 12\.\d+\.\d+|MSOffice 12'
+    family_replacement: 'Outlook'
+    v1_replacement: '2007'
+
+  # Outlook 2010
+  - regex: 'Microsoft Outlook 14\.\d+\.\d+|MSOffice 14'
+    family_replacement: 'Outlook'
+    v1_replacement: '2010'
+
+  # Outlook 2013
+  - regex: 'Microsoft Outlook 15\.\d+\.\d+'
+    family_replacement: 'Outlook'
+    v1_replacement: '2013'
+
+  # Outlook 2016
+  - regex: 'Microsoft Outlook (?:Mail )?16\.\d+\.\d+|MSOffice 16'
+    family_replacement: 'Outlook'
+    v1_replacement: '2016'
+
+  # Word 2014
+  - regex: 'Microsoft Office (Word) 2014'
+
+  # Windows Live Mail
+  - regex: 'Outlook-Express\/7\.0.*'
+    family_replacement: 'Windows Live Mail'
+
+  # Apple Air Mail
+  - regex: '(Airmail) (\d+)\.(\d+)(?:\.(\d+)|)'
+
+  # Thunderbird
+  - regex: '(Thunderbird)/(\d+)\.(\d+)(?:\.(\d+(?:pre|))|)'
+    family_replacement: 'Thunderbird'
+
+  # Postbox
+  - regex: '(Postbox)/(\d+)\.(\d+)\.(\d+)'
+    family_replacement: 'Postbox'
+
+  # Barca
+  - regex: '(Barca(?:Pro)?)/(\d+)\.(\d+)(?:\.(\d+)|)'
+    family_replacement: 'Barca'
+
+  # Lotus Notes
+  - regex: '(Lotus-Notes)/(\d+)\.(\d+)(?:\.(\d+)|)'
+    family_replacement: 'Lotus Notes'
+
+  # Superhuman Mail Client
+  # @ref: https://www.superhuman.com
+  - regex: 'Superhuman'
+    family_replacement: 'Superhuman'
+
+  # Vivaldi uses "Vivaldi"
+  - regex: '(Vivaldi)/(\d+)\.(\d+)\.(\d+)'
+
+  # Edge/major_version.minor_version
+  # Edge with chromium Edg/major_version.minor_version.patch.minor_patch
+  - regex: '(Edge?)/(\d+)(?:\.(\d+)|)(?:\.(\d+)|)(?:\.(\d+)|)'
+    family_replacement: 'Edge'
+
+  # Brave Browser https://brave.com/
+  - regex: '(brave)/(\d+)\.(\d+)\.(\d+) Chrome'
+    family_replacement: 'Brave'
+
+  # Iron Browser ~since version 50
+  - regex: '(Chrome)/(\d+)\.(\d+)\.(\d+)[\d.]* Iron[^/]'
+    family_replacement: 'Iron'
+
+  # Dolphin Browser
+  # @ref: http://www.dolphin.com
+  - regex: '\b(Dolphin)(?: |HDCN/|/INT\-)(\d+)\.(\d+)(?:\.(\d+)|)'
+
+  # Headless Chrome
+  # https://chromium.googlesource.com/chromium/src/+/lkgr/headless/README.md
+  - regex: '(HeadlessChrome)(?:/(\d+)\.(\d+)\.(\d+)|)'
+
+  # Evolution Mail CardDav/CalDav integration
+  - regex: '(Evolution)/(\d+)\.(\d+)\.(\d+\.\d+)'
+
+  # Roundcube Mail CardDav plugin
+  - regex: '(RCM CardDAV plugin)/(\d+)\.(\d+)\.(\d+(?:-dev|))'
+
+  # Browser/major_version.minor_version
+  - regex: '(bingbot|Bolt|AdobeAIR|Jasmine|IceCat|Skyfire|Midori|Maxthon|Lynx|Arora|IBrowse|Dillo|Camino|Shiira|Fennec|Phoenix|Flock|Netscape|Lunascape|Epiphany|WebPilot|Opera Mini|Opera|NetFront|Netfront|Konqueror|Googlebot|SeaMonkey|Kazehakase|Vienna|Iceape|Iceweasel|IceWeasel|Iron|K-Meleon|Sleipnir|Galeon|GranParadiso|iCab|iTunes|MacAppStore|NetNewsWire|Space Bison|Stainless|Orca|Dolfin|BOLT|Minimo|Tizen Browser|Polaris|Abrowser|Planetweb|ICE Browser|mDolphin|qutebrowser|Otter|QupZilla|MailBar|kmail2|YahooMobileMail|ExchangeWebServices|ExchangeServicesClient|Dragon|Outlook-iOS-Android)/(\d+)\.(\d+)(?:\.(\d+)|)'
+
+  # Chrome/Chromium/major_version.minor_version
+  - regex: '(Chromium|Chrome)/(\d+)\.(\d+)(?:\.(\d+)|)(?:\.(\d+)|)'
+
+  ##########
+  # IE Mobile needs to happen before Android to catch cases such as:
+  # Mozilla/5.0 (Mobile; Windows Phone 8.1; Android 4.0; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; NOKIA; Lumia 920)...
+  # Mozilla/5.0 (Mobile; Windows Phone 8.1; Android 4.0; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; NOKIA; Lumia 920; ANZ821)...
+  # Mozilla/5.0 (Mobile; Windows Phone 8.1; Android 4.0; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; NOKIA; Lumia 920; Orange)...
+  # Mozilla/5.0 (Mobile; Windows Phone 8.1; Android 4.0; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; NOKIA; Lumia 920; Vodafone)...
+  ##########
+
+  # IE Mobile
+  - regex: '(IEMobile)[ /](\d+)\.(\d+)'
+    family_replacement: 'IE Mobile'
+
+  # Baca Berita App News Reader
+  - regex: '(BacaBerita App)\/(\d+)\.(\d+)\.(\d+)'
+
+  # Podcast catchers
+  - regex: '^(bPod|Pocket Casts|Player FM)$'
+  - regex: '^(AlexaMediaPlayer|VLC)/(\d+)\.(\d+)\.([^.\s]+)'
+  - regex: '^(AntennaPod|WMPlayer|Zune|Podkicker|Radio|ExoPlayerDemo|Overcast|PocketTunes|NSPlayer|okhttp|DoggCatcher|QuickNews|QuickTime|Peapod|Podcasts|GoldenPod|VLC|Spotify|Miro|MediaGo|Juice|iPodder|gPodder|Banshee)/(\d+)\.(\d+)(?:\.(\d+)|)(?:\.(\d+)|)'
+  - regex: '^(Peapod|Liferea)/([^.\s]+)\.([^.\s]+|)\.?([^.\s]+|)'
+  - regex: '^(bPod|Player FM) BMID/(\S+)'
+  - regex: '^(Podcast ?Addict)/v(\d+) '
+  - regex: '^(Podcast ?Addict) '
+    family_replacement: 'PodcastAddict'
+  - regex: '(Replay) AV'
+  - regex: '(VOX) Music Player'
+  - regex: '(CITA) RSS Aggregator/(\d+)\.(\d+)'
+  - regex: '(Pocket Casts)$'
+  - regex: '(Player FM)$'
+  - regex: '(LG Player|Doppler|FancyMusic|MediaMonkey|Clementine) (\d+)\.(\d+)\.?([^.\s]+|)\.?([^.\s]+|)'
+  - regex: '(philpodder)/(\d+)\.(\d+)\.?([^.\s]+|)\.?([^.\s]+|)'
+  - regex: '(Player FM|Pocket Casts|DoggCatcher|Spotify|MediaMonkey|MediaGo|BashPodder)'
+  - regex: '(QuickTime)\.(\d+)\.(\d+)\.(\d+)'
+  - regex: '(Kinoma)(\d+)'
+  - regex: '(Fancy) Cloud Music (\d+)\.(\d+)'
+    family_replacement: 'FancyMusic'
+  - regex: 'EspnDownloadManager'
+    family_replacement: 'ESPN'
+  - regex: '(ESPN) Radio (\d+)\.(\d+)(?:\.(\d+)|) ?(?:rv:(\d+)|) '
+  - regex: '(podracer|jPodder) v ?(\d+)\.(\d+)(?:\.(\d+)|)'
+  - regex: '(ZDM)/(\d+)\.(\d+)[; ]?'
+  - regex: '(Zune|BeyondPod) (\d+)(?:\.(\d+)|)[\);]'
+  - regex: '(WMPlayer)/(\d+)\.(\d+)\.(\d+)\.(\d+)'
+  - regex: '^(Lavf)'
+    family_replacement: 'WMPlayer'
+  - regex: '^(RSSRadio)[ /]?(\d+|)'
+  - regex: '(RSS_Radio) (\d+)\.(\d+)'
+    family_replacement: 'RSSRadio'
+  - regex: '(Podkicker) \S+/(\d+)\.(\d+)\.(\d+)'
+    family_replacement: 'Podkicker'
+  - regex: '^(HTC) Streaming Player \S+ / \S+ / \S+ / (\d+)\.(\d+)(?:\.(\d+)|)'
+  - regex: '^(Stitcher)/iOS'
+  - regex: '^(Stitcher)/Android'
+  - regex: '^(VLC) .*version (\d+)\.(\d+)\.(\d+)'
+  - regex: ' (VLC) for'
+  - regex: '(vlc)/(\d+)\.(\d+)\.(\d+)'
+    family_replacement: 'VLC'
+  - regex: '^(foobar)\S+/([^.\s]+)\.([^.\s]+|)\.?([^.\s]+|)'
+  - regex: '^(Clementine)\S+ ([^.\s]+)\.([^.\s]+|)\.?([^.\s]+|)'
+  - regex: '(amarok)/([^.\s]+)\.([^.\s]+|)\.?([^.\s]+|)'
+    family_replacement: 'Amarok'
+  - regex: '(Custom)-Feed Reader'
+
+  # Browser major_version.minor_version.beta_version (space instead of slash)
+  - regex: '(iRider|Crazy Browser|SkipStone|iCab|Lunascape|Sleipnir|Maemo Browser) (\d+)\.(\d+)\.(\d+)'
+  # Browser major_version.minor_version (space instead of slash)
+  - regex: '(iCab|Lunascape|Opera|Android|Jasmine|Polaris|Microsoft SkyDriveSync|The Bat!) (\d+)(?:\.(\d+)|)(?:\.(\d+)|)'
+
+  # Kindle WebKit
+  - regex: '(Kindle)/(\d+)\.(\d+)'
+
+  # weird android UAs
+  - regex: '(Android) Donut'
+    v1_replacement: '1'
+    v2_replacement: '2'
+
+  - regex: '(Android) Eclair'
+    v1_replacement: '2'
+    v2_replacement: '1'
+
+  - regex: '(Android) Froyo'
+    v1_replacement: '2'
+    v2_replacement: '2'
+
+  - regex: '(Android) Gingerbread'
+    v1_replacement: '2'
+    v2_replacement: '3'
+
+  - regex: '(Android) Honeycomb'
+    v1_replacement: '3'
+
+  # desktop mode
+  # http://www.anandtech.com/show/3982/windows-phone-7-review
+  - regex: '(MSIE) (\d+)\.(\d+).*XBLWP7'
+    family_replacement: 'IE Large Screen'
+
+  # Nextcloud desktop sync client
+  - regex: '(Nextcloud)'
+
+  # Generic mirall client
+  - regex: '(mirall)/(\d+)\.(\d+)\.(\d+)'
+
+  # Nextcloud/Owncloud android client
+  - regex: '(ownCloud-android)/(\d+)\.(\d+)\.(\d+)'
+    family_replacement: 'Owncloud'
+
+  # Skype for Business
+  - regex: '(OC)/(\d+)\.(\d+)\.(\d+)\.(\d+) \(Skype for Business\)'
+    family_replacement: 'Skype'
+
+  #### END MAIN CASES ####
+
+  #### SPECIAL CASES ####
+  - regex: '(Obigo)InternetBrowser'
+  - regex: '(Obigo)\-Browser'
+  - regex: '(Obigo|OBIGO)[^\d]*(\d+)(?:.(\d+)|)'
+    family_replacement: 'Obigo'
+
+  - regex: '(MAXTHON|Maxthon) (\d+)\.(\d+)'
+    family_replacement: 'Maxthon'
+  - regex: '(Maxthon|MyIE2|Uzbl|Shiira)'
+    v1_replacement: '0'
+
+  - regex: '(BrowseX) \((\d+)\.(\d+)\.(\d+)'
+
+  - regex: '(NCSA_Mosaic)/(\d+)\.(\d+)'
+    family_replacement: 'NCSA Mosaic'
+
+  # Polaris/d.d is above
+  - regex: '(POLARIS)/(\d+)\.(\d+)'
+    family_replacement: 'Polaris'
+  - regex: '(Embider)/(\d+)\.(\d+)'
+    family_replacement: 'Polaris'
+
+  - regex: '(BonEcho)/(\d+)\.(\d+)\.?([ab]?\d+|)'
+    family_replacement: 'Bon Echo'
+
+    # topbuzz on IOS
+  - regex: '(TopBuzz) com.alex.NewsMaster/(\d+).(\d+).(\d+)'
+    family_replacement: 'TopBuzz'
+  - regex: '(TopBuzz) com.mobilesrepublic.newsrepublic/(\d+).(\d+).(\d+)'
+    family_replacement: 'TopBuzz'
+  - regex: '(TopBuzz) com.topbuzz.videoen/(\d+).(\d+).(\d+)'
+    family_replacement: 'TopBuzz'
+
+  # @note: iOS / OSX Applications
+  - regex: '(iPod|iPhone|iPad).+GSA/(\d+)\.(\d+)\.(\d+)(?:\.(\d+)|) Mobile'
+    family_replacement: 'Google'
+  - regex: '(iPod|iPhone|iPad).+Version/(\d+)\.(\d+)(?:\.(\d+)|).*[ +]Safari'
+    family_replacement: 'Mobile Safari'
+  - regex: '(iPod|iPod touch|iPhone|iPad);.*CPU.*OS[ +](\d+)_(\d+)(?:_(\d+)|).* AppleNews\/\d+\.\d+\.\d+?'
+    family_replacement: 'Mobile Safari UI/WKWebView'
+  - regex: '(iPod|iPhone|iPad).+Version/(\d+)\.(\d+)(?:\.(\d+)|)'
+    family_replacement: 'Mobile Safari UI/WKWebView'
+  - regex: '(iPod|iPod touch|iPhone|iPad).* Safari'
+    family_replacement: 'Mobile Safari'
+  - regex: '(iPod|iPod touch|iPhone|iPad)'
+    family_replacement: 'Mobile Safari UI/WKWebView'
+  - regex: '(Watch)(\d+),(\d+)'
+    family_replacement: 'Apple $1 App'
+
+  ##########################
+  # Outlook on iOS >= 2.62.0
+  ##########################
+  - regex: '(Outlook-iOS)/\d+\.\d+\.prod\.iphone \((\d+)\.(\d+)\.(\d+)\)'
+
+  - regex: '(AvantGo) (\d+).(\d+)'
+
+  - regex: '(OneBrowser)/(\d+).(\d+)'
+    family_replacement: 'ONE Browser'
+
+  - regex: '(Avant)'
+    v1_replacement: '1'
+
+  # This is the Tesla Model S (see similar entry in device parsers)
+  - regex: '(QtCarBrowser)'
+    v1_replacement: '1'
+
+  - regex: '^(iBrowser/Mini)(\d+).(\d+)'
+    family_replacement: 'iBrowser Mini'
+  - regex: '^(iBrowser|iRAPP)/(\d+).(\d+)'
+
+  # nokia browsers
+  # based on: http://www.developer.nokia.com/Community/Wiki/User-Agent_headers_for_Nokia_devices
+  - regex: '^(Nokia)'
+    family_replacement: 'Nokia Services (WAP) Browser'
+  - regex: '(NokiaBrowser)/(\d+)\.(\d+).(\d+)\.(\d+)'
+    family_replacement: 'Nokia Browser'
+  - regex: '(NokiaBrowser)/(\d+)\.(\d+).(\d+)'
+    family_replacement: 'Nokia Browser'
+  - regex: '(NokiaBrowser)/(\d+)\.(\d+)'
+    family_replacement: 'Nokia Browser'
+  - regex: '(BrowserNG)/(\d+)\.(\d+).(\d+)'
+    family_replacement: 'Nokia Browser'
+  - regex: '(Series60)/5\.0'
+    family_replacement: 'Nokia Browser'
+    v1_replacement: '7'
+    v2_replacement: '0'
+  - regex: '(Series60)/(\d+)\.(\d+)'
+    family_replacement: 'Nokia OSS Browser'
+  - regex: '(S40OviBrowser)/(\d+)\.(\d+)\.(\d+)\.(\d+)'
+    family_replacement: 'Ovi Browser'
+  - regex: '(Nokia)[EN]?(\d+)'
+
+  # BlackBerry devices
+  - regex: '(PlayBook).+RIM Tablet OS (\d+)\.(\d+)\.(\d+)'
+    family_replacement: 'BlackBerry WebKit'
+  - regex: '(Black[bB]erry|BB10).+Version/(\d+)\.(\d+)\.(\d+)'
+    family_replacement: 'BlackBerry WebKit'
+  - regex: '(Black[bB]erry)\s?(\d+)'
+    family_replacement: 'BlackBerry'
+
+  - regex: '(OmniWeb)/v(\d+)\.(\d+)'
+
+  - regex: '(Blazer)/(\d+)\.(\d+)'
+    family_replacement: 'Palm Blazer'
+
+  - regex: '(Pre)/(\d+)\.(\d+)'
+    family_replacement: 'Palm Pre'
+
+  # fork of Links
+  - regex: '(ELinks)/(\d+)\.(\d+)'
+  - regex: '(ELinks) \((\d+)\.(\d+)'
+  - regex: '(Links) \((\d+)\.(\d+)'
+
+  - regex: '(QtWeb) Internet Browser/(\d+)\.(\d+)'
+
+  #- regex: '\(iPad;.+(Version)/(\d+)\.(\d+)(?:\.(\d+)|).*Safari/'
+  #  family_replacement: 'iPad'
+
+  # Phantomjs, should go before Safari
+  - regex: '(PhantomJS)/(\d+)\.(\d+)\.(\d+)'
+
+  # WebKit Nightly
+  - regex: '(AppleWebKit)/(\d+)(?:\.(\d+)|)\+ .* Safari'
+    family_replacement: 'WebKit Nightly'
+
+  # Safari
+  - regex: '(Version)/(\d+)\.(\d+)(?:\.(\d+)|).*Safari/'
+    family_replacement: 'Safari'
+  # Safari didn't provide "Version/d.d.d" prior to 3.0
+  - regex: '(Safari)/\d+'
+
+  - regex: '(OLPC)/Update(\d+)\.(\d+)'
+
+  - regex: '(OLPC)/Update()\.(\d+)'
+    v1_replacement: '0'
+
+  - regex: '(SEMC\-Browser)/(\d+)\.(\d+)'
+
+  - regex: '(Teleca)'
+    family_replacement: 'Teleca Browser'
+
+  - regex: '(Phantom)/V(\d+)\.(\d+)'
+    family_replacement: 'Phantom Browser'
+
+  - regex: '(Trident)/(7|8)\.(0)'
+    family_replacement: 'IE'
+    v1_replacement: '11'
+
+  - regex: '(Trident)/(6)\.(0)'
+    family_replacement: 'IE'
+    v1_replacement: '10'
+
+  - regex: '(Trident)/(5)\.(0)'
+    family_replacement: 'IE'
+    v1_replacement: '9'
+
+  - regex: '(Trident)/(4)\.(0)'
+    family_replacement: 'IE'
+    v1_replacement: '8'
+
+  # Espial
+  - regex: '(Espial)/(\d+)(?:\.(\d+)|)(?:\.(\d+)|)'
+
+  # Apple Mail
+
+  # apple mail - not directly detectable, have it after Safari stuff
+  - regex: '(AppleWebKit)/(\d+)\.(\d+)\.(\d+)'
+    family_replacement: 'Apple Mail'
+
+  # AFTER THE EDGE CASES ABOVE!
+  # AFTER IE11
+  # BEFORE all other IE
+  - regex: '(Firefox)/(\d+)\.(\d+)\.(\d+)'
+  - regex: '(Firefox)/(\d+)\.(\d+)(pre|[ab]\d+[a-z]*|)'
+
+  - regex: '([MS]?IE) (\d+)\.(\d+)'
+    family_replacement: 'IE'
+
+  - regex: '(python-requests)/(\d+)\.(\d+)'
+    family_replacement: 'Python Requests'
+
+  # headless user-agents
+  - regex: '\b(Windows-Update-Agent|WindowsPowerShell|Microsoft-CryptoAPI|SophosUpdateManager|SophosAgent|Debian APT-HTTP|Ubuntu APT-HTTP|libcurl-agent|libwww-perl|urlgrabber|curl|PycURL|Wget|wget2|aria2|Axel|OpenBSD ftp|lftp|jupdate|insomnia|fetch libfetch|akka-http|got)(?:[ /](\d+)(?:\.(\d+)|)(?:\.(\d+)|)|)'
+
+  # Asynchronous HTTP Client/Server for asyncio and Python (https://aiohttp.readthedocs.io/)
+  - regex: '(Python/3\.\d{1,3} aiohttp)/(\d+)\.(\d+)\.(\d+)'
+    family_replacement: 'Python aiohttp'
+
+  - regex: '(Java)[/ ]?\d+\.(\d+)\.(\d+)[_-]*([a-zA-Z0-9]+|)'
+
+  # Cloud Storage Clients
+  - regex: '^(Cyberduck)/(\d+)\.(\d+)\.(\d+)(?:\.\d+|)'
+  - regex: '^(S3 Browser) (\d+)-(\d+)-(\d+)(?:\s*http://s3browser\.com|)'
+  - regex: '(S3Gof3r)'
+  # IBM COS (Cloud Object Storage) API
+  - regex: '\b(ibm-cos-sdk-(?:core|java|js|python))/(\d+)\.(\d+)(?:\.(\d+)|)'
+  # rusoto - Rusoto - AWS SDK for Rust - https://github.com/rusoto/rusoto
+  - regex: '^(rusoto)/(\d+)\.(\d+)\.(\d+)'
+  # rclone - rsync for cloud storage - https://rclone.org/
+  - regex: '^(rclone)/v(\d+)\.(\d+)'
+
+  # Roku Digital-Video-Players https://www.roku.com/
+  - regex: '^(Roku)/DVP-(\d+)\.(\d+)'
+
+  # Kurio App News Reader https://kurio.co.id/
+  - regex: '(Kurio)\/(\d+)\.(\d+)\.(\d+)'
+    family_replacement: 'Kurio App'
+
+  # Box Drive and Box Sync https://www.box.com/resources/downloads
+  - regex: '^(Box(?: Sync)?)/(\d+)\.(\d+)\.(\d+)'
+
+  # ViaFree streaming app https://www.viafree.{dk|se|no}
+  - regex: '^(ViaFree|Viafree)-(?:tvOS-)?[A-Z]{2}/(\d+)\.(\d+)\.(\d+)'
+    family_replacement: 'ViaFree'
+
+os_parsers:
+  ##########
+  # HbbTV vendors
+  ##########
+
+  # starts with the easy one : Panasonic seems consistent across years, hope it will continue
+  #HbbTV/1.1.1 (;Panasonic;VIERA 2011;f.532;0071-0802 2000-0000;)
+  #HbbTV/1.1.1 (;Panasonic;VIERA 2012;1.261;0071-3103 2000-0000;)
+  #HbbTV/1.2.1 (;Panasonic;VIERA 2013;3.672;4101-0003 0002-0000;)
+  #- regex: 'HbbTV/\d+\.\d+\.\d+ \(;(Panasonic);VIERA ([0-9]{4});'
+
+  # Sony is consistent too but do not place year like the other
+  # Opera/9.80 (Linux armv7l; HbbTV/1.1.1 (; Sony; KDL32W650A; PKG3.211EUA; 2013;); ) Presto/2.12.362 Version/12.11
+  # Opera/9.80 (Linux mips; U;  HbbTV/1.1.1 (; Sony; KDL40HX751; PKG1.902EUA; 2012;);; en) Presto/2.10.250 Version/11.60
+  # Opera/9.80 (Linux mips; U;  HbbTV/1.1.1 (; Sony; KDL22EX320; PKG4.017EUA; 2011;);; en) Presto/2.7.61 Version/11.00
+  #- regex: 'HbbTV/\d+\.\d+\.\d+ \(; (Sony);.*;.*; ([0-9]{4});\)'
+
+
+  # LG is consistent too, but we need to add manually the year model
+  #Mozilla/5.0 (Unknown; Linux armv7l) AppleWebKit/537.1+ (KHTML, like Gecko) Safari/537.1+ HbbTV/1.1.1 ( ;LGE ;NetCast 4.0 ;03.20.30 ;1.0M ;)
+  #Mozilla/5.0 (DirectFB; Linux armv7l) AppleWebKit/534.26+ (KHTML, like Gecko) Version/5.0 Safari/534.26+ HbbTV/1.1.1 ( ;LGE ;NetCast 3.0 ;1.0 ;1.0M ;)
+  - regex: 'HbbTV/\d+\.\d+\.\d+ \( ;(LG)E ;NetCast 4.0'
+    os_v1_replacement: '2013'
+  - regex: 'HbbTV/\d+\.\d+\.\d+ \( ;(LG)E ;NetCast 3.0'
+    os_v1_replacement: '2012'
+
+  # Samsung is on its way of normalizing their user-agent
+  # HbbTV/1.1.1 (;Samsung;SmartTV2013;T-FXPDEUC-1102.2;;) WebKit
+  # HbbTV/1.1.1 (;Samsung;SmartTV2013;T-MST12DEUC-1102.1;;) WebKit
+  # HbbTV/1.1.1 (;Samsung;SmartTV2012;;;) WebKit
+  # HbbTV/1.1.1 (;;;;;) Maple_2011
+  - regex: 'HbbTV/1.1.1 \(;;;;;\) Maple_2011'
+    os_replacement: 'Samsung'
+    os_v1_replacement: '2011'
+  # manage the two models of 2013
+  - regex: 'HbbTV/\d+\.\d+\.\d+ \(;(Samsung);SmartTV([0-9]{4});.*FXPDEUC'
+    os_v2_replacement: 'UE40F7000'
+  - regex: 'HbbTV/\d+\.\d+\.\d+ \(;(Samsung);SmartTV([0-9]{4});.*MST12DEUC'
+    os_v2_replacement: 'UE32F4500'
+  # generic Samsung (works starting in 2012)
+  #- regex: 'HbbTV/\d+\.\d+\.\d+ \(;(Samsung);SmartTV([0-9]{4});'
+
+  # Philips : not found any other way than a manual mapping
+  # Opera/9.80 (Linux mips; U; HbbTV/1.1.1 (; Philips; ; ; ; ) CE-HTML/1.0 NETTV/4.1.3 PHILIPSTV/1.1.1; en) Presto/2.10.250 Version/11.60
+  # Opera/9.80 (Linux mips ; U; HbbTV/1.1.1 (; Philips; ; ; ; ) CE-HTML/1.0 NETTV/3.2.1; en) Presto/2.6.33 Version/10.70
+  - regex: 'HbbTV/1\.1\.1 \(; (Philips);.*NETTV/4'
+    os_v1_replacement: '2013'
+  - regex: 'HbbTV/1\.1\.1 \(; (Philips);.*NETTV/3'
+    os_v1_replacement: '2012'
+  - regex: 'HbbTV/1\.1\.1 \(; (Philips);.*NETTV/2'
+    os_v1_replacement: '2011'
+
+  # the HbbTV emulator developers use HbbTV/1.1.1 (;;;;;) firetv-firefox-plugin 1.1.20
+  - regex: 'HbbTV/\d+\.\d+\.\d+.*(firetv)-firefox-plugin (\d+).(\d+).(\d+)'
+    os_replacement: 'FireHbbTV'
+
+  # generic HbbTV, hoping to catch manufacturer name (always after 2nd comma) and the first string that looks like a 2011-2019 year
+  - regex: 'HbbTV/\d+\.\d+\.\d+ \(.*; ?([a-zA-Z]+) ?;.*(201[1-9]).*\)'
+
+  # aspiegel.com spider (owned by Huawei)
+  - regex: 'AspiegelBot'
+    os_replacement: 'Other'
+
+  ##########
+  # @note: Windows Phone needs to come before Windows NT 6.1 *and* before Android to catch cases such as:
+  # Mozilla/5.0 (Mobile; Windows Phone 8.1; Android 4.0; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; NOKIA; Lumia 920)...
+  # Mozilla/5.0 (Mobile; Windows Phone 8.1; Android 4.0; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; NOKIA; Lumia 920; ANZ821)...
+  # Mozilla/5.0 (Mobile; Windows Phone 8.1; Android 4.0; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; NOKIA; Lumia 920; Orange)...
+  # Mozilla/5.0 (Mobile; Windows Phone 8.1; Android 4.0; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; NOKIA; Lumia 920; Vodafone)...
+  ##########
+
+  - regex: '(Windows Phone) (?:OS[ /])?(\d+)\.(\d+)'
+
+  # Again a MS-special one: iPhone.*Outlook-iOS-Android/x.x is erroneously detected as Android
+  - regex: '(CPU[ +]OS|iPhone[ +]OS|CPU[ +]iPhone)[ +]+(\d+)[_\.](\d+)(?:[_\.](\d+)|).*Outlook-iOS-Android'
+    os_replacement: 'iOS'
+
+  # Special case for old ArcGIS Mobile products
+  - regex: 'ArcGIS\.?(iOS|Android)-\d+\.\d+(?:\.\d+|)(?:[^\/]+|)\/(\d+)(?:\.(\d+)(?:\.(\d+)|)|)'
+
+  # Special case for new ArcGIS Mobile products
+  - regex: 'ArcGISRuntime-(?:Android|iOS)\/\d+\.\d+(?:\.\d+|) \((Android|iOS) (\d+)(?:\.(\d+)(?:\.(\d+)|)|);'
+
+  ##########
+  # Android
+  # can actually detect rooted android os. do we care?
+  ##########
+  - regex: '(Android)[ \-/](\d+)(?:\.(\d+)|)(?:[.\-]([a-z0-9]+)|)'
+
+  - regex: '(Android) Donut'
+    os_v1_replacement: '1'
+    os_v2_replacement: '2'
+
+  - regex: '(Android) Eclair'
+    os_v1_replacement: '2'
+    os_v2_replacement: '1'
+
+  - regex: '(Android) Froyo'
+    os_v1_replacement: '2'
+    os_v2_replacement: '2'
+
+  - regex: '(Android) Gingerbread'
+    os_v1_replacement: '2'
+    os_v2_replacement: '3'
+
+  - regex: '(Android) Honeycomb'
+    os_v1_replacement: '3'
+
+  # Android 9; Android 10;
+  - regex: '(Android) (\d+);'
+
+  # UCWEB
+  - regex: '^UCWEB.*; (Adr) (\d+)\.(\d+)(?:[.\-]([a-z0-9]+)|);'
+    os_replacement: 'Android'
+  - regex: '^UCWEB.*; (iPad|iPh|iPd) OS (\d+)_(\d+)(?:_(\d+)|);'
+    os_replacement: 'iOS'
+  - regex: '^UCWEB.*; (wds) (\d+)\.(\d+)(?:\.(\d+)|);'
+    os_replacement: 'Windows Phone'
+  # JUC
+  - regex: '^(JUC).*; ?U; ?(?:Android|)(\d+)\.(\d+)(?:[\.\-]([a-z0-9]+)|)'
+    os_replacement: 'Android'
+
+  # Salesforce
+  - regex: '(android)\s(?:mobile\/)(\d+)(?:\.(\d+)(?:\.(\d+)|)|)'
+    os_replacement: 'Android'
+
+  ##########
+  # Kindle Android
+  ##########
+  - regex: '(Silk-Accelerated=[a-z]{4,5})'
+    os_replacement: 'Android'
+
+  # Citrix Chrome App on Chrome OS
+  # Note, this needs to come before the windows parsers as the app doesn't
+  # properly identify as Chrome OS
+  #
+  # ex: Mozilla/5.0 (X11; Windows aarch64 10718.88.2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.118 Safari/537.36 CitrixChromeApp
+  - regex: '(x86_64|aarch64)\ (\d+)\.(\d+)\.(\d+).*Chrome.*(?:CitrixChromeApp)$'
+    os_replacement: 'Chrome OS'
+
+  ##########
+  # Windows
+  # http://en.wikipedia.org/wiki/Windows_NT#Releases
+  # possibility of false positive when different marketing names share same NT kernel
+  # e.g. windows server 2003 and windows xp
+  # lots of ua strings have Windows NT 4.1 !?!?!?!? !?!? !? !????!?! !!! ??? !?!?! ?
+  # (very) roughly ordered in terms of frequency of occurence of regex (win xp currently most frequent, etc)
+  ##########
+
+  # ie mobile desktop mode
+  # spoofs nt 6.1. must come before windows 7
+  - regex: '(XBLWP7)'
+    os_replacement: 'Windows Phone'
+
+  # @note: This needs to come before Windows NT 6.1
+  - regex: '(Windows ?Mobile)'
+    os_replacement: 'Windows Mobile'
+
+  - regex: '(Windows 10)'
+    os_replacement: 'Windows'
+    os_v1_replacement: '10'
+
+  - regex: '(Windows (?:NT 5\.2|NT 5\.1))'
+    os_replacement: 'Windows'
+    os_v1_replacement: 'XP'
+
+  - regex: '(Win(?:dows NT |32NT\/)6\.1)'
+    os_replacement: 'Windows'
+    os_v1_replacement: '7'
+
+  - regex: '(Win(?:dows NT |32NT\/)6\.0)'
+    os_replacement: 'Windows'
+    os_v1_replacement: 'Vista'
+
+  - regex: '(Win 9x 4\.90)'
+    os_replacement: 'Windows'
+    os_v1_replacement: 'ME'
+
+  - regex: '(Windows NT 6\.2; ARM;)'
+    os_replacement: 'Windows'
+    os_v1_replacement: 'RT'
+
+  - regex: '(Win(?:dows NT |32NT\/)6\.2)'
+    os_replacement: 'Windows'
+    os_v1_replacement: '8'
+
+  - regex: '(Windows NT 6\.3; ARM;)'
+    os_replacement: 'Windows'
+    os_v1_replacement: 'RT 8'
+    os_v2_replacement: '1'
+
+  - regex: '(Win(?:dows NT |32NT\/)6\.3)'
+    os_replacement: 'Windows'
+    os_v1_replacement: '8'
+    os_v2_replacement: '1'
+
+  - regex: '(Win(?:dows NT |32NT\/)6\.4)'
+    os_replacement: 'Windows'
+    os_v1_replacement: '10'
+
+  - regex: '(Windows NT 10\.0)'
+    os_replacement: 'Windows'
+    os_v1_replacement: '10'
+
+  - regex: '(Windows NT 5\.0)'
+    os_replacement: 'Windows'
+    os_v1_replacement: '2000'
+
+  - regex: '(WinNT4.0)'
+    os_replacement: 'Windows'
+    os_v1_replacement: 'NT 4.0'
+
+  - regex: '(Windows ?CE)'
+    os_replacement: 'Windows'
+    os_v1_replacement: 'CE'
+
+  - regex: 'Win(?:dows)? ?(95|98|3.1|NT|ME|2000|XP|Vista|7|CE)'
+    os_replacement: 'Windows'
+    os_v1_replacement: '$1'
+
+  - regex: 'Win16'
+    os_replacement: 'Windows'
+    os_v1_replacement: '3.1'
+
+  - regex: 'Win32'
+    os_replacement: 'Windows'
+    os_v1_replacement: '95'
+
+  # Box apps (Drive, Sync, Notes) on Windows https://www.box.com/resources/downloads
+  - regex: '^Box.*Windows/([\d.]+);'
+    os_replacement: 'Windows'
+    os_v1_replacement: '$1'
+
+  ##########
+  # Tizen OS from Samsung
+  # spoofs Android so pushing it above
+  ##########
+  - regex: '(Tizen)[/ ](\d+)\.(\d+)'
+
+  ##########
+  # Mac OS
+  # @ref: http://en.wikipedia.org/wiki/Mac_OS_X#Versions
+  # @ref: http://www.puredarwin.org/curious/versions
+  ##########
+  - regex: '((?:Mac[ +]?|; )OS[ +]X)[\s+/](?:(\d+)[_.](\d+)(?:[_.](\d+)|)|Mach-O)'
+    os_replacement: 'Mac OS X'
+  - regex: '\w+\s+Mac OS X\s+\w+\s+(\d+).(\d+).(\d+).*'
+    os_replacement: 'Mac OS X'
+    os_v1_replacement: '$1'
+    os_v2_replacement: '$2'
+    os_v3_replacement: '$3'
+  # Leopard
+  - regex: ' (Dar)(win)/(9).(\d+).*\((?:i386|x86_64|Power Macintosh)\)'
+    os_replacement: 'Mac OS X'
+    os_v1_replacement: '10'
+    os_v2_replacement: '5'
+  # Snow Leopard
+  - regex: ' (Dar)(win)/(10).(\d+).*\((?:i386|x86_64)\)'
+    os_replacement: 'Mac OS X'
+    os_v1_replacement: '10'
+    os_v2_replacement: '6'
+  # Lion
+  - regex: ' (Dar)(win)/(11).(\d+).*\((?:i386|x86_64)\)'
+    os_replacement: 'Mac OS X'
+    os_v1_replacement: '10'
+    os_v2_replacement: '7'
+  # Mountain Lion
+  - regex: ' (Dar)(win)/(12).(\d+).*\((?:i386|x86_64)\)'
+    os_replacement: 'Mac OS X'
+    os_v1_replacement: '10'
+    os_v2_replacement: '8'
+  # Mavericks
+  - regex: ' (Dar)(win)/(13).(\d+).*\((?:i386|x86_64)\)'
+    os_replacement: 'Mac OS X'
+    os_v1_replacement: '10'
+    os_v2_replacement: '9'
+  # Yosemite is Darwin/14.x but patch versions are inconsistent in the Darwin string;
+  # more accurately covered by CFNetwork regexes downstream
+
+  # IE on Mac doesn't specify version number
+  - regex: 'Mac_PowerPC'
+    os_replacement: 'Mac OS'
+
+  # builds before tiger don't seem to specify version?
+
+  # ios devices spoof (mac os x), so including intel/ppc prefixes
+  - regex: '(?:PPC|Intel) (Mac OS X)'
+
+  # Box Drive and Box Sync on Mac OS X use OSX version numbers, not Darwin
+  - regex: '^Box.*;(Darwin)/(10)\.(1\d)(?:\.(\d+)|)'
+    os_replacement: 'Mac OS X'
+
+  ##########
+  # iOS
+  # http://en.wikipedia.org/wiki/IOS_version_history
+  ##########
+  # keep this above generic iOS, since AppleTV UAs contain 'CPU OS'
+  - regex: '(Apple\s?TV)(?:/(\d+)\.(\d+)|)'
+    os_replacement: 'ATV OS X'
+
+  - regex: '(CPU[ +]OS|iPhone[ +]OS|CPU[ +]iPhone|CPU IPhone OS)[ +]+(\d+)[_\.](\d+)(?:[_\.](\d+)|)'
+    os_replacement: 'iOS'
+
+  # remaining cases are mostly only opera uas, so catch opera as to not catch iphone spoofs
+  - regex: '(iPhone|iPad|iPod); Opera'
+    os_replacement: 'iOS'
+
+  # few more stragglers
+  - regex: '(iPhone|iPad|iPod).*Mac OS X.*Version/(\d+)\.(\d+)'
+    os_replacement: 'iOS'
+
+  # CFNetwork/Darwin - The specific CFNetwork or Darwin version determines
+  # whether the os maps to Mac OS, or iOS, or just Darwin.
+  # See: http://user-agents.me/cfnetwork-version-list
+  - regex: '(CFNetwork)/(5)48\.0\.3.* Darwin/11\.0\.0'
+    os_replacement: 'iOS'
+  - regex: '(CFNetwork)/(5)48\.(0)\.4.* Darwin/(1)1\.0\.0'
+    os_replacement: 'iOS'
+  - regex: '(CFNetwork)/(5)48\.(1)\.4'
+    os_replacement: 'iOS'
+  - regex: '(CFNetwork)/(4)85\.1(3)\.9'
+    os_replacement: 'iOS'
+  - regex: '(CFNetwork)/(6)09\.(1)\.4'
+    os_replacement: 'iOS'
+  - regex: '(CFNetwork)/(6)(0)9'
+    os_replacement: 'iOS'
+  - regex: '(CFNetwork)/6(7)2\.(1)\.13'
+    os_replacement: 'iOS'
+  - regex: '(CFNetwork)/6(7)2\.(1)\.(1)4'
+    os_replacement: 'iOS'
+  - regex: '(CF)(Network)/6(7)(2)\.1\.15'
+    os_replacement: 'iOS'
+    os_v1_replacement: '7'
+    os_v2_replacement: '1'
+  - regex: '(CFNetwork)/6(7)2\.(0)\.(?:2|8)'
+    os_replacement: 'iOS'
+  - regex: '(CFNetwork)/709\.1'
+    os_replacement: 'iOS'
+    os_v1_replacement: '8'
+    os_v2_replacement: '0.b5'
+  - regex: '(CF)(Network)/711\.(\d)'
+    os_replacement: 'iOS'
+    os_v1_replacement: '8'
+  - regex: '(CF)(Network)/(720)\.(\d)'
+    os_replacement: 'Mac OS X'
+    os_v1_replacement: '10'
+    os_v2_replacement: '10'
+  - regex: '(CF)(Network)/(760)\.(\d)'
+    os_replacement: 'Mac OS X'
+    os_v1_replacement: '10'
+    os_v2_replacement: '11'
+  - regex: 'CFNetwork/7.* Darwin/15\.4\.\d+'
+    os_replacement: 'iOS'
+    os_v1_replacement: '9'
+    os_v2_replacement: '3'
+    os_v3_replacement: '1'
+  - regex: 'CFNetwork/7.* Darwin/15\.5\.\d+'
+    os_replacement: 'iOS'
+    os_v1_replacement: '9'
+    os_v2_replacement: '3'
+    os_v3_replacement: '2'
+  - regex: 'CFNetwork/7.* Darwin/15\.6\.\d+'
+    os_replacement: 'iOS'
+    os_v1_replacement: '9'
+    os_v2_replacement: '3'
+    os_v3_replacement: '5'
+  - regex: '(CF)(Network)/758\.(\d)'
+    os_replacement: 'iOS'
+    os_v1_replacement: '9'
+  - regex: 'CFNetwork/808\.3 Darwin/16\.3\.\d+'
+    os_replacement: 'iOS'
+    os_v1_replacement: '10'
+    os_v2_replacement: '2'
+    os_v3_replacement: '1'
+  - regex: '(CF)(Network)/808\.(\d)'
+    os_replacement: 'iOS'
+    os_v1_replacement: '10'
+
+  ##########
+  # CFNetwork macOS Apps (must be before CFNetwork iOS Apps
+  # @ref: https://en.wikipedia.org/wiki/Darwin_(operating_system)#Release_history
+  ##########
+  - regex: 'CFNetwork/.* Darwin/17\.\d+.*\(x86_64\)'
+    os_replacement: 'Mac OS X'
+    os_v1_replacement: '10'
+    os_v2_replacement: '13'
+  - regex: 'CFNetwork/.* Darwin/16\.\d+.*\(x86_64\)'
+    os_replacement: 'Mac OS X'
+    os_v1_replacement: '10'
+    os_v2_replacement: '12'
+  - regex: 'CFNetwork/8.* Darwin/15\.\d+.*\(x86_64\)'
+    os_replacement: 'Mac OS X'
+    os_v1_replacement: '10'
+    os_v2_replacement: '11'
+  ##########
+  # CFNetwork iOS Apps
+  # @ref: https://en.wikipedia.org/wiki/Darwin_(operating_system)#Release_history
+  ##########
+  - regex: 'CFNetwork/.* Darwin/(9)\.\d+'
+    os_replacement: 'iOS'
+    os_v1_replacement: '1'
+  - regex: 'CFNetwork/.* Darwin/(10)\.\d+'
+    os_replacement: 'iOS'
+    os_v1_replacement: '4'
+  - regex: 'CFNetwork/.* Darwin/(11)\.\d+'
+    os_replacement: 'iOS'
+    os_v1_replacement: '5'
+  - regex: 'CFNetwork/.* Darwin/(13)\.\d+'
+    os_replacement: 'iOS'
+    os_v1_replacement: '6'
+  - regex: 'CFNetwork/6.* Darwin/(14)\.\d+'
+    os_replacement: 'iOS'
+    os_v1_replacement: '7'
+  - regex: 'CFNetwork/7.* Darwin/(14)\.\d+'
+    os_replacement: 'iOS'
+    os_v1_replacement: '8'
+    os_v2_replacement: '0'
+  - regex: 'CFNetwork/7.* Darwin/(15)\.\d+'
+    os_replacement: 'iOS'
+    os_v1_replacement: '9'
+    os_v2_replacement: '0'
+  - regex: 'CFNetwork/8.* Darwin/16\.5\.\d+'
+    os_replacement: 'iOS'
+    os_v1_replacement: '10'
+    os_v2_replacement: '3'
+  - regex: 'CFNetwork/8.* Darwin/16\.6\.\d+'
+    os_replacement: 'iOS'
+    os_v1_replacement: '10'
+    os_v2_replacement: '3'
+    os_v3_replacement: '2'
+  - regex: 'CFNetwork/8.* Darwin/16\.7\.\d+'
+    os_replacement: 'iOS'
+    os_v1_replacement: '10'
+    os_v2_replacement: '3'
+    os_v3_replacement: '3'
+  - regex: 'CFNetwork/8.* Darwin/(16)\.\d+'
+    os_replacement: 'iOS'
+    os_v1_replacement: '10'
+  - regex: 'CFNetwork/8.* Darwin/17\.0\.\d+'
+    os_replacement: 'iOS'
+    os_v1_replacement: '11'
+    os_v2_replacement: '0'
+  - regex: 'CFNetwork/8.* Darwin/17\.2\.\d+'
+    os_replacement: 'iOS'
+    os_v1_replacement: '11'
+    os_v2_replacement: '1'
+  - regex: 'CFNetwork/8.* Darwin/17\.3\.\d+'
+    os_replacement: 'iOS'
+    os_v1_replacement: '11'
+    os_v2_replacement: '2'
+  - regex: 'CFNetwork/8.* Darwin/17\.4\.\d+'
+    os_replacement: 'iOS'
+    os_v1_replacement: '11'
+    os_v2_replacement: '2'
+    os_v3_replacement: '6'
+  - regex: 'CFNetwork/8.* Darwin/17\.5\.\d+'
+    os_replacement: 'iOS'
+    os_v1_replacement: '11'
+    os_v2_replacement: '3'
+  - regex: 'CFNetwork/9.* Darwin/17\.6\.\d+'
+    os_replacement: 'iOS'
+    os_v1_replacement: '11'
+    os_v2_replacement: '4'
+  - regex: 'CFNetwork/9.* Darwin/17\.7\.\d+'
+    os_replacement: 'iOS'
+    os_v1_replacement: '11'
+    os_v2_replacement: '4'
+    os_v3_replacement: '1'
+  - regex: 'CFNetwork/8.* Darwin/(17)\.\d+'
+    os_replacement: 'iOS'
+    os_v1_replacement: '11'
+  - regex: 'CFNetwork/9.* Darwin/18\.0\.\d+'
+    os_replacement: 'iOS'
+    os_v1_replacement: '12'
+    os_v2_replacement: '0'
+  - regex: 'CFNetwork/9.* Darwin/(18)\.\d+'
+    os_replacement: 'iOS'
+    os_v1_replacement: '12'
+  - regex: 'CFNetwork/.* Darwin/'
+    os_replacement: 'iOS'
+
+  # iOS Apps
+  - regex: '\b(iOS[ /]|iOS; |iPhone(?:/| v|[ _]OS[/,]|; | OS : |\d,\d/|\d,\d; )|iPad/)(\d{1,2})[_\.](\d{1,2})(?:[_\.](\d+)|)'
+    os_replacement: 'iOS'
+  - regex: '\((iOS);'
+
+  ##########
+  # Apple Watch
+  ##########
+  - regex: '(watchOS)/(\d+)\.(\d+)(?:\.(\d+)|)'
+    os_replacement: 'WatchOS'
+
+  ##########################
+  # Outlook on iOS >= 2.62.0
+  ##########################
+  - regex: 'Outlook-(iOS)/\d+\.\d+\.prod\.iphone'
+
+  ##########################
+  # iOS devices, the same regex matches mobile safari webviews
+  ##########################
+  - regex: '(iPod|iPhone|iPad)'
+    os_replacement: 'iOS'
+
+  ##########
+  # Apple TV
+  ##########
+  - regex: '(tvOS)[/ ](\d+)\.(\d+)(?:\.(\d+)|)'
+    os_replacement: 'tvOS'
+
+  ##########
+  # Chrome OS
+  # if version 0.0.0, probably this stuff:
+  # http://code.google.com/p/chromium-os/issues/detail?id=11573
+  # http://code.google.com/p/chromium-os/issues/detail?id=13790
+  ##########
+  - regex: '(CrOS) [a-z0-9_]+ (\d+)\.(\d+)(?:\.(\d+)|)'
+    os_replacement: 'Chrome OS'
+
+  ##########
+  # Linux distros
+  ##########
+  - regex: '([Dd]ebian)'
+    os_replacement: 'Debian'
+  - regex: '(Linux Mint)(?:/(\d+)|)'
+  - regex: '(Mandriva)(?: Linux|)/(?:[\d.-]+m[a-z]{2}(\d+).(\d)|)'
+
+  ##########
+  # Symbian + Symbian OS
+  # http://en.wikipedia.org/wiki/History_of_Symbian
+  ##########
+  - regex: '(Symbian[Oo][Ss])[/ ](\d+)\.(\d+)'
+    os_replacement: 'Symbian OS'
+  - regex: '(Symbian/3).+NokiaBrowser/7\.3'
+    os_replacement: 'Symbian^3 Anna'
+  - regex: '(Symbian/3).+NokiaBrowser/7\.4'
+    os_replacement: 'Symbian^3 Belle'
+  - regex: '(Symbian/3)'
+    os_replacement: 'Symbian^3'
+  - regex: '\b(Series 60|SymbOS|S60Version|S60V\d|S60\b)'
+    os_replacement: 'Symbian OS'
+  - regex: '(MeeGo)'
+  - regex: 'Symbian [Oo][Ss]'
+    os_replacement: 'Symbian OS'
+  - regex: 'Series40;'
+    os_replacement: 'Nokia Series 40'
+  - regex: 'Series30Plus;'
+    os_replacement: 'Nokia Series 30 Plus'
+
+  ##########
+  # BlackBerry devices
+  ##########
+  - regex: '(BB10);.+Version/(\d+)\.(\d+)\.(\d+)'
+    os_replacement: 'BlackBerry OS'
+  - regex: '(Black[Bb]erry)[0-9a-z]+/(\d+)\.(\d+)\.(\d+)(?:\.(\d+)|)'
+    os_replacement: 'BlackBerry OS'
+  - regex: '(Black[Bb]erry).+Version/(\d+)\.(\d+)\.(\d+)(?:\.(\d+)|)'
+    os_replacement: 'BlackBerry OS'
+  - regex: '(RIM Tablet OS) (\d+)\.(\d+)\.(\d+)'
+    os_replacement: 'BlackBerry Tablet OS'
+  - regex: '(Play[Bb]ook)'
+    os_replacement: 'BlackBerry Tablet OS'
+  - regex: '(Black[Bb]erry)'
+    os_replacement: 'BlackBerry OS'
+
+  ##########
+  # KaiOS
+  ##########
+  - regex: '(K[Aa][Ii]OS)\/(\d+)\.(\d+)(?:\.(\d+)|)'
+    os_replacement: 'KaiOS'
+
+  ##########
+  # Firefox OS
+  ##########
+  - regex: '\((?:Mobile|Tablet);.+Gecko/18.0 Firefox/\d+\.\d+'
+    os_replacement: 'Firefox OS'
+    os_v1_replacement: '1'
+    os_v2_replacement: '0'
+    os_v3_replacement: '1'
+
+  - regex: '\((?:Mobile|Tablet);.+Gecko/18.1 Firefox/\d+\.\d+'
+    os_replacement: 'Firefox OS'
+    os_v1_replacement: '1'
+    os_v2_replacement: '1'
+
+  - regex: '\((?:Mobile|Tablet);.+Gecko/26.0 Firefox/\d+\.\d+'
+    os_replacement: 'Firefox OS'
+    os_v1_replacement: '1'
+    os_v2_replacement: '2'
+
+  - regex: '\((?:Mobile|Tablet);.+Gecko/28.0 Firefox/\d+\.\d+'
+    os_replacement: 'Firefox OS'
+    os_v1_replacement: '1'
+    os_v2_replacement: '3'
+
+  - regex: '\((?:Mobile|Tablet);.+Gecko/30.0 Firefox/\d+\.\d+'
+    os_replacement: 'Firefox OS'
+    os_v1_replacement: '1'
+    os_v2_replacement: '4'
+
+  - regex: '\((?:Mobile|Tablet);.+Gecko/32.0 Firefox/\d+\.\d+'
+    os_replacement: 'Firefox OS'
+    os_v1_replacement: '2'
+    os_v2_replacement: '0'
+
+  - regex: '\((?:Mobile|Tablet);.+Gecko/34.0 Firefox/\d+\.\d+'
+    os_replacement: 'Firefox OS'
+    os_v1_replacement: '2'
+    os_v2_replacement: '1'
+
+  # Firefox OS Generic
+  - regex: '\((?:Mobile|Tablet);.+Firefox/\d+\.\d+'
+    os_replacement: 'Firefox OS'
+
+
+  ##########
+  # BREW
+  # yes, Brew is lower-cased for Brew MP
+  ##########
+  - regex: '(BREW)[ /](\d+)\.(\d+)\.(\d+)'
+  - regex: '(BREW);'
+  - regex: '(Brew MP|BMP)[ /](\d+)\.(\d+)\.(\d+)'
+    os_replacement: 'Brew MP'
+  - regex: 'BMP;'
+    os_replacement: 'Brew MP'
+
+  ##########
+  # Google TV
+  ##########
+  - regex: '(GoogleTV)(?: (\d+)\.(\d+)(?:\.(\d+)|)|/[\da-z]+)'
+
+  - regex: '(WebTV)/(\d+).(\d+)'
+
+  ##########
+  # Chromecast
+  ##########
+  - regex: '(CrKey)(?:[/](\d+)\.(\d+)(?:\.(\d+)|)|)'
+    os_replacement: 'Chromecast'
+
+  ##########
+  # Misc mobile
+  ##########
+  - regex: '(hpw|web)OS/(\d+)\.(\d+)(?:\.(\d+)|)'
+    os_replacement: 'webOS'
+  - regex: '(VRE);'
+
+  ##########
+  # Generic patterns
+  # since the majority of os cases are very specific, these go last
+  ##########
+  - regex: '(Fedora|Red Hat|PCLinuxOS|Puppy|Ubuntu|Kindle|Bada|Sailfish|Lubuntu|BackTrack|Slackware|(?:Free|Open|Net|\b)BSD)[/ ](\d+)\.(\d+)(?:\.(\d+)|)(?:\.(\d+)|)'
+
+  # Gentoo Linux + Kernel Version
+  - regex: '(Linux)[ /](\d+)\.(\d+)(?:\.(\d+)|).*gentoo'
+    os_replacement: 'Gentoo'
+
+  # Opera Mini Bada
+  - regex: '\((Bada);'
+
+  # just os
+  - regex: '(Windows|Android|WeTab|Maemo|Web0S)'
+  - regex: '(Ubuntu|Kubuntu|Arch Linux|CentOS|Slackware|Gentoo|openSUSE|SUSE|Red Hat|Fedora|PCLinuxOS|Mageia|(?:Free|Open|Net|\b)BSD)'
+  # Linux + Kernel Version
+  - regex: '(Linux)(?:[ /](\d+)\.(\d+)(?:\.(\d+)|)|)'
+  - regex: 'SunOS'
+    os_replacement: 'Solaris'
+  # Wget/x.x.x (linux-gnu)
+  - regex: '\(linux-gnu\)'
+    os_replacement: 'Linux'
+  - regex: '\(x86_64-redhat-linux-gnu\)'
+    os_replacement: 'Red Hat'
+  - regex: '\((freebsd)(\d+)\.(\d+)\)'
+    os_replacement: 'FreeBSD'
+  - regex: 'linux'
+    os_replacement: 'Linux'
+
+  # Roku Digital-Video-Players https://www.roku.com/
+  - regex: '^(Roku)/DVP-(\d+)\.(\d+)'
+
+device_parsers:
+
+  #########
+  # Mobile Spiders
+  # Catch the mobile crawler before checking for iPhones / Androids.
+  #########
+  - regex: '(?:(?:iPhone|Windows CE|Windows Phone|Android).*(?:(?:Bot|Yeti)-Mobile|YRSpider|BingPreview|bots?/\d|(?:bot|spider)\.html)|AdsBot-Google-Mobile.*iPhone)'
+    regex_flag: 'i'
+    device_replacement: 'Spider'
+    brand_replacement: 'Spider'
+    model_replacement: 'Smartphone'
+  - regex: '(?:DoCoMo|\bMOT\b|\bLG\b|Nokia|Samsung|SonyEricsson).*(?:(?:Bot|Yeti)-Mobile|bots?/\d|(?:bot|crawler)\.html|(?:jump|google|Wukong)bot|ichiro/mobile|/spider|YahooSeeker)'
+    regex_flag: 'i'
+    device_replacement: 'Spider'
+    brand_replacement: 'Spider'
+    model_replacement: 'Feature Phone'
+
+  # PTST / WebPageTest.org crawlers
+  - regex: ' PTST/\d+(?:\.)?\d+$'
+    device_replacement: 'Spider'
+    brand_replacement: 'Spider'
+
+  # Datanyze.com spider
+  - regex: 'X11; Datanyze; Linux'
+    device_replacement: 'Spider'
+    brand_replacement: 'Spider'
+
+  # aspiegel.com spider (owned by Huawei)
+  - regex: 'Mozilla.*Mobile.*AspiegelBot'
+    device_replacement: 'Spider'
+    brand_replacement: 'Spider'
+    model_replacement: 'Smartphone'
+  - regex: 'Mozilla.*AspiegelBot'
+    device_replacement: 'Spider'
+    brand_replacement: 'Spider'
+    model_replacement: 'Desktop'
+
+  #########
+  # WebBrowser for SmartWatch
+  # @ref: https://play.google.com/store/apps/details?id=se.vaggan.webbrowser&hl=en
+  #########
+  - regex: '\bSmartWatch {0,2}\( {0,2}([^;]+) {0,2}; {0,2}([^;]+) {0,2};'
+    device_replacement: '$1 $2'
+    brand_replacement: '$1'
+    model_replacement: '$2'
+
+  ######################################################################
+  # Android parsers
+  #
+  # @ref: https://support.google.com/googleplay/answer/1727131?hl=en
+  ######################################################################
+
+  # Android Application
+  - regex: 'Android Application[^\-]+ - (Sony) ?(Ericsson|) (.+) \w+ - '
+    device_replacement: '$1 $2'
+    brand_replacement: '$1$2'
+    model_replacement: '$3'
+  - regex: 'Android Application[^\-]+ - (?:HTC|HUAWEI|LGE|LENOVO|MEDION|TCT) (HTC|HUAWEI|LG|LENOVO|MEDION|ALCATEL)[ _\-](.+) \w+ - '
+    regex_flag: 'i'
+    device_replacement: '$1 $2'
+    brand_replacement: '$1'
+    model_replacement: '$2'
+  - regex: 'Android Application[^\-]+ - ([^ ]+) (.+) \w+ - '
+    device_replacement: '$1 $2'
+    brand_replacement: '$1'
+    model_replacement: '$2'
+
+  #########
+  # 3Q
+  # @ref: http://www.3q-int.com/
+  #########
+  - regex: '; *([BLRQ]C\d{4}[A-Z]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: '3Q $1'
+    brand_replacement: '3Q'
+    model_replacement: '$1'
+  - regex: '; *(?:3Q_)([^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: '3Q $1'
+    brand_replacement: '3Q'
+    model_replacement: '$1'
+
+  #########
+  # Acer
+  # @ref: http://us.acer.com/ac/en/US/content/group/tablets
+  #########
+  - regex: 'Android [34].*; *(A100|A101|A110|A200|A210|A211|A500|A501|A510|A511|A700(?: Lite| 3G|)|A701|B1-A71|A1-\d{3}|B1-\d{3}|V360|V370|W500|W500P|W501|W501P|W510|W511|W700|Slider SL101|DA22[^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'Acer'
+    model_replacement: '$1'
+  - regex: '; *Acer Iconia Tab ([^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'Acer'
+    model_replacement: '$1'
+  - regex: '; *(Z1[1235]0|E320[^/]*|S500|S510|Liquid[^;/]*|Iconia A\d+)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'Acer'
+    model_replacement: '$1'
+  - regex: '; *(Acer |ACER )([^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1$2'
+    brand_replacement: 'Acer'
+    model_replacement: '$2'
+
+  #########
+  # Advent
+  # @ref: https://en.wikipedia.org/wiki/Advent_Vega
+  # @note: VegaBean and VegaComb (names derived from jellybean, honeycomb) are
+  #   custom ROM builds for Vega
+  #########
+  - regex: '; *(Advent |)(Vega(?:Bean|Comb|)).*?(?: Build|\) AppleWebKit)'
+    device_replacement: '$1$2'
+    brand_replacement: 'Advent'
+    model_replacement: '$2'
+
+  #########
+  # Ainol
+  # @ref: http://www.ainol.com/plugin.php?identifier=ainol&module=product
+  #########
+  - regex: '; *(Ainol |)((?:NOVO|[Nn]ovo)[^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1$2'
+    brand_replacement: 'Ainol'
+    model_replacement: '$2'
+
+  #########
+  # Airis
+  # @ref: http://airis.es/Tienda/Default.aspx?idG=001
+  #########
+  - regex: '; *AIRIS[ _\-]?([^/;\)]+) *(?:;|\)|Build)'
+    regex_flag: 'i'
+    device_replacement: '$1'
+    brand_replacement: 'Airis'
+    model_replacement: '$1'
+  - regex: '; *(OnePAD[^;/]+?)(?: Build|\) AppleWebKit)'
+    regex_flag: 'i'
+    device_replacement: '$1'
+    brand_replacement: 'Airis'
+    model_replacement: '$1'
+
+  #########
+  # Airpad
+  # @ref: ??
+  #########
+  - regex: '; *Airpad[ \-]([^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: 'Airpad $1'
+    brand_replacement: 'Airpad'
+    model_replacement: '$1'
+
+  #########
+  # Alcatel - TCT
+  # @ref: http://www.alcatelonetouch.com/global-en/products/smartphones.html
+  #########
+  - regex: '; *(one ?touch) (EVO7|T10|T20)(?: Build|\) AppleWebKit)'
+    device_replacement: 'Alcatel One Touch $2'
+    brand_replacement: 'Alcatel'
+    model_replacement: 'One Touch $2'
+  - regex: '; *(?:alcatel[ _]|)(?:(?:one[ _]?touch[ _])|ot[ \-])([^;/]+?)(?: Build|\) AppleWebKit)'
+    regex_flag: 'i'
+    device_replacement: 'Alcatel One Touch $1'
+    brand_replacement: 'Alcatel'
+    model_replacement: 'One Touch $1'
+  - regex: '; *(TCL)[ _]([^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1 $2'
+    brand_replacement: '$1'
+    model_replacement: '$2'
+  # operator specific models
+  - regex: '; *(Vodafone Smart II|Optimus_Madrid)(?: Build|\) AppleWebKit)'
+    device_replacement: 'Alcatel $1'
+    brand_replacement: 'Alcatel'
+    model_replacement: '$1'
+  - regex: '; *BASE_Lutea_3(?: Build|\) AppleWebKit)'
+    device_replacement: 'Alcatel One Touch 998'
+    brand_replacement: 'Alcatel'
+    model_replacement: 'One Touch 998'
+  - regex: '; *BASE_Varia(?: Build|\) AppleWebKit)'
+    device_replacement: 'Alcatel One Touch 918D'
+    brand_replacement: 'Alcatel'
+    model_replacement: 'One Touch 918D'
+
+  #########
+  # Allfine
+  # @ref: http://www.myallfine.com/Products.asp
+  #########
+  - regex: '; *((?:FINE|Fine)\d[^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'Allfine'
+    model_replacement: '$1'
+
+  #########
+  # Allview
+  # @ref: http://www.allview.ro/produse/droseries/lista-tablete-pc/
+  #########
+  - regex: '; *(ALLVIEW[ _]?|Allview[ _]?)((?:Speed|SPEED).*?)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1$2'
+    brand_replacement: 'Allview'
+    model_replacement: '$2'
+  - regex: '; *(ALLVIEW[ _]?|Allview[ _]?|)(AX1_Shine|AX2_Frenzy)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1$2'
+    brand_replacement: 'Allview'
+    model_replacement: '$2'
+  - regex: '; *(ALLVIEW[ _]?|Allview[ _]?)([^;/]*?)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1$2'
+    brand_replacement: 'Allview'
+    model_replacement: '$2'
+
+  #########
+  # Allwinner
+  # @ref: http://www.allwinner.com/
+  # @models: A31 (13.3"),A20,A10,
+  #########
+  - regex: '; *(A13-MID)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'Allwinner'
+    model_replacement: '$1'
+  - regex: '; *(Allwinner)[ _\-]?([^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1 $2'
+    brand_replacement: 'Allwinner'
+    model_replacement: '$1'
+
+  #########
+  # Amaway
+  # @ref: http://www.amaway.cn/
+  #########
+  - regex: '; *(A651|A701B?|A702|A703|A705|A706|A707|A711|A712|A713|A717|A722|A785|A801|A802|A803|A901|A902|A1002|A1003|A1006|A1007|A9701|A9703|Q710|Q80)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'Amaway'
+    model_replacement: '$1'
+
+  #########
+  # Amoi
+  # @ref: http://www.amoi.com/en/prd/prd_index.jspx
+  #########
+  - regex: '; *(?:AMOI|Amoi)[ _]([^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: 'Amoi $1'
+    brand_replacement: 'Amoi'
+    model_replacement: '$1'
+  - regex: '^(?:AMOI|Amoi)[ _]([^;/]+?) Linux'
+    device_replacement: 'Amoi $1'
+    brand_replacement: 'Amoi'
+    model_replacement: '$1'
+
+  #########
+  # Aoc
+  # @ref: http://latin.aoc.com/media_tablet
+  #########
+  - regex: '; *(MW(?:0[789]|10)[^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'Aoc'
+    model_replacement: '$1'
+
+  #########
+  # Aoson
+  # @ref: http://www.luckystar.com.cn/en/mid.aspx?page=1
+  # @ref: http://www.luckystar.com.cn/en/mobiletel.aspx?page=1
+  # @note: brand owned by luckystar
+  #########
+  - regex: '; *(G7|M1013|M1015G|M11[CG]?|M-?12[B]?|M15|M19[G]?|M30[ACQ]?|M31[GQ]|M32|M33[GQ]|M36|M37|M38|M701T|M710|M712B|M713|M715G|M716G|M71(?:G|GS|T|)|M72[T]?|M73[T]?|M75[GT]?|M77G|M79T|M7L|M7LN|M81|M810|M81T|M82|M92|M92KS|M92S|M717G|M721|M722G|M723|M725G|M739|M785|M791|M92SK|M93D)(?: Build|\) AppleWebKit)'
+    device_replacement: 'Aoson $1'
+    brand_replacement: 'Aoson'
+    model_replacement: '$1'
+  - regex: '; *Aoson ([^;/]+?)(?: Build|\) AppleWebKit)'
+    regex_flag: 'i'
+    device_replacement: 'Aoson $1'
+    brand_replacement: 'Aoson'
+    model_replacement: '$1'
+
+  #########
+  # Apanda
+  # @ref: http://www.apanda.com.cn/
+  #########
+  - regex: '; *[Aa]panda[ _\-]([^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: 'Apanda $1'
+    brand_replacement: 'Apanda'
+    model_replacement: '$1'
+
+  #########
+  # Archos
+  # @ref: http://www.archos.com/de/products/tablets.html
+  # @ref: http://www.archos.com/de/products/smartphones/index.html
+  #########
+  - regex: '; *(?:ARCHOS|Archos) ?(GAMEPAD.*?)(?: Build|\) AppleWebKit)'
+    device_replacement: 'Archos $1'
+    brand_replacement: 'Archos'
+    model_replacement: '$1'
+  - regex: 'ARCHOS; GOGI; ([^;]+);'
+    device_replacement: 'Archos $1'
+    brand_replacement: 'Archos'
+    model_replacement: '$1'
+  - regex: '(?:ARCHOS|Archos)[ _]?(.*?)(?: Build|[;/\(\)\-]|$)'
+    device_replacement: 'Archos $1'
+    brand_replacement: 'Archos'
+    model_replacement: '$1'
+  - regex: '; *(AN(?:7|8|9|10|13)[A-Z0-9]{1,4})(?: Build|\) AppleWebKit)'
+    device_replacement: 'Archos $1'
+    brand_replacement: 'Archos'
+    model_replacement: '$1'
+  - regex: '; *(A28|A32|A43|A70(?:BHT|CHT|HB|S|X)|A101(?:B|C|IT)|A7EB|A7EB-WK|101G9|80G9)(?: Build|\) AppleWebKit)'
+    device_replacement: 'Archos $1'
+    brand_replacement: 'Archos'
+    model_replacement: '$1'
+
+  #########
+  # A-rival
+  # @ref: http://www.a-rival.de/de/
+  #########
+  - regex: '; *(PAD-FMD[^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'Arival'
+    model_replacement: '$1'
+  - regex: '; *(BioniQ) ?([^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1 $2'
+    brand_replacement: 'Arival'
+    model_replacement: '$1 $2'
+
+  #########
+  # Arnova
+  # @ref: http://arnovatech.com/
+  #########
+  - regex: '; *(AN\d[^;/]+|ARCHM\d+)(?: Build|\) AppleWebKit)'
+    device_replacement: 'Arnova $1'
+    brand_replacement: 'Arnova'
+    model_replacement: '$1'
+  - regex: '; *(?:ARNOVA|Arnova) ?([^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: 'Arnova $1'
+    brand_replacement: 'Arnova'
+    model_replacement: '$1'
+
+  #########
+  # Assistant
+  # @ref: http://www.assistant.ua
+  #########
+  - regex: '; *(?:ASSISTANT |)(AP)-?([1789]\d{2}[A-Z]{0,2}|80104)(?: Build|\) AppleWebKit)'
+    device_replacement: 'Assistant $1-$2'
+    brand_replacement: 'Assistant'
+    model_replacement: '$1-$2'
+
+  #########
+  # Asus
+  # @ref: http://www.asus.com/uk/Tablets_Mobile/
+  #########
+  - regex: '; *(ME17\d[^;/]*|ME3\d{2}[^;/]+|K00[A-Z]|Nexus 10|Nexus 7(?: 2013|)|PadFone[^;/]*|Transformer[^;/]*|TF\d{3}[^;/]*|eeepc)(?: Build|\) AppleWebKit)'
+    device_replacement: 'Asus $1'
+    brand_replacement: 'Asus'
+    model_replacement: '$1'
+  - regex: '; *ASUS[ _]*([^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: 'Asus $1'
+    brand_replacement: 'Asus'
+    model_replacement: '$1'
+
+  #########
+  # Garmin-Asus
+  #########
+  - regex: '; *Garmin-Asus ([^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: 'Garmin-Asus $1'
+    brand_replacement: 'Garmin-Asus'
+    model_replacement: '$1'
+  - regex: '; *(Garminfone)(?: Build|\) AppleWebKit)'
+    device_replacement: 'Garmin $1'
+    brand_replacement: 'Garmin-Asus'
+    model_replacement: '$1'
+
+  #########
+  # Attab
+  # @ref: http://www.theattab.com/
+  #########
+  - regex: '; (@TAB-[^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'Attab'
+    model_replacement: '$1'
+
+  #########
+  # Audiosonic
+  # @ref: ??
+  # @note: Take care with Docomo T-01 Toshiba
+  #########
+  - regex: '; *(T-(?:07|[^0]\d)[^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'Audiosonic'
+    model_replacement: '$1'
+
+  #########
+  # Axioo
+  # @ref: http://www.axiooworld.com/ww/index.php
+  #########
+  - regex: '; *(?:Axioo[ _\-]([^;/]+?)|(picopad)[ _\-]([^;/]+?))(?: Build|\) AppleWebKit)'
+    regex_flag: 'i'
+    device_replacement: 'Axioo $1$2 $3'
+    brand_replacement: 'Axioo'
+    model_replacement: '$1$2 $3'
+
+  #########
+  # Azend
+  # @ref: http://azendcorp.com/index.php/products/portable-electronics
+  #########
+  - regex: '; *(V(?:100|700|800)[^;/]*)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'Azend'
+    model_replacement: '$1'
+
+  #########
+  # Bak
+  # @ref: http://www.bakinternational.com/produtos.php?cat=80
+  #########
+  - regex: '; *(IBAK\-[^;/]*)(?: Build|\) AppleWebKit)'
+    regex_flag: 'i'
+    device_replacement: '$1'
+    brand_replacement: 'Bak'
+    model_replacement: '$1'
+
+  #########
+  # Bedove
+  # @ref: http://www.bedove.com/product.html
+  # @models: HY6501|HY5001|X12|X21|I5
+  #########
+  - regex: '; *(HY5001|HY6501|X12|X21|I5)(?: Build|\) AppleWebKit)'
+    device_replacement: 'Bedove $1'
+    brand_replacement: 'Bedove'
+    model_replacement: '$1'
+
+  #########
+  # Benss
+  # @ref: http://www.benss.net/
+  #########
+  - regex: '; *(JC-[^;/]*)(?: Build|\) AppleWebKit)'
+    device_replacement: 'Benss $1'
+    brand_replacement: 'Benss'
+    model_replacement: '$1'
+
+  #########
+  # Blackberry
+  # @ref: http://uk.blackberry.com/
+  # @note: Android Apps seams to be used here
+  #########
+  - regex: '; *(BB) ([^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1 $2'
+    brand_replacement: 'Blackberry'
+    model_replacement: '$2'
+
+  #########
+  # Blackbird
+  # @ref: http://iblackbird.co.kr
+  #########
+  - regex: '; *(BlackBird)[ _](I8.*?)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1 $2'
+    brand_replacement: '$1'
+    model_replacement: '$2'
+  - regex: '; *(BlackBird)[ _](.*?)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1 $2'
+    brand_replacement: '$1'
+    model_replacement: '$2'
+
+  #########
+  # Blaupunkt
+  # @ref: http://www.blaupunkt.com
+  #########
+  # Endeavour
+  - regex: '; *([0-9]+BP[EM][^;/]*|Endeavour[^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: 'Blaupunkt $1'
+    brand_replacement: 'Blaupunkt'
+    model_replacement: '$1'
+
+  #########
+  # Blu
+  # @ref: http://bluproducts.com
+  #########
+  - regex: '; *((?:BLU|Blu)[ _\-])([^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1$2'
+    brand_replacement: 'Blu'
+    model_replacement: '$2'
+  # BMOBILE = operator branded device
+  - regex: '; *(?:BMOBILE )?(Blu|BLU|DASH [^;/]+|VIVO 4\.3|TANK 4\.5)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'Blu'
+    model_replacement: '$1'
+
+  #########
+  # Blusens
+  # @ref: http://www.blusens.com/es/?sg=1&sv=al&roc=1
+  #########
+  # tablet
+  - regex: '; *(TOUCH\d[^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'Blusens'
+    model_replacement: '$1'
+
+  #########
+  # Bmobile
+  # @ref: http://bmobile.eu.com/?categoria=smartphones-2
+  # @note: Might collide with Maxx as AX is used also there.
+  #########
+  # smartphone
+  - regex: '; *(AX5\d+)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'Bmobile'
+    model_replacement: '$1'
+
+  #########
+  # bq
+  # @ref: http://bqreaders.com
+  #########
+  - regex: '; *([Bb]q) ([^;/]+?);?(?: Build|\) AppleWebKit)'
+    device_replacement: '$1 $2'
+    brand_replacement: 'bq'
+    model_replacement: '$2'
+  - regex: '; *(Maxwell [^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'bq'
+    model_replacement: '$1'
+
+  #########
+  # Braun Phototechnik
+  # @ref: http://www.braun-phototechnik.de/en/products/list/~pcat.250/Tablet-PC.html
+  #########
+  - regex: '; *((?:B-Tab|B-TAB) ?\d[^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'Braun'
+    model_replacement: '$1'
+
+  #########
+  # Broncho
+  # @ref: http://www.broncho.cn/
+  #########
+  - regex: '; *(Broncho) ([^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1 $2'
+    brand_replacement: '$1'
+    model_replacement: '$2'
+
+  #########
+  # Captiva
+  # @ref: http://www.captiva-power.de
+  #########
+  - regex: '; *CAPTIVA ([^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: 'Captiva $1'
+    brand_replacement: 'Captiva'
+    model_replacement: '$1'
+
+  #########
+  # Casio
+  # @ref: http://www.casiogzone.com/
+  #########
+  - regex: '; *(C771|CAL21|IS11CA)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'Casio'
+    model_replacement: '$1'
+
+  #########
+  # Cat
+  # @ref: http://www.cat-sound.com
+  #########
+  - regex: '; *(?:Cat|CAT) ([^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: 'Cat $1'
+    brand_replacement: 'Cat'
+    model_replacement: '$1'
+  - regex: '; *(?:Cat)(Nova.*?)(?: Build|\) AppleWebKit)'
+    device_replacement: 'Cat $1'
+    brand_replacement: 'Cat'
+    model_replacement: '$1'
+  - regex: '; *(INM8002KP|ADM8000KP_[AB])(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'Cat'
+    model_replacement: 'Tablet PHOENIX 8.1J0'
+
+  #########
+  # Celkon
+  # @ref: http://www.celkonmobiles.com/?_a=products
+  # @models: A10, A19Q, A101, A105, A107, A107\+, A112, A118, A119, A119Q, A15, A19, A20, A200, A220, A225, A22 Race, A27, A58, A59, A60, A62, A63, A64, A66, A67, A69, A75, A77, A79, A8\+, A83, A85, A86, A87, A89 Ultima, A9\+, A90, A900, A95, A97i, A98, AR 40, AR 45, AR 50, ML5
+  #########
+  - regex: '; *(?:[Cc]elkon[ _\*]|CELKON[ _\*])([^;/\)]+) ?(?:Build|;|\))'
+    device_replacement: '$1'
+    brand_replacement: 'Celkon'
+    model_replacement: '$1'
+  - regex: 'Build/(?:[Cc]elkon)+_?([^;/_\)]+)'
+    device_replacement: '$1'
+    brand_replacement: 'Celkon'
+    model_replacement: '$1'
+  - regex: '; *(CT)-?(\d+)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1$2'
+    brand_replacement: 'Celkon'
+    model_replacement: '$1$2'
+  # smartphones
+  - regex: '; *(A19|A19Q|A105|A107[^;/\)]*) ?(?:Build|;|\))'
+    device_replacement: '$1'
+    brand_replacement: 'Celkon'
+    model_replacement: '$1'
+
+  #########
+  # ChangJia
+  # @ref: http://www.cjshowroom.com/eproducts.aspx?classcode=004001001
+  # @brief: China manufacturer makes tablets for different small brands
+  #         (eg. http://www.zeepad.net/index.html)
+  #########
+  - regex: '; *(TPC[0-9]{4,5})(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'ChangJia'
+    model_replacement: '$1'
+
+  #########
+  # Cloudfone
+  # @ref: http://www.cloudfonemobile.com/
+  #########
+  - regex: '; *(Cloudfone)[ _](Excite)([^ ][^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1 $2 $3'
+    brand_replacement: 'Cloudfone'
+    model_replacement: '$1 $2 $3'
+  - regex: '; *(Excite|ICE)[ _](\d+[^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: 'Cloudfone $1 $2'
+    brand_replacement: 'Cloudfone'
+    model_replacement: 'Cloudfone $1 $2'
+  - regex: '; *(Cloudfone|CloudPad)[ _]([^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1 $2'
+    brand_replacement: 'Cloudfone'
+    model_replacement: '$1 $2'
+
+  #########
+  # Cmx
+  # @ref: http://cmx.at/de/
+  #########
+  - regex: '; *((?:Aquila|Clanga|Rapax)[^;/]+?)(?: Build|\) AppleWebKit)'
+    regex_flag: 'i'
+    device_replacement: '$1'
+    brand_replacement: 'Cmx'
+    model_replacement: '$1'
+
+  #########
+  # CobyKyros
+  # @ref: http://cobykyros.com
+  # @note: Be careful with MID\d{3} from MpMan or Manta
+  #########
+  - regex: '; *(?:CFW-|Kyros )?(MID[0-9]{4}(?:[ABC]|SR|TV)?)(\(3G\)-4G| GB 8K| 3G| 8K| GB)? *(?:Build|[;\)])'
+    device_replacement: 'CobyKyros $1$2'
+    brand_replacement: 'CobyKyros'
+    model_replacement: '$1$2'
+
+  #########
+  # Coolpad
+  # @ref: ??
+  #########
+  - regex: '; *([^;/]*)Coolpad[ _]([^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1$2'
+    brand_replacement: 'Coolpad'
+    model_replacement: '$1$2'
+
+  #########
+  # Cube
+  # @ref: http://www.cube-tablet.com/buy-products.html
+  #########
+  - regex: '; *(CUBE[ _])?([KU][0-9]+ ?GT.*?|A5300)(?: Build|\) AppleWebKit)'
+    regex_flag: 'i'
+    device_replacement: '$1$2'
+    brand_replacement: 'Cube'
+    model_replacement: '$2'
+
+  #########
+  # Cubot
+  # @ref: http://www.cubotmall.com/
+  #########
+  - regex: '; *CUBOT ([^;/]+?)(?: Build|\) AppleWebKit)'
+    regex_flag: 'i'
+    device_replacement: '$1'
+    brand_replacement: 'Cubot'
+    model_replacement: '$1'
+  - regex: '; *(BOBBY)(?: Build|\) AppleWebKit)'
+    regex_flag: 'i'
+    device_replacement: '$1'
+    brand_replacement: 'Cubot'
+    model_replacement: '$1'
+
+  #########
+  # Danew
+  # @ref: http://www.danew.com/produits-tablette.php
+  #########
+  - regex: '; *(Dslide [^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'Danew'
+    model_replacement: '$1'
+
+  #########
+  # Dell
+  # @ref: http://www.dell.com
+  # @ref: http://www.softbank.jp/mobile/support/product/101dl/
+  # @ref: http://www.softbank.jp/mobile/support/product/001dl/
+  # @ref: http://developer.emnet.ne.jp/android.html
+  # @ref: http://www.dell.com/in/p/mobile-xcd28/pd
+  # @ref: http://www.dell.com/in/p/mobile-xcd35/pd
+  #########
+  - regex: '; *(XCD)[ _]?(28|35)(?: Build|\) AppleWebKit)'
+    device_replacement: 'Dell $1$2'
+    brand_replacement: 'Dell'
+    model_replacement: '$1$2'
+  - regex: '; *(001DL)(?: Build|\) AppleWebKit)'
+    device_replacement: 'Dell $1'
+    brand_replacement: 'Dell'
+    model_replacement: 'Streak'
+  - regex: '; *(?:Dell|DELL) (Streak)(?: Build|\) AppleWebKit)'
+    device_replacement: 'Dell $1'
+    brand_replacement: 'Dell'
+    model_replacement: 'Streak'
+  - regex: '; *(101DL|GS01|Streak Pro[^;/]*)(?: Build|\) AppleWebKit)'
+    device_replacement: 'Dell $1'
+    brand_replacement: 'Dell'
+    model_replacement: 'Streak Pro'
+  - regex: '; *([Ss]treak ?7)(?: Build|\) AppleWebKit)'
+    device_replacement: 'Dell $1'
+    brand_replacement: 'Dell'
+    model_replacement: 'Streak 7'
+  - regex: '; *(Mini-3iX)(?: Build|\) AppleWebKit)'
+    device_replacement: 'Dell $1'
+    brand_replacement: 'Dell'
+    model_replacement: '$1'
+  - regex: '; *(?:Dell|DELL)[ _](Aero|Venue|Thunder|Mini.*?|Streak[ _]Pro)(?: Build|\) AppleWebKit)'
+    device_replacement: 'Dell $1'
+    brand_replacement: 'Dell'
+    model_replacement: '$1'
+  - regex: '; *Dell[ _]([^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: 'Dell $1'
+    brand_replacement: 'Dell'
+    model_replacement: '$1'
+  - regex: '; *Dell ([^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: 'Dell $1'
+    brand_replacement: 'Dell'
+    model_replacement: '$1'
+
+  #########
+  # Denver
+  # @ref: http://www.denver-electronics.com/tablets1/
+  #########
+  - regex: '; *(TA[CD]-\d+[^;/]*)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'Denver'
+    model_replacement: '$1'
+
+  #########
+  # Dex
+  # @ref: http://dex.ua/
+  #########
+  - regex: '; *(iP[789]\d{2}(?:-3G)?|IP10\d{2}(?:-8GB)?)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'Dex'
+    model_replacement: '$1'
+
+  #########
+  # DNS AirTab
+  # @ref: http://www.dns-shop.ru/
+  #########
+  - regex: '; *(AirTab)[ _\-]([^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1 $2'
+    brand_replacement: 'DNS'
+    model_replacement: '$1 $2'
+
+  #########
+  # Docomo (Operator Branded Device)
+  # @ref: http://www.ipentec.com/document/document.aspx?page=android-useragent
+  #########
+  - regex: '; *(F\-\d[^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'Fujitsu'
+    model_replacement: '$1'
+  - regex: '; *(HT-03A)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'HTC'
+    model_replacement: 'Magic'
+  - regex: '; *(HT\-\d[^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'HTC'
+    model_replacement: '$1'
+  - regex: '; *(L\-\d[^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'LG'
+    model_replacement: '$1'
+  - regex: '; *(N\-\d[^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'Nec'
+    model_replacement: '$1'
+  - regex: '; *(P\-\d[^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'Panasonic'
+    model_replacement: '$1'
+  - regex: '; *(SC\-\d[^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'Samsung'
+    model_replacement: '$1'
+  - regex: '; *(SH\-\d[^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'Sharp'
+    model_replacement: '$1'
+  - regex: '; *(SO\-\d[^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'SonyEricsson'
+    model_replacement: '$1'
+  - regex: '; *(T\-0[12][^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'Toshiba'
+    model_replacement: '$1'
+
+  #########
+  # DOOV
+  # @ref: http://www.doov.com.cn/
+  #########
+  - regex: '; *(DOOV)[ _]([^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1 $2'
+    brand_replacement: 'DOOV'
+    model_replacement: '$2'
+
+  #########
+  # Enot
+  # @ref: http://www.enot.ua/
+  #########
+  - regex: '; *(Enot|ENOT)[ -]?([^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1 $2'
+    brand_replacement: 'Enot'
+    model_replacement: '$2'
+
+  #########
+  # Evercoss
+  # @ref: http://evercoss.com/android/
+  #########
+  - regex: '; *[^;/]+ Build/(?:CROSS|Cross)+[ _\-]([^\)]+)'
+    device_replacement: 'CROSS $1'
+    brand_replacement: 'Evercoss'
+    model_replacement: 'Cross $1'
+  - regex: '; *(CROSS|Cross)[ _\-]([^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1 $2'
+    brand_replacement: 'Evercoss'
+    model_replacement: 'Cross $2'
+
+  #########
+  # Explay
+  # @ref: http://explay.ru/
+  #########
+  - regex: '; *Explay[_ ](.+?)(?:[\)]| Build)'
+    device_replacement: '$1'
+    brand_replacement: 'Explay'
+    model_replacement: '$1'
+
+  #########
+  # Fly
+  # @ref: http://www.fly-phone.com/
+  #########
+  - regex: '; *(IQ.*?)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'Fly'
+    model_replacement: '$1'
+  - regex: '; *(Fly|FLY)[ _](IQ[^;]+?|F[34]\d+[^;]*?);?(?: Build|\) AppleWebKit)'
+    device_replacement: '$1 $2'
+    brand_replacement: 'Fly'
+    model_replacement: '$2'
+
+  #########
+  # Fujitsu
+  # @ref: http://www.fujitsu.com/global/
+  #########
+  - regex: '; *(M532|Q572|FJL21)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'Fujitsu'
+    model_replacement: '$1'
+
+  #########
+  # Galapad
+  # @ref: http://www.galapad.net/product.html
+  #########
+  - regex: '; *(G1)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'Galapad'
+    model_replacement: '$1'
+
+  #########
+  # Geeksphone
+  # @ref: http://www.geeksphone.com/
+  #########
+  - regex: '; *(Geeksphone) ([^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1 $2'
+    brand_replacement: '$1'
+    model_replacement: '$2'
+
+  #########
+  # Gfive
+  # @ref: http://www.gfivemobile.com/en
+  #########
+  #- regex: '; *(G\'?FIVE) ([^;/]+) Build' # there is a problem with python yaml parser here
+  - regex: '; *(G[^F]?FIVE) ([^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1 $2'
+    brand_replacement: 'Gfive'
+    model_replacement: '$2'
+
+  #########
+  # Gionee
+  # @ref: http://www.gionee.com/
+  #########
+  - regex: '; *(Gionee)[ _\-]([^;/]+?)(?:/[^;/]+|)(?: Build|\) AppleWebKit)'
+    regex_flag: 'i'
+    device_replacement: '$1 $2'
+    brand_replacement: 'Gionee'
+    model_replacement: '$2'
+  - regex: '; *(GN\d+[A-Z]?|INFINITY_PASSION|Ctrl_V1)(?: Build|\) AppleWebKit)'
+    device_replacement: 'Gionee $1'
+    brand_replacement: 'Gionee'
+    model_replacement: '$1'
+  - regex: '; *(E3) Build/JOP40D'
+    device_replacement: 'Gionee $1'
+    brand_replacement: 'Gionee'
+    model_replacement: '$1'
+  - regex: '\sGIONEE[-\s_](\w*)'
+    regex_flag: 'i'
+    device_replacement: 'Gionee $1'
+    brand_replacement: 'Gionee'
+    model_replacement: '$1'
+
+  #########
+  # GoClever
+  # @ref: http://www.goclever.com
+  #########
+  - regex: '; *((?:FONE|QUANTUM|INSIGNIA) \d+[^;/]*|PLAYTAB)(?: Build|\) AppleWebKit)'
+    device_replacement: 'GoClever $1'
+    brand_replacement: 'GoClever'
+    model_replacement: '$1'
+  - regex: '; *GOCLEVER ([^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: 'GoClever $1'
+    brand_replacement: 'GoClever'
+    model_replacement: '$1'
+
+  #########
+  # Google
+  # @ref: http://www.google.de/glass/start/
+  #########
+  - regex: '; *(Glass \d+)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'Google'
+    model_replacement: '$1'
+  - regex: '; *(Pixel.*?)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'Google'
+    model_replacement: '$1'
+
+  #########
+  # Gigabyte
+  # @ref: http://gsmart.gigabytecm.com/en/
+  #########
+  - regex: '; *(GSmart)[ -]([^/]+)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1 $2'
+    brand_replacement: 'Gigabyte'
+    model_replacement: '$1 $2'
+
+  #########
+  # Freescale development boards
+  # @ref: http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=IMX53QSB
+  #########
+  - regex: '; *(imx5[13]_[^/]+)(?: Build|\) AppleWebKit)'
+    device_replacement: 'Freescale $1'
+    brand_replacement: 'Freescale'
+    model_replacement: '$1'
+
+  #########
+  # Haier
+  # @ref: http://www.haier.com/
+  # @ref: http://www.haier.com/de/produkte/tablet/
+  #########
+  - regex: '; *Haier[ _\-]([^/]+)(?: Build|\) AppleWebKit)'
+    device_replacement: 'Haier $1'
+    brand_replacement: 'Haier'
+    model_replacement: '$1'
+  - regex: '; *(PAD1016)(?: Build|\) AppleWebKit)'
+    device_replacement: 'Haipad $1'
+    brand_replacement: 'Haipad'
+    model_replacement: '$1'
+
+  #########
+  # Haipad
+  # @ref: http://www.haipad.net/
+  # @models: V7P|M7SM7S|M9XM9X|M7XM7X|M9|M8|M7-M|M1002|M7|M701
+  #########
+  - regex: '; *(M701|M7|M8|M9)(?: Build|\) AppleWebKit)'
+    device_replacement: 'Haipad $1'
+    brand_replacement: 'Haipad'
+    model_replacement: '$1'
+
+  #########
+  # Hannspree
+  # @ref: http://www.hannspree.eu/
+  # @models: SN10T1|SN10T2|SN70T31B|SN70T32W
+  #########
+  - regex: '; *(SN\d+T[^;\)/]*)(?: Build|[;\)])'
+    device_replacement: 'Hannspree $1'
+    brand_replacement: 'Hannspree'
+    model_replacement: '$1'
+
+  #########
+  # HCLme
+  # @ref: http://www.hclmetablet.com/india/
+  #########
+  - regex: 'Build/HCL ME Tablet ([^;\)]+)[\);]'
+    device_replacement: 'HCLme $1'
+    brand_replacement: 'HCLme'
+    model_replacement: '$1'
+  - regex: '; *([^;\/]+) Build/HCL'
+    device_replacement: 'HCLme $1'
+    brand_replacement: 'HCLme'
+    model_replacement: '$1'
+
+  #########
+  # Hena
+  # @ref: http://www.henadigital.com/en/product/index.asp?id=6
+  #########
+  - regex: '; *(MID-?\d{4}C[EM])(?: Build|\) AppleWebKit)'
+    device_replacement: 'Hena $1'
+    brand_replacement: 'Hena'
+    model_replacement: '$1'
+
+  #########
+  # Hisense
+  # @ref: http://www.hisense.com/
+  #########
+  - regex: '; *(EG\d{2,}|HS-[^;/]+|MIRA[^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: 'Hisense $1'
+    brand_replacement: 'Hisense'
+    model_replacement: '$1'
+  - regex: '; *(andromax[^;/]+?)(?: Build|\) AppleWebKit)'
+    regex_flag: 'i'
+    device_replacement: 'Hisense $1'
+    brand_replacement: 'Hisense'
+    model_replacement: '$1'
+
+  #########
+  # hitech
+  # @ref: http://www.hitech-mobiles.com/
+  #########
+  - regex: '; *(?:AMAZE[ _](S\d+)|(S\d+)[ _]AMAZE)(?: Build|\) AppleWebKit)'
+    device_replacement: 'AMAZE $1$2'
+    brand_replacement: 'hitech'
+    model_replacement: 'AMAZE $1$2'
+
+  #########
+  # HP
+  # @ref: http://www.hp.com/
+  #########
+  - regex: '; *(PlayBook)(?: Build|\) AppleWebKit)'
+    device_replacement: 'HP $1'
+    brand_replacement: 'HP'
+    model_replacement: '$1'
+  - regex: '; *HP ([^/]+)(?: Build|\) AppleWebKit)'
+    device_replacement: 'HP $1'
+    brand_replacement: 'HP'
+    model_replacement: '$1'
+  - regex: '; *([^/]+_tenderloin)(?: Build|\) AppleWebKit)'
+    device_replacement: 'HP TouchPad'
+    brand_replacement: 'HP'
+    model_replacement: 'TouchPad'
+
+  #########
+  # Huawei
+  # @ref: http://www.huaweidevice.com
+  # @note: Needs to be before HTC due to Desire HD Build on U8815
+  #########
+  - regex: '; *(HUAWEI |Huawei-|)([UY][^;/]+) Build/(?:Huawei|HUAWEI)([UY][^\);]+)\)'
+    device_replacement: '$1$2'
+    brand_replacement: 'Huawei'
+    model_replacement: '$2'
+  - regex: '; *([^;/]+) Build[/ ]Huawei(MT1-U06|[A-Z]+\d+[^\);]+)\)'
+    device_replacement: '$1'
+    brand_replacement: 'Huawei'
+    model_replacement: '$2'
+  - regex: '; *(S7|M860) Build'
+    device_replacement: '$1'
+    brand_replacement: 'Huawei'
+    model_replacement: '$1'
+  - regex: '; *((?:HUAWEI|Huawei)[ \-]?)(MediaPad) Build'
+    device_replacement: '$1$2'
+    brand_replacement: 'Huawei'
+    model_replacement: '$2'
+  - regex: '; *((?:HUAWEI[ _]?|Huawei[ _]|)Ascend[ _])([^;/]+) Build'
+    device_replacement: '$1$2'
+    brand_replacement: 'Huawei'
+    model_replacement: '$2'
+  - regex: '; *((?:HUAWEI|Huawei)[ _\-]?)((?:G700-|MT-)[^;/]+) Build'
+    device_replacement: '$1$2'
+    brand_replacement: 'Huawei'
+    model_replacement: '$2'
+  - regex: '; *((?:HUAWEI|Huawei)[ _\-]?)([^;/]+) Build'
+    device_replacement: '$1$2'
+    brand_replacement: 'Huawei'
+    model_replacement: '$2'
+  - regex: '; *(MediaPad[^;]+|SpringBoard) Build/Huawei'
+    device_replacement: '$1'
+    brand_replacement: 'Huawei'
+    model_replacement: '$1'
+  - regex: '; *([^;]+) Build/(?:Huawei|HUAWEI)'
+    device_replacement: '$1'
+    brand_replacement: 'Huawei'
+    model_replacement: '$1'
+  - regex: '; *([Uu])([89]\d{3}) Build'
+    device_replacement: '$1$2'
+    brand_replacement: 'Huawei'
+    model_replacement: 'U$2'
+  - regex: '; *(?:Ideos |IDEOS )(S7) Build'
+    device_replacement: 'Huawei Ideos$1'
+    brand_replacement: 'Huawei'
+    model_replacement: 'Ideos$1'
+  - regex: '; *(?:Ideos |IDEOS )([^;/]+\s*|\s*)Build'
+    device_replacement: 'Huawei Ideos$1'
+    brand_replacement: 'Huawei'
+    model_replacement: 'Ideos$1'
+  - regex: '; *(Orange Daytona|Pulse|Pulse Mini|Vodafone 858|C8500|C8600|C8650|C8660|Nexus 6P|ATH-.+?) Build[/ ]'
+    device_replacement: 'Huawei $1'
+    brand_replacement: 'Huawei'
+    model_replacement: '$1'
+  - regex: '; *((?:[A-Z]{3})\-L[A-Za0-9]{2})[\)]'
+    device_replacement: 'Huawei $1'
+    brand_replacement: 'Huawei'
+    model_replacement: '$1'
+
+  #########
+  # HTC
+  # @ref: http://www.htc.com/www/products/
+  # @ref: http://en.wikipedia.org/wiki/List_of_HTC_phones
+  #########
+
+  - regex: '; *HTC[ _]([^;]+); Windows Phone'
+    device_replacement: 'HTC $1'
+    brand_replacement: 'HTC'
+    model_replacement: '$1'
+
+  # Android HTC with Version Number matcher
+  # ; HTC_0P3Z11/1.12.161.3 Build
+  # ;HTC_A3335 V2.38.841.1 Build
+  - regex: '; *(?:HTC[ _/])+([^ _/]+)(?:[/\\]1\.0 | V|/| +)\d+\.\d[\d\.]*(?: *Build|\))'
+    device_replacement: 'HTC $1'
+    brand_replacement: 'HTC'
+    model_replacement: '$1'
+  - regex: '; *(?:HTC[ _/])+([^ _/]+)(?:[ _/]([^ _/]+)|)(?:[/\\]1\.0 | V|/| +)\d+\.\d[\d\.]*(?: *Build|\))'
+    device_replacement: 'HTC $1 $2'
+    brand_replacement: 'HTC'
+    model_replacement: '$1 $2'
+  - regex: '; *(?:HTC[ _/])+([^ _/]+)(?:[ _/]([^ _/]+)(?:[ _/]([^ _/]+)|)|)(?:[/\\]1\.0 | V|/| +)\d+\.\d[\d\.]*(?: *Build|\))'
+    device_replacement: 'HTC $1 $2 $3'
+    brand_replacement: 'HTC'
+    model_replacement: '$1 $2 $3'
+  - regex: '; *(?:HTC[ _/])+([^ _/]+)(?:[ _/]([^ _/]+)(?:[ _/]([^ _/]+)(?:[ _/]([^ _/]+)|)|)|)(?:[/\\]1\.0 | V|/| +)\d+\.\d[\d\.]*(?: *Build|\))'
+    device_replacement: 'HTC $1 $2 $3 $4'
+    brand_replacement: 'HTC'
+    model_replacement: '$1 $2 $3 $4'
+
+  # Android HTC without Version Number matcher
+  - regex: '; *(?:(?:HTC|htc)(?:_blocked|)[ _/])+([^ _/;]+)(?: *Build|[;\)]| - )'
+    device_replacement: 'HTC $1'
+    brand_replacement: 'HTC'
+    model_replacement: '$1'
+  - regex: '; *(?:(?:HTC|htc)(?:_blocked|)[ _/])+([^ _/]+)(?:[ _/]([^ _/;\)]+)|)(?: *Build|[;\)]| - )'
+    device_replacement: 'HTC $1 $2'
+    brand_replacement: 'HTC'
+    model_replacement: '$1 $2'
+  - regex: '; *(?:(?:HTC|htc)(?:_blocked|)[ _/])+([^ _/]+)(?:[ _/]([^ _/]+)(?:[ _/]([^ _/;\)]+)|)|)(?: *Build|[;\)]| - )'
+    device_replacement: 'HTC $1 $2 $3'
+    brand_replacement: 'HTC'
+    model_replacement: '$1 $2 $3'
+  - regex: '; *(?:(?:HTC|htc)(?:_blocked|)[ _/])+([^ _/]+)(?:[ _/]([^ _/]+)(?:[ _/]([^ _/]+)(?:[ _/]([^ /;]+)|)|)|)(?: *Build|[;\)]| - )'
+    device_replacement: 'HTC $1 $2 $3 $4'
+    brand_replacement: 'HTC'
+    model_replacement: '$1 $2 $3 $4'
+
+  # HTC Streaming Player
+  - regex: 'HTC Streaming Player [^\/]*/[^\/]*/ htc_([^/]+) /'
+    device_replacement: 'HTC $1'
+    brand_replacement: 'HTC'
+    model_replacement: '$1'
+  # general matcher for anything else
+  - regex: '(?:[;,] *|^)(?:htccn_chs-|)HTC[ _-]?([^;]+?)(?: *Build|clay|Android|-?Mozilla| Opera| Profile| UNTRUSTED|[;/\(\)]|$)'
+    regex_flag: 'i'
+    device_replacement: 'HTC $1'
+    brand_replacement: 'HTC'
+    model_replacement: '$1'
+  # Android matchers without HTC
+  - regex: '; *(A6277|ADR6200|ADR6300|ADR6350|ADR6400[A-Z]*|ADR6425[A-Z]*|APX515CKT|ARIA|Desire[^_ ]*|Dream|EndeavorU|Eris|Evo|Flyer|HD2|Hero|HERO200|Hero CDMA|HTL21|Incredible|Inspire[A-Z0-9]*|Legend|Liberty|Nexus ?(?:One|HD2)|One|One S C2|One[ _]?(?:S|V|X\+?)\w*|PC36100|PG06100|PG86100|S31HT|Sensation|Wildfire)(?: Build|[/;\(\)])'
+    regex_flag: 'i'
+    device_replacement: 'HTC $1'
+    brand_replacement: 'HTC'
+    model_replacement: '$1'
+  - regex: '; *(ADR6200|ADR6400L|ADR6425LVW|Amaze|DesireS?|EndeavorU|Eris|EVO|Evo\d[A-Z]+|HD2|IncredibleS?|Inspire[A-Z0-9]*|Inspire[A-Z0-9]*|Sensation[A-Z0-9]*|Wildfire)[ _-](.+?)(?:[/;\)]|Build|MIUI|1\.0)'
+    regex_flag: 'i'
+    device_replacement: 'HTC $1 $2'
+    brand_replacement: 'HTC'
+    model_replacement: '$1 $2'
+
+  #########
+  # Hyundai
+  # @ref: http://www.hyundaitechnologies.com
+  #########
+  - regex: '; *HYUNDAI (T\d[^/]*)(?: Build|\) AppleWebKit)'
+    device_replacement: 'Hyundai $1'
+    brand_replacement: 'Hyundai'
+    model_replacement: '$1'
+  - regex: '; *HYUNDAI ([^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: 'Hyundai $1'
+    brand_replacement: 'Hyundai'
+    model_replacement: '$1'
+  # X900? http://www.amazon.com/Hyundai-X900-Retina-Android-Bluetooth/dp/B00AO07H3O
+  - regex: '; *(X700|Hold X|MB-6900)(?: Build|\) AppleWebKit)'
+    device_replacement: 'Hyundai $1'
+    brand_replacement: 'Hyundai'
+    model_replacement: '$1'
+
+  #########
+  # iBall
+  # @ref: http://www.iball.co.in/Category/Mobiles/22
+  #########
+  - regex: '; *(?:iBall[ _\-]|)(Andi)[ _]?(\d[^;/]*)(?: Build|\) AppleWebKit)'
+    regex_flag: 'i'
+    device_replacement: '$1 $2'
+    brand_replacement: 'iBall'
+    model_replacement: '$1 $2'
+  - regex: '; *(IBall)(?:[ _]([^;/]+?)|)(?: Build|\) AppleWebKit)'
+    regex_flag: 'i'
+    device_replacement: '$1 $2'
+    brand_replacement: 'iBall'
+    model_replacement: '$2'
+
+  #########
+  # IconBIT
+  # @ref: http://www.iconbit.com/catalog/tablets/
+  #########
+  - regex: '; *(NT-\d+[^ ;/]*|Net[Tt]AB [^;/]+|Mercury [A-Z]+|iconBIT)(?: S/N:[^;/]+|)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'IconBIT'
+    model_replacement: '$1'
+
+  #########
+  # IMO
+  # @ref: http://www.ponselimo.com/
+  #########
+  - regex: '; *(IMO)[ _]([^;/]+?)(?: Build|\) AppleWebKit)'
+    regex_flag: 'i'
+    device_replacement: '$1 $2'
+    brand_replacement: 'IMO'
+    model_replacement: '$2'
+
+  #########
+  # i-mobile
+  # @ref: http://www.i-mobilephone.com/
+  #########
+  - regex: '; *i-?mobile[ _]([^/]+)(?: Build|\) AppleWebKit)'
+    regex_flag: 'i'
+    device_replacement: 'i-mobile $1'
+    brand_replacement: 'imobile'
+    model_replacement: '$1'
+  - regex: '; *(i-(?:style|note)[^/]*)(?: Build|\) AppleWebKit)'
+    regex_flag: 'i'
+    device_replacement: 'i-mobile $1'
+    brand_replacement: 'imobile'
+    model_replacement: '$1'
+
+  #########
+  # Impression
+  # @ref: http://impression.ua/planshetnye-kompyutery
+  #########
+  - regex: '; *(ImPAD) ?(\d+(?:.)*?)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1 $2'
+    brand_replacement: 'Impression'
+    model_replacement: '$1 $2'
+
+  #########
+  # Infinix
+  # @ref: http://www.infinixmobility.com/index.html
+  #########
+  - regex: '; *(Infinix)[ _]([^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1 $2'
+    brand_replacement: 'Infinix'
+    model_replacement: '$2'
+
+  #########
+  # Informer
+  # @ref: ??
+  #########
+  - regex: '; *(Informer)[ \-]([^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1 $2'
+    brand_replacement: 'Informer'
+    model_replacement: '$2'
+
+  #########
+  # Intenso
+  # @ref: http://www.intenso.de
+  # @models: 7":TAB 714,TAB 724;8":TAB 814,TAB 824;10":TAB 1004
+  #########
+  - regex: '; *(TAB) ?([78][12]4)(?: Build|\) AppleWebKit)'
+    device_replacement: 'Intenso $1'
+    brand_replacement: 'Intenso'
+    model_replacement: '$1 $2'
+
+  #########
+  # Intex
+  # @ref: http://intexmobile.in/index.aspx
+  # @note: Zync also offers a "Cloud Z5" device
+  #########
+  # smartphones
+  - regex: '; *(?:Intex[ _]|)(AQUA|Aqua)([ _\.\-])([^;/]+?) *(?:Build|;)'
+    device_replacement: '$1$2$3'
+    brand_replacement: 'Intex'
+    model_replacement: '$1 $3'
+  # matches "INTEX CLOUD X1"
+  - regex: '; *(?:INTEX|Intex)(?:[_ ]([^\ _;/]+))(?:[_ ]([^\ _;/]+)|) *(?:Build|;)'
+    device_replacement: '$1 $2'
+    brand_replacement: 'Intex'
+    model_replacement: '$1 $2'
+  # tablets
+  - regex: '; *([iI]Buddy)[ _]?(Connect)(?:_|\?_| |)([^;/]*) *(?:Build|;)'
+    device_replacement: '$1 $2 $3'
+    brand_replacement: 'Intex'
+    model_replacement: 'iBuddy $2 $3'
+  - regex: '; *(I-Buddy)[ _]([^;/]+?) *(?:Build|;)'
+    device_replacement: '$1 $2'
+    brand_replacement: 'Intex'
+    model_replacement: 'iBuddy $2'
+
+  #########
+  # iOCEAN
+  # @ref: http://www.iocean.cc/
+  #########
+  - regex: '; *(iOCEAN) ([^/]+)(?: Build|\) AppleWebKit)'
+    regex_flag: 'i'
+    device_replacement: '$1 $2'
+    brand_replacement: 'iOCEAN'
+    model_replacement: '$2'
+
+  #########
+  # i.onik
+  # @ref: http://www.i-onik.de/
+  #########
+  - regex: '; *(TP\d+(?:\.\d+|)\-\d[^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: 'ionik $1'
+    brand_replacement: 'ionik'
+    model_replacement: '$1'
+
+  #########
+  # IRU.ru
+  # @ref: http://www.iru.ru/catalog/soho/planetable/
+  #########
+  - regex: '; *(M702pro)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'Iru'
+    model_replacement: '$1'
+
+  #########
+  # Itel Mobile
+  # @ref: https://www.itel-mobile.com/global/products/
+  #########
+  - regex: '; *itel ([^;/]*)(?: Build|\) AppleWebKit)'
+    device_replacement: 'Itel $1'
+    brand_replacement: 'Itel'
+    model_replacement: '$1'
+
+  #########
+  # Ivio
+  # @ref: http://www.ivio.com/mobile.php
+  # @models: DG80,DG20,DE38,DE88,MD70
+  #########
+  - regex: '; *(DE88Plus|MD70)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'Ivio'
+    model_replacement: '$1'
+  - regex: '; *IVIO[_\-]([^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'Ivio'
+    model_replacement: '$1'
+
+  #########
+  # Jaytech
+  # @ref: http://www.jay-tech.de/jaytech/servlet/frontend/
+  #########
+  - regex: '; *(TPC-\d+|JAY-TECH)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'Jaytech'
+    model_replacement: '$1'
+
+  #########
+  # Jiayu
+  # @ref: http://www.ejiayu.com/en/Product.html
+  #########
+  - regex: '; *(JY-[^;/]+|G[234]S?)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'Jiayu'
+    model_replacement: '$1'
+
+  #########
+  # JXD
+  # @ref: http://www.jxd.hk/
+  #########
+  - regex: '; *(JXD)[ _\-]([^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1 $2'
+    brand_replacement: 'JXD'
+    model_replacement: '$2'
+
+  #########
+  # Karbonn
+  # @ref: http://www.karbonnmobiles.com/products_tablet.php
+  #########
+  - regex: '; *Karbonn[ _]?([^;/]+) *(?:Build|;)'
+    regex_flag: 'i'
+    device_replacement: '$1'
+    brand_replacement: 'Karbonn'
+    model_replacement: '$1'
+  - regex: '; *([^;]+) Build/Karbonn'
+    device_replacement: '$1'
+    brand_replacement: 'Karbonn'
+    model_replacement: '$1'
+  - regex: '; *(A11|A39|A37|A34|ST8|ST10|ST7|Smart Tab3|Smart Tab2|Titanium S\d) +Build'
+    device_replacement: '$1'
+    brand_replacement: 'Karbonn'
+    model_replacement: '$1'
+
+  #########
+  # KDDI (Operator Branded Device)
+  # @ref: http://www.ipentec.com/document/document.aspx?page=android-useragent
+  #########
+  - regex: '; *(IS01|IS03|IS05|IS\d{2}SH)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'Sharp'
+    model_replacement: '$1'
+  - regex: '; *(IS04)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'Regza'
+    model_replacement: '$1'
+  - regex: '; *(IS06|IS\d{2}PT)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'Pantech'
+    model_replacement: '$1'
+  - regex: '; *(IS11S)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'SonyEricsson'
+    model_replacement: 'Xperia Acro'
+  - regex: '; *(IS11CA)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'Casio'
+    model_replacement: 'GzOne $1'
+  - regex: '; *(IS11LG)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'LG'
+    model_replacement: 'Optimus X'
+  - regex: '; *(IS11N)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'Medias'
+    model_replacement: '$1'
+  - regex: '; *(IS11PT)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'Pantech'
+    model_replacement: 'MIRACH'
+  - regex: '; *(IS12F)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'Fujitsu'
+    model_replacement: 'Arrows ES'
+  # @ref: https://ja.wikipedia.org/wiki/IS12M
+  - regex: '; *(IS12M)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'Motorola'
+    model_replacement: 'XT909'
+  - regex: '; *(IS12S)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'SonyEricsson'
+    model_replacement: 'Xperia Acro HD'
+  - regex: '; *(ISW11F)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'Fujitsu'
+    model_replacement: 'Arrowz Z'
+  - regex: '; *(ISW11HT)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'HTC'
+    model_replacement: 'EVO'
+  - regex: '; *(ISW11K)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'Kyocera'
+    model_replacement: 'DIGNO'
+  - regex: '; *(ISW11M)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'Motorola'
+    model_replacement: 'Photon'
+  - regex: '; *(ISW11SC)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'Samsung'
+    model_replacement: 'GALAXY S II WiMAX'
+  - regex: '; *(ISW12HT)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'HTC'
+    model_replacement: 'EVO 3D'
+  - regex: '; *(ISW13HT)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'HTC'
+    model_replacement: 'J'
+  - regex: '; *(ISW?[0-9]{2}[A-Z]{0,2})(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'KDDI'
+    model_replacement: '$1'
+  - regex: '; *(INFOBAR [^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'KDDI'
+    model_replacement: '$1'
+
+  #########
+  # Kingcom
+  # @ref: http://www.e-kingcom.com
+  #########
+  - regex: '; *(JOYPAD|Joypad)[ _]([^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1 $2'
+    brand_replacement: 'Kingcom'
+    model_replacement: '$1 $2'
+
+  #########
+  # Kobo
+  # @ref: https://en.wikipedia.org/wiki/Kobo_Inc.
+  # @ref: http://www.kobo.com/devices#tablets
+  #########
+  - regex: '; *(Vox|VOX|Arc|K080)(?: Build|\) AppleWebKit)'
+    regex_flag: 'i'
+    device_replacement: '$1'
+    brand_replacement: 'Kobo'
+    model_replacement: '$1'
+  - regex: '\b(Kobo Touch)\b'
+    device_replacement: '$1'
+    brand_replacement: 'Kobo'
+    model_replacement: '$1'
+
+  #########
+  # K-Touch
+  # @ref: ??
+  #########
+  - regex: '; *(K-Touch)[ _]([^;/]+?)(?: Build|\) AppleWebKit)'
+    regex_flag: 'i'
+    device_replacement: '$1 $2'
+    brand_replacement: 'Ktouch'
+    model_replacement: '$2'
+
+  #########
+  # KT Tech
+  # @ref: http://www.kttech.co.kr
+  #########
+  - regex: '; *((?:EV|KM)-S\d+[A-Z]?)(?: Build|\) AppleWebKit)'
+    regex_flag: 'i'
+    device_replacement: '$1'
+    brand_replacement: 'KTtech'
+    model_replacement: '$1'
+
+  #########
+  # Kyocera
+  # @ref: http://www.android.com/devices/?country=all&m=kyocera
+  #########
+  - regex: '; *(Zio|Hydro|Torque|Event|EVENT|Echo|Milano|Rise|URBANO PROGRESSO|WX04K|WX06K|WX10K|KYL21|101K|C5[12]\d{2})(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'Kyocera'
+    model_replacement: '$1'
+
+  #########
+  # Lava
+  # @ref: http://www.lavamobiles.com/
+  #########
+  - regex: '; *(?:LAVA[ _]|)IRIS[ _\-]?([^/;\)]+) *(?:;|\)|Build)'
+    regex_flag: 'i'
+    device_replacement: 'Iris $1'
+    brand_replacement: 'Lava'
+    model_replacement: 'Iris $1'
+  - regex: '; *LAVA[ _]([^;/]+) Build'
+    device_replacement: '$1'
+    brand_replacement: 'Lava'
+    model_replacement: '$1'
+
+  #########
+  # Lemon
+  # @ref: http://www.lemonmobiles.com/products.php?type=1
+  #########
+  - regex: '; *(?:(Aspire A1)|(?:LEMON|Lemon)[ _]([^;/]+))_?(?: Build|\) AppleWebKit)'
+    device_replacement: 'Lemon $1$2'
+    brand_replacement: 'Lemon'
+    model_replacement: '$1$2'
+
+  #########
+  # Lenco
+  # @ref: http://www.lenco.com/c/tablets/
+  #########
+  - regex: '; *(TAB-1012)(?: Build|\) AppleWebKit)'
+    device_replacement: 'Lenco $1'
+    brand_replacement: 'Lenco'
+    model_replacement: '$1'
+  - regex: '; Lenco ([^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: 'Lenco $1'
+    brand_replacement: 'Lenco'
+    model_replacement: '$1'
+
+  #########
+  # Lenovo
+  # @ref: http://support.lenovo.com/en_GB/downloads/default.page?#
+  #########
+  - regex: '; *(A1_07|A2107A-H|S2005A-H|S1-37AH0) Build'
+    device_replacement: '$1'
+    brand_replacement: 'Lenovo'
+    model_replacement: '$1'
+  - regex: '; *(Idea[Tp]ab)[ _]([^;/]+);? Build'
+    device_replacement: 'Lenovo $1 $2'
+    brand_replacement: 'Lenovo'
+    model_replacement: '$1 $2'
+  - regex: '; *(Idea(?:Tab|pad)) ?([^;/]+) Build'
+    device_replacement: 'Lenovo $1 $2'
+    brand_replacement: 'Lenovo'
+    model_replacement: '$1 $2'
+  - regex: '; *(ThinkPad) ?(Tablet) Build/'
+    device_replacement: 'Lenovo $1 $2'
+    brand_replacement: 'Lenovo'
+    model_replacement: '$1 $2'
+  - regex: '; *(?:LNV-|)(?:=?[Ll]enovo[ _\-]?|LENOVO[ _])(.+?)(?:Build|[;/\)])'
+    device_replacement: 'Lenovo $1'
+    brand_replacement: 'Lenovo'
+    model_replacement: '$1'
+  - regex: '[;,] (?:Vodafone |)(SmartTab) ?(II) ?(\d+) Build/'
+    device_replacement: 'Lenovo $1 $2 $3'
+    brand_replacement: 'Lenovo'
+    model_replacement: '$1 $2 $3'
+  - regex: '; *(?:Ideapad |)K1 Build/'
+    device_replacement: 'Lenovo Ideapad K1'
+    brand_replacement: 'Lenovo'
+    model_replacement: 'Ideapad K1'
+  - regex: '; *(3GC101|3GW10[01]|A390) Build/'
+    device_replacement: '$1'
+    brand_replacement: 'Lenovo'
+    model_replacement: '$1'
+  - regex: '\b(?:Lenovo|LENOVO)+[ _\-]?([^,;:/ ]+)'
+    device_replacement: 'Lenovo $1'
+    brand_replacement: 'Lenovo'
+    model_replacement: '$1'
+
+  #########
+  # Lexibook
+  # @ref: http://www.lexibook.com/fr
+  #########
+  - regex: '; *(MFC\d+)[A-Z]{2}([^;,/]*),?(?: Build|\) AppleWebKit)'
+    device_replacement: '$1$2'
+    brand_replacement: 'Lexibook'
+    model_replacement: '$1$2'
+
+  #########
+  # LG
+  # @ref: http://www.lg.com/uk/mobile
+  #########
+  - regex: '; *(E[34][0-9]{2}|LS[6-8][0-9]{2}|VS[6-9][0-9]+[^;/]+|Nexus 4|Nexus 5X?|GT540f?|Optimus (?:2X|G|4X HD)|OptimusX4HD) *(?:Build|;)'
+    device_replacement: '$1'
+    brand_replacement: 'LG'
+    model_replacement: '$1'
+  - regex: '[;:] *(L-\d+[A-Z]|LGL\d+[A-Z]?)(?:/V\d+|) *(?:Build|[;\)])'
+    device_replacement: '$1'
+    brand_replacement: 'LG'
+    model_replacement: '$1'
+  - regex: '; *(LG-)([A-Z]{1,2}\d{2,}[^,;/\)\(]*?)(?:Build| V\d+|[,;/\)\(]|$)'
+    device_replacement: '$1$2'
+    brand_replacement: 'LG'
+    model_replacement: '$2'
+  - regex: '; *(LG[ \-]|LG)([^;/]+)[;/]? Build'
+    device_replacement: '$1$2'
+    brand_replacement: 'LG'
+    model_replacement: '$2'
+  - regex: '^(LG)-([^;/]+)/ Mozilla/.*; Android'
+    device_replacement: '$1 $2'
+    brand_replacement: 'LG'
+    model_replacement: '$2'
+  - regex: '(Web0S); Linux/(SmartTV)'
+    device_replacement: 'LG $1 $2'
+    brand_replacement: 'LG'
+    model_replacement: '$1 $2'
+
+  #########
+  # Malata
+  # @ref: http://www.malata.com/en/products.aspx?classid=680
+  #########
+  - regex: '; *((?:SMB|smb)[^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'Malata'
+    model_replacement: '$1'
+  - regex: '; *(?:Malata|MALATA) ([^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'Malata'
+    model_replacement: '$1'
+
+  #########
+  # Manta
+  # @ref: http://www.manta.com.pl/en
+  #########
+  - regex: '; *(MS[45][0-9]{3}|MID0[568][NS]?|MID[1-9]|MID[78]0[1-9]|MID970[1-9]|MID100[1-9])(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'Manta'
+    model_replacement: '$1'
+
+  #########
+  # Match
+  # @ref: http://www.match.net.cn/products.asp
+  #########
+  - regex: '; *(M1052|M806|M9000|M9100|M9701|MID100|MID120|MID125|MID130|MID135|MID140|MID701|MID710|MID713|MID727|MID728|MID731|MID732|MID733|MID735|MID736|MID737|MID760|MID800|MID810|MID820|MID830|MID833|MID835|MID860|MID900|MID930|MID933|MID960|MID980)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'Match'
+    model_replacement: '$1'
+
+  #########
+  # Maxx
+  # @ref: http://www.maxxmobile.in/
+  # @models: Maxx MSD7-Play, Maxx MX245+ Trance, Maxx AX8 Race, Maxx MSD7 3G- AX50, Maxx Genx Droid 7 - AX40, Maxx AX5 Duo,
+  #   Maxx AX3 Duo, Maxx AX3, Maxx AX8 Note II (Note 2), Maxx AX8 Note I, Maxx AX8, Maxx AX5 Plus, Maxx MSD7 Smarty,
+  #   Maxx AX9Z Race,
+  #   Maxx MT150, Maxx MQ601, Maxx M2020, Maxx Sleek MX463neo, Maxx MX525, Maxx MX192-Tune, Maxx Genx Droid 7 AX353,
+  # @note: Need more User-Agents!!!
+  #########
+  - regex: '; *(GenxDroid7|MSD7.*?|AX\d.*?|Tab 701|Tab 722)(?: Build|\) AppleWebKit)'
+    device_replacement: 'Maxx $1'
+    brand_replacement: 'Maxx'
+    model_replacement: '$1'
+
+  #########
+  # Mediacom
+  # @ref: http://www.mediacomeurope.it/
+  #########
+  - regex: '; *(M-PP[^;/]+|PhonePad ?\d{2,}[^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: 'Mediacom $1'
+    brand_replacement: 'Mediacom'
+    model_replacement: '$1'
+  - regex: '; *(M-MP[^;/]+|SmartPad ?\d{2,}[^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: 'Mediacom $1'
+    brand_replacement: 'Mediacom'
+    model_replacement: '$1'
+
+  #########
+  # Medion
+  # @ref: http://www.medion.com/en/
+  #########
+  - regex: '; *(?:MD_|)LIFETAB[ _]([^;/]+?)(?: Build|\) AppleWebKit)'
+    regex_flag: 'i'
+    device_replacement: 'Medion Lifetab $1'
+    brand_replacement: 'Medion'
+    model_replacement: 'Lifetab $1'
+  - regex: '; *MEDION ([^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: 'Medion $1'
+    brand_replacement: 'Medion'
+    model_replacement: '$1'
+
+  #########
+  # Meizu
+  # @ref: http://www.meizu.com
+  #########
+  - regex: '; *(M030|M031|M035|M040|M065|m9)(?: Build|\) AppleWebKit)'
+    device_replacement: 'Meizu $1'
+    brand_replacement: 'Meizu'
+    model_replacement: '$1'
+  - regex: '; *(?:meizu_|MEIZU )(.+?) *(?:Build|[;\)])'
+    device_replacement: 'Meizu $1'
+    brand_replacement: 'Meizu'
+    model_replacement: '$1'
+
+  #########
+  # Micromax
+  # @ref: http://www.micromaxinfo.com
+  #########
+  - regex: '; *(?:Micromax[ _](A111|A240)|(A111|A240)) Build'
+    regex_flag: 'i'
+    device_replacement: 'Micromax $1$2'
+    brand_replacement: 'Micromax'
+    model_replacement: '$1$2'
+  - regex: '; *Micromax[ _](A\d{2,3}[^;/]*) Build'
+    regex_flag: 'i'
+    device_replacement: 'Micromax $1'
+    brand_replacement: 'Micromax'
+    model_replacement: '$1'
+  # be carefull here with Acer e.g. A500
+  - regex: '; *(A\d{2}|A[12]\d{2}|A90S|A110Q) Build'
+    regex_flag: 'i'
+    device_replacement: 'Micromax $1'
+    brand_replacement: 'Micromax'
+    model_replacement: '$1'
+  - regex: '; *Micromax[ _](P\d{3}[^;/]*) Build'
+    regex_flag: 'i'
+    device_replacement: 'Micromax $1'
+    brand_replacement: 'Micromax'
+    model_replacement: '$1'
+  - regex: '; *(P\d{3}|P\d{3}\(Funbook\)) Build'
+    regex_flag: 'i'
+    device_replacement: 'Micromax $1'
+    brand_replacement: 'Micromax'
+    model_replacement: '$1'
+
+  #########
+  # Mito
+  # @ref: http://new.mitomobile.com/
+  #########
+  - regex: '; *(MITO)[ _\-]?([^;/]+?)(?: Build|\) AppleWebKit)'
+    regex_flag: 'i'
+    device_replacement: '$1 $2'
+    brand_replacement: 'Mito'
+    model_replacement: '$2'
+
+  #########
+  # Mobistel
+  # @ref: http://www.mobistel.com/
+  #########
+  - regex: '; *(Cynus)[ _](F5|T\d|.+?) *(?:Build|[;/\)])'
+    regex_flag: 'i'
+    device_replacement: '$1 $2'
+    brand_replacement: 'Mobistel'
+    model_replacement: '$1 $2'
+
+  #########
+  # Modecom
+  # @ref: http://www.modecom.eu/tablets/portal/
+  #########
+  - regex: '; *(MODECOM |)(FreeTab) ?([^;/]+?)(?: Build|\) AppleWebKit)'
+    regex_flag: 'i'
+    device_replacement: '$1$2 $3'
+    brand_replacement: 'Modecom'
+    model_replacement: '$2 $3'
+  - regex: '; *(MODECOM )([^;/]+?)(?: Build|\) AppleWebKit)'
+    regex_flag: 'i'
+    device_replacement: '$1 $2'
+    brand_replacement: 'Modecom'
+    model_replacement: '$2'
+
+  #########
+  # Motorola
+  # @ref: http://www.motorola.com/us/shop-all-mobile-phones/
+  #########
+  - regex: '; *(MZ\d{3}\+?|MZ\d{3} 4G|Xoom|XOOM[^;/]*) Build'
+    device_replacement: 'Motorola $1'
+    brand_replacement: 'Motorola'
+    model_replacement: '$1'
+  - regex: '; *(Milestone )(XT[^;/]*) Build'
+    device_replacement: 'Motorola $1$2'
+    brand_replacement: 'Motorola'
+    model_replacement: '$2'
+  - regex: '; *(Motoroi ?x|Droid X|DROIDX) Build'
+    regex_flag: 'i'
+    device_replacement: 'Motorola $1'
+    brand_replacement: 'Motorola'
+    model_replacement: 'DROID X'
+  - regex: '; *(Droid[^;/]*|DROID[^;/]*|Milestone[^;/]*|Photon|Triumph|Devour|Titanium) Build'
+    device_replacement: 'Motorola $1'
+    brand_replacement: 'Motorola'
+    model_replacement: '$1'
+  - regex: '; *(A555|A85[34][^;/]*|A95[356]|ME[58]\d{2}\+?|ME600|ME632|ME722|MB\d{3}\+?|MT680|MT710|MT870|MT887|MT917|WX435|WX453|WX44[25]|XT\d{3,4}[A-Z\+]*|CL[iI]Q|CL[iI]Q XT) Build'
+    device_replacement: '$1'
+    brand_replacement: 'Motorola'
+    model_replacement: '$1'
+  - regex: '; *(Motorola MOT-|Motorola[ _\-]|MOT\-?)([^;/]+) Build'
+    device_replacement: '$1$2'
+    brand_replacement: 'Motorola'
+    model_replacement: '$2'
+  - regex: '; *(Moto[_ ]?|MOT\-)([^;/]+) Build'
+    device_replacement: '$1$2'
+    brand_replacement: 'Motorola'
+    model_replacement: '$2'
+
+  #########
+  # MpMan
+  # @ref: http://www.mpmaneurope.com
+  #########
+  - regex: '; *((?:MP[DQ]C|MPG\d{1,4}|MP\d{3,4}|MID(?:(?:10[234]|114|43|7[247]|8[24]|7)C|8[01]1))[^;/]*)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'Mpman'
+    model_replacement: '$1'
+
+  #########
+  # MSI
+  # @ref: http://www.msi.com/product/windpad/
+  #########
+  - regex: '; *(?:MSI[ _]|)(Primo\d+|Enjoy[ _\-][^;/]+?)(?: Build|\) AppleWebKit)'
+    regex_flag: 'i'
+    device_replacement: '$1'
+    brand_replacement: 'Msi'
+    model_replacement: '$1'
+
+  #########
+  # Multilaser
+  # http://www.multilaser.com.br/listagem_produtos.php?cat=5
+  #########
+  - regex: '; *Multilaser[ _]([^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'Multilaser'
+    model_replacement: '$1'
+
+  #########
+  # MyPhone
+  # @ref: http://myphone.com.ph/
+  #########
+  - regex: '; *(My)[_]?(Pad)[ _]([^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1$2 $3'
+    brand_replacement: 'MyPhone'
+    model_replacement: '$1$2 $3'
+  - regex: '; *(My)\|?(Phone)[ _]([^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1$2 $3'
+    brand_replacement: 'MyPhone'
+    model_replacement: '$3'
+  - regex: '; *(A\d+)[ _](Duo|)(?: Build|\) AppleWebKit)'
+    regex_flag: 'i'
+    device_replacement: '$1 $2'
+    brand_replacement: 'MyPhone'
+    model_replacement: '$1 $2'
+
+  #########
+  # Mytab
+  # @ref: http://www.mytab.eu/en/category/mytab-products/
+  #########
+  - regex: '; *(myTab[^;/]*)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'Mytab'
+    model_replacement: '$1'
+
+  #########
+  # Nabi
+  # @ref: https://www.nabitablet.com
+  #########
+  - regex: '; *(NABI2?-)([^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1$2'
+    brand_replacement: 'Nabi'
+    model_replacement: '$2'
+
+  #########
+  # Nec Medias
+  # @ref: http://www.n-keitai.com/
+  #########
+  - regex: '; *(N-\d+[CDE])(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'Nec'
+    model_replacement: '$1'
+  - regex: '; ?(NEC-)(.*?)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1$2'
+    brand_replacement: 'Nec'
+    model_replacement: '$2'
+  - regex: '; *(LT-NA7)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'Nec'
+    model_replacement: 'Lifetouch Note'
+
+  #########
+  # Nextbook
+  # @ref: http://nextbookusa.com
+  #########
+  - regex: '; *(NXM\d+[A-Za-z0-9_]*|Next\d[A-Za-z0-9_ \-]*|NEXT\d[A-Za-z0-9_ \-]*|Nextbook [A-Za-z0-9_ ]*|DATAM803HC|M805)(?: Build|[\);])'
+    device_replacement: '$1'
+    brand_replacement: 'Nextbook'
+    model_replacement: '$1'
+
+  #########
+  # Nokia
+  # @ref: http://www.nokia.com
+  #########
+  - regex: '; *(Nokia)([ _\-]*)([^;/]*) Build'
+    regex_flag: 'i'
+    device_replacement: '$1$2$3'
+    brand_replacement: 'Nokia'
+    model_replacement: '$3'
+  - regex: '; *(TA\-\d{4})(?: Build|\) AppleWebKit)'
+    device_replacement: 'Nokia $1'
+    brand_replacement: 'Nokia'
+    model_replacement: '$1'
+
+  #########
+  # Nook
+  # @ref:
+  # TODO nook browser/1.0
+  #########
+  - regex: '; *(Nook ?|Barnes & Noble Nook |BN )([^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1$2'
+    brand_replacement: 'Nook'
+    model_replacement: '$2'
+  - regex: '; *(NOOK |)(BNRV200|BNRV200A|BNTV250|BNTV250A|BNTV400|BNTV600|LogicPD Zoom2)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1$2'
+    brand_replacement: 'Nook'
+    model_replacement: '$2'
+  - regex: '; Build/(Nook)'
+    device_replacement: '$1'
+    brand_replacement: 'Nook'
+    model_replacement: 'Tablet'
+
+  #########
+  # Olivetti
+  # @ref: http://www.olivetti.de/EN/Page/t02/view_html?idp=348
+  #########
+  - regex: '; *(OP110|OliPad[^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: 'Olivetti $1'
+    brand_replacement: 'Olivetti'
+    model_replacement: '$1'
+
+  #########
+  # Omega
+  # @ref: http://omega-technology.eu/en/produkty/346/tablets
+  # @note: MID tablets might get matched by CobyKyros first
+  # @models: (T107|MID(?:700[2-5]|7031|7108|7132|750[02]|8001|8500|9001|971[12])
+  #########
+  - regex: '; *OMEGA[ _\-](MID[^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: 'Omega $1'
+    brand_replacement: 'Omega'
+    model_replacement: '$1'
+  - regex: '^(MID7500|MID\d+) Mozilla/5\.0 \(iPad;'
+    device_replacement: 'Omega $1'
+    brand_replacement: 'Omega'
+    model_replacement: '$1'
+
+  #########
+  # OpenPeak
+  # @ref: https://support.google.com/googleplay/answer/1727131?hl=en
+  #########
+  - regex: '; *((?:CIUS|cius)[^;/]*)(?: Build|\) AppleWebKit)'
+    device_replacement: 'Openpeak $1'
+    brand_replacement: 'Openpeak'
+    model_replacement: '$1'
+
+  #########
+  # Oppo
+  # @ref: http://en.oppo.com/products/
+  #########
+  - regex: '; *(Find ?(?:5|7a)|R8[012]\d{1,2}|T703\d?|U70\d{1,2}T?|X90\d{1,2}|[AFR]\d{1,2}[a-z]{1,2})(?: Build|\) AppleWebKit)'
+    device_replacement: 'Oppo $1'
+    brand_replacement: 'Oppo'
+    model_replacement: '$1'
+  - regex: '; *OPPO ?([^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: 'Oppo $1'
+    brand_replacement: 'Oppo'
+    model_replacement: '$1'
+  - regex: '; *(CPH\d{1,4}|RMX\d{1,4}|P[A-Z]{3}\d{2})(?: Build|\) AppleWebKit)'
+    device_replacement: 'Oppo $1'
+    brand_replacement: 'Oppo'
+  - regex: '; *(A1601)(?: Build|\) AppleWebKit)'
+    device_replacement: 'Oppo F1s'
+    brand_replacement: 'Oppo'
+    model_replacement: '$1'
+
+  #########
+  # Odys
+  # @ref: http://odys.de
+  #########
+  - regex: '; *(?:Odys\-|ODYS\-|ODYS )([^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: 'Odys $1'
+    brand_replacement: 'Odys'
+    model_replacement: '$1'
+  - regex: '; *(SELECT) ?(7)(?: Build|\) AppleWebKit)'
+    device_replacement: 'Odys $1 $2'
+    brand_replacement: 'Odys'
+    model_replacement: '$1 $2'
+  - regex: '; *(PEDI)_(PLUS)_(W)(?: Build|\) AppleWebKit)'
+    device_replacement: 'Odys $1 $2 $3'
+    brand_replacement: 'Odys'
+    model_replacement: '$1 $2 $3'
+  # Weltbild - Tablet PC 4 = Cat Phoenix = Odys Tablet PC 4?
+  - regex: '; *(AEON|BRAVIO|FUSION|FUSION2IN1|Genio|EOS10|IEOS[^;/]*|IRON|Loox|LOOX|LOOX Plus|Motion|NOON|NOON_PRO|NEXT|OPOS|PEDI[^;/]*|PRIME[^;/]*|STUDYTAB|TABLO|Tablet-PC-4|UNO_X8|XELIO[^;/]*|Xelio ?\d+ ?[Pp]ro|XENO10|XPRESS PRO)(?: Build|\) AppleWebKit)'
+    device_replacement: 'Odys $1'
+    brand_replacement: 'Odys'
+    model_replacement: '$1'
+
+  #########
+  # OnePlus
+  # @ref https://oneplus.net/
+  #########
+  - regex: '; (ONE [a-zA-Z]\d+)(?: Build|\) AppleWebKit)'
+    device_replacement: 'OnePlus $1'
+    brand_replacement: 'OnePlus'
+    model_replacement: '$1'
+  - regex: '; (ONEPLUS [a-zA-Z]\d+)(?: Build|\) AppleWebKit)'
+    device_replacement: 'OnePlus $1'
+    brand_replacement: 'OnePlus'
+    model_replacement: '$1'
+
+  #########
+  # Orion
+  # @ref: http://www.orion.ua/en/products/computer-products/tablet-pcs.html
+  #########
+  - regex: '; *(TP-\d+)(?: Build|\) AppleWebKit)'
+    device_replacement: 'Orion $1'
+    brand_replacement: 'Orion'
+    model_replacement: '$1'
+
+  #########
+  # PackardBell
+  # @ref: http://www.packardbell.com/pb/en/AE/content/productgroup/tablets
+  #########
+  - regex: '; *(G100W?)(?: Build|\) AppleWebKit)'
+    device_replacement: 'PackardBell $1'
+    brand_replacement: 'PackardBell'
+    model_replacement: '$1'
+
+  #########
+  # Panasonic
+  # @ref: http://panasonic.jp/mobile/
+  # @models: T11, T21, T31, P11, P51, Eluga Power, Eluga DL1
+  # @models: (tab) Toughpad FZ-A1, Toughpad JT-B1
+  #########
+  - regex: '; *(Panasonic)[_ ]([^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1 $2'
+    brand_replacement: '$1'
+    model_replacement: '$2'
+  # Toughpad
+  - regex: '; *(FZ-A1B|JT-B1)(?: Build|\) AppleWebKit)'
+    device_replacement: 'Panasonic $1'
+    brand_replacement: 'Panasonic'
+    model_replacement: '$1'
+  # Eluga Power
+  - regex: '; *(dL1|DL1)(?: Build|\) AppleWebKit)'
+    device_replacement: 'Panasonic $1'
+    brand_replacement: 'Panasonic'
+    model_replacement: '$1'
+
+  #########
+  # Pantech
+  # @href: http://www.pantech.co.kr/en/prod/prodList.do?gbrand=PANTECH
+  # @href: http://www.pantech.co.kr/en/prod/prodList.do?gbrand=VEGA
+  # @models: ADR8995, ADR910L, ADR930VW, C790, CDM8992, CDM8999, IS06, IS11PT, P2000, P2020, P2030, P4100, P5000, P6010, P6020, P6030, P7000, P7040, P8000, P8010, P9020, P9050, P9060, P9070, P9090, PT001, PT002, PT003, TXT8040, TXT8045, VEGA PTL21
+  #########
+  - regex: '; *(SKY[ _]|)(IM\-[AT]\d{3}[^;/]+).* Build/'
+    device_replacement: 'Pantech $1$2'
+    brand_replacement: 'Pantech'
+    model_replacement: '$1$2'
+  - regex: '; *((?:ADR8995|ADR910L|ADR930L|ADR930VW|PTL21|P8000)(?: 4G|)) Build/'
+    device_replacement: '$1'
+    brand_replacement: 'Pantech'
+    model_replacement: '$1'
+  - regex: '; *Pantech([^;/]+).* Build/'
+    device_replacement: 'Pantech $1'
+    brand_replacement: 'Pantech'
+    model_replacement: '$1'
+
+  #########
+  # Papayre
+  # @ref: http://grammata.es/
+  #########
+  - regex: '; *(papyre)[ _\-]([^;/]+?)(?: Build|\) AppleWebKit)'
+    regex_flag: 'i'
+    device_replacement: '$1 $2'
+    brand_replacement: 'Papyre'
+    model_replacement: '$2'
+
+  #########
+  # Pearl
+  # @ref: http://www.pearl.de/c-1540.shtml
+  #########
+  - regex: '; *(?:Touchlet )?(X10\.[^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: 'Pearl $1'
+    brand_replacement: 'Pearl'
+    model_replacement: '$1'
+
+  #########
+  # Phicomm
+  # @ref: http://www.phicomm.com.cn/
+  #########
+  - regex: '; PHICOMM (i800)(?: Build|\) AppleWebKit)'
+    device_replacement: 'Phicomm $1'
+    brand_replacement: 'Phicomm'
+    model_replacement: '$1'
+  - regex: '; PHICOMM ([^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: 'Phicomm $1'
+    brand_replacement: 'Phicomm'
+    model_replacement: '$1'
+  - regex: '; *(FWS\d{3}[^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: 'Phicomm $1'
+    brand_replacement: 'Phicomm'
+    model_replacement: '$1'
+
+  #########
+  # Philips
+  # @ref: http://www.support.philips.com/support/catalog/products.jsp?_dyncharset=UTF-8&country=&categoryid=MOBILE_PHONES_SMART_SU_CN_CARE&userLanguage=en&navCount=2&groupId=PC_PRODUCTS_AND_PHONES_GR_CN_CARE&catalogType=&navAction=push&userCountry=cn&title=Smartphones&cateId=MOBILE_PHONES_CA_CN_CARE
+  # @TODO: Philips Tablets User-Agents missing!
+  # @ref: http://www.support.philips.com/support/catalog/products.jsp?_dyncharset=UTF-8&country=&categoryid=ENTERTAINMENT_TABLETS_SU_CN_CARE&userLanguage=en&navCount=0&groupId=&catalogType=&navAction=push&userCountry=cn&title=Entertainment+Tablets&cateId=TABLETS_CA_CN_CARE
+  #########
+  # @note: this a best guess according to available philips models. Need more User-Agents
+  - regex: '; *(D633|D822|D833|T539|T939|V726|W335|W336|W337|W3568|W536|W5510|W626|W632|W6350|W6360|W6500|W732|W736|W737|W7376|W820|W832|W8355|W8500|W8510|W930)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'Philips'
+    model_replacement: '$1'
+  - regex: '; *(?:Philips|PHILIPS)[ _]([^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: 'Philips $1'
+    brand_replacement: 'Philips'
+    model_replacement: '$1'
+
+  #########
+  # Pipo
+  # @ref: http://www.pipo.cn/En/
+  #########
+  - regex: 'Android 4\..*; *(M[12356789]|U[12368]|S[123])\ ?(pro)?(?: Build|\) AppleWebKit)'
+    device_replacement: 'Pipo $1$2'
+    brand_replacement: 'Pipo'
+    model_replacement: '$1$2'
+
+  #########
+  # Ployer
+  # @ref: http://en.ployer.cn/
+  #########
+  - regex: '; *(MOMO[^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'Ployer'
+    model_replacement: '$1'
+
+  #########
+  # Polaroid/ Acho
+  # @ref: http://polaroidstore.com/store/start.asp?category_id=382&category_id2=0&order=title&filter1=&filter2=&filter3=&view=all
+  #########
+  - regex: '; *(?:Polaroid[ _]|)((?:MIDC\d{3,}|PMID\d{2,}|PTAB\d{3,})[^;/]*?)(\/[^;/]*|)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'Polaroid'
+    model_replacement: '$1'
+  - regex: '; *(?:Polaroid )(Tablet)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'Polaroid'
+    model_replacement: '$1'
+
+  #########
+  # Pomp
+  # @ref: http://pompmobileshop.com/
+  #########
+  #~ TODO
+  - regex: '; *(POMP)[ _\-](.+?) *(?:Build|[;/\)])'
+    device_replacement: '$1 $2'
+    brand_replacement: 'Pomp'
+    model_replacement: '$2'
+
+  #########
+  # Positivo
+  # @ref: http://www.positivoinformatica.com.br/www/pessoal/tablet-ypy/
+  #########
+  - regex: '; *(TB07STA|TB10STA|TB07FTA|TB10FTA)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'Positivo'
+    model_replacement: '$1'
+  - regex: '; *(?:Positivo |)((?:YPY|Ypy)[^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'Positivo'
+    model_replacement: '$1'
+
+  #########
+  # POV
+  # @ref: http://www.pointofview-online.com/default2.php
+  # @TODO: Smartphone Models MOB-3515, MOB-5045-B missing
+  #########
+  - regex: '; *(MOB-[^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'POV'
+    model_replacement: '$1'
+  - regex: '; *POV[ _\-]([^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: 'POV $1'
+    brand_replacement: 'POV'
+    model_replacement: '$1'
+  - regex: '; *((?:TAB-PLAYTAB|TAB-PROTAB|PROTAB|PlayTabPro|Mobii[ _\-]|TAB-P)[^;/]*)(?: Build|\) AppleWebKit)'
+    device_replacement: 'POV $1'
+    brand_replacement: 'POV'
+    model_replacement: '$1'
+
+  #########
+  # Prestigio
+  # @ref: http://www.prestigio.com/catalogue/MultiPhones
+  # @ref: http://www.prestigio.com/catalogue/MultiPads
+  #########
+  - regex: '; *(?:Prestigio |)((?:PAP|PMP)\d[^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: 'Prestigio $1'
+    brand_replacement: 'Prestigio'
+    model_replacement: '$1'
+
+  #########
+  # Proscan
+  # @ref: http://www.proscanvideo.com/products-search.asp?itemClass=TABLET&itemnmbr=
+  #########
+  - regex: '; *(PLT[0-9]{4}.*?)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'Proscan'
+    model_replacement: '$1'
+
+  #########
+  # QMobile
+  # @ref: http://www.qmobile.com.pk/
+  #########
+  - regex: '; *(A2|A5|A8|A900)_?(Classic|)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1 $2'
+    brand_replacement: 'Qmobile'
+    model_replacement: '$1 $2'
+  - regex: '; *(Q[Mm]obile)_([^_]+)_([^_]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: 'Qmobile $2 $3'
+    brand_replacement: 'Qmobile'
+    model_replacement: '$2 $3'
+  - regex: '; *(Q\-?[Mm]obile)[_ ](A[^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: 'Qmobile $2'
+    brand_replacement: 'Qmobile'
+    model_replacement: '$2'
+
+  #########
+  # Qmobilevn
+  # @ref: http://qmobile.vn/san-pham.html
+  #########
+  - regex: '; *(Q\-Smart)[ _]([^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1 $2'
+    brand_replacement: 'Qmobilevn'
+    model_replacement: '$2'
+  - regex: '; *(Q\-?[Mm]obile)[ _\-](S[^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1 $2'
+    brand_replacement: 'Qmobilevn'
+    model_replacement: '$2'
+
+  #########
+  # Quanta
+  # @ref: ?
+  #########
+  - regex: '; *(TA1013)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'Quanta'
+    model_replacement: '$1'
+
+  #########
+  # RCA
+  # @ref: http://rcamobilephone.com/
+  #########
+  - regex: '; (RCT\w+)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'RCA'
+    model_replacement: '$1'
+  - regex: '; RCA (\w+)(?: Build|\) AppleWebKit)'
+    device_replacement: 'RCA $1'
+    brand_replacement: 'RCA'
+    model_replacement: '$1'
+
+  #########
+  # Rockchip
+  # @ref: http://www.rock-chips.com/a/cn/product/index.html
+  # @note: manufacturer sells chipsets - I assume that these UAs are dev-boards
+  #########
+  - regex: '; *(RK\d+),?(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'Rockchip'
+    model_replacement: '$1'
+  - regex: ' Build/(RK\d+)'
+    device_replacement: '$1'
+    brand_replacement: 'Rockchip'
+    model_replacement: '$1'
+
+  #########
+  # Samsung Android Devices
+  # @ref: http://www.samsung.com/us/mobile/cell-phones/all-products
+  #########
+  - regex: '; *(SAMSUNG |Samsung |)((?:Galaxy (?:Note II|S\d)|GT-I9082|GT-I9205|GT-N7\d{3}|SM-N9005)[^;/]*)\/?[^;/]* Build/'
+    device_replacement: 'Samsung $1$2'
+    brand_replacement: 'Samsung'
+    model_replacement: '$2'
+  - regex: '; *(Google |)(Nexus [Ss](?: 4G|)) Build/'
+    device_replacement: 'Samsung $1$2'
+    brand_replacement: 'Samsung'
+    model_replacement: '$2'
+  - regex: '; *(SAMSUNG |Samsung )([^\/]*)\/[^ ]* Build/'
+    device_replacement: 'Samsung $2'
+    brand_replacement: 'Samsung'
+    model_replacement: '$2'
+  - regex: '; *(Galaxy(?: Ace| Nexus| S ?II+|Nexus S| with MCR 1.2| Mini Plus 4G|)) Build/'
+    device_replacement: 'Samsung $1'
+    brand_replacement: 'Samsung'
+    model_replacement: '$1'
+  - regex: '; *(SAMSUNG[ _\-]|)(?:SAMSUNG[ _\-])([^;/]+) Build'
+    device_replacement: 'Samsung $2'
+    brand_replacement: 'Samsung'
+    model_replacement: '$2'
+  - regex: '; *(SAMSUNG-|)(GT\-[BINPS]\d{4}[^\/]*)(\/[^ ]*) Build'
+    device_replacement: 'Samsung $1$2$3'
+    brand_replacement: 'Samsung'
+    model_replacement: '$2'
+  - regex: '(?:; *|^)((?:GT\-[BIiNPS]\d{4}|I9\d{2}0[A-Za-z\+]?\b)[^;/\)]*?)(?:Build|Linux|MIUI|[;/\)])'
+    device_replacement: 'Samsung $1'
+    brand_replacement: 'Samsung'
+    model_replacement: '$1'
+  - regex: '; (SAMSUNG-)([A-Za-z0-9\-]+).* Build/'
+    device_replacement: 'Samsung $1$2'
+    brand_replacement: 'Samsung'
+    model_replacement: '$2'
+  - regex: '; *((?:SCH|SGH|SHV|SHW|SPH|SC|SM)\-[A-Za-z0-9 ]+)(/?[^ ]*|) Build'
+    device_replacement: 'Samsung $1'
+    brand_replacement: 'Samsung'
+    model_replacement: '$1'
+  - regex: '; *((?:SC)\-[A-Za-z0-9 ]+)(/?[^ ]*|)\)'
+    device_replacement: 'Samsung $1'
+    brand_replacement: 'Samsung'
+    model_replacement: '$1'
+  - regex: ' ((?:SCH)\-[A-Za-z0-9 ]+)(/?[^ ]*|) Build'
+    device_replacement: 'Samsung $1'
+    brand_replacement: 'Samsung'
+    model_replacement: '$1'
+  - regex: '; *(Behold ?(?:2|II)|YP\-G[^;/]+|EK-GC100|SCL21|I9300) Build'
+    device_replacement: 'Samsung $1'
+    brand_replacement: 'Samsung'
+    model_replacement: '$1'
+  - regex: '; *((?:SCH|SGH|SHV|SHW|SPH|SC|SM)\-[A-Za-z0-9]{5,6})[\)]'
+    device_replacement: 'Samsung $1'
+    brand_replacement: 'Samsung'
+    model_replacement: '$1'
+
+  #########
+  # Sharp
+  # @ref: http://www.sharp-phone.com/en/index.html
+  # @ref: http://www.android.com/devices/?country=all&m=sharp
+  #########
+  - regex: '; *(SH\-?\d\d[^;/]+|SBM\d[^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'Sharp'
+    model_replacement: '$1'
+  - regex: '; *(SHARP[ -])([^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1$2'
+    brand_replacement: 'Sharp'
+    model_replacement: '$2'
+
+  #########
+  # Simvalley
+  # @ref: http://www.simvalley-mobile.de/
+  #########
+  - regex: '; *(SPX[_\-]\d[^;/]*)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'Simvalley'
+    model_replacement: '$1'
+  - regex: '; *(SX7\-PEARL\.GmbH)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'Simvalley'
+    model_replacement: '$1'
+  - regex: '; *(SP[T]?\-\d{2}[^;/]*)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'Simvalley'
+    model_replacement: '$1'
+
+  #########
+  # SK Telesys
+  # @ref: http://www.sk-w.com/phone/phone_list.jsp
+  # @ref: http://www.android.com/devices/?country=all&m=sk-telesys
+  #########
+  - regex: '; *(SK\-.*?)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'SKtelesys'
+    model_replacement: '$1'
+
+  #########
+  # Skytex
+  # @ref: http://skytex.com/android
+  #########
+  - regex: '; *(?:SKYTEX|SX)-([^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'Skytex'
+    model_replacement: '$1'
+  - regex: '; *(IMAGINE [^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'Skytex'
+    model_replacement: '$1'
+
+  #########
+  # SmartQ
+  # @ref: http://en.smartdevices.com.cn/Products/
+  # @models: Z8, X7, U7H, U7, T30, T20, Ten3, V5-II, T7-3G, SmartQ5, K7, S7, Q8, T19, Ten2, Ten, R10, T7, R7, V5, V7, SmartQ7
+  #########
+  - regex: '; *(SmartQ) ?([^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1 $2'
+    brand_replacement: '$1'
+    model_replacement: '$2'
+
+  #########
+  # Smartbitt
+  # @ref: http://www.smartbitt.com/
+  # @missing: SBT Useragents
+  #########
+  - regex: '; *(WF7C|WF10C|SBT[^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'Smartbitt'
+    model_replacement: '$1'
+
+  #########
+  # Softbank (Operator Branded Devices)
+  # @ref: http://www.ipentec.com/document/document.aspx?page=android-useragent
+  #########
+  - regex: '; *(SBM(?:003SH|005SH|006SH|007SH|102SH)) Build'
+    device_replacement: '$1'
+    brand_replacement: 'Sharp'
+    model_replacement: '$1'
+  - regex: '; *(003P|101P|101P11C|102P) Build'
+    device_replacement: '$1'
+    brand_replacement: 'Panasonic'
+    model_replacement: '$1'
+  - regex: '; *(00\dZ) Build/'
+    device_replacement: '$1'
+    brand_replacement: 'ZTE'
+    model_replacement: '$1'
+  - regex: '; HTC(X06HT) Build'
+    device_replacement: '$1'
+    brand_replacement: 'HTC'
+    model_replacement: '$1'
+  - regex: '; *(001HT|X06HT) Build'
+    device_replacement: '$1'
+    brand_replacement: 'HTC'
+    model_replacement: '$1'
+  - regex: '; *(201M) Build'
+    device_replacement: '$1'
+    brand_replacement: 'Motorola'
+    model_replacement: 'XT902'
+
+  #########
+  # Trekstor
+  # @ref: http://www.trekstor.co.uk/surftabs-en.html
+  # @note: Must come before SonyEricsson
+  #########
+  - regex: '; *(ST\d{4}.*)Build/ST'
+    device_replacement: 'Trekstor $1'
+    brand_replacement: 'Trekstor'
+    model_replacement: '$1'
+  - regex: '; *(ST\d{4}.*?)(?: Build|\) AppleWebKit)'
+    device_replacement: 'Trekstor $1'
+    brand_replacement: 'Trekstor'
+    model_replacement: '$1'
+
+  #########
+  # SonyEricsson
+  # @note: Must come before nokia since they also use symbian
+  # @ref: http://www.android.com/devices/?country=all&m=sony-ericssons
+  # @TODO: type!
+  #########
+  # android matchers
+  - regex: '; *(Sony ?Ericsson ?)([^;/]+) Build'
+    device_replacement: '$1$2'
+    brand_replacement: 'SonyEricsson'
+    model_replacement: '$2'
+  - regex: '; *((?:SK|ST|E|X|LT|MK|MT|WT)\d{2}[a-z0-9]*(?:-o|)|R800i|U20i) Build'
+    device_replacement: '$1'
+    brand_replacement: 'SonyEricsson'
+    model_replacement: '$1'
+  # TODO X\d+ is wrong
+  - regex: '; *(Xperia (?:A8|Arc|Acro|Active|Live with Walkman|Mini|Neo|Play|Pro|Ray|X\d+)[^;/]*) Build'
+    regex_flag: 'i'
+    device_replacement: '$1'
+    brand_replacement: 'SonyEricsson'
+    model_replacement: '$1'
+
+  #########
+  # Sony
+  # @ref: http://www.sonymobile.co.jp/index.html
+  # @ref: http://www.sonymobile.com/global-en/products/phones/
+  # @ref: http://www.sony.jp/tablet/
+  #########
+  - regex: '; Sony (Tablet[^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: 'Sony $1'
+    brand_replacement: 'Sony'
+    model_replacement: '$1'
+  - regex: '; Sony ([^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: 'Sony $1'
+    brand_replacement: 'Sony'
+    model_replacement: '$1'
+  - regex: '; *(Sony)([A-Za-z0-9\-]+)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1 $2'
+    brand_replacement: '$1'
+    model_replacement: '$2'
+  - regex: '; *(Xperia [^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'Sony'
+    model_replacement: '$1'
+  - regex: '; *(C(?:1[0-9]|2[0-9]|53|55|6[0-9])[0-9]{2}|D[25]\d{3}|D6[56]\d{2})(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'Sony'
+    model_replacement: '$1'
+  - regex: '; *(SGP\d{3}|SGPT\d{2})(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'Sony'
+    model_replacement: '$1'
+  - regex: '; *(NW-Z1000Series)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'Sony'
+    model_replacement: '$1'
+
+  ##########
+  # Sony PlayStation
+  # @ref: http://playstation.com
+  # The Vita spoofs the Kindle
+  ##########
+  - regex: 'PLAYSTATION 3'
+    device_replacement: 'PlayStation 3'
+    brand_replacement: 'Sony'
+    model_replacement: 'PlayStation 3'
+  - regex: '(PlayStation (?:Portable|Vita|\d+))'
+    device_replacement: '$1'
+    brand_replacement: 'Sony'
+    model_replacement: '$1'
+
+  #########
+  # Spice
+  # @ref: http://www.spicemobilephones.co.in/
+  #########
+  - regex: '; *((?:CSL_Spice|Spice|SPICE|CSL)[ _\-]?|)([Mm][Ii])([ _\-]|)(\d{3}[^;/]*)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1$2$3$4'
+    brand_replacement: 'Spice'
+    model_replacement: 'Mi$4'
+
+  #########
+  # Sprint (Operator Branded Devices)
+  # @ref:
+  #########
+  - regex: '; *(Sprint )(.+?) *(?:Build|[;/])'
+    device_replacement: '$1$2'
+    brand_replacement: 'Sprint'
+    model_replacement: '$2'
+  - regex: '\b(Sprint)[: ]([^;,/ ]+)'
+    device_replacement: '$1$2'
+    brand_replacement: 'Sprint'
+    model_replacement: '$2'
+
+  #########
+  # Tagi
+  # @ref: ??
+  #########
+  - regex: '; *(TAGI[ ]?)(MID) ?([^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1$2$3'
+    brand_replacement: 'Tagi'
+    model_replacement: '$2$3'
+
+  #########
+  # Tecmobile
+  # @ref: http://www.tecmobile.com/
+  #########
+  - regex: '; *(Oyster500|Opal 800)(?: Build|\) AppleWebKit)'
+    device_replacement: 'Tecmobile $1'
+    brand_replacement: 'Tecmobile'
+    model_replacement: '$1'
+
+  #########
+  # Tecno
+  # @ref: www.tecno-mobile.com/‎
+  #########
+  - regex: '; *(TECNO[ _])([^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1$2'
+    brand_replacement: 'Tecno'
+    model_replacement: '$2'
+
+  #########
+  # Telechips, Techvision evaluation boards
+  # @ref:
+  #########
+  - regex: '; *Android for (Telechips|Techvision) ([^ ]+) '
+    regex_flag: 'i'
+    device_replacement: '$1 $2'
+    brand_replacement: '$1'
+    model_replacement: '$2'
+
+  #########
+  # Telstra
+  # @ref: http://www.telstra.com.au/home-phone/thub-2/
+  # @ref: https://support.google.com/googleplay/answer/1727131?hl=en
+  #########
+  - regex: '; *(T-Hub2)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'Telstra'
+    model_replacement: '$1'
+
+  #########
+  # Terra
+  # @ref: http://www.wortmann.de/
+  #########
+  - regex: '; *(PAD) ?(100[12])(?: Build|\) AppleWebKit)'
+    device_replacement: 'Terra $1$2'
+    brand_replacement: 'Terra'
+    model_replacement: '$1$2'
+
+  #########
+  # Texet
+  # @ref: http://www.texet.ru/tablet/
+  #########
+  - regex: '; *(T[BM]-\d{3}[^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'Texet'
+    model_replacement: '$1'
+
+  #########
+  # Thalia
+  # @ref: http://www.thalia.de/shop/tolino-shine-ereader/show/
+  #########
+  - regex: '; *(tolino [^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'Thalia'
+    model_replacement: '$1'
+  - regex: '; *Build/.* (TOLINO_BROWSER)'
+    device_replacement: '$1'
+    brand_replacement: 'Thalia'
+    model_replacement: 'Tolino Shine'
+
+  #########
+  # Thl
+  # @ref: http://en.thl.com.cn/Mobile
+  # @ref: http://thlmobilestore.com
+  #########
+  - regex: '; *(?:CJ[ -])?(ThL|THL)[ -]([^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1 $2'
+    brand_replacement: 'Thl'
+    model_replacement: '$2'
+  - regex: '; *(T100|T200|T5|W100|W200|W8s)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'Thl'
+    model_replacement: '$1'
+
+  #########
+  # T-Mobile (Operator Branded Devices)
+  #########
+  # @ref: https://en.wikipedia.org/wiki/HTC_Hero
+  - regex: '; *(T-Mobile[ _]G2[ _]Touch) Build'
+    device_replacement: '$1'
+    brand_replacement: 'HTC'
+    model_replacement: 'Hero'
+  # @ref: https://en.wikipedia.org/wiki/HTC_Desire_Z
+  - regex: '; *(T-Mobile[ _]G2) Build'
+    device_replacement: '$1'
+    brand_replacement: 'HTC'
+    model_replacement: 'Desire Z'
+  - regex: '; *(T-Mobile myTouch Q) Build'
+    device_replacement: '$1'
+    brand_replacement: 'Huawei'
+    model_replacement: 'U8730'
+  - regex: '; *(T-Mobile myTouch) Build'
+    device_replacement: '$1'
+    brand_replacement: 'Huawei'
+    model_replacement: 'U8680'
+  - regex: '; *(T-Mobile_Espresso) Build'
+    device_replacement: '$1'
+    brand_replacement: 'HTC'
+    model_replacement: 'Espresso'
+  - regex: '; *(T-Mobile G1) Build'
+    device_replacement: '$1'
+    brand_replacement: 'HTC'
+    model_replacement: 'Dream'
+  - regex: '\b(T-Mobile ?|)(myTouch)[ _]?([34]G)[ _]?([^\/]*) (?:Mozilla|Build)'
+    device_replacement: '$1$2 $3 $4'
+    brand_replacement: 'HTC'
+    model_replacement: '$2 $3 $4'
+  - regex: '\b(T-Mobile)_([^_]+)_(.*) Build'
+    device_replacement: '$1 $2 $3'
+    brand_replacement: 'Tmobile'
+    model_replacement: '$2 $3'
+  - regex: '\b(T-Mobile)[_ ]?(.*?)Build'
+    device_replacement: '$1 $2'
+    brand_replacement: 'Tmobile'
+    model_replacement: '$2'
+
+  #########
+  # Tomtec
+  # @ref: http://www.tom-tec.eu/pages/tablets.php
+  #########
+  - regex: ' (ATP[0-9]{4})(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'Tomtec'
+    model_replacement: '$1'
+
+  #########
+  # Tooky
+  # @ref: http://www.tookymobile.com/
+  #########
+  - regex: ' *(TOOKY)[ _\-]([^;/]+?) ?(?:Build|;)'
+    regex_flag: 'i'
+    device_replacement: '$1 $2'
+    brand_replacement: 'Tooky'
+    model_replacement: '$2'
+
+  #########
+  # Toshiba
+  # @ref: http://www.toshiba.co.jp/
+  # @missing: LT170, Thrive 7, TOSHIBA STB10
+  #########
+  - regex: '\b(TOSHIBA_AC_AND_AZ|TOSHIBA_FOLIO_AND_A|FOLIO_AND_A)'
+    device_replacement: '$1'
+    brand_replacement: 'Toshiba'
+    model_replacement: 'Folio 100'
+  - regex: '; *([Ff]olio ?100)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'Toshiba'
+    model_replacement: 'Folio 100'
+  - regex: '; *(AT[0-9]{2,3}(?:\-A|LE\-A|PE\-A|SE|a|)|AT7-A|AT1S0|Hikari-iFrame/WDPF-[^;/]+|THRiVE|Thrive)(?: Build|\) AppleWebKit)'
+    device_replacement: 'Toshiba $1'
+    brand_replacement: 'Toshiba'
+    model_replacement: '$1'
+
+  #########
+  # Touchmate
+  # @ref: http://touchmatepc.com/new/
+  #########
+  - regex: '; *(TM-MID\d+[^;/]+|TOUCHMATE|MID-750)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'Touchmate'
+    model_replacement: '$1'
+  # @todo: needs verification user-agents missing
+  - regex: '; *(TM-SM\d+[^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'Touchmate'
+    model_replacement: '$1'
+
+  #########
+  # Treq
+  # @ref: http://www.treq.co.id/product
+  #########
+  - regex: '; *(A10 [Bb]asic2?)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'Treq'
+    model_replacement: '$1'
+  - regex: '; *(TREQ[ _\-])([^;/]+?)(?: Build|\) AppleWebKit)'
+    regex_flag: 'i'
+    device_replacement: '$1$2'
+    brand_replacement: 'Treq'
+    model_replacement: '$2'
+
+  #########
+  # Umeox
+  # @ref: http://umeox.com/
+  # @models: A936|A603|X-5|X-3
+  #########
+  # @todo: guessed markers
+  - regex: '; *(X-?5|X-?3)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'Umeox'
+    model_replacement: '$1'
+  # @todo: guessed markers
+  - regex: '; *(A502\+?|A936|A603|X1|X2)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'Umeox'
+    model_replacement: '$1'
+
+  #########
+  # Versus
+  # @ref: http://versusuk.com/support.html
+  #########
+  - regex: '(TOUCH(?:TAB|PAD).+?)(?: Build|\) AppleWebKit)'
+    regex_flag: 'i'
+    device_replacement: 'Versus $1'
+    brand_replacement: 'Versus'
+    model_replacement: '$1'
+
+  #########
+  # Vertu
+  # @ref: http://www.vertu.com/
+  #########
+  - regex: '(VERTU) ([^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1 $2'
+    brand_replacement: 'Vertu'
+    model_replacement: '$2'
+
+  #########
+  # Videocon
+  # @ref: http://www.videoconmobiles.com
+  #########
+  - regex: '; *(Videocon)[ _\-]([^;/]+?) *(?:Build|;)'
+    device_replacement: '$1 $2'
+    brand_replacement: 'Videocon'
+    model_replacement: '$2'
+  - regex: ' (VT\d{2}[A-Za-z]*)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'Videocon'
+    model_replacement: '$1'
+
+  #########
+  # Viewsonic
+  # @ref: http://viewsonic.com
+  #########
+  - regex: '; *((?:ViewPad|ViewPhone|VSD)[^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'Viewsonic'
+    model_replacement: '$1'
+  - regex: '; *(ViewSonic-)([^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1$2'
+    brand_replacement: 'Viewsonic'
+    model_replacement: '$2'
+  - regex: '; *(GTablet.*?)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'Viewsonic'
+    model_replacement: '$1'
+
+  #########
+  # vivo
+  # @ref: http://vivo.cn/
+  #########
+  - regex: '; *([Vv]ivo)[ _]([^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1 $2'
+    brand_replacement: 'vivo'
+    model_replacement: '$2'
+
+  #########
+  # Vodafone (Operator Branded Devices)
+  # @ref: ??
+  #########
+  - regex: '(Vodafone) (.*?)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1 $2'
+    brand_replacement: '$1'
+    model_replacement: '$2'
+
+  #########
+  # Walton
+  # @ref: http://www.waltonbd.com/
+  #########
+  - regex: '; *(?:Walton[ _\-]|)(Primo[ _\-][^;/]+?)(?: Build|\) AppleWebKit)'
+    regex_flag: 'i'
+    device_replacement: 'Walton $1'
+    brand_replacement: 'Walton'
+    model_replacement: '$1'
+
+  #########
+  # Wiko
+  # @ref: http://fr.wikomobile.com/collection.php?s=Smartphones
+  #########
+  - regex: '; *(?:WIKO[ \-]|)(CINK\+?|BARRY|BLOOM|DARKFULL|DARKMOON|DARKNIGHT|DARKSIDE|FIZZ|HIGHWAY|IGGY|OZZY|RAINBOW|STAIRWAY|SUBLIM|WAX|CINK [^;/]+?)(?: Build|\) AppleWebKit)'
+    regex_flag: 'i'
+    device_replacement: 'Wiko $1'
+    brand_replacement: 'Wiko'
+    model_replacement: '$1'
+
+  #########
+  # WellcoM
+  # @ref: ??
+  #########
+  - regex: '; *WellcoM-([^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: 'Wellcom $1'
+    brand_replacement: 'Wellcom'
+    model_replacement: '$1'
+
+  ##########
+  # WeTab
+  # @ref: http://wetab.mobi/
+  ##########
+  - regex: '(?:(WeTab)-Browser|; (wetab) Build)'
+    device_replacement: '$1'
+    brand_replacement: 'WeTab'
+    model_replacement: 'WeTab'
+
+  #########
+  # Wolfgang
+  # @ref: http://wolfgangmobile.com/
+  #########
+  - regex: '; *(AT-AS[^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: 'Wolfgang $1'
+    brand_replacement: 'Wolfgang'
+    model_replacement: '$1'
+
+  #########
+  # Woxter
+  # @ref: http://www.woxter.es/es-es/categories/index
+  #########
+  - regex: '; *(?:Woxter|Wxt) ([^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: 'Woxter $1'
+    brand_replacement: 'Woxter'
+    model_replacement: '$1'
+
+  #########
+  # Yarvik Zania
+  # @ref: http://yarvik.com
+  #########
+  - regex: '; *(?:Xenta |Luna |)(TAB[234][0-9]{2}|TAB0[78]-\d{3}|TAB0?9-\d{3}|TAB1[03]-\d{3}|SMP\d{2}-\d{3})(?: Build|\) AppleWebKit)'
+    device_replacement: 'Yarvik $1'
+    brand_replacement: 'Yarvik'
+    model_replacement: '$1'
+
+  #########
+  # Yifang
+  # @note: Needs to be at the very last as manufacturer builds for other brands.
+  # @ref: http://www.yifangdigital.com/
+  # @models: M1010, M1011, M1007, M1008, M1005, M899, M899LP, M909, M8000,
+  #   M8001, M8002, M8003, M849, M815, M816, M819, M805, M878, M780LPW,
+  #   M778, M7000, M7000AD, M7000NBD, M7001, M7002, M7002KBD, M777, M767,
+  #   M789, M799, M769, M757, M755, M753, M752, M739, M729, M723, M712, M727
+  #########
+  - regex: '; *([A-Z]{2,4})(M\d{3,}[A-Z]{2})([^;\)\/]*)(?: Build|[;\)])'
+    device_replacement: 'Yifang $1$2$3'
+    brand_replacement: 'Yifang'
+    model_replacement: '$2'
+
+  #########
+  # XiaoMi
+  # @ref: http://www.xiaomi.com/event/buyphone
+  #########
+  - regex: '; *((Mi|MI|HM|MI-ONE|Redmi)[ -](NOTE |Note |)[^;/]*) (Build|MIUI)/'
+    device_replacement: 'XiaoMi $1'
+    brand_replacement: 'XiaoMi'
+    model_replacement: '$1'
+  - regex: '; *((Mi|MI|HM|MI-ONE|Redmi)[ -](NOTE |Note |)[^;/\)]*)'
+    device_replacement: 'XiaoMi $1'
+    brand_replacement: 'XiaoMi'
+    model_replacement: '$1'
+  - regex: '; *(MIX) (Build|MIUI)/'
+    device_replacement: 'XiaoMi $1'
+    brand_replacement: 'XiaoMi'
+    model_replacement: '$1'
+  - regex: '; *((MIX) ([^;/]*)) (Build|MIUI)/'
+    device_replacement: 'XiaoMi $1'
+    brand_replacement: 'XiaoMi'
+    model_replacement: '$1'
+
+  #########
+  # Xolo
+  # @ref: http://www.xolo.in/
+  #########
+  - regex: '; *XOLO[ _]([^;/]*tab.*)(?: Build|\) AppleWebKit)'
+    regex_flag: 'i'
+    device_replacement: 'Xolo $1'
+    brand_replacement: 'Xolo'
+    model_replacement: '$1'
+  - regex: '; *XOLO[ _]([^;/]+?)(?: Build|\) AppleWebKit)'
+    regex_flag: 'i'
+    device_replacement: 'Xolo $1'
+    brand_replacement: 'Xolo'
+    model_replacement: '$1'
+  - regex: '; *(q\d0{2,3}[a-z]?)(?: Build|\) AppleWebKit)'
+    regex_flag: 'i'
+    device_replacement: 'Xolo $1'
+    brand_replacement: 'Xolo'
+    model_replacement: '$1'
+
+  #########
+  # Xoro
+  # @ref: http://www.xoro.de/produkte/
+  #########
+  - regex: '; *(PAD ?[79]\d+[^;/]*|TelePAD\d+[^;/])(?: Build|\) AppleWebKit)'
+    device_replacement: 'Xoro $1'
+    brand_replacement: 'Xoro'
+    model_replacement: '$1'
+
+  #########
+  # Zopo
+  # @ref: http://www.zopomobiles.com/products.html
+  #########
+  - regex: '; *(?:(?:ZOPO|Zopo)[ _]([^;/]+?)|(ZP ?(?:\d{2}[^;/]+|C2))|(C[2379]))(?: Build|\) AppleWebKit)'
+    device_replacement: '$1$2$3'
+    brand_replacement: 'Zopo'
+    model_replacement: '$1$2$3'
+
+  #########
+  # ZiiLabs
+  # @ref: http://www.ziilabs.com/products/platforms/androidreferencetablets.php
+  #########
+  - regex: '; *(ZiiLABS) (Zii[^;/]*)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1 $2'
+    brand_replacement: 'ZiiLabs'
+    model_replacement: '$2'
+  - regex: '; *(Zii)_([^;/]*)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1 $2'
+    brand_replacement: 'ZiiLabs'
+    model_replacement: '$2'
+
+  #########
+  # ZTE
+  # @ref: http://www.ztedevices.com/
+  #########
+  - regex: '; *(ARIZONA|(?:ATLAS|Atlas) W|D930|Grand (?:[SX][^;]*?|Era|Memo[^;]*?)|JOE|(?:Kis|KIS)\b[^;]*?|Libra|Light [^;]*?|N8[056][01]|N850L|N8000|N9[15]\d{2}|N9810|NX501|Optik|(?:Vip )Racer[^;]*?|RacerII|RACERII|San Francisco[^;]*?|V9[AC]|V55|V881|Z[679][0-9]{2}[A-z]?)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'ZTE'
+    model_replacement: '$1'
+  - regex: '; *([A-Z]\d+)_USA_[^;]*(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'ZTE'
+    model_replacement: '$1'
+  - regex: '; *(SmartTab\d+)[^;]*(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'ZTE'
+    model_replacement: '$1'
+  - regex: '; *(?:Blade|BLADE|ZTE-BLADE)([^;/]*)(?: Build|\) AppleWebKit)'
+    device_replacement: 'ZTE Blade$1'
+    brand_replacement: 'ZTE'
+    model_replacement: 'Blade$1'
+  - regex: '; *(?:Skate|SKATE|ZTE-SKATE)([^;/]*)(?: Build|\) AppleWebKit)'
+    device_replacement: 'ZTE Skate$1'
+    brand_replacement: 'ZTE'
+    model_replacement: 'Skate$1'
+  - regex: '; *(Orange |Optimus )(Monte Carlo|San Francisco)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1$2'
+    brand_replacement: 'ZTE'
+    model_replacement: '$1$2'
+  - regex: '; *(?:ZXY-ZTE_|ZTE\-U |ZTE[\- _]|ZTE-C[_ ])([^;/]+?)(?: Build|\) AppleWebKit)'
+    device_replacement: 'ZTE $1'
+    brand_replacement: 'ZTE'
+    model_replacement: '$1'
+  # operator specific
+  - regex: '; (BASE) (lutea|Lutea 2|Tab[^;]*?)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1 $2'
+    brand_replacement: 'ZTE'
+    model_replacement: '$1 $2'
+  - regex: '; (Avea inTouch 2|soft stone|tmn smart a7|Movistar[ _]Link)(?: Build|\) AppleWebKit)'
+    regex_flag: 'i'
+    device_replacement: '$1'
+    brand_replacement: 'ZTE'
+    model_replacement: '$1'
+  - regex: '; *(vp9plus)\)'
+    device_replacement: '$1'
+    brand_replacement: 'ZTE'
+    model_replacement: '$1'
+
+  ##########
+  # Zync
+  # @ref: http://www.zync.in/index.php/our-products/tablet-phablets
+  ##########
+  - regex: '; ?(Cloud[ _]Z5|z1000|Z99 2G|z99|z930|z999|z990|z909|Z919|z900)(?: Build|\) AppleWebKit)'
+    device_replacement: '$1'
+    brand_replacement: 'Zync'
+    model_replacement: '$1'
+
+  ##########
+  # Kindle
+  # @note: Needs to be after Sony Playstation Vita as this UA contains Silk/3.2
+  # @ref: https://developer.amazon.com/sdk/fire/specifications.html
+  # @ref: http://amazonsilk.wordpress.com/useful-bits/silk-user-agent/
+  ##########
+  - regex: '; ?(KFOT|Kindle Fire) Build\b'
+    device_replacement: 'Kindle Fire'
+    brand_replacement: 'Amazon'
+    model_replacement: 'Kindle Fire'
+  - regex: '; ?(KFOTE|Amazon Kindle Fire2) Build\b'
+    device_replacement: 'Kindle Fire 2'
+    brand_replacement: 'Amazon'
+    model_replacement: 'Kindle Fire 2'
+  - regex: '; ?(KFTT) Build\b'
+    device_replacement: 'Kindle Fire HD'
+    brand_replacement: 'Amazon'
+    model_replacement: 'Kindle Fire HD 7"'
+  - regex: '; ?(KFJWI) Build\b'
+    device_replacement: 'Kindle Fire HD 8.9" WiFi'
+    brand_replacement: 'Amazon'
+    model_replacement: 'Kindle Fire HD 8.9" WiFi'
+  - regex: '; ?(KFJWA) Build\b'
+    device_replacement: 'Kindle Fire HD 8.9" 4G'
+    brand_replacement: 'Amazon'
+    model_replacement: 'Kindle Fire HD 8.9" 4G'
+  - regex: '; ?(KFSOWI) Build\b'
+    device_replacement: 'Kindle Fire HD 7" WiFi'
+    brand_replacement: 'Amazon'
+    model_replacement: 'Kindle Fire HD 7" WiFi'
+  - regex: '; ?(KFTHWI) Build\b'
+    device_replacement: 'Kindle Fire HDX 7" WiFi'
+    brand_replacement: 'Amazon'
+    model_replacement: 'Kindle Fire HDX 7" WiFi'
+  - regex: '; ?(KFTHWA) Build\b'
+    device_replacement: 'Kindle Fire HDX 7" 4G'
+    brand_replacement: 'Amazon'
+    model_replacement: 'Kindle Fire HDX 7" 4G'
+  - regex: '; ?(KFAPWI) Build\b'
+    device_replacement: 'Kindle Fire HDX 8.9" WiFi'
+    brand_replacement: 'Amazon'
+    model_replacement: 'Kindle Fire HDX 8.9" WiFi'
+  - regex: '; ?(KFAPWA) Build\b'
+    device_replacement: 'Kindle Fire HDX 8.9" 4G'
+    brand_replacement: 'Amazon'
+    model_replacement: 'Kindle Fire HDX 8.9" 4G'
+  - regex: '; ?Amazon ([^;/]+) Build\b'
+    device_replacement: '$1'
+    brand_replacement: 'Amazon'
+    model_replacement: '$1'
+  - regex: '; ?(Kindle) Build\b'
+    device_replacement: 'Kindle'
+    brand_replacement: 'Amazon'
+    model_replacement: 'Kindle'
+  - regex: '; ?(Silk)/(\d+)\.(\d+)(?:\.([0-9\-]+)|) Build\b'
+    device_replacement: 'Kindle Fire'
+    brand_replacement: 'Amazon'
+    model_replacement: 'Kindle Fire$2'
+  - regex: ' (Kindle)/(\d+\.\d+)'
+    device_replacement: 'Kindle'
+    brand_replacement: 'Amazon'
+    model_replacement: '$1 $2'
+  - regex: ' (Silk|Kindle)/(\d+)\.'
+    device_replacement: 'Kindle'
+    brand_replacement: 'Amazon'
+    model_replacement: 'Kindle'
+
+  #########
+  # Devices from chinese manufacturer(s)
+  # @note: identified by x-wap-profile http://218.249.47.94/Xianghe/.*
+  #########
+  - regex: '(sprd)\-([^/]+)/'
+    device_replacement: '$1 $2'
+    brand_replacement: '$1'
+    model_replacement: '$2'
+  # @ref: http://eshinechina.en.alibaba.com/
+  - regex: '; *(H\d{2}00\+?) Build'
+    device_replacement: '$1'
+    brand_replacement: 'Hero'
+    model_replacement: '$1'
+  - regex: '; *(iphone|iPhone5) Build/'
+    device_replacement: 'Xianghe $1'
+    brand_replacement: 'Xianghe'
+    model_replacement: '$1'
+  - regex: '; *(e\d{4}[a-z]?_?v\d+|v89_[^;/]+)[^;/]+ Build/'
+    device_replacement: 'Xianghe $1'
+    brand_replacement: 'Xianghe'
+    model_replacement: '$1'
+
+  #########
+  # Cellular
+  # @ref:
+  # @note: Operator branded devices
+  #########
+  - regex: '\bUSCC[_\-]?([^ ;/\)]+)'
+    device_replacement: '$1'
+    brand_replacement: 'Cellular'
+    model_replacement: '$1'
+
+  ######################################################################
+  # Windows Phone Parsers
+  ######################################################################
+
+  #########
+  # Alcatel Windows Phones
+  #########
+  - regex: 'Windows Phone [^;]+; .*?IEMobile/[^;\)]+[;\)] ?(?:ARM; ?Touch; ?|Touch; ?|)(?:ALCATEL)[^;]*; *([^;,\)]+)'
+    device_replacement: 'Alcatel $1'
+    brand_replacement: 'Alcatel'
+    model_replacement: '$1'
+
+  #########
+  # Asus Windows Phones
+  #########
+  #~ - regex: 'Windows Phone [^;]+; .*?IEMobile/[^;\)]+[;\)] ?(?:ARM; ?Touch; ?|Touch; ?|WpsLondonTest; ?|)(?:ASUS|Asus)[^;]*; *([^;,\)]+)'
+  - regex: 'Windows Phone [^;]+; .*?IEMobile/[^;\)]+[;\)] ?(?:ARM; ?Touch; ?|Touch; ?|WpsLondonTest; ?|)(?:ASUS|Asus)[^;]*; *([^;,\)]+)'
+    device_replacement: 'Asus $1'
+    brand_replacement: 'Asus'
+    model_replacement: '$1'
+
+  #########
+  # Dell Windows Phones
+  #########
+  - regex: 'Windows Phone [^;]+; .*?IEMobile/[^;\)]+[;\)] ?(?:ARM; ?Touch; ?|Touch; ?|)(?:DELL|Dell)[^;]*; *([^;,\)]+)'
+    device_replacement: 'Dell $1'
+    brand_replacement: 'Dell'
+    model_replacement: '$1'
+
+  #########
+  # HTC Windows Phones
+  #########
+  - regex: 'Windows Phone [^;]+; .*?IEMobile/[^;\)]+[;\)] ?(?:ARM; ?Touch; ?|Touch; ?|WpsLondonTest; ?|)(?:HTC|Htc|HTC_blocked[^;]*)[^;]*; *(?:HTC|)([^;,\)]+)'
+    device_replacement: 'HTC $1'
+    brand_replacement: 'HTC'
+    model_replacement: '$1'
+
+  #########
+  # Huawei Windows Phones
+  #########
+  - regex: 'Windows Phone [^;]+; .*?IEMobile/[^;\)]+[;\)] ?(?:ARM; ?Touch; ?|Touch; ?|)(?:HUAWEI)[^;]*; *(?:HUAWEI |)([^;,\)]+)'
+    device_replacement: 'Huawei $1'
+    brand_replacement: 'Huawei'
+    model_replacement: '$1'
+
+  #########
+  # LG Windows Phones
+  #########
+  - regex: 'Windows Phone [^;]+; .*?IEMobile/[^;\)]+[;\)] ?(?:ARM; ?Touch; ?|Touch; ?|)(?:LG|Lg)[^;]*; *(?:LG[ \-]|)([^;,\)]+)'
+    device_replacement: 'LG $1'
+    brand_replacement: 'LG'
+    model_replacement: '$1'
+
+  #########
+  # Noka Windows Phones
+  #########
+  - regex: 'Windows Phone [^;]+; .*?IEMobile/[^;\)]+[;\)] ?(?:ARM; ?Touch; ?|Touch; ?|)(?:rv:11; |)(?:NOKIA|Nokia)[^;]*; *(?:NOKIA ?|Nokia ?|LUMIA ?|[Ll]umia ?|)(\d{3,10}[^;\)]*)'
+    device_replacement: 'Lumia $1'
+    brand_replacement: 'Nokia'
+    model_replacement: 'Lumia $1'
+  - regex: 'Windows Phone [^;]+; .*?IEMobile/[^;\)]+[;\)] ?(?:ARM; ?Touch; ?|Touch; ?|)(?:NOKIA|Nokia)[^;]*; *(RM-\d{3,})'
+    device_replacement: 'Nokia $1'
+    brand_replacement: 'Nokia'
+    model_replacement: '$1'
+  - regex: '(?:Windows Phone [^;]+; .*?IEMobile/[^;\)]+[;\)]|WPDesktop;) ?(?:ARM; ?Touch; ?|Touch; ?|)(?:NOKIA|Nokia)[^;]*; *(?:NOKIA ?|Nokia ?|LUMIA ?|[Ll]umia ?|)([^;\)]+)'
+    device_replacement: 'Nokia $1'
+    brand_replacement: 'Nokia'
+    model_replacement: '$1'
+
+  #########
+  # Microsoft Windows Phones
+  #########
+  - regex: 'Windows Phone [^;]+; .*?IEMobile/[^;\)]+[;\)] ?(?:ARM; ?Touch; ?|Touch; ?|)(?:Microsoft(?: Corporation|))[^;]*; *([^;,\)]+)'
+    device_replacement: 'Microsoft $1'
+    brand_replacement: 'Microsoft'
+    model_replacement: '$1'
+
+  #########
+  # Samsung Windows Phones
+  #########
+  - regex: 'Windows Phone [^;]+; .*?IEMobile/[^;\)]+[;\)] ?(?:ARM; ?Touch; ?|Touch; ?|WpsLondonTest; ?|)(?:SAMSUNG)[^;]*; *(?:SAMSUNG |)([^;,\.\)]+)'
+    device_replacement: 'Samsung $1'
+    brand_replacement: 'Samsung'
+    model_replacement: '$1'
+
+  #########
+  # Toshiba Windows Phones
+  #########
+  - regex: 'Windows Phone [^;]+; .*?IEMobile/[^;\)]+[;\)] ?(?:ARM; ?Touch; ?|Touch; ?|WpsLondonTest; ?|)(?:TOSHIBA|FujitsuToshibaMobileCommun)[^;]*; *([^;,\)]+)'
+    device_replacement: 'Toshiba $1'
+    brand_replacement: 'Toshiba'
+    model_replacement: '$1'
+
+  #########
+  # Generic Windows Phones
+  #########
+  - regex: 'Windows Phone [^;]+; .*?IEMobile/[^;\)]+[;\)] ?(?:ARM; ?Touch; ?|Touch; ?|WpsLondonTest; ?|)([^;]+); *([^;,\)]+)'
+    device_replacement: '$1 $2'
+    brand_replacement: '$1'
+    model_replacement: '$2'
+
+  ######################################################################
+  # Other Devices Parser
+  ######################################################################
+
+  #########
+  # Samsung Bada Phones
+  #########
+  - regex: '(?:^|; )SAMSUNG\-([A-Za-z0-9\-]+).* Bada/'
+    device_replacement: 'Samsung $1'
+    brand_replacement: 'Samsung'
+    model_replacement: '$1'
+
+  #########
+  # Firefox OS
+  #########
+  - regex: '\(Mobile; ALCATEL ?(One|ONE) ?(Touch|TOUCH) ?([^;/]+?)(?:/[^;]+|); rv:[^\)]+\) Gecko/[^\/]+ Firefox/'
+    device_replacement: 'Alcatel $1 $2 $3'
+    brand_replacement: 'Alcatel'
+    model_replacement: 'One Touch $3'
+  - regex: '\(Mobile; (?:ZTE([^;]+)|(OpenC)); rv:[^\)]+\) Gecko/[^\/]+ Firefox/'
+    device_replacement: 'ZTE $1$2'
+    brand_replacement: 'ZTE'
+    model_replacement: '$1$2'
+
+  #########
+  # KaiOS
+  #########
+  - regex: '\(Mobile; ALCATEL([A-Za-z0-9\-]+); rv:[^\)]+\) Gecko/[^\/]+ Firefox/[^\/]+ KaiOS/'
+    device_replacement: 'Alcatel $1'
+    brand_replacement: 'Alcatel'
+    model_replacement: '$1'
+  - regex: '\(Mobile; LYF\/([A-Za-z0-9\-]+)\/.+;.+rv:[^\)]+\) Gecko/[^\/]+ Firefox/[^\/]+ KAIOS/'
+    device_replacement: 'LYF $1'
+    brand_replacement: 'LYF'
+    model_replacement: '$1'
+  - regex: '\(Mobile; Nokia_([A-Za-z0-9\-]+)_.+; rv:[^\)]+\) Gecko/[^\/]+ Firefox/[^\/]+ KAIOS/'
+    device_replacement: 'Nokia $1'
+    brand_replacement: 'Nokia'
+    model_replacement: '$1'
+
+  ##########
+  # NOKIA
+  # @note: NokiaN8-00 comes before iphone. Sometimes spoofs iphone
+  ##########
+  - regex: 'Nokia(N[0-9]+)([A-Za-z_\-][A-Za-z0-9_\-]*)'
+    device_replacement: 'Nokia $1'
+    brand_replacement: 'Nokia'
+    model_replacement: '$1$2'
+  - regex: '(?:NOKIA|Nokia)(?:\-| *)(?:([A-Za-z0-9]+)\-[0-9a-f]{32}|([A-Za-z0-9\-]+)(?:UCBrowser)|([A-Za-z0-9\-]+))'
+    device_replacement: 'Nokia $1$2$3'
+    brand_replacement: 'Nokia'
+    model_replacement: '$1$2$3'
+  - regex: 'Lumia ([A-Za-z0-9\-]+)'
+    device_replacement: 'Lumia $1'
+    brand_replacement: 'Nokia'
+    model_replacement: 'Lumia $1'
+  # UCWEB Browser on Symbian
+  - regex: '\(Symbian; U; S60 V5; [A-z]{2}\-[A-z]{2}; (SonyEricsson|Samsung|Nokia|LG)([^;/]+?)\)'
+    device_replacement: '$1 $2'
+    brand_replacement: '$1'
+    model_replacement: '$2'
+  # Nokia Symbian
+  - regex: '\(Symbian(?:/3|); U; ([^;]+);'
+    device_replacement: 'Nokia $1'
+    brand_replacement: 'Nokia'
+    model_replacement: '$1'
+
+  ##########
+  # BlackBerry
+  # @ref: http://www.useragentstring.com/pages/BlackBerry/
+  ##########
+  - regex: 'BB10; ([A-Za-z0-9\- ]+)\)'
+    device_replacement: 'BlackBerry $1'
+    brand_replacement: 'BlackBerry'
+    model_replacement: '$1'
+  - regex: 'Play[Bb]ook.+RIM Tablet OS'
+    device_replacement: 'BlackBerry Playbook'
+    brand_replacement: 'BlackBerry'
+    model_replacement: 'Playbook'
+  - regex: 'Black[Bb]erry ([0-9]+);'
+    device_replacement: 'BlackBerry $1'
+    brand_replacement: 'BlackBerry'
+    model_replacement: '$1'
+  - regex: 'Black[Bb]erry([0-9]+)'
+    device_replacement: 'BlackBerry $1'
+    brand_replacement: 'BlackBerry'
+    model_replacement: '$1'
+  - regex: 'Black[Bb]erry;'
+    device_replacement: 'BlackBerry'
+    brand_replacement: 'BlackBerry'
+
+  ##########
+  # PALM / HP
+  # @note: some palm devices must come before iphone. sometimes spoofs iphone in ua
+  ##########
+  - regex: '(Pre|Pixi)/\d+\.\d+'
+    device_replacement: 'Palm $1'
+    brand_replacement: 'Palm'
+    model_replacement: '$1'
+  - regex: 'Palm([0-9]+)'
+    device_replacement: 'Palm $1'
+    brand_replacement: 'Palm'
+    model_replacement: '$1'
+  - regex: 'Treo([A-Za-z0-9]+)'
+    device_replacement: 'Palm Treo $1'
+    brand_replacement: 'Palm'
+    model_replacement: 'Treo $1'
+  - regex: 'webOS.*(P160U(?:NA|))/(\d+).(\d+)'
+    device_replacement: 'HP Veer'
+    brand_replacement: 'HP'
+    model_replacement: 'Veer'
+  - regex: '(Touch[Pp]ad)/\d+\.\d+'
+    device_replacement: 'HP TouchPad'
+    brand_replacement: 'HP'
+    model_replacement: 'TouchPad'
+  - regex: 'HPiPAQ([A-Za-z0-9]+)/\d+.\d+'
+    device_replacement: 'HP iPAQ $1'
+    brand_replacement: 'HP'
+    model_replacement: 'iPAQ $1'
+  - regex: 'PDA; (PalmOS)/sony/model ([a-z]+)/Revision'
+    device_replacement: '$1'
+    brand_replacement: 'Sony'
+    model_replacement: '$1 $2'
+
+  ##########
+  # AppleTV
+  # No built in browser that I can tell
+  # Stack Overflow indicated iTunes-AppleTV/4.1 as a known UA for app available and I'm seeing it in live traffic
+  ##########
+  - regex: '(Apple\s?TV)'
+    device_replacement: 'AppleTV'
+    brand_replacement: 'Apple'
+    model_replacement: 'AppleTV'
+
+  #########
+  # Tesla Model S
+  #########
+  - regex: '(QtCarBrowser)'
+    device_replacement: 'Tesla Model S'
+    brand_replacement: 'Tesla'
+    model_replacement: 'Model S'
+
+  ##########
+  # iSTUFF
+  # @note: complete but probably catches spoofs
+  #   ipad and ipod must be parsed before iphone
+  #   cannot determine specific device type from ua string. (3g, 3gs, 4, etc)
+  ##########
+  # @note: on some ua the device can be identified e.g. iPhone5,1
+  - regex: '(iPhone|iPad|iPod)(\d+,\d+)'
+    device_replacement: '$1'
+    brand_replacement: 'Apple'
+    model_replacement: '$1$2'
+  # @note: iPad needs to be before iPhone
+  - regex: '(iPad)(?:;| Simulator;)'
+    device_replacement: '$1'
+    brand_replacement: 'Apple'
+    model_replacement: '$1'
+  - regex: '(iPod)(?:;| touch;| Simulator;)'
+    device_replacement: '$1'
+    brand_replacement: 'Apple'
+    model_replacement: '$1'
+  - regex: '(iPhone)(?:;| Simulator;)'
+    device_replacement: '$1'
+    brand_replacement: 'Apple'
+    model_replacement: '$1'
+  - regex: '(Watch)(\d+,\d+)'
+    device_replacement: 'Apple $1'
+    brand_replacement: 'Apple'
+    model_replacement: '$1$2'
+  - regex: '(Apple Watch)(?:;| Simulator;)'
+    device_replacement: '$1'
+    brand_replacement: 'Apple'
+    model_replacement: '$1'
+  - regex: '(HomePod)(?:;| Simulator;)'
+    device_replacement: '$1'
+    brand_replacement: 'Apple'
+    model_replacement: '$1'
+  - regex: 'iPhone'
+    device_replacement: 'iPhone'
+    brand_replacement: 'Apple'
+    model_replacement: 'iPhone'
+  # @note: desktop applications show device info
+  - regex: 'CFNetwork/.* Darwin/\d.*\(((?:Mac|iMac|PowerMac|PowerBook)[^\d]*)(\d+)(?:,|%2C)(\d+)'
+    device_replacement: '$1$2,$3'
+    brand_replacement: 'Apple'
+    model_replacement: '$1$2,$3'
+  # @note: newer desktop applications don't show device info
+  # This is here so as to not have them recorded as iOS-Device
+  - regex: 'CFNetwork/.* Darwin/\d+\.\d+\.\d+ \(x86_64\)'
+    device_replacement: 'Mac'
+    brand_replacement: 'Apple'
+    model_replacement: 'Mac'
+  # @note: iOS applications do not show device info
+  - regex: 'CFNetwork/.* Darwin/\d'
+    device_replacement: 'iOS-Device'
+    brand_replacement: 'Apple'
+    model_replacement: 'iOS-Device'
+
+  ##########################
+  # Outlook on iOS >= 2.62.0
+  ##########################
+  - regex: 'Outlook-(iOS)/\d+\.\d+\.prod\.iphone'
+    brand_replacement: 'Apple'
+    device_replacement: 'iPhone'
+    model_replacement: 'iPhone'
+
+  ##########
+  # Acer
+  ##########
+  - regex: 'acer_([A-Za-z0-9]+)_'
+    device_replacement: 'Acer $1'
+    brand_replacement: 'Acer'
+    model_replacement: '$1'
+
+  ##########
+  # Alcatel
+  ##########
+  - regex: '(?:ALCATEL|Alcatel)-([A-Za-z0-9\-]+)'
+    device_replacement: 'Alcatel $1'
+    brand_replacement: 'Alcatel'
+    model_replacement: '$1'
+
+  ##########
+  # Amoi
+  ##########
+  - regex: '(?:Amoi|AMOI)\-([A-Za-z0-9]+)'
+    device_replacement: 'Amoi $1'
+    brand_replacement: 'Amoi'
+    model_replacement: '$1'
+
+  ##########
+  # Asus
+  ##########
+  - regex: '(?:; |\/|^)((?:Transformer (?:Pad|Prime) |Transformer |PadFone[ _]?)[A-Za-z0-9]*)'
+    device_replacement: 'Asus $1'
+    brand_replacement: 'Asus'
+    model_replacement: '$1'
+  - regex: '(?:asus.*?ASUS|Asus|ASUS|asus)[\- ;]*((?:Transformer (?:Pad|Prime) |Transformer |Padfone |Nexus[ _]|)[A-Za-z0-9]+)'
+    device_replacement: 'Asus $1'
+    brand_replacement: 'Asus'
+    model_replacement: '$1'
+  - regex: '(?:ASUS)_([A-Za-z0-9\-]+)'
+    device_replacement: 'Asus $1'
+    brand_replacement: 'Asus'
+    model_replacement: '$1'
+
+
+  ##########
+  # Bird
+  ##########
+  - regex: '\bBIRD[ \-\.]([A-Za-z0-9]+)'
+    device_replacement: 'Bird $1'
+    brand_replacement: 'Bird'
+    model_replacement: '$1'
+
+  ##########
+  # Dell
+  ##########
+  - regex: '\bDell ([A-Za-z0-9]+)'
+    device_replacement: 'Dell $1'
+    brand_replacement: 'Dell'
+    model_replacement: '$1'
+
+  ##########
+  # DoCoMo
+  ##########
+  - regex: 'DoCoMo/2\.0 ([A-Za-z0-9]+)'
+    device_replacement: 'DoCoMo $1'
+    brand_replacement: 'DoCoMo'
+    model_replacement: '$1'
+  - regex: '([A-Za-z0-9]+)_W;FOMA'
+    device_replacement: 'DoCoMo $1'
+    brand_replacement: 'DoCoMo'
+    model_replacement: '$1'
+  - regex: '([A-Za-z0-9]+);FOMA'
+    device_replacement: 'DoCoMo $1'
+    brand_replacement: 'DoCoMo'
+    model_replacement: '$1'
+
+  ##########
+  # htc
+  ##########
+  - regex: '\b(?:HTC/|HTC/[a-z0-9]+/|)HTC[ _\-;]? *(.*?)(?:-?Mozilla|fingerPrint|[;/\(\)]|$)'
+    device_replacement: 'HTC $1'
+    brand_replacement: 'HTC'
+    model_replacement: '$1'
+
+  ##########
+  # Huawei
+  ##########
+  - regex: 'Huawei([A-Za-z0-9]+)'
+    device_replacement: 'Huawei $1'
+    brand_replacement: 'Huawei'
+    model_replacement: '$1'
+  - regex: 'HUAWEI-([A-Za-z0-9]+)'
+    device_replacement: 'Huawei $1'
+    brand_replacement: 'Huawei'
+    model_replacement: '$1'
+  - regex: 'HUAWEI ([A-Za-z0-9\-]+)'
+    device_replacement: 'Huawei $1'
+    brand_replacement: 'Huawei'
+    model_replacement: '$1'
+  - regex: 'vodafone([A-Za-z0-9]+)'
+    device_replacement: 'Huawei Vodafone $1'
+    brand_replacement: 'Huawei'
+    model_replacement: 'Vodafone $1'
+
+  ##########
+  # i-mate
+  ##########
+  - regex: 'i\-mate ([A-Za-z0-9]+)'
+    device_replacement: 'i-mate $1'
+    brand_replacement: 'i-mate'
+    model_replacement: '$1'
+
+  ##########
+  # kyocera
+  ##########
+  - regex: 'Kyocera\-([A-Za-z0-9]+)'
+    device_replacement: 'Kyocera $1'
+    brand_replacement: 'Kyocera'
+    model_replacement: '$1'
+  - regex: 'KWC\-([A-Za-z0-9]+)'
+    device_replacement: 'Kyocera $1'
+    brand_replacement: 'Kyocera'
+    model_replacement: '$1'
+
+  ##########
+  # lenovo
+  ##########
+  - regex: 'Lenovo[_\-]([A-Za-z0-9]+)'
+    device_replacement: 'Lenovo $1'
+    brand_replacement: 'Lenovo'
+    model_replacement: '$1'
+
+  ##########
+  # HbbTV (European and Australian standard)
+  # written before the LG regexes, as LG is making HbbTV too
+  ##########
+  - regex: '(HbbTV)/[0-9]+\.[0-9]+\.[0-9]+ \( ?;(LG)E ?;([^;]{0,30})'
+    device_replacement: '$1'
+    brand_replacement: '$2'
+    model_replacement: '$3'
+  - regex: '(HbbTV)/1\.1\.1.*CE-HTML/1\.\d;(Vendor/|)(THOM[^;]*?)[;\s].{0,30}(LF[^;]+);?'
+    device_replacement: '$1'
+    brand_replacement: 'Thomson'
+    model_replacement: '$4'
+  - regex: '(HbbTV)(?:/1\.1\.1|) ?(?: \(;;;;;\)|); *CE-HTML(?:/1\.\d|); *([^ ]+) ([^;]+);'
+    device_replacement: '$1'
+    brand_replacement: '$2'
+    model_replacement: '$3'
+  - regex: '(HbbTV)/1\.1\.1 \(;;;;;\) Maple_2011'
+    device_replacement: '$1'
+    brand_replacement: 'Samsung'
+  - regex: '(HbbTV)/[0-9]+\.[0-9]+\.[0-9]+ \([^;]{0,30}; ?(?:CUS:([^;]*)|([^;]+)) ?; ?([^;]{0,30})'
+    device_replacement: '$1'
+    brand_replacement: '$2$3'
+    model_replacement: '$4'
+  - regex: '(HbbTV)/[0-9]+\.[0-9]+\.[0-9]+'
+    device_replacement: '$1'
+
+  ##########
+  # LGE NetCast TV
+  ##########
+  - regex: 'LGE; (?:Media\/|)([^;]*);[^;]*;[^;]*;?\); "?LG NetCast(\.TV|\.Media|)-\d+'
+    device_replacement: 'NetCast$2'
+    brand_replacement: 'LG'
+    model_replacement: '$1'
+
+  ##########
+  # InettvBrowser
+  ##########
+  - regex: 'InettvBrowser/[0-9]+\.[0-9A-Z]+ \([^;]*;(Sony)([^;]*);[^;]*;[^\)]*\)'
+    device_replacement: 'Inettv'
+    brand_replacement: '$1'
+    model_replacement: '$2'
+  - regex: 'InettvBrowser/[0-9]+\.[0-9A-Z]+ \([^;]*;([^;]*);[^;]*;[^\)]*\)'
+    device_replacement: 'Inettv'
+    brand_replacement: 'Generic_Inettv'
+    model_replacement: '$1'
+  - regex: '(?:InettvBrowser|TSBNetTV|NETTV|HBBTV)'
+    device_replacement: 'Inettv'
+    brand_replacement: 'Generic_Inettv'
+
+  ##########
+  # lg
+  ##########
+  # LG Symbian Phones
+  - regex: 'Series60/\d\.\d (LG)[\-]?([A-Za-z0-9 \-]+)'
+    device_replacement: '$1 $2'
+    brand_replacement: '$1'
+    model_replacement: '$2'
+  # other LG phones
+  - regex: '\b(?:LGE[ \-]LG\-(?:AX|)|LGE |LGE?-LG|LGE?[ \-]|LG[ /\-]|lg[\-])([A-Za-z0-9]+)\b'
+    device_replacement: 'LG $1'
+    brand_replacement: 'LG'
+    model_replacement: '$1'
+  - regex: '(?:^LG[\-]?|^LGE[\-/]?)([A-Za-z]+[0-9]+[A-Za-z]*)'
+    device_replacement: 'LG $1'
+    brand_replacement: 'LG'
+    model_replacement: '$1'
+  - regex: '^LG([0-9]+[A-Za-z]*)'
+    device_replacement: 'LG $1'
+    brand_replacement: 'LG'
+    model_replacement: '$1'
+
+  ##########
+  # microsoft
+  ##########
+  - regex: '(KIN\.[^ ]+) (\d+)\.(\d+)'
+    device_replacement: 'Microsoft $1'
+    brand_replacement: 'Microsoft'
+    model_replacement: '$1'
+  - regex: '(?:MSIE|XBMC).*\b(Xbox)\b'
+    device_replacement: '$1'
+    brand_replacement: 'Microsoft'
+    model_replacement: '$1'
+  - regex: '; ARM; Trident/6\.0; Touch[\);]'
+    device_replacement: 'Microsoft Surface RT'
+    brand_replacement: 'Microsoft'
+    model_replacement: 'Surface RT'
+
+  ##########
+  # motorola
+  ##########
+  - regex: 'Motorola\-([A-Za-z0-9]+)'
+    device_replacement: 'Motorola $1'
+    brand_replacement: 'Motorola'
+    model_replacement: '$1'
+  - regex: 'MOTO\-([A-Za-z0-9]+)'
+    device_replacement: 'Motorola $1'
+    brand_replacement: 'Motorola'
+    model_replacement: '$1'
+  - regex: 'MOT\-([A-z0-9][A-z0-9\-]*)'
+    device_replacement: 'Motorola $1'
+    brand_replacement: 'Motorola'
+    model_replacement: '$1'
+
+  ##########
+  # nintendo
+  ##########
+  - regex: 'Nintendo WiiU'
+    device_replacement: 'Nintendo Wii U'
+    brand_replacement: 'Nintendo'
+    model_replacement: 'Wii U'
+  - regex: 'Nintendo (DS|3DS|DSi|Wii);'
+    device_replacement: 'Nintendo $1'
+    brand_replacement: 'Nintendo'
+    model_replacement: '$1'
+
+  ##########
+  # pantech
+  ##########
+  - regex: '(?:Pantech|PANTECH)[ _-]?([A-Za-z0-9\-]+)'
+    device_replacement: 'Pantech $1'
+    brand_replacement: 'Pantech'
+    model_replacement: '$1'
+
+  ##########
+  # philips
+  ##########
+  - regex: 'Philips([A-Za-z0-9]+)'
+    device_replacement: 'Philips $1'
+    brand_replacement: 'Philips'
+    model_replacement: '$1'
+  - regex: 'Philips ([A-Za-z0-9]+)'
+    device_replacement: 'Philips $1'
+    brand_replacement: 'Philips'
+    model_replacement: '$1'
+
+  ##########
+  # Samsung
+  ##########
+  # Samsung Smart-TV
+  - regex: '(SMART-TV); .* Tizen '
+    device_replacement: 'Samsung $1'
+    brand_replacement: 'Samsung'
+    model_replacement: '$1'
+  # Samsung Symbian Devices
+  - regex: 'SymbianOS/9\.\d.* Samsung[/\-]([A-Za-z0-9 \-]+)'
+    device_replacement: 'Samsung $1'
+    brand_replacement: 'Samsung'
+    model_replacement: '$1'
+  - regex: '(Samsung)(SGH)(i[0-9]+)'
+    device_replacement: '$1 $2$3'
+    brand_replacement: '$1'
+    model_replacement: '$2-$3'
+  - regex: 'SAMSUNG-ANDROID-MMS/([^;/]+)'
+    device_replacement: '$1'
+    brand_replacement: 'Samsung'
+    model_replacement: '$1'
+  # Other Samsung
+  #- regex: 'SAMSUNG(?:; |-)([A-Za-z0-9\-]+)'
+  - regex: 'SAMSUNG(?:; |[ -/])([A-Za-z0-9\-]+)'
+    regex_flag: 'i'
+    device_replacement: 'Samsung $1'
+    brand_replacement: 'Samsung'
+    model_replacement: '$1'
+
+  ##########
+  # Sega
+  ##########
+  - regex: '(Dreamcast)'
+    device_replacement: 'Sega $1'
+    brand_replacement: 'Sega'
+    model_replacement: '$1'
+
+  ##########
+  # Siemens mobile
+  ##########
+  - regex: '^SIE-([A-Za-z0-9]+)'
+    device_replacement: 'Siemens $1'
+    brand_replacement: 'Siemens'
+    model_replacement: '$1'
+
+  ##########
+  # Softbank
+  ##########
+  - regex: 'Softbank/[12]\.0/([A-Za-z0-9]+)'
+    device_replacement: 'Softbank $1'
+    brand_replacement: 'Softbank'
+    model_replacement: '$1'
+
+  ##########
+  # SonyEricsson
+  ##########
+  - regex: 'SonyEricsson ?([A-Za-z0-9\-]+)'
+    device_replacement: 'Ericsson $1'
+    brand_replacement: 'SonyEricsson'
+    model_replacement: '$1'
+
+  ##########
+  # Sony
+  ##########
+  - regex: 'Android [^;]+; ([^ ]+) (Sony)/'
+    device_replacement: '$2 $1'
+    brand_replacement: '$2'
+    model_replacement: '$1'
+  - regex: '(Sony)(?:BDP\/|\/|)([^ /;\)]+)[ /;\)]'
+    device_replacement: '$1 $2'
+    brand_replacement: '$1'
+    model_replacement: '$2'
+
+  #########
+  # Puffin Browser Device detect
+  # A=Android, I=iOS, P=Phone, T=Tablet
+  # AT=Android+Tablet
+  #########
+  - regex: 'Puffin/[\d\.]+IT'
+    device_replacement: 'iPad'
+    brand_replacement: 'Apple'
+    model_replacement: 'iPad'
+  - regex: 'Puffin/[\d\.]+IP'
+    device_replacement: 'iPhone'
+    brand_replacement: 'Apple'
+    model_replacement: 'iPhone'
+  - regex: 'Puffin/[\d\.]+AT'
+    device_replacement: 'Generic Tablet'
+    brand_replacement: 'Generic'
+    model_replacement: 'Tablet'
+  - regex: 'Puffin/[\d\.]+AP'
+    device_replacement: 'Generic Smartphone'
+    brand_replacement: 'Generic'
+    model_replacement: 'Smartphone'
+
+  #########
+  # Android General Device Matching (far from perfect)
+  #########
+  - regex: 'Android[\- ][\d]+\.[\d]+; [A-Za-z]{2}\-[A-Za-z]{0,2}; WOWMobile (.+)( Build[/ ]|\))'
+    brand_replacement: 'Generic_Android'
+    model_replacement: '$1'
+  - regex: 'Android[\- ][\d]+\.[\d]+\-update1; [A-Za-z]{2}\-[A-Za-z]{0,2} *; *(.+?)( Build[/ ]|\))'
+    brand_replacement: 'Generic_Android'
+    model_replacement: '$1'
+  - regex: 'Android[\- ][\d]+(?:\.[\d]+)(?:\.[\d]+|); *[A-Za-z]{2}[_\-][A-Za-z]{0,2}\-? *; *(.+?)( Build[/ ]|\))'
+    brand_replacement: 'Generic_Android'
+    model_replacement: '$1'
+  - regex: 'Android[\- ][\d]+(?:\.[\d]+)(?:\.[\d]+|); *[A-Za-z]{0,2}\- *; *(.+?)( Build[/ ]|\))'
+    brand_replacement: 'Generic_Android'
+    model_replacement: '$1'
+  # No build info at all - "Build" follows locale immediately
+  - regex: 'Android[\- ][\d]+(?:\.[\d]+)(?:\.[\d]+|); *[a-z]{0,2}[_\-]?[A-Za-z]{0,2};?( Build[/ ]|\))'
+    device_replacement: 'Generic Smartphone'
+    brand_replacement: 'Generic'
+    model_replacement: 'Smartphone'
+  - regex: 'Android[\- ][\d]+(?:\.[\d]+)(?:\.[\d]+|); *\-?[A-Za-z]{2}; *(.+?)( Build[/ ]|\))'
+    brand_replacement: 'Generic_Android'
+    model_replacement: '$1'
+  - regex: 'Android \d+?(?:\.\d+|)(?:\.\d+|); ([^;]+?)(?: Build|\) AppleWebKit).+? Mobile Safari'
+    brand_replacement: 'Generic_Android'
+    model_replacement: '$1'
+  - regex: 'Android \d+?(?:\.\d+|)(?:\.\d+|); ([^;]+?)(?: Build|\) AppleWebKit).+? Safari'
+    brand_replacement: 'Generic_Android_Tablet'
+    model_replacement: '$1'
+  - regex: 'Android \d+?(?:\.\d+|)(?:\.\d+|); ([^;]+?)(?: Build|\))'
+    brand_replacement: 'Generic_Android'
+    model_replacement: '$1'
+
+  ##########
+  # Google TV
+  ##########
+  - regex: '(GoogleTV)'
+    brand_replacement: 'Generic_Inettv'
+    model_replacement: '$1'
+
+  ##########
+  # WebTV
+  ##########
+  - regex: '(WebTV)/\d+.\d+'
+    brand_replacement: 'Generic_Inettv'
+    model_replacement: '$1'
+  # Roku Digital-Video-Players https://www.roku.com/
+  - regex: '^(Roku)/DVP-\d+\.\d+'
+    brand_replacement: 'Generic_Inettv'
+    model_replacement: '$1'
+
+  ##########
+  # Generic Tablet
+  ##########
+  - regex: '(Android 3\.\d|Opera Tablet|Tablet; .+Firefox/|Android.*(?:Tab|Pad))'
+    regex_flag: 'i'
+    device_replacement: 'Generic Tablet'
+    brand_replacement: 'Generic'
+    model_replacement: 'Tablet'
+
+  ##########
+  # Generic Smart Phone
+  ##########
+  - regex: '(Symbian|\bS60(Version|V\d)|\bS60\b|\((Series 60|Windows Mobile|Palm OS|Bada); Opera Mini|Windows CE|Opera Mobi|BREW|Brew|Mobile; .+Firefox/|iPhone OS|Android|MobileSafari|Windows *Phone|\(webOS/|PalmOS)'
+    device_replacement: 'Generic Smartphone'
+    brand_replacement: 'Generic'
+    model_replacement: 'Smartphone'
+  - regex: '(hiptop|avantgo|plucker|xiino|blazer|elaine)'
+    regex_flag: 'i'
+    device_replacement: 'Generic Smartphone'
+    brand_replacement: 'Generic'
+    model_replacement: 'Smartphone'
+
+  ##########
+  # Spiders (this is a hack...)
+  ##########
+  - regex: '(bot|BUbiNG|zao|borg|DBot|oegp|silk|Xenu|zeal|^NING|CCBot|crawl|htdig|lycos|slurp|teoma|voila|yahoo|Sogou|CiBra|Nutch|^Java/|^JNLP/|Daumoa|Daum|Genieo|ichiro|larbin|pompos|Scrapy|snappy|speedy|spider|msnbot|msrbot|vortex|^vortex|crawler|favicon|indexer|Riddler|scooter|scraper|scrubby|WhatWeb|WinHTTP|bingbot|BingPreview|openbot|gigabot|furlbot|polybot|seekbot|^voyager|archiver|Icarus6j|mogimogi|Netvibes|blitzbot|altavista|charlotte|findlinks|Retreiver|TLSProber|WordPress|SeznamBot|ProoXiBot|wsr\-agent|Squrl Java|EtaoSpider|PaperLiBot|SputnikBot|A6\-Indexer|netresearch|searchsight|baiduspider|YisouSpider|ICC\-Crawler|http%20client|Python-urllib|dataparksearch|converacrawler|Screaming Frog|AppEngine-Google|YahooCacheSystem|fast\-webcrawler|Sogou Pic Spider|semanticdiscovery|Innovazion Crawler|facebookexternalhit|Google.*/\+/web/snippet|Google-HTTP-Java-Client|BlogBridge|IlTrovatore-Setaccio|InternetArchive|GomezAgent|WebThumbnail|heritrix|NewsGator|PagePeeker|Reaper|ZooShot|holmes|NL-Crawler|Pingdom|StatusCake|WhatsApp|masscan|Google Web Preview|Qwantify|Yeti|OgScrper)'
+    regex_flag: 'i'
+    device_replacement: 'Spider'
+    brand_replacement: 'Spider'
+    model_replacement: 'Desktop'
+
+  ##########
+  # Generic Feature Phone
+  # take care to do case insensitive matching
+  ##########
+  - regex: '^(1207|3gso|4thp|501i|502i|503i|504i|505i|506i|6310|6590|770s|802s|a wa|acer|acs\-|airn|alav|asus|attw|au\-m|aur |aus |abac|acoo|aiko|alco|alca|amoi|anex|anny|anyw|aptu|arch|argo|bmobile|bell|bird|bw\-n|bw\-u|beck|benq|bilb|blac|c55/|cdm\-|chtm|capi|comp|cond|dall|dbte|dc\-s|dica|ds\-d|ds12|dait|devi|dmob|doco|dopo|dorado|el(?:38|39|48|49|50|55|58|68)|el[3456]\d{2}dual|erk0|esl8|ex300|ez40|ez60|ez70|ezos|ezze|elai|emul|eric|ezwa|fake|fly\-|fly_|g\-mo|g1 u|g560|gf\-5|grun|gene|go.w|good|grad|hcit|hd\-m|hd\-p|hd\-t|hei\-|hp i|hpip|hs\-c|htc |htc\-|htca|htcg)'
+    regex_flag: 'i'
+    device_replacement: 'Generic Feature Phone'
+    brand_replacement: 'Generic'
+    model_replacement: 'Feature Phone'
+  - regex: '^(htcp|htcs|htct|htc_|haie|hita|huaw|hutc|i\-20|i\-go|i\-ma|i\-mobile|i230|iac|iac\-|iac/|ig01|im1k|inno|iris|jata|kddi|kgt|kgt/|kpt |kwc\-|klon|lexi|lg g|lg\-a|lg\-b|lg\-c|lg\-d|lg\-f|lg\-g|lg\-k|lg\-l|lg\-m|lg\-o|lg\-p|lg\-s|lg\-t|lg\-u|lg\-w|lg/k|lg/l|lg/u|lg50|lg54|lge\-|lge/|leno|m1\-w|m3ga|m50/|maui|mc01|mc21|mcca|medi|meri|mio8|mioa|mo01|mo02|mode|modo|mot |mot\-|mt50|mtp1|mtv |mate|maxo|merc|mits|mobi|motv|mozz|n100|n101|n102|n202|n203|n300|n302|n500|n502|n505|n700|n701|n710|nec\-|nem\-|newg|neon)'
+    regex_flag: 'i'
+    device_replacement: 'Generic Feature Phone'
+    brand_replacement: 'Generic'
+    model_replacement: 'Feature Phone'
+  - regex: '^(netf|noki|nzph|o2 x|o2\-x|opwv|owg1|opti|oran|ot\-s|p800|pand|pg\-1|pg\-2|pg\-3|pg\-6|pg\-8|pg\-c|pg13|phil|pn\-2|pt\-g|palm|pana|pire|pock|pose|psio|qa\-a|qc\-2|qc\-3|qc\-5|qc\-7|qc07|qc12|qc21|qc32|qc60|qci\-|qwap|qtek|r380|r600|raks|rim9|rove|s55/|sage|sams|sc01|sch\-|scp\-|sdk/|se47|sec\-|sec0|sec1|semc|sgh\-|shar|sie\-|sk\-0|sl45|slid|smb3|smt5|sp01|sph\-|spv |spv\-|sy01|samm|sany|sava|scoo|send|siem|smar|smit|soft|sony|t\-mo|t218|t250|t600|t610|t618|tcl\-|tdg\-|telm|tim\-|ts70|tsm\-|tsm3|tsm5|tx\-9|tagt)'
+    regex_flag: 'i'
+    device_replacement: 'Generic Feature Phone'
+    brand_replacement: 'Generic'
+    model_replacement: 'Feature Phone'
+  - regex: '^(talk|teli|topl|tosh|up.b|upg1|utst|v400|v750|veri|vk\-v|vk40|vk50|vk52|vk53|vm40|vx98|virg|vertu|vite|voda|vulc|w3c |w3c\-|wapj|wapp|wapu|wapm|wig |wapi|wapr|wapv|wapy|wapa|waps|wapt|winc|winw|wonu|x700|xda2|xdag|yas\-|your|zte\-|zeto|aste|audi|avan|blaz|brew|brvw|bumb|ccwa|cell|cldc|cmd\-|dang|eml2|fetc|hipt|http|ibro|idea|ikom|ipaq|jbro|jemu|jigs|keji|kyoc|kyok|libw|m\-cr|midp|mmef|moto|mwbp|mywa|newt|nok6|o2im|pant|pdxg|play|pluc|port|prox|rozo|sama|seri|smal|symb|treo|upsi|vx52|vx53|vx60|vx61|vx70|vx80|vx81|vx83|vx85|wap\-|webc|whit|wmlb|xda\-|xda_)'
+    regex_flag: 'i'
+    device_replacement: 'Generic Feature Phone'
+    brand_replacement: 'Generic'
+    model_replacement: 'Feature Phone'
+  - regex: '^(Ice)$'
+    device_replacement: 'Generic Feature Phone'
+    brand_replacement: 'Generic'
+    model_replacement: 'Feature Phone'
+  - regex: '(wap[\-\ ]browser|maui|netfront|obigo|teleca|up\.browser|midp|Opera Mini)'
+    regex_flag: 'i'
+    device_replacement: 'Generic Feature Phone'
+    brand_replacement: 'Generic'
+    model_replacement: 'Feature Phone'
+
+  #########
+  # Apple
+  # @ref: https://www.apple.com/mac/
+  # @note: lookup Mac OS, but exclude iPad, Apple TV, a HTC phone, Kindle, LG
+  # @note: put this at the end, since it is hard to implement contains foo, but not contain bar1, bar 2, bar 3 in go's re2
+  #########
+  - regex: 'Mac OS'
+    device_replacement: 'Mac'
+    brand_replacement: 'Apple'
+    model_replacement: 'Mac'
diff --git a/deps/uap-core/test_resources/pgts_browser_list.yaml b/deps/uap-core/test_resources/pgts_browser_list.yaml
--- a/deps/uap-core/test_resources/pgts_browser_list.yaml
+++ b/deps/uap-core/test_resources/pgts_browser_list.yaml
@@ -4159,9 +4159,9 @@
     patch:
 
   - user_agent_string: 'fetch libfetch/2.0'
-    family: 'Other'
-    major:
-    minor:
+    family: 'fetch libfetch'
+    major: '2'
+    minor: '0'
     patch:
 
   - user_agent_string: 'libwww-perl/5.79'
@@ -39415,9 +39415,9 @@
     patch:
 
   - user_agent_string: 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 4.0; 3COM U.S. Robotics)'
-    family: 'Robotics'
-    major:
-    minor:
+    family: 'IE'
+    major: '6'
+    minor: '0'
     patch:
 
   - user_agent_string: 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 4.0; ABN AMRO)'
@@ -63409,7 +63409,7 @@
     patch:
 
   - user_agent_string: 'Mozilla/4.0 (compatible; MSIE 6.0; Windows XP Professional Bot v.5.)'
-    family: 'XP Professional Bot'
+    family: 'Windows XP Professional Bot'
     major:
     minor:
     patch:
diff --git a/deps/uap-core/test_resources/podcasting_user_agent_strings.yaml b/deps/uap-core/test_resources/podcasting_user_agent_strings.yaml
new file mode 100644
--- /dev/null
+++ b/deps/uap-core/test_resources/podcasting_user_agent_strings.yaml
@@ -0,0 +1,732 @@
+test_cases:
+
+  - user_agent_string: 'okhttp/2.7.5'
+    family: 'okhttp'
+    major: '2'
+    minor: '7'
+    patch: '5'
+  - user_agent_string: 'Stitcher/iOS'
+    family: 'Stitcher'
+    major:
+    minor:
+    patch:
+  - user_agent_string: 'Stitcher/Android'
+    family: 'Stitcher'
+    major:
+    minor:
+    patch:
+  - user_agent_string: 'Mozilla/5.0 (Linux; U; en-us; BeyondPod 4)'
+    family: 'BeyondPod'
+    major: '4'
+    minor:
+    patch:
+  - user_agent_string: 'NSPlayer/10.0.0.3702 WMFSDK/10.0'
+    family: 'NSPlayer'
+    major: '10'
+    minor: '0'
+    patch: '0'
+    patch_minor: '3702'
+  - user_agent_string: 'NSPlayer/12.00.10011.16384 WMFSDK/12.00.10011.16384'
+    family: 'NSPlayer'
+    major: '12'
+    minor: '00'
+    patch: '10011'
+    patch_minor: '16384'
+  - user_agent_string: 'Pocket Casts'
+    family: 'Pocket Casts'
+    major:
+    minor:
+    patch:
+  - user_agent_string: 'Shifty Jelly Pocket Casts, Android v4.3.5'
+    family: 'Pocket Casts'
+    major:
+    minor:
+    patch:
+  - user_agent_string: 'Player/LG Player 1.0 for Android 4.4.2 (stagefright alternative), Pocket Casts'
+    family: 'Pocket Casts'
+    major:
+    minor:
+    patch:
+  - user_agent_string: 'PocketTunes/5.5.8'
+    family: 'PocketTunes'
+    major: '5'
+    minor: '5'
+    patch: '8'
+  - user_agent_string: 'Overcast/2.0 (+http://overcast.fm/; iOS podcast app)'
+    family: 'Overcast'
+    major: '2'
+    minor: '0'
+    patch:
+  - user_agent_string: 'Overcast/1.0 Podcast Sync (+http://overcast.fm/)'
+    family: 'Overcast'
+    major: '1'
+    minor: '0'
+    patch:
+  - user_agent_string: 'Player FM'
+    family: 'Player FM'
+    major:
+    minor:
+    patch:
+  - user_agent_string: 'Player/LG Player 1.0 for Android 4.4.2 (stagefright alternative), Player FM'
+    family: 'Player FM'
+    major:
+    minor:
+    patch:
+  - user_agent_string: 'AppleCoreMedia/1.0.0.9A405 (iPad; U; CPU OS 5_0_1 like Mac OS X; zh_cn), Player FM'
+    family: 'Player FM'
+    major:
+    minor:
+    patch:
+  - user_agent_string: 'Player FM BMID/E6804C1C77'
+    family: 'Player FM'
+    major: 'E6804C1C77'
+    minor:
+    patch:
+  - user_agent_string: 'ExoPlayerDemo/4.11 (Linux;Android 5.1.1) ExoPlayerLib/1.5.2'
+    family: 'ExoPlayerDemo'
+    major: '4'
+    minor: '11'
+    patch:
+  - user_agent_string: 'Radio/1.0 (Linux;Android 6.0.1) ExoPlayerLib/1.5.2'
+    family: 'Radio'
+    major: '1'
+    minor: '0'
+    patch:
+  - user_agent_string: 'AlexaMediaPlayer/5.3.1-21 (Linux;Android 5.1) ExoPlayerLib/1.3.3 '
+    family: 'AlexaMediaPlayer'
+    major: '5'
+    minor: '3'
+    patch: '1-21'
+  - user_agent_string: 'Podkicker/2.2.4'
+    family: 'Podkicker'
+    major: '2'
+    minor: '2'
+    patch: '4'
+  - user_agent_string: 'Podkicker Pro/2.2.2 '
+    family: 'Podkicker'
+    major: '2'
+    minor: '2'
+    patch: '2'
+  - user_agent_string: 'Podkicker Classic/1.2.9'
+    family: 'Podkicker'
+    major: '1'
+    minor: '2'
+    patch: '9'
+  - user_agent_string: 'Downcast/2.9.13 (iPhone; iOS 9.2.1; Scale/2.00)'
+    family: 'Downcast'
+    major: '2'
+    minor: '9'
+    patch: '13'
+  - user_agent_string: 'iTunes/10.7 Downcast/5608'
+    family: 'Downcast'
+    major: '5608'
+    minor:
+    patch:
+  - user_agent_string: 'Downcast/2.9.10 (Mac OS X Version 10.11.3 (Build 15D21))'
+    family: 'Downcast'
+    major: '2'
+    minor: '9'
+    patch: '10'
+  - user_agent_string: 'iTunes/10.7 Downcast/2.8.14.1002'
+    family: 'Downcast'
+    major: '2'
+    minor: '8'
+    patch: '14'
+    patch_minor: '1002'
+  - user_agent_string: 'ESPN%20Radio/3.2.113 CFNetwork/485.12.30 Darwin/10.4.0'
+    family: 'ESPN'
+    major: '3'
+    minor: '2'
+    patch: '113'
+  - user_agent_string: 'ESPN Radio/3.2.113 CFNetwork/485.12.30 Darwin/10.4.0'
+    family: 'ESPN'
+    major: '3'
+    minor: '2'
+    patch: '113'
+  - user_agent_string: 'Stitcher/28420 CFNetwork/548.1.4 Darwin/11.0.0'
+    family: 'Stitcher'
+    major: '28420'
+    minor:
+    patch:
+  - user_agent_string: 'Stitcher/3.310746 CFNetwork/459 Darwin/10.0.0d3'
+    family: 'Stitcher'
+    major: '3'
+    minor: '310746'
+    patch:
+  - user_agent_string: 'Mark%20Levin%20Show/11 CFNetwork/758.3.15 Darwin/15.4.0'
+    family: 'Mark%20Levin%20Show'
+    major: '11'
+    minor:
+    patch:
+  - user_agent_string: 'The%20Dan%20Patrick%20Show/11 CFNetwork/758.2.8 Darwin/15.0.0'
+    family: 'The%20Dan%20Patrick%20Show'
+    major: '11'
+    minor:
+    patch:
+  - user_agent_string: 'The Dan Patrick Show/11 CFNetwork/758.2.8 Darwin/15.0.0'
+    family: 'The Dan Patrick Show'
+    major: '11'
+    minor:
+    patch:
+  - user_agent_string: '77%20WABC/11 CFNetwork/758.3.15 Darwin/15.4.0'
+    family: '77%20WABC'
+    major: '11'
+    minor:
+    patch:
+  - user_agent_string: '77 WABC/11 CFNetwork/758.3.15 Darwin/15.4.0'
+    family: '77 WABC'
+    major: '11'
+    minor:
+    patch:
+  - user_agent_string: 'KNBR%20680/11 CFNetwork/758.3.15 Darwin/15.4.0'
+    family: 'KNBR%20680'
+    major: '11'
+    minor:
+    patch:
+  - user_agent_string: 'PodcastOne/3.0.6 CFNetwork/758.3.15 Darwin/15.4.0'
+    family: 'PodcastOne'
+    major: '3'
+    minor: '0'
+    patch: '6'
+  - user_agent_string: 'PodcastOne/2.0 CFNetwork/758.2.8 Darwin/15.0.0 '
+    family: 'PodcastOne'
+    major: '2'
+    minor: '0'
+    patch:
+  - user_agent_string: 'AudioBoom/226 CFNetwork/758.3.15 Darwin/15.4.0'
+    family: 'AudioBoom'
+    major: '226'
+    minor:
+    patch:
+  - user_agent_string: 'https://audioboom.com/boos/'
+    family: 'AudioBoom'
+    major:
+    minor:
+    patch:
+  - user_agent_string: 'Sports%20Talk%201050/10 CFNetwork/758.3.15 Darwin/15.4.0'
+    family: 'Sports%20Talk%201050'
+    major: '10'
+    minor:
+    patch:
+  - user_agent_string: 'PodCruncher/3.2 CFNetwork/758.2.8 Darwin/15.0.0'
+    family: 'PodCruncher'
+    major: '3'
+    minor: '2'
+    patch:
+  - user_agent_string: 'iTunes/10.5.2 (PodCruncher 2.2)'
+    family: 'PodCruncher'
+    major: '2'
+    minor: '2'
+    patch:
+  - user_agent_string: 'Zune/4.8'
+    family: 'Zune'
+    major: '4'
+    minor: '8'
+    patch:
+  - user_agent_string: 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3; Zune 4.7)'
+    family: 'Zune'
+    major: '4'
+    minor: '7'
+    patch:
+  - user_agent_string: 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.2; OverDrive Download Station 1.0; Zune 4.7; .NET4.0C)'
+    family: 'Zune'
+    major: '4'
+    minor: '7'
+    patch:
+  - user_agent_string: 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; Zune 4.0; InfoPath.3; MS-RTC LM 8; .NET4.0C; .NET4.0E)'
+    family: 'Zune'
+    major: '4'
+    minor: '0'
+    patch:
+  - user_agent_string: 'RSSRadio/8899 (iPhone,iPhone OS,9.3)'
+    family: 'RSSRadio'
+    major: '8899'
+    minor:
+    patch:
+  - user_agent_string: 'RSSRadio (Push Notification Scanner;support@dorada.co.uk)'
+    family: 'RSSRadio'
+    major:
+    minor:
+    patch:
+  - user_agent_string: 'RSS_Radio 1.5'
+    family: 'RSSRadio'
+    major: '1'
+    minor: '5'
+    patch:
+  - user_agent_string: 'RSSRadio/2.68.14049 CFNetwork/672.1.15 Darwin/14.0.0'
+    family: 'RSSRadio'
+    major: '2'
+    minor: '68'
+    patch: '14049'
+  - user_agent_string: 'Lavf/56.15.102'
+    family: 'WMPlayer'
+    major:
+    minor:
+    patch:
+  - user_agent_string: 'Lavf52.64.2'
+    family: 'WMPlayer'
+    major:
+    minor:
+    patch:
+  - user_agent_string: 'Lavf53.32.100/WinampMPEG/2.8'
+    family: 'WMPlayer'
+    major:
+    minor:
+    patch:
+  - user_agent_string: 'Lavf52.104.0 WMPlayer/10.0.0.364 guid/3300AD50-2C39-46C0-AE0A-AC7B8159E203'
+    family: 'WMPlayer'
+    major: '10'
+    minor: '0'
+    patch: '0'
+    patch_minor: '364'
+  - user_agent_string: 'WMPlayer/10.0.0.364 guid/3300AD50-2C39-46C0-AE0A-AC7B8159E203'
+    family: 'WMPlayer'
+    major: '10'
+    minor: '0'
+    patch: '0'
+    patch_minor: '364'
+  - user_agent_string: 'AntennaPod/1.5.2.0'
+    family: 'AntennaPod'
+    major: '1'
+    minor: '5'
+    patch: '2'
+    patch_minor: '0'
+  - user_agent_string: 'Antenna/965 CFNetwork/758.2.8 Darwin/15.0.0'
+    family: 'AntennaPod'
+    major: '965'
+    minor:
+    patch:
+  - user_agent_string: 'AntennaPod/1.2.1'
+    family: 'AntennaPod'
+    major: '1'
+    minor: '2'
+    patch: '1'
+  - user_agent_string: 'HTC Streaming Player htc / 1.0 / cingular_us / 5.0.2'
+    family: 'HTC'
+    major: '5'
+    minor: '0'
+    patch: '2'
+  - user_agent_string: 'HTC Streaming Player utstarcom_wwe-generic / 1.0 / htc_kingdom / 2.3.4'
+    family: 'HTC'
+    major: '2'
+    minor: '3'
+    patch: '4'
+  - user_agent_string: 'HTC Streaming Player telus_wwe / 1.0 / htc_ruby / 4.0.3'
+    family: 'HTC'
+    major: '4'
+    minor: '0'
+    patch: '3'
+  - user_agent_string: 'HTC Streaming Player htc / 1.0 / himauhl_htc_asia_tw / 6.0 '
+    family: 'HTC'
+    major: '6'
+    minor: '0'
+    patch:
+  - user_agent_string: 'ZDM/4.0; Windows Mobile 8.1'
+    family: 'ZDM'
+    major: '4'
+    minor: '0'
+    patch:
+  - user_agent_string: 'bPod'
+    family: 'bPod'
+    major:
+    minor:
+    patch:
+  - user_agent_string: 'bPod BMID/E679FACD4C'
+    family: 'bPod'
+    major: 'E679FACD4C'
+    minor:
+    patch:
+  - user_agent_string: 'PodcastAddict/v2 - Dalvik/2.1.0 (Linux; U; Android 6.0; LG-H811 Build/MRA58K)'
+    family: 'PodcastAddict'
+    major: '2'
+    minor:
+    patch:
+  - user_agent_string: 'Podcast Addict - Dalvik/2.1.0 (Linux; U; Android 5.1.1; SM-G920P Build/LMY47X)'
+    family: 'PodcastAddict'
+    major:
+    minor:
+    patch:
+  - user_agent_string: 'LG-H345/V10f Player/LG Player 1.0 for Android 5.1.1 (stagefright alternative)'
+    family: 'LG Player'
+    major: '1'
+    minor: '0'
+    patch:
+  - user_agent_string: 'Player/LG Player 1.0 for Android 6.0 (stagefright alternative)'
+    family: 'LG Player'
+    major: '1'
+    minor: '0'
+    patch:
+  - user_agent_string: 'EspnDownloadManager'
+    family: 'ESPN'
+    major:
+    minor:
+    patch:
+  - user_agent_string: 'ESPN Radio 4.7.4 rv:1032 (iPhone; iPhone OS 9.2.1; en_US)'
+    family: 'ESPN'
+    major: '4'
+    minor: '7'
+    patch: '4'
+    patch_minor: '1032'
+  - user_agent_string: 'ESPN Radio 4.5.1 (iPhone; iPhone OS 5.1.1; en_US)'
+    family: 'ESPN'
+    major: '4'
+    minor: '5'
+    patch: '1'
+  - user_agent_string: 'ESPN Radio 4.0 (iPhone; iPhone OS 7.1.2; en_AU)'
+    family: 'ESPN'
+    major: '4'
+    minor: '0'
+    patch:
+  - user_agent_string: 'http://c.espnradio.com/s:'
+    family: 'ESPN'
+    major:
+    minor:
+    patch:
+  - user_agent_string: 'Mozilla/5.0 (Linux; Android 4.4.4; HP Slate 17 Build/KTU84P) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/33.0.0.0 Safari/537.36ESPN APP'
+    family: 'ESPN'
+    major:
+    minor:
+    patch:
+  - user_agent_string: 'Mozilla/5.0 (compatible; heritrix/3.2.0 +http://espn.go.com'
+    family: 'ESPN'
+    major:
+    minor:
+    patch:
+  - user_agent_string: 'Custom-Feed Reader'
+    family: 'Custom'
+    major:
+    minor:
+    patch:
+  - user_agent_string: 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/534.34 (KHTML, like Gecko) amarok/2.8.0 Safari/534.34'
+    family: 'Amarok'
+    major: '2'
+    minor: '8'
+    patch: '0'
+  - user_agent_string: 'amarok/2.8.0 (Phonon/4.8.0; Phonon-VLC/0.8.0) LibVLC/2.2.1'
+    family: 'Amarok'
+    major: '2'
+    minor: '8'
+    patch: '0'
+  - user_agent_string: 'Banshee/2.6.2 (http://banshee-project.org/)'
+    family: 'Banshee'
+    major: '2'
+    minor: '6'
+    patch: '2'
+  - user_agent_string: 'gPodder/3.7.0 (+http://gpodder.org/)'
+    family: 'gPodder'
+    major: '3'
+    minor: '7'
+    patch: '0'
+  - user_agent_string: 'jPodder v 1.1 RC3'
+    family: 'jPodder'
+    major: '1'
+    minor: '1'
+    patch:
+  - user_agent_string: 'iPodder/2.1 +http://ipodder.sf.net/'
+    family: 'iPodder'
+    major: '2'
+    minor: '1'
+    patch:
+  - user_agent_string: 'massyn.net philpodder/1.6 (linux)'
+    family: 'philpodder'
+    major: '1'
+    minor: '6'
+    patch:
+  - user_agent_string: 'BashPodder'
+    family: 'BashPodder'
+    major:
+    minor:
+    patch:
+  - user_agent_string: 'Clementine-qt5 1.2.3'
+    family: 'Clementine'
+    major: '1'
+    minor: '2'
+    patch: '3'
+  - user_agent_string: 'Clementine 1.2.3-1457-g4db358a'
+    family: 'Clementine'
+    major: '1'
+    minor: '2'
+    patch: '3-1457-g4db358a'
+  - user_agent_string: 'Clementine 1.2.3'
+    family: 'Clementine'
+    major: '1'
+    minor: '2'
+    patch: '3'
+  - user_agent_string: 'Clementine 1.2'
+    family: 'Clementine'
+    major: '1'
+    minor: '2'
+    patch:
+  - user_agent_string: 'Clementine 1.2.2 Clementine 1.2.2 Clementine 1.2.2'
+    family: 'Clementine'
+    major: '1'
+    minor: '2'
+    patch: '2'
+  - user_agent_string: 'foobar2000/1.1.14a'
+    family: 'foobar'
+    major: '1'
+    minor: '1'
+    patch: '14a'
+  - user_agent_string: 'foobar2000/1.2.3'
+    family: 'foobar'
+    major: '1'
+    minor: '2'
+    patch: '3'
+  - user_agent_string: 'Juice/2.2 (Windows) +http://juicereceiver.sf.net/'
+    family: 'Juice'
+    major: '2'
+    minor: '2'
+    patch:
+  - user_agent_string: 'Liferea/0.x.x (Linux; en_US.UTF-8; http://liferea.sf.net/)'
+    family: 'Liferea'
+    major: '0'
+    minor: 'x'
+    patch: 'x'
+  - user_agent_string: 'MediaGo'
+    family: 'MediaGo'
+    major:
+    minor:
+    patch:
+  - user_agent_string: 'MediaGo/3.0.0.403 (Windows NT 6.3; WOW64) NetworkDownloader/1.6.01.0 PlaybackEngine/2.20.103.05220'
+    family: 'MediaGo'
+    major: '3'
+    minor: '0'
+    patch: '0'
+    patch_minor: '403'
+  - user_agent_string: 'MediaMonkey'
+    family: 'MediaMonkey'
+    major:
+    minor:
+    patch:
+  - user_agent_string: 'MediaMonkey 4.1.9.1764'
+    family: 'MediaMonkey'
+    major: '4'
+    minor: '1'
+    patch: '9'
+    patch_minor: '1764'
+  - user_agent_string: 'Miro/6.0 (http://www.getmiro.com/; Windows post2008Server x86) '
+    family: 'Miro'
+    major: '6'
+    minor: '0'
+    patch:
+  - user_agent_string: 'Miro/3.0.3 (http://www.getmiro.com/; Microsoft Windows )'
+    family: 'Miro'
+    major: '3'
+    minor: '0'
+    patch: '3'
+  - user_agent_string: 'Fancy Cloud Music 1.4 build 2 (iPhone; iPhone OS 9.2.1; en_US)'
+    family: 'FancyMusic'
+    major: '1'
+    minor: '4'
+    patch:
+  - user_agent_string: 'FancyMusic 1.5.0 build 5 (iPod touch; iPhone OS 9.2.1; en_US)'
+    family: 'FancyMusic'
+    major: '1'
+    minor: '5'
+    patch: '0'
+  - user_agent_string: 'VOX Music Player'
+    family: 'VOX'
+    major:
+    minor:
+    patch:
+  - user_agent_string: 'NetNewsWire/3.3 (Mac OS X; http://netnewswireapp.com/mac/; gzip-happy)'
+    family: 'NetNewsWire'
+    major: '3'
+    minor: '3'
+    patch:
+  - user_agent_string: 'NetNewsWire/3.1.7 (Mac OS X; http://www.newsgator.com/Individuals/NetNewsWire/)'
+    family: 'NetNewsWire'
+    major: '3'
+    minor: '1'
+    patch: '7'
+  - user_agent_string: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/601.4.4 (KHTML, like Gecko) NetNewsWire/3.2'
+    family: 'NetNewsWire'
+    major: '3'
+    minor: '2'
+    patch:
+  - user_agent_string: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/600.8.9 (KHTML, like Gecko) NetNewsWire/3.3.2'
+    family: 'NetNewsWire'
+    major: '3'
+    minor: '3'
+    patch: '2'
+  - user_agent_string: 'Mozilla/5.0 (Linux; Android 5.0; Rivo RHYTHM RX75 Build/LRX21M) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Mobile Safari/537.36; | 2016-04-07 14:37:04'
+    family: 'Rivo'
+    major:
+    minor:
+    patch:
+  - user_agent_string: 'Spotify'
+    family: 'Spotify'
+    major:
+    minor:
+    patch:
+  - user_agent_string: 'Spotify/1.0'
+    family: 'Spotify'
+    major: '1'
+    minor: '0'
+    patch:
+  - user_agent_string: 'VLC/2.0.6 LibVLC/2.0.6'
+    family: 'VLC'
+    major: '2'
+    minor: '0'
+    patch: '6'
+  - user_agent_string: 'vlc/1.1.0 LibVLC/1.1.0'
+    family: 'VLC'
+    major: '1'
+    minor: '1'
+    patch: '0'
+  - user_agent_string: 'VLC/3.0.0-git LibVLC/3.0.0-git BMID/E67AB28521'
+    family: 'VLC'
+    major: '3'
+    minor: '0'
+    patch: '0-git'
+  - user_agent_string: 'Mozilla/5.0 (iPhone; CPU OS 7_0 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/9.3 Mobile/11A465 Safari/9537.53 VLC for iOS/2.7.2'
+    family: 'VLC'
+    major:
+    minor:
+    patch:
+  - user_agent_string: 'VLC media player - version 1.0.3 Goldeneye - (c) 1996-2009 the VideoLAN team'
+    family: 'VLC'
+    major: '1'
+    minor: '0'
+    patch: '3'
+  - user_agent_string: 'VLC/2.2.0-rc1 LibVLC/2.2.0-rc1'
+    family: 'VLC'
+    major: '2'
+    minor: '2'
+    patch: '0-rc1'
+  - user_agent_string: 'VLC/2.2.0-pre4 LibVLC/2.2.0-pre4'
+    family: 'VLC'
+    major: '2'
+    minor: '2'
+    patch: '0-pre4'
+  - user_agent_string: 'CITA RSS Aggregator/2.7'
+    family: 'CITA'
+    major: '2'
+    minor: '7'
+    patch:
+  - user_agent_string: 'Doppler 2.9.5.4'
+    family: 'Doppler'
+    major: '2'
+    minor: '9'
+    patch: '5'
+    patch_minor: '4'
+  - user_agent_string: 'GoldenPod/0.8.4 (GNU/Linux; podcatcher; Using LWP) libwwwperl'
+    family: 'GoldenPod'
+    major: '0'
+    minor: '8'
+    patch: '4'
+  - user_agent_string: 'Replay AV'
+    family: 'Replay'
+    major:
+    minor:
+    patch:
+  - user_agent_string: 'MusicDownloaderLite/1.0.1 CFNetwork/609.1.4 Darwin/13.0.0'
+    family: 'MusicDownloader'
+    major: '1'
+    minor: '0'
+    patch: '1'
+  - user_agent_string: 'MusicDownloader/2.0.3 CFNetwork/548.0.4 Darwin/11.0.0'
+    family: 'MusicDownloader'
+    major: '2'
+    minor: '0'
+    patch: '3'
+  - user_agent_string: 'Plugged%20-%20Stream%20Podcasts%2C%20Music%20&%20More%20Free/5.0 CFNetwork/711.5.6 Darwin/14.0.0'
+    family: 'Plugged%20-%20Stream%20Podcasts%2C%20Music%20&%20More%20Free'
+    major: '5'
+    minor: '0'
+    patch:
+  - user_agent_string: 'PodWrangler/1.1 CFNetwork/672.1.15 Darwin/14.0.0'
+    family: 'PodWrangler'
+    major: '1'
+    minor: '1'
+    patch:
+  - user_agent_string: 'Custom/12 CFNetwork/758.2.8 Darwin/15.0.0'
+    family: 'Custom'
+    major: '12'
+    minor:
+    patch:
+  - user_agent_string: 'GoodReader4/100 CFNetwork/758.3.15 Darwin/15.4.0'
+    family: 'GoodReader4'
+    major: '100'
+    minor:
+    patch:
+  - user_agent_string: 'Free-Podcasts/132 CFNetwork/758.2.8 Darwin/15.0.0'
+    family: 'Free-Podcasts'
+    major: '132'
+    minor:
+    patch:
+  - user_agent_string: 'Free-Podcasts/1.05 CFNetwork/609 Darwin/13.0.0'
+    family: 'Free-Podcasts'
+    major: '1'
+    minor: '05'
+    patch:
+  - user_agent_string: 'TopPodcasts/261 CFNetwork/758.0.2 Darwin/15.0.0'
+    family: 'TopPodcasts'
+    major: '261'
+    minor:
+    patch:
+  - user_agent_string: 'TopPodcastsPro/201 CFNetwork/758.2.8 Darwin/15.0.0'
+    family: 'TopPodcasts'
+    major: '201'
+    minor:
+    patch:
+  - user_agent_string: 'TopPodcasts/2.1.4 CFNetwork/672.1.15 Darwin/14.0.0'
+    family: 'TopPodcasts'
+    major: '2'
+    minor: '1'
+    patch: '4'
+  - user_agent_string: 'Podcasts/2.2'
+    family: 'Podcasts'
+    major: '2'
+    minor: '2'
+    patch:
+  - user_agent_string: 'Podcasts/1.4.113'
+    family: 'Podcasts'
+    major: '1'
+    minor: '4'
+    patch: '113'
+  - user_agent_string: 'Peapod/pre1.0 +http://www.peapodpy.org.uk'
+    family: 'Peapod'
+    major: 'pre1'
+    minor: '0'
+    patch:
+  - user_agent_string: 'Peapod/1.0 +http://www.peapodpy.org.uk'
+    family: 'Peapod'
+    major: '1'
+    minor: '0'
+    patch:
+  - user_agent_string: 'podracer v1.4.1; GNU/Linux; x86_64'
+    family: 'podracer'
+    major: '1'
+    minor: '4'
+    patch: '1'
+  - user_agent_string: 'Kinoma5'
+    family: 'Kinoma'
+    major: '5'
+    minor:
+    patch:
+  - user_agent_string: 'QuickTime/7.6'
+    family: 'QuickTime'
+    major: '7'
+    minor: '6'
+    patch:
+  - user_agent_string: 'QuickTime.7.6.6'
+    family: 'QuickTime'
+    major: '7'
+    minor: '6'
+    patch: '6'
+  - user_agent_string: 'QuickNews/1.25'
+    family: 'QuickNews'
+    major: '1'
+    minor: '25'
+    patch:
+  - user_agent_string: 'Mozilla/5.0 (Linux; U; Windows NT 6.1; en-us; dream) DoggCatcher'
+    family: 'DoggCatcher'
+    major:
+    minor:
+    patch:
+  - user_agent_string: 'DoggCatcher/1.2'
+    family: 'DoggCatcher'
+    major: '1'
+    minor: '2'
+    patch:
diff --git a/deps/uap-core/tests/test_device.yaml b/deps/uap-core/tests/test_device.yaml
# file too large to diff: deps/uap-core/tests/test_device.yaml
diff --git a/deps/uap-core/tests/test_os.yaml b/deps/uap-core/tests/test_os.yaml
--- a/deps/uap-core/tests/test_os.yaml
+++ b/deps/uap-core/tests/test_os.yaml
@@ -1,5 +1,26 @@
 test_cases:
 
+  - user_agent_string: 'atc/1.0 watchOS/5.1.3 model/Watch3,4 hwp/t8004 build/16S535 (6; dt:156)'
+    family: 'WatchOS'
+    major: '5'
+    minor: '1'
+    patch: '3'
+    patch_minor:
+
+  - user_agent_string: 'atc/1.0 watchOS/5.2 model/Watch4,4 hwp/t8006 build/16T225 (6; dt:193)'
+    family: 'WatchOS'
+    major: '5'
+    minor: '2'
+    patch: 
+    patch_minor:
+
+  - user_agent_string: '(null)/(null) watchOS/5.1.1 model/Watch3,3 hwp/t8004 build/16R600 (6; dt:155)'
+    family: 'WatchOS'
+    major: '5'
+    minor: '1'
+    patch: '1'
+    patch_minor:
+
   - user_agent_string: 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; en-us; Silk/1.1.0-80) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16 Silk-Accelerated=true'
     family: 'Android'
     major:
@@ -118,6 +139,20 @@
     minor: '4'
     patch: '2'
     patch_minor:
+  
+  - user_agent_string: 'Mozilla/5.0 (Linux; Android 9; motorola one power) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.96 Mobile Safari/537.36'
+    family: 'Android'
+    major: '9'
+    minor: 
+    patch: 
+    patch_minor:
+  
+  - user_agent_string: 'Mozilla/5.0 (Linux; Android 10; SM-G970F) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3396.81 Mobile Safari/537.36'
+    family: 'Android'
+    major: '10'
+    minor: 
+    patch: 
+    patch_minor:
 
   - user_agent_string: 'Mozilla/5.0 (SAMSUNG; SAMSUNG-GT-S8500/S8500XXJEE; U; Bada/1.0; nl-nl) AppleWebKit/533.1 (KHTML, like Gecko) Dolfin/2.0 Mobile WVGA SMM-MMS/1.2.0 OPN-B'
     family: 'Bada'
@@ -231,6 +266,27 @@
     patch:
     patch_minor:
 
+  - user_agent_string: 'Mozilla/5.0 (Mobile; rv:37.0) Gecko/37.0 Firefox/37.0 KaiOS/1.0'
+    family: 'KaiOS'
+    major: '1'
+    minor: '0'
+    patch:
+    patch_minor:
+
+  - user_agent_string: 'Mozilla/5.0 (Mobile; rv:48.0) Gecko/48.0 Firefox/48.0 KAIOS/2.5.1'
+    family: 'KaiOS'
+    major: '2'
+    minor: '5'
+    patch: '1'
+    patch_minor:
+
+  - user_agent_string: 'Mozilla/5.0 (Mobile; rv:68.0) KAIOS/3.0'
+    family: 'KaiOS'
+    major: '3'
+    minor: '0'
+    patch:
+    patch_minor:
+
   - user_agent_string: 'Mozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B367 Safari/531.21.10'
     family: 'iOS'
     major: '3'
@@ -378,6 +434,13 @@
     patch:
     patch_minor:
 
+  - user_agent_string: 'MacOutlook/16.12.0.180401 (Intelx64 Mac OS X Version 10.12.6 (build 16G29))'
+    family: 'Mac OS X'
+    major: '10'
+    minor: '12'
+    patch: '6'
+    patch_minor:
+
   - user_agent_string: 'Mozilla/5.0 (MeeGo; NokiaN9) AppleWebKit/534.13 (KHTML, like Gecko) NokiaBrowser/8.5.0 Mobile Safari/534.13'
     family: 'MeeGo'
     major:
@@ -420,6 +483,13 @@
     patch:
     patch_minor:
 
+  - user_agent_string: 'Mozilla/5.0 (X11; Datanyze; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36'
+    family: 'Linux'
+    major:
+    minor:
+    patch:
+    patch_minor:
+
   - user_agent_string: 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko; Google Web Preview) Chrome/27.0 .1453 Safari/537.36.'
     family: 'Linux'
     major:
@@ -729,106 +799,120 @@
     patch_minor:
 
   - user_agent_string: 'ICE Browser/5.05 (Java 1.4.0; Windows 2000 5.0 x86)'
-    family: 'Windows 2000'
-    major:
+    family: 'Windows'
+    major: '2000'
     minor:
     patch:
     patch_minor:
 
   - user_agent_string: 'NCSA_Mosaic/2.0 (Windows 3.1)'
-    family: 'Windows 3.1'
-    major:
+    family: 'Windows'
+    major: '3.1'
     minor:
     patch:
     patch_minor:
 
   - user_agent_string: 'Mozilla/5.0 (Windows NT 10.0; Trident/7.0; rv:11.0) like Gecko'
-    family: 'Windows 10'
-    major:
+    family: 'Windows'
+    major: '10'
     minor:
     patch:
     patch_minor:
 
   - user_agent_string: 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36 Edge/12.0'
-    family: 'Windows 10'
-    major:
+    family: 'Windows'
+    major: '10'
     minor:
     patch:
     patch_minor:
 
   - user_agent_string: 'Mozilla/5.0 (Windows NT 6.4; Trident/7.0; rv:11.0) like Gecko'
-    family: 'Windows 10'
-    major:
+    family: 'Windows'
+    major: '10'
     minor:
     patch:
     patch_minor:
 
   - user_agent_string: 'Mozilla/5.0 (Windows NT 6.4; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.143 Safari/537.36 Edge/12.0'
-    family: 'Windows 10'
-    major:
+    family: 'Windows'
+    major: '10'
     minor:
     patch:
     patch_minor:
 
   - user_agent_string: 'Mozilla/5.0 (Windows NT 6.4; WOW64; rv:36.0) Gecko/20100101 Firefox/36.0'
-    family: 'Windows 10'
-    major:
+    family: 'Windows'
+    major: '10'
     minor:
     patch:
     patch_minor:
 
-  - user_agent_string: 'Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko'
-    family: 'Windows 8.1'
-    major:
+  - user_agent_string: 'PAN GlobalProtect/4.1.2-11 (Microsoft Windows 10 Pro , 64-bit)'
+    family: 'Windows'
+    major: '10'
     minor:
     patch:
     patch_minor:
 
-  - user_agent_string: 'Mozilla/5.0 (Windows NT 6.3; ARM; WOW64; Trident/7.0; rv:11.0) like Gecko'
-    family: 'Windows RT 8.1'
-    major:
+  - user_agent_string: 'PAN GlobalProtect/5.0.0-87 (Microsoft Windows 10 Pro , 64-bit) Mozilla/5.0 (Windows NT 6.2; Win64; x64; Trident/7.0; rv:11.0) like Gecko'
+    family: 'Windows'
+    major: '10'
     minor:
     patch:
     patch_minor:
 
+  - user_agent_string: 'Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko'
+    family: 'Windows'
+    major: '8'
+    minor: '1'
+    patch:
+    patch_minor:
+
+  - user_agent_string: 'Mozilla/5.0 (Windows NT 6.3; ARM; WOW64; Trident/7.0; rv:11.0) like Gecko'
+    family: 'Windows'
+    major: 'RT 8'
+    minor: '1'
+    patch:
+    patch_minor:
+
   - user_agent_string: 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.17) Gecko/20110414 Thunderbird/3.1.10 ThunderBrowse/3.3.5'
-    family: 'Windows 7'
-    major:
+    family: 'Windows'
+    major: '7'
     minor:
     patch:
     patch_minor:
 
   - user_agent_string: 'Mozilla/5.0 (Windows NT 6.1; rv:45.0) Gecko/20100101 Thunderbird/45.0'
-    family: 'Windows 7'
-    major:
+    family: 'Windows'
+    major: '7'
     minor:
     patch:
     patch_minor:
 
   - user_agent_string: 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.3a1) Gecko/20100208 MozillaDeveloperPreview/3.7a1 (.NET CLR 3.5.30729)'
-    family: 'Windows 7'
-    major:
+    family: 'Windows'
+    major: '7'
     minor:
     patch:
     patch_minor:
 
   - user_agent_string: 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534+ (KHTML, like Gecko) FireWeb/1.0.0.0'
-    family: 'Windows 7'
-    major:
+    family: 'Windows'
+    major: '7'
     minor:
     patch:
     patch_minor:
 
   - user_agent_string: 'Mozilla/5.0 (Windows; U; Windows NT 6.1; zh_CN) AppleWebKit/534.7 (KHTML, like Gecko) Chrome/7.0 baidubrowser/1.x Safari/534.7'
-    family: 'Windows 7'
-    major:
+    family: 'Windows'
+    major: '7'
     minor:
     patch:
     patch_minor:
 
   - user_agent_string: 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; baidubrowser 1.x)'
-    family: 'Windows 7'
-    major:
+    family: 'Windows'
+    major: '7'
     minor:
     patch:
     patch_minor:
@@ -862,85 +946,85 @@
     patch_minor:
 
   - user_agent_string: 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)'
-    family: 'Windows 8'
-    major:
+    family: 'Windows'
+    major: '8'
     minor:
     patch:
     patch_minor:
 
   - user_agent_string: 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; ARM; Trident/6.0)'
-    family: 'Windows RT'
-    major:
+    family: 'Windows'
+    major: 'RT'
     minor:
     patch:
     patch_minor:
 
   - user_agent_string: 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; chromeframe; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729)'
-    family: 'Windows Vista'
-    major:
+    family: 'Windows'
+    major: 'Vista'
     minor:
     patch:
     patch_minor:
 
   - user_agent_string: 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.17) Gecko/20110414 Lightning/1.0b3pre Thunderbird/3.1.10'
-    family: 'Windows XP'
-    major:
+    family: 'Windows'
+    major: 'XP'
     minor:
     patch:
     patch_minor:
 
   - user_agent_string: 'Opera/9.80 (Windows NT 5.1; U; ru) Presto/2.5.24 Version/10.53'
-    family: 'Windows XP'
-    major:
+    family: 'Windows'
+    major: 'XP'
     minor:
     patch:
     patch_minor:
 
   - user_agent_string: 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; BOLT/2.101) AppleWebKit/530  (KHTML, like Gecko) Version/4.0 Safari/530.17'
-    family: 'Windows XP'
-    major:
+    family: 'Windows'
+    major: 'XP'
     minor:
     patch:
     patch_minor:
 
   - user_agent_string: 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; chromeframe; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; Sleipnir 2.8.5)3.0.30729)'
-    family: 'Windows XP'
-    major:
+    family: 'Windows'
+    major: 'XP'
     minor:
     patch:
     patch_minor:
 
   - user_agent_string: 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6; chromeframe; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)'
-    family: 'Windows XP'
-    major:
+    family: 'Windows'
+    major: 'XP'
     minor:
     patch:
     patch_minor:
 
   - user_agent_string: 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6; .NET CLR 2.0.50727; .NET CLR 1.1.4322)'
-    family: 'Windows XP'
-    major:
+    family: 'Windows'
+    major: 'XP'
     minor:
     patch:
     patch_minor:
 
   - user_agent_string: 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) RockMelt/0.8.34.841 Chrome/6.0.472.63 Safari/534.3'
-    family: 'Windows XP'
-    major:
+    family: 'Windows'
+    major: 'XP'
     minor:
     patch:
     patch_minor:
 
   - user_agent_string: 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.5 (KHTML, like Gecko) Comodo_Dragon/4.1.1.11 Chrome/4.1.249.1042 Safari/532.5'
-    family: 'Windows XP'
-    major:
+    family: 'Windows'
+    major: 'XP'
     minor:
     patch:
     patch_minor:
 
   - user_agent_string: 'Mozilla/5.0 (Windows NT 5.1; rv:2.0) Gecko/20110407 Firefox/4.0.3 PaleMoon/4.0.3'
-    family: 'Windows XP'
-    major:
+    family: 'Windows'
+    major: 'XP'
     minor:
     patch:
     patch_minor:
@@ -953,8 +1037,8 @@
     patch_minor:
 
   - user_agent_string: 'Mozilla/5.0 (Windows; U; Win 9x 4.90; PL; rv:1.7.5) Gecko/20041217'
-    family: 'Windows ME'
-    major:
+    family: 'Windows'
+    major: 'ME'
     minor:
     patch:
     patch_minor:
@@ -994,6 +1078,13 @@
     patch:
     patch_minor:
 
+  - user_agent_string: 'Mozilla/5.0 (Linux; U; Sailfish 3.0; Mobile; rv:45.0) Gecko/45.0 Firefox/45.0 SailfishBrowser/1.0'
+    family: 'Sailfish'
+    major: '3'
+    minor: '0'
+    patch:
+    patch_minor:
+
 # up market model
   - user_agent_string: 'HbbTV/1.1.1 (;Samsung;SmartTV2013;T-FXPDEUC-1102.2;;) WebKit'
     family: 'Samsung'
@@ -1074,6 +1165,13 @@
     patch: '4'
     patch_minor:
 
+  - user_agent_string: 'DAVdroid/1.9.2-gplay (2017/11/04; dav4android; okhttp3) Android/7.1.2'
+    family: 'Android'
+    major: '7'
+    minor: '1'
+    patch: '2'
+    patch_minor:
+
   - user_agent_string: 'Mozilla/5.0 (SymbianOS 9.4; Series60/5.0 NokiaN97-1/10.0.012; Profile/MIDP-2.1 Configuration/CLDC-1.1; en-us) AppleWebKit/525 (KHTML, like Gecko) WicKed/7.1.12344'
     family: 'Symbian OS'
     major: '9'
@@ -1649,106 +1747,106 @@
     patch_minor:
 
   - user_agent_string: 'Mozilla/5.0 (Windows U; Win NT 5.0; en-US; rv:1.8.0.2) Gecko/20060308 Firefox/1.5.0.2'
-    family: 'Windows NT'
-    major:
+    family: 'Windows'
+    major: 'NT'
     minor:
     patch:
     patch_minor:
 
   - user_agent_string: 'Mozilla/5.0 (Windows; N; WinNT; en-US; m14) Netscape6/6.0b1,gzip(gfe),gzip(gfe),gzip(gfe)'
-    family: 'Windows NT'
-    major:
+    family: 'Windows'
+    major: 'NT'
     minor:
     patch:
     patch_minor:
 
   - user_agent_string: 'Mozilla/5.0 (Windows; U; Win 9x 4.90; de; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7'
-    family: 'Windows ME'
-    major:
+    family: 'Windows'
+    major: 'ME'
     minor:
     patch:
     patch_minor:
 
   - user_agent_string: 'Mozilla/5.0 (Windows; U; Win 9x 4.90; en-CA; rv:0.9.4.1) Gecko/20020314 Netscape6/6.2.2'
-    family: 'Windows ME'
-    major:
+    family: 'Windows'
+    major: 'ME'
     minor:
     patch:
     patch_minor:
 
   - user_agent_string: 'Mozilla/5.0 (Windows; U; Win16; en-US; rv:1.7) Safari/85.5'
-    family: 'Windows 3.1'
-    major:
+    family: 'Windows'
+    major: '3.1'
     minor:
     patch:
     patch_minor:
 
   - user_agent_string: 'Mozilla/5.0 (Windows; U; Win3.1; en-US; rv:1.0.0) Gecko/20020530'
-    family: 'Windows 3.1'
-    major:
+    family: 'Windows'
+    major: '3.1'
     minor:
     patch:
     patch_minor:
 
   - user_agent_string: 'Mozilla/5.0 (Windows; U; Win3.11; en-US; rv:21.56.11.90) Gecko/20500230 Firefox/3.5'
-    family: 'Windows 3.1'
-    major:
+    family: 'Windows'
+    major: '3.1'
     minor:
     patch:
     patch_minor:
 
   - user_agent_string: 'Mozilla/5.0 (Windows; U; Win32; rv:1.6),gzip(gfe),gzip(gfe),gzip(gfe)'
-    family: 'Windows 95'
-    major:
+    family: 'Windows'
+    major: '95'
     minor:
     patch:
     patch_minor:
 
   - user_agent_string: 'Mozilla/5.0 (Windows; U; Win95; en-GB; rv:1.0.1) Gecko/20020823 Netscape/7.0'
-    family: 'Windows 95'
-    major:
+    family: 'Windows'
+    major: '95'
     minor:
     patch:
     patch_minor:
 
   - user_agent_string: 'Mozilla/5.0 (Windows; U; Win95; en-GB; rv:1.8.0.8) Gecko/20061025 Firefox/1.5.0.8'
-    family: 'Windows 95'
-    major:
+    family: 'Windows'
+    major: '95'
     minor:
     patch:
     patch_minor:
 
   - user_agent_string: 'Mozilla/5.0 (Windows; U; WindowsCE 5.2; en-US; rv:1.9.2a2pre) Gecko/20090904 Fennec/1.0a3'
-    family: 'Windows CE'
-    major:
+    family: 'Windows'
+    major: 'CE'
     minor:
     patch:
     patch_minor:
 
   - user_agent_string: 'Mozilla/5.0 (WindowsCE 6.0; rv:2.0.1) Gecko Firefox/5.0.1'
-    family: 'Windows CE'
-    major:
+    family: 'Windows'
+    major: 'CE'
     minor:
     patch:
     patch_minor:
 
   - user_agent_string: 'Mozilla/5.0 (WindowsCE 6.0; rv:2.0.1) Gecko/20100101 Firefox/4.0.1 SeaMonkey/2.1.1'
-    family: 'Windows CE'
-    major:
+    family: 'Windows'
+    major: 'CE'
     minor:
     patch:
     patch_minor:
 
   - user_agent_string: 'Mozilla/5.0 (WindowsCE 6.0; rv:2.1.1) Gecko/ Firefox/5.0.1'
-    family: 'Windows CE'
-    major:
+    family: 'Windows'
+    major: 'CE'
     minor:
     patch:
     patch_minor:
 
   - user_agent_string: 'Mozilla/5.0 (WindowsCE; rv:4.0) Gecko/20120320 Firefox/4.0'
-    family: 'Windows CE'
-    major:
+    family: 'Windows'
+    major: 'CE'
     minor:
     patch:
     patch_minor:
@@ -2047,6 +2145,41 @@
     patch:
     patch_minor:
 
+  - user_agent_string: 'App/1.0.0 CFNetwork/894 Darwin/17.4.0'
+    family: 'iOS'
+    major: '11'
+    minor: '2'
+    patch: '6'
+    patch_minor:
+
+  - user_agent_string: 'App/1.0.0 CFNetwork/897.15 Darwin/17.5.0'
+    family: 'iOS'
+    major: '11'
+    minor: '3'
+    patch:
+    patch_minor:
+
+  - user_agent_string: 'App/1.0.0 CFNetwork/901.1 Darwin/17.6.0'
+    family: 'iOS'
+    major: '11'
+    minor: '4'
+    patch:
+    patch_minor:
+
+  - user_agent_string: 'App/1.0.0 CFNetwork/902.2 Darwin/17.7.0'
+    family: 'iOS'
+    major: '11'
+    minor: '4'
+    patch: '1'
+    patch_minor:
+
+  - user_agent_string: 'App/1.0.0 CFNetwork/958.1 Darwin/18.0.0'
+    family: 'iOS'
+    major: '12'
+    minor: '0'
+    patch:
+    patch_minor:
+
   - user_agent_string: 'Mozilla/5.0 (iPhone; CPU 7_0_6 like Mac OS X; en_GB) AppleWebKit (KHTML, like Gecko) Mobile [OKMagazine/4.0.1 (iOS/7.0.6)] [LiteApps]'
     family: 'iOS'
     major: '7'
@@ -2209,6 +2342,27 @@
     patch:
     patch_minor:
 
+  - user_agent_string: 'TestApp/1.0 CFNetwork/758.3.15 Darwin/15.4.0'
+    family: 'iOS'
+    major: '9'
+    minor: '3'
+    patch: '1'
+    patch_minor:
+
+  - user_agent_string: 'TestApp/1.0 CFNetwork/758.4.3 Darwin/15.5.0'
+    family: 'iOS'
+    major: '9'
+    minor: '3'
+    patch: '2'
+    patch_minor:
+
+  - user_agent_string: 'TestApp/1.0 CFNetwork/758.5.3 Darwin/15.6.0'
+    family: 'iOS'
+    major: '9'
+    minor: '3'
+    patch: '5'
+    patch_minor:
+
   - user_agent_string: 'TestApp/1.0 CFNetwork/808.0.2 Darwin/16.0.0'
     family: 'iOS'
     major: '10'
@@ -2230,6 +2384,13 @@
     patch:
     patch_minor:
 
+  - user_agent_string: 'App/1.0.0 CFNetwork/808.3 Darwin/16.3.0'
+    family: 'iOS'
+    major: '10'
+    minor: '2'
+    patch: '1'
+    patch_minor:
+
   - user_agent_string: 'TestApp-tvOS/1.0-1'
     family: 'tvOS'
     major: '1'
@@ -2335,6 +2496,13 @@
     patch: '4'
     patch_minor:
 
+  - user_agent_string: 'Zendesk for iPhone 1.2.1 (4395)'
+    family: 'iOS'
+    major:
+    minor:
+    patch:
+    patch_minor:
+
   - user_agent_string: 'Mozilla/5.0+(Macintosh;+Intel+Mac+OS+X+10_11_6)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/52.0.2743.116+Safari/537.36'
     family: 'Mac OS X'
     major: '10'
@@ -2346,5 +2514,370 @@
     family: 'Mac OS X'
     major: '10'
     minor: '12'
+    patch:
+    patch_minor:
+
+  - user_agent_string: 'Box Sync/4.0.7848;Darwin/10.13;i386/64bit'
+    family: 'Mac OS X'
+    major: '10'
+    minor: '13'
+    patch:
+    patch_minor:
+
+  - user_agent_string: 'Box/1.2.93;Darwin/10.13;i386/64bit'
+    family: 'Mac OS X'
+    major: '10'
+    minor: '13'
+    patch:
+    patch_minor:
+
+  - user_agent_string: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_0) AppleWebKit/537.36 (KHTML, like Gecko) BoxNotes/1.3.0 Chrome/56.0.2924.87 Electron/1.6.8 Safari/537.36'
+    family: 'Mac OS X'
+    major: '10'
+    minor: '13'
+    patch: '0'
+    patch_minor:
+
+  - user_agent_string: 'Box Sync/4.0.7848;Windows/8.1;x86 Family 6 Model 158 Stepping 9, GenuineIntel/32bit'
+    family: 'Windows'
+    major: '8.1'
+    minor:
+    patch:
+    patch_minor:
+
+  - user_agent_string: 'Box Sync/4.0.7848;Windows/10;Intel64 Family 6 Model 158 Stepping 9, GenuineIntel/64bit'
+    family: 'Windows'
+    major: '10'
+    minor:
+    patch:
+    patch_minor:
+
+  - user_agent_string: 'Mozilla/5.0 (Windows NT 6.3) AppleWebKit/537.36 (KHTML, like Gecko) BoxNotes/1.3.0 Chrome/56.0.2924.87 Electron/1.6.8 Safari/537.36'
+    family: 'Windows'
+    major: '8'
+    minor: '1'
+    patch:
+    patch_minor:
+
+  - user_agent_string: 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) BoxNotes/1.3.0 Chrome/56.0.2924.87 Electron/1.6.8 Safari/537.36'
+    family: 'Windows'
+    major: '10'
+    minor:
+    patch:
+    patch_minor:
+
+  - user_agent_string: 'Box/1.2.93;Windows/10;Intel64 Family 6 Model 158 Stepping 9, GenuineIntel/64bit'
+    family: 'Windows'
+    major: '10'
+    minor:
+    patch:
+    patch_minor:
+
+  - user_agent_string: 'Mozilla/5.0 (Windows) mirall/2.3.2 (build 1) (Nextcloud)'
+    family: 'Windows'
+    major:
+    minor:
+    patch:
+    patch_minor:
+
+  - user_agent_string: 'Mozilla/5.0 (Linux) mirall/2.3.2 (Nextcloud)'
+    family: 'Linux'
+    major:
+    minor:
+    patch:
+    patch_minor:
+
+  - user_agent_string: 'Mozilla/5.0 (Android) ownCloud-android/2.0.0'
+    family: 'Android'
+    major:
+    minor:
+    patch:
+    patch_minor:
+
+  - user_agent_string: 'MyApp/1.0 CFNetwork/811.4.18 Darwin/16.5.0'
+    family: 'iOS'
+    major: '10'
+    minor: '3'
+    patch:
+    patch_minor:
+
+  - user_agent_string: 'MyApp/1.0 CFNetwork/811.5.4 Darwin/16.6.0'
+    family: 'iOS'
+    major: '10'
+    minor: '3'
+    patch: '2'
+    patch_minor:
+
+  - user_agent_string: 'MyApp/1.0 CFNetwork/811.5.4 Darwin/16.7.0'
+    family: 'iOS'
+    major: '10'
+    minor: '3'
+    patch: '3'
+    patch_minor:
+
+  - user_agent_string: 'MyApp/1.0 CFNetwork/887 Darwin/17.0.0'
+    family: 'iOS'
+    major: '11'
+    minor: '0'
+    patch:
+    patch_minor:
+
+  - user_agent_string: 'MyApp/1.0 CFNetwork/889.9 Darwin/17.2.0'
+    family: 'iOS'
+    major: '11'
+    minor: '1'
+    patch:
+    patch_minor:
+
+  - user_agent_string: 'MyApp/1.0 CFNetwork/893.10 Darwin/17.3.0'
+    family: 'iOS'
+    major: '11'
+    minor: '2'
+    patch:
+    patch_minor:
+
+
+  - user_agent_string: 'MyApp/1.0 CFNetwork/893.13.1 Darwin/17.3.0 (x86_64)'
+    family: 'Mac OS X'
+    major: '10'
+    minor: '13'
+    patch:
+    patch_minor:
+
+  - user_agent_string: 'Outlook-iOS/665.29827.prod.iphone (2.63.0)'
+    family: 'iOS'
+    major:
+    minor:
+    patch:
+    patch_minor:
+
+  - user_agent_string: 'Mozilla/5.0 (Linux; Android 7.0; LG-TP260 Build/NRD90U; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/64.0.3282.137 Mobile Safari/537.36 Instagram 33.0.0.11.92 Android (24/7.0; 320dpi; 720x1193; LGE/lge; LG-TP260; lv517; lv517; en_US; 93117667)'
+    family: 'Android'
+    major: '7'
+    minor: '0'
+    patch:
+    patch_minor:
+
+  - user_agent_string: 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_2_5 like Mac OS X) AppleWebKit/604.5.6 (KHTML, like Gecko) Mobile/15D60 Instagram 33.0.0.11.96 (iPhone9,3; iOS 11_2_5; en_AU; en-AU; scale=2.00; gamut=wide; 750x1334)'
+    family: 'iOS'
+    major: '11'
+    minor: '2'
+    patch: '5'
+    patch_minor:
+
+  - user_agent_string: 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_2_6 like Mac OS X) AppleWebKit/604.5.6 (KHTML, like Gecko) Mobile/15D100 Flipboard/4.2.2'
+    family: 'iOS'
+    major: '11'
+    minor: '2'
+    patch: '6'
+    patch_minor:
+
+  - user_agent_string: 'Mozilla/5.0 (Linux; Android 7.0; SM-G610F Build/NRD90M; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/63.0.3239.111 Mobile Safari/537.36 Flipboard/4.1.9/4323,4.1.9.4323'
+    family: 'Android'
+    major: '7'
+    minor: '0'
+    patch:
+    patch_minor:
+
+  - user_agent_string: 'Mozilla/5.0 (Linux; Android 7.0; SM-G930F Build/NRD90M; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/64.0.3282.137 Mobile Safari/537.36 Onefootball/Android/9.10.6'
+    family: 'Android'
+    major: '7'
+    minor: '0'
+    patch:
+    patch_minor:
+
+  - user_agent_string: 'Mozilla/5.0 (Linux; Android 7.0; SM-A520F Build/NRD90M; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/58.0.3029.83 Mobile Safari/537.36 Flipboard-Briefing/2.7.28'
+    family: 'Android'
+    major: '7'
+    minor: '0'
+    patch:
+    patch_minor:
+
+  - user_agent_string: 'Wget/1.18 (linux-gnu)'
+    family: 'Linux'
+    major:
+    minor:
+    patch:
+    patch_minor:
+
+  - user_agent_string: 'Wget/1.18 (freebsd10.3)'
+    family: 'FreeBSD'
+    major: '10'
+    minor: '3'
+    patch:
+    patch_minor:
+
+  - user_agent_string: 'curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.19.1 Basic ECC zlib/1.2.3 libidn/1.18 libssh2/1.4.2'
+    family: 'Red Hat'
+    major:
+    minor:
+    patch:
+    patch_minor:
+
+  - user_agent_string: 'ibm-cos-sdk-java/2.3.0 Linux/4.9.0-8-amd64 Java_HotSpot(TM)_64-Bit_Server_VM/9.0.4+11/9.0.4'
+    family: 'Linux'
+    major: '4'
+    minor: '9'
+    patch: '0'
+    patch_minor:
+
+  - user_agent_string: 'aws-sdk-dotnet-45/3.3.11.0 aws-sdk-dotnet-core/3.3.17.10 .NET_Runtime/4.0 .NET_Framework/4.0 OS/Microsoft_Windows_NT_6.2.9200.0 ClientSync'
+    family: 'Windows'
+    major:
+    minor:
+    patch:
+    patch_minor:
+
+  - user_agent_string: 'rusoto/0.36.0 rust/1.35.0 linux'
+    family: 'Linux'
+    major:
+    minor:
+    patch:
+    patch_minor:
+
+  - user_agent_string: 'SalesforceMobileSDK/5.3.0 android mobile/8.0.0 (SM-G955F) Salesforce1/15.2 Native uid_c4589f605fad8c7e ftr_ Cordova/6.2.3'
+    family: 'Android'
+    major: '8'
+    minor: '0'
+    patch: '0'
+    patch_minor:
+
+  - user_agent_string: 'SalesforceMobileSDK/5.3.0 android mobile/7.0 (SM-G955U) Salesforce1/15.2 Native uid_4ec4068eddf27447 ftr_ Cordova/6.2.3'
+    family: 'Android'
+    major: '7'
+    minor: '0'
+    patch:
+    patch_minor:
+
+  - user_agent_string: 'SalesforceMobileSDK/5.3.0 android mobile/9 (SM-G955U) Salesforce1/15.2 Native uid_4ec4068eddf27447 ftr_ Cordova/6.2.3'
+    family: 'Android'
+    major: '9'
+    minor:
+    patch:
+    patch_minor:
+
+  - user_agent_string: 'Mozilla/5.0 (Linux; Android 9; Pixel Build/PPP3.180510.008) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.81 Mobile Safari/537.36'
+    family: 'Android'
+    major: '9'
+    minor:
+    patch:
+    patch_minor:
+
+  - user_agent_string: 'Mozilla/5.0 (X11; Windows aarch64 10718.88.2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.118 Safari/537.36 CitrixChromeApp'
+    family: 'Chrome OS'
+    major: '10718'
+    minor: '88'
+    patch: '2'
+    patch_minor:
+
+  - user_agent_string: 'Mozilla/5.0 (X11; Windows x86_64 10718.88.2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.118 Safari/537.36 CitrixChromeApp'
+    family: 'Chrome OS'
+    major: '10718'
+    minor: '88'
+    patch: '2'
+    patch_minor:
+
+  - user_agent_string: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36 CitrixChromeApp'
+    family: 'Windows'
+    major: '10'
+    minor:
+    patch:
+    patch_minor:
+
+  - user_agent_string: 'ViaFree-DK/3.8.3 (com.MTGx.ViaFree.dk; build:7383; iOS 12.1.0) Alamofire/4.7.0'
+    family: 'iOS'
+    major: '12'
+    minor: '1'
+    patch: '0'
+    patch_minor:
+
+  - user_agent_string: 'Viafree-tvOS-DK/3.7.1 (com.MTGx.ViaFree.dk; build:7341; tvOS 12.1.0) Alamofire/4.7.0'
+    family: 'tvOS'
+    major: '12'
+    minor: '1'
+    patch: '0'
+    patch_minor:
+
+  - user_agent_string: 'iTunes/12.7.1 (Windows; Microsoft Windows 7 Ultimate Edition Service Pack 1 (Build 7601)) AppleWebKit/7604.3005.2001.1'
+    family: 'Windows'
+    major: '7'
+    minor:
+    patch:
+    patch_minor:
+
+  - user_agent_string: 'iTunes/12.1.3 (Windows; Microsoft Windows XP Professional Service Pack 3 (Build 2600)) AppleWebKit/7600.1017.9000.3'
+    family: 'Windows'
+    major: 'XP'
+    minor:
+    patch:
+    patch_minor:
+
+  - user_agent_string: 'iTunes/12.1.3 (Windows; Microsoft Windows Vista Business Edition Service Pack 2 (Build 6002)) AppleWebKit/7600.1017.9000.3  '
+    family: 'Windows'
+    major: 'Vista'
+    minor:
+    patch:
+    patch_minor:
+
+  - user_agent_string: 'Mozilla/4.0 (compatible; MSIE 5.01; Windows 98; Linux 3.3.8-3.3) [Netgem; 7.7.01-51; i-Player; netbox; sezmi_totalgem]'
+    family: 'Windows'
+    major: '98'
+    minor:
+    patch:
+    patch_minor:
+
+  - user_agent_string: 'Mozilla/2.0 (compatible; MSIE 3.0; Windows 3.1)'
+    family: 'Windows'
+    major: '3.1'
+    minor:
+    patch:
+    patch_minor:
+
+  - user_agent_string: 'Mozilla/5.0 (Windows NT 4.0; rv:52.0) Gecko/20100101 Firefox/52.0'
+    family: 'Windows'
+    major: 'NT'
+    minor:
+    patch:
+    patch_minor:
+
+  - user_agent_string: 'Mozilla/4.0 (compatible; MSIE 5.0; Windows ME) Opera 5.11 [de]'
+    family: 'Windows'
+    major: 'ME'
+    minor:
+    patch:
+    patch_minor:
+
+  - user_agent_string: 'Microsoft Internet Explorer/1.0 (Windows 95)'
+    family: 'Windows'
+    major: '95'
+    minor:
+    patch:
+    patch_minor:
+
+  - user_agent_string: 'Mozilla/4.0 (compatible; MSIE 6.0; Windows CE,BrailleNote; IEMobile 7.11)'
+    family: 'Windows'
+    major: 'CE'
+    minor:
+    patch:
+    patch_minor:
+
+  - user_agent_string: 'Mozilla/5.0 (Windows 2000; U) Opera 7.0 [en]'
+    family: 'Windows'
+    major: '2000'
+    minor:
+    patch:
+    patch_minor:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible;AspiegelBot)'
+    family: 'Other'
+    major:
+    minor:
+    patch:
+    patch_minor:
+
+  - user_agent_string: 'Mozilla/5.0 (Linux; Android 7.0;) AppleWebKit/537.36 (KHTML, like Gecko) Mobile Safari/537.36 (compatible; AspiegelBot)'
+    family: 'Other'
+    major:
+    minor:
     patch:
     patch_minor:
diff --git a/deps/uap-core/tests/test_ua.yaml b/deps/uap-core/tests/test_ua.yaml
--- a/deps/uap-core/tests/test_ua.yaml
+++ b/deps/uap-core/tests/test_ua.yaml
@@ -1,7188 +1,8336 @@
 test_cases:
-
-  - user_agent_string: 'Mozilla/5.0 (Windows; U; en-US) AppleWebKit/531.9 (KHTML, like Gecko) AdobeAIR/2.5.1'
-    family: 'AdobeAIR'
-    major: '2'
-    minor: '5'
-    patch: '1'
-
-  - user_agent_string: 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; en-us; Silk/1.1.0-80) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16 Silk-Accelerated=true'
-    family: 'Amazon Silk'
-    major: '1'
-    minor: '1'
-    patch: '0-80'
-
-  - user_agent_string: 'Mozilla/5.0 (Linux; U; en-us; KFTT Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Silk/2.0 Safari/535.19 Silk-Accelerated=false'
-    family: 'Amazon Silk'
-    major: '2'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (Linux; U; en-us; KFOT Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Silk/2.1 Safari/535.19 Silk-Accelerated=true'
-    family: 'Amazon Silk'
-    major: '2'
-    minor: '1'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (Linux; U; en-us; KFTT Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Silk/2.2 Safari/535.19 Silk-Accelerated=true'
-    family: 'Amazon Silk'
-    major: '2'
-    minor: '2'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-gb; KFTT Build/IML74K) AppleWebKit/537.36 (KHTML, like Gecko) Silk/3.25 like Chrome/34.0.1847.137 Mobile Safari/537.36'
-    family: 'Amazon Silk'
-    major: '3'
-    minor: '25'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (Linux; U; Android 2.2.2; en-gb; HTC Desire Build/FRG83G) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1'
-    family: 'Android'
-    major: '2'
-    minor: '2'
-    patch: '2'
-
-  - user_agent_string: 'Mozilla/5.0 (Linux; U; Android 2.3.3; en-fr; HTC/WildfireS/1.33.163.2 Build/GRI40) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1'
-    family: 'Android'
-    major: '2'
-    minor: '3'
-    patch: '3'
-
-  - user_agent_string: 'Mozilla/5.0 (Linux; U; Android 2.3.4; en-us; Kindle Fire Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1'
-    family: 'Android'
-    major: '2'
-    minor: '3'
-    patch: '4'
-
-  - user_agent_string: 'Mozilla/5.0 (Linux;U;Android 2.3.5;en-us;TECNO T3 Build/master) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1'
-    family: 'Android'
-    major: '2'
-    minor: '3'
-    patch: '5'
-
-  - user_agent_string: 'Mozilla/5.0 (Linux; U; Android 3.0.1; en-us; GT-P7510 Build/HRI83) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13'
-    family: 'Android'
-    major: '3'
-    minor: '0'
-    patch: '1'
-
-  - user_agent_string: 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; KFTT Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30'
-    family: 'Android'
-    major: '4'
-    minor: '0'
-    patch: '3'
-
-  - user_agent_string: 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; KFOT Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30'
-    family: 'Android'
-    major: '4'
-    minor: '0'
-    patch: '3'
-
-  - user_agent_string: 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; Amaze_4G Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30'
-    family: 'Android'
-    major: '4'
-    minor: '0'
-    patch: '3'
-
-  - user_agent_string: 'Mozilla/5.0 (Linux; U; Android 4.0.4; en-us; PJ83100/2.20.502.7 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.0'
-    family: 'Android'
-    major: '4'
-    minor: '0'
-    patch: '4'
-
-  - user_agent_string: 'Mozilla/5.0 (Windows; U; Windows NT 6.1; zh_CN) AppleWebKit/534.7 (KHTML, like Gecko) Chrome/7.0 baidubrowser/1.x Safari/534.7'
-    family: 'Baidu Browser'
-    major: '1'
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; baidubrowser 1.x)'
-    family: 'Baidu Browser'
-    major: '1'
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.15 Safari/535.11 QQBrowser/6.13.13719.201'
-    family: 'QQ Browser'
-    major: '6'
-    minor: '13'
-    patch: '13719'
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0; QQBrowser/7.6.21433.400)'
-    family: 'QQ Browser'
-    major: '7'
-    minor: '6'
-    patch: '21433'
-
-  - user_agent_string: 'Mozilla/5.0 (Linux; U; Android 4.1.1; zh-cn; MI 2S Build/JRO03L) AppleWebKit/537.36 (KHTML, like Gecko)Version/4.0 MQQBrowser/5.0 Mobile Safari/537.36'
-    family: 'QQ Browser Mobile'
-    major: '5'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (iPhone 5; CPU iPhone OS 7_0_6 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/6.0 MQQBrowser/5.0.5 Mobile/11B651 Safari/8536.25'
-    family: 'QQ Browser Mobile'
-    major: '5'
-    minor: '0'
-    patch: '5'
-
-  - user_agent_string: 'MQQBrowser/371 Mozilla/5.0 (iPhone 4S; CPU iPhone OS 6_0_1 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Mobile/10A523 Safari/7534.48.3'
-    family: 'QQ Browser Mobile'
-    major: '371'
-    minor:
-    patch:
-
-  - user_agent_string: 'MQQBrowser/1.0/Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; NOKIA; RM-910apacprc200)'
-    family: 'QQ Browser Mobile'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'QQBrowser (Linux; U; zh-cn; HTC Hero Build/FRF91)'
-    family: 'QQ Browser'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (BB10; Touch) AppleWebKit/537.3+ (KHTML, like Gecko) Version/10.0.9.388 Mobile Safari/537.3+'
-    family: 'BlackBerry WebKit'
-    major: '10'
-    minor: '0'
-    patch: '9'
-
-  - user_agent_string: 'Mozilla/5.0 (PlayBook; U; RIM Tablet OS 1.0.0; en-US) AppleWebKit/534.8+ (KHTML, like Gecko) Version/0.0.1 Safari/534.8+'
-    family: 'BlackBerry WebKit'
-    major: '1'
-    minor: '0'
-    patch: '0'
-
-  - user_agent_string: 'Mozilla/5.0 (BlackBerry; U; BlackBerry 9800; en-GB) AppleWebKit/534.1+ (KHTML, like Gecko) Version/6.0.0.141 Mobile Safari/534.1+'
-    family: 'BlackBerry WebKit'
-    major: '6'
-    minor: '0'
-    patch: '0'
-
-  - user_agent_string: 'Mozilla/5.0 (BlackBerry; U; BlackBerry 9800; en-US) AppleWebKit/534.1  (KHTML, like Gecko) Version/6.0.0.91 Mobile Safari/534.1 '
-    family: 'BlackBerry WebKit'
-    major: '6'
-    minor: '0'
-    patch: '0'
-
-  - user_agent_string: 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; BOLT/2.101) AppleWebKit/530  (KHTML, like Gecko) Version/4.0 Safari/530.17'
-    family: 'BOLT'
-    major: '2'
-    minor: '101'
-    patch:
-
-  - user_agent_string: 'Bunjalloo/0.7.6(Nintendo DS;U;en)'
-    family: 'Bunjalloo'
-    major: '0'
-    minor: '7'
-    patch: '6'
-
-  - user_agent_string: 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; chromeframe; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729)'
-    family: 'IE'
-    major: '8'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; chromeframe; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; Sleipnir 2.8.5)3.0.30729)'
-    family: 'Sleipnir'
-    major: '2'
-    minor: '8'
-    patch: '5'
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; Windows NT 6.1; Catchpoint) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.81 Safari/537.36'
-    family: 'Catchpoint'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; Windows NT 6.1; Catchpoint bot) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.81 Safari/537.36'
-    family: 'Catchpoint bot'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; chromeframe/11.0.660.0)'
-    family: 'Chrome Frame'
-    major: '11'
-    minor: '0'
-    patch: '660'
-
-  - user_agent_string: 'Mozilla/5.0 (Linux; Android 7.1.2; Nexus 5X Build/N2G47W; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/58.0.3029.83 Mobile Safari/537.36'
-    family: 'Chrome Mobile WebView'
-    major: '58'
-    minor: '0'
-    patch: '3029'
-
-  - user_agent_string: 'Mozilla/5.0 (Linux; Android 4.2; Galaxy Nexus Build/JOP40C) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19'
-    family: 'Chrome Mobile'
-    major: '18'
-    minor: '0'
-    patch: '1025'
-
-  - user_agent_string: 'Mozilla/5.0 (Linux; Android 4.1.1; SPH-L710 Build/JRO03L) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19'
-    family: 'Chrome Mobile'
-    major: '18'
-    minor: '0'
-    patch: '1025'
-
-  - user_agent_string: 'Mozilla/5.0 (Linux; Android 4.4.2; Nexus 5 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.122 Mobile Safari/537.36'
-    family: 'Chrome Mobile'
-    major: '35'
-    minor: '0'
-    patch: '1916'
-
-  - user_agent_string: 'Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Ubuntu/10.10 Chromium/10.0.648.133 Chrome/10.0.648.133 Safari/534.16'
-    family: 'Chromium'
-    major: '10'
-    minor: '0'
-    patch: '648'
-
-  - user_agent_string: 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.5 (KHTML, like Gecko) Comodo_Dragon/4.1.1.11 Chrome/4.1.249.1042 Safari/532.5'
-    family: 'Comodo Dragon'
-    major: '4'
-    minor: '1'
-    patch: '1'
-
-  - user_agent_string: 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.16) Gecko/20110302 Conkeror/0.9.2 (Debian-0.9.2+git100804-1)'
-    family: 'Conkeror'
-    major: '0'
-    minor: '9'
-    patch: '2'
-
-  - user_agent_string: 'Mozilla/5.0 (X11; Linux x86_64; rv:2.0) Gecko/20110408 conkeror/0.9.3'
-    family: 'Conkeror'
-    major: '0'
-    minor: '9'
-    patch: '3'
-
-  - user_agent_string: 'Mozilla/5.0 (SAMSUNG; SAMSUNG-GT-S8500/S8500XXJEE; U; Bada/1.0; nl-nl) AppleWebKit/533.1 (KHTML, like Gecko) Dolfin/2.0 Mobile WVGA SMM-MMS/1.2.0 OPN-B'
-    family: 'Dolfin'
-    major: '2'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)'
-    family: 'FacebookBot'
-    major: '1'
-    minor: '1'
-    patch:
-
-  - user_agent_string: 'LinkedInBot/1.0 (compatible; Mozilla/5.0; Jakarta Commons-HttpClient/3.1 +http://www.linkedin.com)'
-    family: 'LinkedInBot'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Google (+https://developers.google.com/+/web/snippet/)'
-    family: 'GooglePlusBot'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Firefox/11.0 (via ggpht.com GoogleImageProxy)'
-    family: 'GmailImageProxy'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Twitterbot/1.0'
-    family: 'TwitterBot'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'WhatsApp/2.17.70 W'
-    family: 'WhatsApp'
-    major: '2'
-    minor: '17'
-    patch: '70'
-
-  - user_agent_string: 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.1pre) Gecko/20090717 Ubuntu/9.04 (jaunty) Shiretoko/3.5.1pre'
-    family: 'Firefox (Shiretoko)'
-    major: '3'
-    minor: '5'
-    patch: '1pre'
-
-  - user_agent_string: 'Mozilla/5.0 (X11; Linux i686 (x86_64); rv:2.0b4) Gecko/20100818 Firefox/4.0b4'
-    family: 'Firefox Beta'
-    major: '4'
-    minor: '0'
-    patch: 'b4'
-
-  - user_agent_string: 'Mozilla/5.0 (X11; Linux x86_64; rv:2.0b8pre) Gecko/20101031 Firefox-4.0/4.0b8pre'
-    family: 'Firefox Beta'
-    major: '4'
-    minor: '0'
-    patch: 'b8pre'
-
-  - user_agent_string: 'Mozilla/5.0 (X11; U; SunOS i86pc; en-US; rv:1.8.0.5) Gecko/20060728 Firefox/1.5.0.5'
-    family: 'Firefox'
-    major: '1'
-    minor: '5'
-    patch: '0'
-
-  - user_agent_string: 'Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.12) Gecko/20101027 Ubuntu/10.04 (lucid) Firefox/3.6.12'
-    family: 'Firefox'
-    major: '3'
-    minor: '6'
-    patch: '12'
-
-  - user_agent_string: 'Mozilla/5.0 (Mobile; rv:15.0) Gecko/15.0 Firefox/15.0'
-    family: 'Firefox Mobile'
-    major: '15'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534+ (KHTML, like Gecko) FireWeb/1.0.0.0'
-    family: 'FireWeb'
-    major: '1'
-    minor: '0'
-    patch: '0'
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)'
-    family: 'Googlebot'
-    major: '2'
-    minor: '1'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (DTV) AppleWebKit/531.2+ (KHTML, like Gecko) Espial/6.1.6 AQUOSBrowser/2.0 (US01DTV;V;0001;0001)'
-    family: 'Espial'
-    major: '6'
-    minor: '1'
-    patch: '6'
-
-  - user_agent_string: 'iBrowser/Mini2.8 (Nokia5130c-2/07.97)'
-    family: 'iBrowser Mini'
-    major: '2'
-    minor: '8'
-    patch:
-
-  - user_agent_string: 'ICE Browser/5.05 (Java 1.4.0; Windows 2000 5.0 x86)'
-    family: 'ICE Browser'
-    major: '5'
-    minor: '05'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (X11; Linux x86_64; rv:2.0) Gecko/20110417 IceCat/4.0'
-    family: 'IceCat'
-    major: '4'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0; XBLWP7; ZuneWP7)'
-    family: 'IE Large Screen'
-    major: '9'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Mozilla/4.0 (compatible; MSIE 7.0; Windows Phone OS 7.0; Trident/3.1; IEMobile/7.0; SAMSUNG; SGH-i917)'
-    family: 'IE Mobile'
-    major: '7'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; SGH-i917)'
-    family: 'IE Mobile'
-    major: '9'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; NOKIA; Lumia 800)'
-    family: 'IE Mobile'
-    major: '9'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Lumia 920)'
-    family: 'IE Mobile'
-    major: '10'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6; .NET CLR 2.0.50727; .NET CLR 1.1.4322)'
-    family: 'IE'
-    major: '8'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Mozilla/4.0 WebTV/2.6 (compatible; MSIE 4.0)'
-    family: 'IE'
-    major: '4'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Mozilla/4.0 (compatible; MSIE 5.17; Mac_PowerPC)'
-    family: 'IE'
-    major: '5'
-    minor: '17'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; ARM; Trident/6.0)'
-    family: 'IE'
-    major: '10'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6; chromeframe; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)'
-    family: 'IE'
-    major: '8'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Java/1.6.0_43'
-    family: 'Java'
-    major: '6'
-    minor: '0'
-    patch: '43'
-
-  - user_agent_string: 'Java/1.7.0_71'
-    family: 'Java'
-    major: '7'
-    minor: '0'
-    patch: '71'
-
-  - user_agent_string: 'Java/1.8.0_25'
-    family: 'Java'
-    major: '8'
-    minor: '0'
-    patch: '25'
-
-  - user_agent_string: 'Mozilla/5.0 (Linux; U; en-US) AppleWebKit/528.5+ (KHTML, like Gecko, Safari/528.5+) Version/4.0 Kindle/3.0 (screen 600x800; rotate)'
-    family: 'Kindle'
-    major: '3'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (X11; U; Linux; de-DE) AppleWebKit/527  (KHTML, like Gecko, Safari/419.3) konqueror/4.3.1'
-    family: 'Konqueror'
-    major: '4'
-    minor: '3'
-    patch: '1'
-
-  - user_agent_string: 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.17) Gecko/20110414 Lightning/1.0b3pre Thunderbird/3.1.10'
-    family: 'Lightning'
-    major: '1'
-    minor: '0'
-    patch: 'b3pre'
-
-  - user_agent_string: 'Mozilla/5.0 (Linux x86_64) AppleWebKit/534.26+ WebKitGTK+/1.4.1 luakit/f3a2dbe'
-    family: 'LuaKit'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.47 Safari/535.11 MRCHROME'
-    family: 'Mail.ru Chromium Browser'
-    major: '17'
-    minor: '0'
-    patch: '963'
-
-  - user_agent_string: 'Midori/0.2 (X11; Linux; U; en-us) WebKit/531.2 '
-    family: 'Midori'
-    major: '0'
-    minor: '2'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B367 Safari/531.21.10'
-    family: 'Mobile Safari'
-    major: '4'
-    minor: '0'
-    patch: '4'
-
-  - user_agent_string: 'Mozilla/5.0 (iPod; U; CPU iPhone OS 4_3_2 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8H7 Safari/6533.18.5'
-    family: 'Mobile Safari'
-    major: '5'
-    minor: '0'
-    patch: '2'
-
-  - user_agent_string: 'Mozilla/5.0 (iPod touch; CPU iPhone OS 9_3_2 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Mobile/13F69'
-    family: 'Mobile Safari UI/WKWebView'
-    major: '9'
-    minor: '3'
-    patch: '2'
-
-  - user_agent_string: 'Mozilla/5.0 (iPhone; CPU iPhone OS 7_1_2 like Mac OS X) AppleWebKit/537.51.2 (KHTML, like Gecko) Mobile/11D257'
-    family: 'Mobile Safari UI/WKWebView'
-    major: '7'
-    minor: '1'
-    patch: '2'
-
-  - user_agent_string: 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.3a1) Gecko/20100208 MozillaDeveloperPreview/3.7a1 (.NET CLR 3.5.30729)'
-    family: 'MozillaDeveloperPreview'
-    major: '3'
-    minor: '7'
-    patch: 'a1'
-
-  - user_agent_string: 'NCSA_Mosaic/2.0 (Windows 3.1)'
-    family: 'NCSA Mosaic'
-    major: '2'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (PLAYSTATION 3; 3.55)'
-    family: 'NetFront'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (PLAYSTATION 3 4.31) AppleWebKit/531.22.8 (KHTML, like Gecko)'
-    family: 'NetFront NX'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/4.0 (PSP (PlayStation Portable); 2.00)'
-    family: 'NetFront'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (PlayStation Vita 1.81) AppleWebKit/531.22.8 (KHTML, like Gecko) Silk/3.2'
-    family: 'NetFront NX'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/4.0 (compatible; Linux 2.6.10) NetFront/3.3 Kindle/1.0 (screen 600x800)'
-    family: 'NetFront'
-    major: '3'
-    minor: '3'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (Nintendo 3DS; U; ; en) Version/1.7498.US'
-    family: 'NetFront NX'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (Nintendo WiiU) AppleWebKit/534.52 (KHTML, like Gecko) NX/2.1.0.8.21 NintendoBrowser/1.0.0.7494.US'
-    family: 'NetFront NX'
-    major: '2'
-    minor: '1'
-    patch: '0'
-
-  - user_agent_string: 'HUAWEI-M750/001.00 ACS-NetFront/3.2'
-    family: 'NetFront'
-    major: '3'
-    minor: '2'
-    patch:
-
-  - user_agent_string: 'Mozilla/4.0 (BREW 3.1.5; U; en-us; Sanyo; NetFront/3.5.1/AMB) Boost SCP3810'
-    family: 'NetFront'
-    major: '3'
-    minor: '5'
-    patch: '1'
-
-  - user_agent_string: 'NetFront/3.5.1 (BREW 3.1.5; U; en-us; LG; NetFront/3.5.1/WAP) Sprint LN240 MMP/2.0 Profile/MIDP-2.1 Configuration/CLDC-1.1'
-    family: 'NetFront'
-    major: '3'
-    minor: '5'
-    patch: '1'
-
-  - user_agent_string: 'Mozilla/4.0 (Brew MP 1.0.2; U; en-us; Sanyo; NetFront/3.5.1/AMB) Sprint E4100'
-    family: 'NetFront'
-    major: '3'
-    minor: '5'
-    patch: '1'
-
-  - user_agent_string: 'PantechP6010/JNUS11072011 BMP/1.0.2 DeviceId/141020 NetFront/4.1 OMC/1.5.3 Profile/MIDP-2.1 Configuration/CLDC-1.1'
-    family: 'NetFront'
-    major: '4'
-    minor: '1'
-    patch:
-
-  - user_agent_string: 'NetFront/4.2 (BMP 1.0.4; U; en-us; LG; NetFront/4.2/AMB) Boost LG272 MMP/2.0 Profile/MIDP-2.1 Configuration/CLDC-1.1'
-    family: 'NetFront'
-    major: '4'
-    minor: '2'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (SymbianOS/9.4; U; Series60/5.0 Nokia5800d-1/21.0.025; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413'
-    family: 'Nokia Browser'
-    major: '7'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (Symbian/3; Series60/5.2 NokiaN8-00/013.016; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/525 (KHTML, like Gecko) Version/3.0 BrowserNG/7.2.8.10 3gpp-gba'
-    family: 'Nokia Browser'
-    major: '7'
-    minor: '2'
-    patch: '8'
-
-  - user_agent_string: 'Mozilla/5.0 (Symbian/3; Series60/5.2 NokiaN8-00/012.002; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/533.4 (KHTML, like Gecko) NokiaBrowser/7.3.0 Mobile Safari/533.4 3gpp-gba'
-    family: 'Nokia Browser'
-    major: '7'
-    minor: '3'
-    patch: '0'
-
-  - user_agent_string: 'Mozilla/5.0 (Symbian/3; Series60/5.3 Nokia701/111.020.0307; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/533.4 (KHTML, like Gecko) NokiaBrowser/7.4.1.14 Mobile Safari/533.4 3gpp-gba'
-    family: 'Nokia Browser'
-    major: '7'
-    minor: '4'
-    patch: '1'
-
-  - user_agent_string: 'Mozilla/5.0 (MeeGo; NokiaN9) AppleWebKit/534.13 (KHTML, like Gecko) NokiaBrowser/8.5.0 Mobile Safari/534.13'
-    family: 'Nokia Browser'
-    major: '8'
-    minor: '5'
-    patch: '0'
-
-  - user_agent_string: 'ALCATEL-OT510A/382 ObigoInternetBrowser/Q05A'
-    family: 'Obigo'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Huawei/1.0/0HuaweiG2800/WAP2.0/Obigo-Browser/Q03C MMS/Obigo-MMS/1.2'
-    family: 'Obigo'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'PantechP7040/JLUS04042011 Browser/Obigo/Q05A OMC/1.5.3 Profile/MIDP-2.1 Configuration/CLDC-1.1'
-    family: 'Obigo'
-    major: '05'
-    minor:
-    patch:
-
-  - user_agent_string: 'OneBrowser/3.0 (SAMSUNG-GT-S5253/S5253DDKJ2)'
-    family: 'ONE Browser'
-    major: '3'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'OneBrowser/3.0 (NokiaC2-00/03.42)'
-    family: 'ONE Browser'
-    major: '3'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'SAMSUNG-C3053/1.0 Openwave/6.2.3 Profile/MIDP-2.0 Configuration/CLDC-1.1 UP.Browser/6.2.3.3.c.1.101 (GUI) MMP/2.0'
-    family: 'Openwave'
-    major: '6'
-    minor: '2'
-    patch: '3'
-
-  - user_agent_string: 'Opera/9.80 (VRE; Opera Mini/4.2/28.2794; U; en) Presto/2.8.119 Version/11.10'
-    family: 'Opera Mini'
-    major: '4'
-    minor: '2'
-    patch:
-
-  - user_agent_string: 'Opera/9.80 (BREW; Opera Mini/5.1.191/27.2202; U; en) Presto/2.8.119 240X400 LG VN271'
-    family: 'Opera Mini'
-    major: '5'
-    minor: '1'
-    patch: '191'
-
-  - user_agent_string: 'Opera/9.80 (Series 60; Opera Mini/6.24455/25.677; U; fr) Presto/2.5.25 Version/10.54'
-    family: 'Opera Mini'
-    major: '6'
-    minor: '24455'
-    patch:
-
-  - user_agent_string: 'Opera/9.80 (BlackBerry; Opera Mini/7.0.31437/28.3030; U; en) Presto/2.8.119 Version/11.10'
-    family: 'Opera Mini'
-    major: '7'
-    minor: '0'
-    patch: '31437'
-
-  - user_agent_string: 'Opera/9.80 (J2ME/MIDP; Opera Mini/9.80 (S60; SymbOS; Opera Mobi/23.348; U; en) Presto/2.5.25 Version/10.54'
-    family: 'Opera Mini'
-    major: '9'
-    minor: '80'
-    patch:
-
-  - user_agent_string: 'Opera/9.80 (J2ME/MIDP; Opera Mini/9.80 (J2ME/22.478; U; en) Presto/2.5.25 Version/10.54'
-    family: 'Opera Mini'
-    major: '9'
-    minor: '80'
-    patch:
-
-  - user_agent_string: 'Opera/9.80 (J2ME/MIDP; Opera Mini/9 (Compatible; MSIE:9.0; iPhone; BlackBerry9700; AppleWebKit/24.746; U; en) Presto/2.5.25 Version/10.54'
-    family: 'Opera Mini'
-    major: '9'
-    minor:
-    patch:
-
-  - user_agent_string: 'Opera/9.80 (Android; Opera Mini/7.6.35766/35.5706; U; en) Presto/2.8.119 Version/11.10'
-    family: 'Opera Mini'
-    major: '7'
-    minor: '6'
-    patch: '35766'
-
-  - user_agent_string: 'Opera/9.80 (S60; SymbOS; Opera Mobi/275; U; es-ES) Presto/2.4.13 Version/10.00'
-    family: 'Opera Mobile'
-    major: '10'
-    minor: '00'
-    patch:
-
-  - user_agent_string: 'Opera/9.80 (Android 3.2; Linux; Opera Tablet/ADR-1106291546; U; en) Presto/2.8.149 Version/11.10'
-    family: 'Opera Tablet'
-    major: '11'
-    minor: '10'
-    patch:
-
-  - user_agent_string: 'Opera/9.30 (Nintendo Wii; U; ; 3642; en)'
-    family: 'Opera'
-    major: '9'
-    minor: '30'
-    patch:
-
-  - user_agent_string: 'Opera/9.50 (Nintendo DSi; Opera/507; U; en-US)'
-    family: 'Opera'
-    major: '9'
-    minor: '50'
-    patch:
-
-  - user_agent_string: 'Opera/9.80 (Windows NT 5.1; U; ru) Presto/2.5.24 Version/10.53'
-    family: 'Opera'
-    major: '10'
-    minor: '53'
-    patch:
-
-  - user_agent_string: 'User agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.20 Safari/537.36 OPR/15.0.1147.18 (Edition Next)'
-    family: 'Opera'
-    major: '15'
-    minor: '0'
-    patch: '1147'
-
-  - user_agent_string: 'Mozilla/5.0 (Linux; Android; 4.1.2; GT-I9100 Build/000000) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1234.12 Mobile Safari/537.22 OPR/14.0.123.123'
-    family: 'Opera Mobile'
-    major: '14'
-    minor: '0'
-    patch: '123'
-
-  - user_agent_string: 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.10 Safari/537.36 OPR/27.0.1689.22 (Edition developer)'
-    family: 'Opera'
-    major: '27'
-    minor: '0'
-    patch: '1689'
-
-  - user_agent_string: 'Mozilla/5.0 (iPhone; CPU iPhone OS 7_0_3 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Coast/3.1.0.79792 Mobile/11B511 Safari/7534.48.3'
-    family: 'Opera Coast'
-    major: '3'
-    minor: '1'
-    patch: '0'
-
-  - user_agent_string: 'Mozilla/5.0 (iPhone; CPU iPhone OS 7_1_1 like Mac OS X) AppleWebKit/537.51.2 (KHTML, like Gecko) OPiOS/8.0.1.80062 Mobile/11D201 Safari/9537.53'
-    family: 'Opera Mini'
-    major: '8'
-    minor: '0'
-    patch: '1'
-
-  - user_agent_string: 'SomethingWeNeverKnewExisted'
-    family: 'Other'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (Series40; NokiaC2-03/07.48; Profile/MIDP-2.1 Configuration/CLDC-1.1) Gecko/20100401 S40OviBrowser/2.2.0.0.33'
-    family: 'Ovi Browser'
-    major: '2'
-    minor: '2'
-    patch: '0'
-
-  - user_agent_string: 'Mozilla/5.0 (Series40; NokiaX2-05/08.35; Profile/MIDP-2.1 Configuration/CLDC-1.1) Gecko/20100401 S40OviBrowser/2.0.2.68.14'
-    family: 'Ovi Browser'
-    major: '2'
-    minor: '0'
-    patch: '2'
-
-  - user_agent_string: 'Mozilla/5.0 (Windows NT 5.1; rv:2.0) Gecko/20110407 Firefox/4.0.3 PaleMoon/4.0.3'
-    family: 'Pale Moon'
-    major: '4'
-    minor: '0'
-    patch: '3'
-
-  - user_agent_string: 'Mozilla/5.0 (X11; Linux x86_64; rv:3.0) Goanna/20170207 PaleMoon/27.1.0'
-    family: 'Pale Moon'
-    major: '27'
-    minor: '1'
-    patch: '0'
-
-  - user_agent_string: 'Mozilla/5.0 (X11; Linux x86_64; rv:3.0) Gecko/20100101 Goanna/20170207 PaleMoon/27.1.0'
-    family: 'Pale Moon'
-    major: '27'
-    minor: '1'
-    patch: '0'
-
-  - user_agent_string: 'Mozilla/5.0 (X11; Linux x86_64; rv:45.9) Gecko/20100101 Goanna/3.0 Firefox/45.9 PaleMoon/27.1.0'
-    family: 'Pale Moon'
-    major: '27'
-    minor: '1'
-    patch: '0'
-
-  - user_agent_string: 'Mozilla/5.0 (LG-T500 AppleWebkit/531 Browser/Phantom/V2.0 Widget/LGMW/3.0 MMS/LG-MMS-V1.0/1.2 Java/ASVM/1.1 Profile/MIDP-2.1 Configuration/CLDC-1.1)'
-    family: 'Phantom Browser'
-    major: '2'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Pingdom.com_bot_version_1.4_(http://www.pingdom.com/)'
-    family: 'PingdomBot'
-    major: '1'
-    minor: '4'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (Unknown; Linux x86_64) AppleWebKit/534.34 (KHTML, like Gecko) PingdomTMS/0.8.5 Safari/534.34'
-    family: 'PingdomBot'
-    major: '0'
-    minor: '8'
-    patch: '5'
-
-  - user_agent_string: 'Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/98 Safari/537.4 (StatusCake)'
-    family: 'StatusCakeBot'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/3.0 (Planetweb/2.100 JS SSL US; Dreamcast US)'
-    family: 'Planetweb'
-    major: '2'
-    minor: '100'
-    patch:
-
-  - user_agent_string: 'PyAMF/0.6.1'
-    family: 'PyAMF'
-    major: '0'
-    minor: '6'
-    patch: '1'
-
-  - user_agent_string: 'python-requests/0.14 CPython/2.6 Linux/2.6-43-server'
-    family: 'Python Requests'
-    major: '0'
-    minor: '14'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (X11i; Linux; C) AppleWebKikt/533.3 (KHTML, like Gecko) QtCarBrowser Safari/533.3'
-    family: 'QtCarBrowser'
-    major: '1'
-    minor:
-    patch:
-
-  - user_agent_string: 'Rackspace Monitoring/1.1 (https://monitoring.api.rackspacecloud.com)'
-    family: 'RackspaceBot'
-    major: '1'
-    minor: '1'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (X11; U; BSD Four; en-US) AppleWebKit/533.3 (KHTML, like Gecko) rekonq Safari/533.3'
-    family: 'Rekonq'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (X11; Linux i686) AppleWebKit/534.34 (KHTML, like Gecko) rekonq/1.0 Safari/534.34'
-    family: 'Rekonq'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) RockMelt/0.8.34.841 Chrome/6.0.472.63 Safari/534.3'
-    family: 'RockMelt'
-    major: '0'
-    minor: '8'
-    patch: '34'
-
-  - user_agent_string: 'Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-us) AppleWebKit/418.8 (KHTML, like Gecko) Safari/419.3'
-    family: 'Safari'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_5; en-us) AppleWebKit/533.18.1 (KHTML, like Gecko) Version/5.0.2 Safari/533.18.5'
-    family: 'Safari'
-    major: '5'
-    minor: '0'
-    patch: '2'
-
-  - user_agent_string: 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_7; en-us) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Safari/530.17 Skyfire/2.0'
-    family: 'Skyfire'
-    major: '2'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.21 (KHTML, like Gecko) Snowshoe/1.0.0 Safari/537.21'
-    family: 'Snowshoe'
-    major: '1'
-    minor: '0'
-    patch: '0'
-
-  - user_agent_string: 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.17) Gecko/20110414 Thunderbird/3.1.10 ThunderBrowse/3.3.5'
-    family: 'ThunderBrowse'
-    major: '3'
-    minor: '3'
-    patch: '5'
-
-  - user_agent_string: 'Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 Lightning/2.6.4'
-    family: 'Thunderbird'
-    major: '24'
-    minor: '2'
-    patch: '0'
-
-  - user_agent_string: 'Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0'
-    family: 'Thunderbird'
-    major: '24'
-    minor: '2'
-    patch: '0'
-
-  - user_agent_string: 'Mozilla/5.0 (Windows NT 6.1; rv:45.0) Gecko/20100101 Thunderbird/45.0'
-    family: 'Thunderbird'
-    major: '45'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (Windows NT 6.2; WOW64; rv:7.0.1) Gecko/20151105 Postbox/4.0.8'
-    family: 'Postbox'
-    major: '4'
-    minor: '0'
-    patch: '8'
-
-  - user_agent_string: 'Mozilla/4.0 (compatible; Lotus-Notes/6.0; Windows-NT)'
-    family: 'Lotus Notes'
-    major: '6'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'YahooMobileMail/1.0 (Android Mail; 1.3.10) (supersonic;HTC;PC36100;2.3.5/GRJ90)'
-    family: 'YahooMobileMail'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Barca/2.8.2'
-    family: 'Barca'
-    major: '2'
-    minor: '8'
-    patch: '2'
-
-  - user_agent_string: 'BarcaPro/1.4.12'
-    family: 'Barca'
-    major: '1'
-    minor: '4'
-    patch: '12'
-
-  - user_agent_string: 'The Bat! 4.0.0.22'
-    family: 'The Bat!'
-    major: '4'
-    minor: '0'
-    patch: '0'
-
-  - user_agent_string: 'MailBar/1.3.2 (Mac OS X Version 10.11.1 (Build 15B42))'
-    family: 'MailBar'
-    major: '1'
-    minor: '3'
-    patch: '2'
-
-  - user_agent_string: 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/534.34 (KHTML, like Gecko) kmail2/4.14.2 Safari/534.34'
-    family: 'kmail2'
-    major: '4'
-    minor: '14'
-    patch: '2'
-
-  - user_agent_string: 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; MSOffice 12)'
-    family: 'Outlook'
-    major: '2007'
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; InfoPath.2; MSOffice 14)'
-    family: 'Outlook'
-    major: '2010'
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/6.0; Microsoft Outlook 15.0.4420)'
-    family: 'Outlook'
-    major: '2013'
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/536.26.14 (KHTML, like Gecko)'
-    family: 'Apple Mail'
-    major: '536'
-    minor: '26'
-    patch: '14'
-
-  - user_agent_string: 'Airmail 1.0 rv:148 (Macintosh; Mac OS X 10.8.3; en_BE)'
-    family: 'Airmail'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Airmail 1.0.6 rv:196 (Macintosh; Mac OS X 10.8.4; en_GB)'
-    family: 'Airmail'
-    major: '1'
-    minor: '0'
-    patch: '6'
-
-  - user_agent_string: 'J2ME/UCWEB7.0.3.45/139/7682'
-    family: 'UC Browser'
-    major: '7'
-    minor: '0'
-    patch: '3'
-
-  - user_agent_string: 'NOKIA6120c/UC Browser7.4.0.65/28/352'
-    family: 'UC Browser'
-    major: '7'
-    minor: '4'
-    patch: '0'
-
-  - user_agent_string: 'UCWEB/3.0 (iPhone; CPU OS_6; en-US)AppleWebKit/534.1 U3/3.0.0 Mobile'
-    family: 'UC Browser'
-    major: '3'
-    minor: '0'
-    patch: '0'
-
-  - user_agent_string: 'UCWEB/2.0 (Linux; U; Opera Mini/7.1.32052/30.2697; en-US; GT-S5302) U2/1.0.0 UCBrowser/9.3.0.440 Mobile'
-    family: 'UC Browser'
-    major: '9'
-    minor: '3'
-    patch: '0'
-
-  - user_agent_string: 'IUC(U;iOS 5.1.1;Zh-cn;320*480;)/UCWEB7.9.0.94/41/997'
-    family: 'UC Browser'
-    major: '7'
-    minor: '9'
-    patch: '0'
-
-  - user_agent_string: 'Nokia5320di/UCWEB8.0.3.99/28/999'
-    family: 'UC Browser'
-    major: '8'
-    minor: '0'
-    patch: '3'
-
-  - user_agent_string: 'Nokia201/2.0 (11.21) Profile/MIDP-2.1 Configuration/CLDC-1.1 Mozilla/5.0 (Java; U; en-us; nokia201) UCBrowser8.3.0.154/70/355/UCWEB Mobile'
-    family: 'UC Browser'
-    major: '8'
-    minor: '3'
-    patch: '0'
-
-  - user_agent_string: 'Mozilla/5.0 (S60V5; U; en-us; NokiaC5-03) AppleWebKit/530.13 (KHTML, like Gecko) UCBrowser/8.7.0.218/50/352/UCWEB Mobile'
-    family: 'UC Browser'
-    major: '8'
-    minor: '7'
-    patch: '0'
-
-  - user_agent_string: 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 UBrowser/5.7.14488.1025 Safari/537.36'
-    family: 'UC Browser'
-    major: '5'
-    minor: '7'
-    patch: '14488'
-
-  - user_agent_string: 'Alcatel-OH5/1.0 UP.Browser/6.1.0.7.7 (GUI) MMP/1.0'
-    family: 'UP.Browser'
-    major: '6'
-    minor: '1'
-    patch: '0'
-
-  - user_agent_string: 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534+ (KHTML, like Gecko) Version/5.1.1 Safari/534.51.22'
-    family: 'WebKit Nightly'
-    major: '534'
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1+ (KHTML, like Gecko) Version/5.1.1 Safari/534.51.22'
-    family: 'WebKit Nightly'
-    major: '537'
-    minor: '1'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_4) AppleWebKit/537.8+ (KHTML, like Gecko) Version/6.0 Safari/536.25'
-    family: 'WebKit Nightly'
-    major: '537'
-    minor: '8'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (hp-tablet; Linux; hpwOS/3.0.0; U; en-US) AppleWebKit/534.6 (KHTML, like Gecko) wOSBrowser/233.58 Safari/534.6 TouchPad/1.0'
-    family: 'webOS Browser'
-    major: '3'
-    minor: '0'
-    patch: '0'
-
-  - user_agent_string: 'Mozilla/5.0 (webOS/1.2; U; en-US) AppleWebKit/525.27.1 (KHTML, like Gecko) Version/1.0 Safari/525.27.1 Desktop/1.0'
-    family: 'webOS Browser'
-    major: '1'
-    minor: '2'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (hp-tablet; Linux; hpwOS/3.0.5; U; en-US) AppleWebKit/534.6 (KHTML, like Gecko) wOSBrowser/234.83 Safari/534.6 TouchPad/1.0'
-    family: 'webOS Browser'
-    major: '3'
-    minor: '0'
-    patch: '5'
-
-  - user_agent_string: 'Mozilla/5.0 (X11; U; Linux i686; nl-NL) AppleWebKit/534.3 (KHTML, like Gecko) WeTab-Browser Safari/534.3'
-    family: 'WeTab'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1104.222 YaBrowser/1.5.1104.222 Safari/537.4'
-    family: 'Yandex Browser'
-    major: '1'
-    minor: '5'
-    patch: '1104'
-
-  - user_agent_string: 'Mozilla/5.0 YottaaMonitor;'
-    family: 'YottaaMonitor'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (Macintosh; Intel Mac OS X) AppleWebKit/534.34 (KHTML, like Gecko) PhantomJS/1.6.0 Safari/534.34'
-    family: 'PhantomJS'
-    major: '1'
-    minor: '6'
-    patch: '0'
-
-  - user_agent_string: 'Mozilla/5.0 (IE 11.0; Windows NT 6.3; Trident/7.0; .NET4.0E; .NET4.0C; rv:11.0) like Gecko'
-    family: 'IE'
-    major: '11'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; MSIE 9.0; AOL 9.7; AOLBuild 4343.19; Windows NT 6.1; WOW64; Trident/5.0; FunWebProducts)'
-    family: 'AOL'
-    major: '9'
-    minor: '7'
-    patch: '4343'
-
-  - user_agent_string: 'Mozilla/5.0 (Windows NT 6.3; Win64; x64; Trident/7.0; rv:11.0) like Gecko'
-    family: 'IE'
-    major: '11'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'HbbTV/1.1.1 (;Samsung;SmartTV2013;T-FXPDEUC-1102.2;;) WebKit'
-    family: 'HbbTV'
-    major: '1'
-    minor: '1'
-    patch: '1'
-
-  - user_agent_string: 'HbbTV/1.2.1 (;Panasonic;VIERA 2013;3.672;4101-0003 0002-0000;)'
-    family: 'HbbTV'
-    major: '1'
-    minor: '2'
-    patch: '1'
-
-  - user_agent_string: 'HbbTV/1.1.1 (;;;;;) firetv-firefox-plugin 1.1.20'
-    family: 'HbbTV'
-    major: '1'
-    minor: '1'
-    patch: '1'
-
-  - user_agent_string: 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; Trident/7.0; rv:11.0) like Gecko/20100101 Firefox/12.0'
-    family: 'IE'
-    major: '11'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.89 Vivaldi/1.0.83.38 Safari/537.36'
-    family: 'Vivaldi'
-    major: '1'
-    minor: '0'
-    patch: '83'
-
-  - user_agent_string: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.9600'
-    family: 'Edge'
-    major: '12'
-    minor: '9600'
-    patch:
-
-  - user_agent_string: 'Mozilla/4.0 (Vodafone/1.0/LG-GU280/v10a Browser/Obigo-Q7.3 MMS/LG-MMS-V1.0/1.2 Java/ASVM/1.1 Profile/MIDP-2.1 Configuration/CLDC-1.1)'
-    family: 'Obigo'
-    major: '7'
-    minor: '3'
-    patch:
-    patch_minor:
-
-  - user_agent_string: 'Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 6.12) Vodafone/1.0/HTC_Elf/1.11.164.2'
-    family: 'IE Mobile'
-    major: '6'
-    minor: '12'
-    patch:
-    patch_minor:
-
-  - user_agent_string: 'Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 8.12; MSIEMobile 6.0) Vodafone/1.0/HTC_HD2/1.44.162.6 (70494)'
-    family: 'IE Mobile'
-    major: '8'
-    minor: '12'
-    patch:
-    patch_minor:
-
-  - user_agent_string: 'Mozilla/5.0 (Mobile; Windows Phone 8.1; Android 4.0; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; NOKIA; Lumia 920)'
-    family: 'IE Mobile'
-    major: '11'
-    minor: '0'
-    patch:
-    patch_minor:
-
-  - user_agent_string: 'Mozilla/5.0 (SymbianOS/9.2; U; Series60/3.1 Vodafone/1.0/SamsungSGHi560/I560AEHB1 Profile/MIDP-2.0 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413'
-    family: 'Nokia OSS Browser'
-    major: '3'
-    minor: '1'
-    patch:
-    patch_minor:
-
-  - user_agent_string: 'Mozilla/5.0 (Vodafone/1.0/LG-KC910/V08h Browser/Teleca-Q7.1 MMS/LG-MMS-V1.0/1.2 MediaPlayer/LGPlayer/1.0 Java/ASVM/1.1 Profile/MIDP-2.1 Configuration/CLDC-1.1)'
-    family: 'Teleca Browser'
-    major:
-    minor:
-    patch:
-    patch_minor:
-
-  - user_agent_string: 'Vodafone/1.0/0Vodafone715/B116 Browser/Obigo-Browser/Q04A MMS/Obigo-MMS/Q04A SyncML/HW-SyncML/1.0 Java/QVM/4.1 Profile/MIDP-2.0 Configuration/CLDC-1.1'
-    family: 'Obigo'
-    major:
-    minor:
-    patch:
-    patch_minor:
-
-  - user_agent_string: 'Opera/9.80 (Android 1.6; Linux; Opera Mobi/ADR-1107051709; U; en) Presto/2.8.149 Version/11.10'
-    family: 'Opera Mobile'
-    major: '11'
-    minor: '10'
-    patch:
-    patch_minor:
-
-  - user_agent_string: 'Opera/9.80 (Windows Mobile; WCE; Opera Mobi/WMD-50430; U; en) Presto/2.4.13 Version/10.00'
-    family: 'Opera Mobile'
-    major: '10'
-    minor: '00'
-    patch:
-    patch_minor:
-
-  - user_agent_string: '(Opera) Vodafone/1.0/HPiPAQDataMessenger/1.00.00 Browser/Opera/9.5 Profile/MIDP-2.0 Configuration/CLDC-1.1 Opera/9.5 (Microsoft Windows; PPC; Opera Mobi/15142; U; en)'
-    family: 'Opera Mobile'
-    major: '9'
-    minor: '5'
-    patch:
-    patch_minor:
-
-  - user_agent_string: 'HTC MAX 4G Opera/9.5 (Microsoft Windows; PPC; Opera Mobi/1409; U; ru)'
-    family: 'Opera Mobile'
-    major: '9'
-    minor: '5'
-    patch:
-    patch_minor:
-
-  - user_agent_string: 'iBrowser/3.0/Mozilla/5.0 (Linux; U; Android 2.3.6; yy-yy; Karbonn A2 Build/GRK39F) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1'
-    family: 'Android'
-    major: '2'
-    minor: '3'
-    patch: '6'
-    patch_minor:
-
-  - user_agent_string: 'Mozilla/5.0 (Series40; NokiaC3-01/05.60; Profile/MIDP-2.1 Configuration/CLDC-1.1) Gecko/20100401 S40OviBrowser/2.2.0.0.31'
-    family: 'Ovi Browser'
-    major: '2'
-    minor: '2'
-    patch: '0'
-    patch_minor:
-
-  - user_agent_string: 'iRAPP/1.16.0 NokiaN95_8GB/31.0.015; Series60/3.1 Profile/MIDP-2.0 Configuration/CLDC-1.'
-    family: 'iRAPP'
-    major: '1'
-    minor: '16'
-    patch:
-    patch_minor:
-
-  - user_agent_string: 'iRAPP/1.3.0 Nokia5230/50.0.101 Series60/5.0 Profile/MIDP-2.1 Configuration/CLDC-1.1 3gpp-gba'
-    family: 'iRAPP'
-    major: '1'
-    minor: '3'
-    patch:
-    patch_minor:
-
-  - user_agent_string: 'iRAPP/3.5.0 NokiaN8-00/111.040.1511 Series60/5.3 Profile/MIDP-2.1 Configuration/CLDC-1.1 3gpp-gba'
-    family: 'iRAPP'
-    major: '3'
-    minor: '5'
-    patch:
-    patch_minor:
-
-  - user_agent_string: 'LG-GD710/V10f; Mozilla/5.0 (Profile/MIDP-2.0 Configuration/CLDC-1.1; Opera Mini/att/4.2.14812; U; en) Opera 9.50'
-    family: 'Opera Mini'
-    major: '4'
-    minor: '2'
-    patch: '14812'
-    patch_minor:
-
-  - user_agent_string: 'SAMSUNG-SGH-A897/A897UCJC1; Mozilla/5.0 (Profile/MIDP-2.0 Configuration/CLDC-1.1; Opera Mini/att/4.2.15304; U; fr-US) Opera 9.50'
-    family: 'Opera Mini'
-    major: '4'
-    minor: '2'
-    patch: '15304'
-    patch_minor:
-
-  - user_agent_string: 'MQQBrowser/39 Mozilla/5.0 (iPhone 4S; CPU iPhone OS 6_0_1 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Mobile/10A523 Safari/7534.48.3'
-    family: 'QQ Browser Mobile'
-    major: '39'
-    minor:
-    patch:
-    patch_minor:
-
-  - user_agent_string: 'MQQBrowser/391 Mozilla/5.0 (iPhone 4S; CPU iPhone OS 5_0 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Mobile/9A334 Safari/7534.48.3'
-    family: 'QQ Browser Mobile'
-    major: '391'
-    minor:
-    patch:
-    patch_minor:
-
-  - user_agent_string: 'MQQBrowser/20 (Linux; U; 2.3.3; en-us; HTC Desire S Build/GRI40;480*800)'
-    family: 'QQ Browser Mobile'
-    major: '20'
-    minor:
-    patch:
-    patch_minor:
-
-  - user_agent_string: 'MQQBrowser/Mini2.8 (ZTE-X990/X990_V2_Z12_ESFR_D18F100)'
-    family: 'QQ Browser Mini'
-    major: '2'
-    minor: '8'
-    patch:
-    patch_minor:
-
-  - user_agent_string: 'MQQBrowser/Mini3.1 (SonyEricssonJ105i/R1HA035)'
-    family: 'QQ Browser Mini'
-    major: '3'
-    minor: '1'
-    patch:
-    patch_minor:
-
-  - user_agent_string: 'QQBrowser/14 (Linux; U; 2.2.2; en-us; Motorola XT316 BUILD/FRG83G) Mobile/0050'
-    family: 'QQ Browser'
-    major: '14'
-    minor:
-    patch:
-    patch_minor:
-
-  - user_agent_string: 'Dolphin 6.5.1 (iPad; iPhone OS 6.1.3; de_DE)'
-    family: 'Dolphin'
-    major: '6'
-    minor: '5'
-    patch: '1'
-    patch_minor:
-
-  - user_agent_string: 'Dolphin 7.4 (iPhone; iPhone OS 7.0.2; de_DE)'
-    family: 'Dolphin'
-    major: '7'
-    minor: '4'
-    patch:
-    patch_minor:
-
-  - user_agent_string: 'Dolphin 7.5.1 (iPhone; iPhone OS 7.0.3; de_DE)'
-    family: 'Dolphin'
-    major: '7'
-    minor: '5'
-    patch: '1'
-    patch_minor:
-
-  - user_agent_string: 'Mozilla/5.0 (Linux; U; Android 2.1-update1; zh-cn; XT701 Build/STCU_31.05.4) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17 DolphinHDCN/7.0.1'
-    family: 'Dolphin'
-    major: '7'
-    minor: '0'
-    patch: '1'
-    patch_minor:
-
-  - user_agent_string: 'Mozilla/5.0 (Linux; U; Android 2.2; en-gb; GT-P1000 Build/FROYO) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 DolphinHDCN/6.3.1'
-    family: 'Dolphin'
-    major: '6'
-    minor: '3'
-    patch: '1'
-    patch_minor:
-
-  - user_agent_string: 'Mozilla/5.0 (Linux; U; Android 4.1.1; en-us; Nexus 7 Build/JRO03D) AppleWebKit/534.30 (KHTML, like Gecko) Dolphin/INT-1.0.4 Mobile Safari/534.30'
-    family: 'Dolphin'
-    major: '1'
-    minor: '0'
-    patch: '4'
-    patch_minor:
-
-  - user_agent_string: 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; en-us) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16 DolphinHDCN/6.1.0'
-    family: 'Dolphin'
-    major: '6'
-    minor: '1'
-    patch: '0'
-    patch_minor:
-
-  - user_agent_string: 'Mozilla/5.0(miniGUI/3.x; U; Linux i686; en-US) AppleWebKit/534.26 (KHTML, like Gecko) mDolphin/3.0 chrome/10.0 Safria/534.26'
-    family: 'mDolphin'
-    major: '3'
-    minor: '0'
-    patch:
-    patch_minor:
-
-  - user_agent_string: 'Mozilla/5.0(miniGUI/3.x; U; Linux i686; en; ) AppleWebKit/533.9.0 (KHTML, like Gecko) mDolphin/3.0.0 Safria/533.9.0'
-    family: 'mDolphin'
-    major: '3'
-    minor: '0'
-    patch: '0'
-    patch_minor:
-
-  - user_agent_string: 'CFNetwork, iPhone OS 5.1.1, iPhone4,1'
-    family: 'CFNetwork'
-    major:
-    minor:
-    patch:
-    patch_minor:
-
-  - user_agent_string: 'CFNetwork, iPhone OS 7.0.4, iPhone5,2'
-    family: 'CFNetwork'
-    major:
-    minor:
-    patch:
-    patch_minor:
-
-  - user_agent_string: 'CFNetwork, iPhone OS 7.0, iPhone4,1'
-    family: 'CFNetwork'
-    major:
-    minor:
-    patch:
-    patch_minor:
-
-  - user_agent_string: 'Safari5530.17 CFNetwork/438.12 Darwin/9.7.0 (i386) (Macmini2,1)'
-    family: 'CFNetwork'
-    major: '438'
-    minor: '12'
-    patch:
-    patch_minor:
-
-  - user_agent_string: 'Safari/6533.18.5 CFNetwork/454.9.8 Darwin/10.4.0 (i386) (MacBookPro7,1)'
-    family: 'CFNetwork'
-    major: '454'
-    minor: '9'
-    patch: '8'
-    patch_minor:
-
-  - user_agent_string: 'Safari/7536.30.1 CFNetwork/520.5.1 Darwin/11.4.2 (i386) (MacBook3,1)'
-    family: 'CFNetwork'
-    major: '520'
-    minor: '5'
-    patch: '1'
-    patch_minor:
-
-  - user_agent_string: 'Reader Notifier/5 CFNetwork/596.3.3 Darwin/12.3.0 (x86_64) (MacBookPro7,1)'
-    family: 'CFNetwork'
-    major: '596'
-    minor: '3'
-    patch: '3'
-    patch_minor:
-
-  - user_agent_string: 'Safari/9537.71 CFNetwork/673.0.2 Darwin/13.0.1 (x86_64) (MacBookPro11,1)'
-    family: 'CFNetwork'
-    major: '673'
-    minor: '0'
-    patch: '2'
-    patch_minor:
-
-  - user_agent_string: 'DEPoker-iPad/1.0.2 CFNetwork/548.1.4 Darwin/11.0.0'
-    family: 'CFNetwork'
-    major: '548'
-    minor: '1'
-    patch: '4'
-    patch_minor:
-
-  - user_agent_string: 'JDSports-iPad/1.1 CFNetwork/672.0.8 Darwin/14.0.0'
-    family: 'CFNetwork'
-    major: '672'
-    minor: '0'
-    patch: '8'
-    patch_minor:
-
-  - user_agent_string: 'AngryBirdsBlack-iPhone/1.1.0 CFNetwork/548.1.4 Darwin/11.0.0'
-    family: 'CFNetwork'
-    major: '548'
-    minor: '1'
-    patch: '4'
-    patch_minor:
-
-  - user_agent_string: 'Bing for iPad/1.1.2 CFNetwork/485.13.9 Darwin/11.0.0'
-    family: 'CFNetwork'
-    major: '485'
-    minor: '13'
-    patch: '9'
-    patch_minor:
-
-  - user_agent_string: 'NightstandPaid-iPad/1.3.1 CFNetwork/548.1.4 Darwin/11.0.0'
-    family: 'CFNetwork'
-    major: '548'
-    minor: '1'
-    patch: '4'
-    patch_minor:
-
-  - user_agent_string: 'Glo-De-iPad/1.4.7 CFNetwork/672.0.2 Darwin/14.0.0'
-    family: 'CFNetwork'
-    major: '672'
-    minor: '0'
-    patch: '2'
-    patch_minor:
-
-  - user_agent_string: 'Island for iPhone/1.95 CFNetwork/672.0.2 Darwin/14.0.0'
-    family: 'CFNetwork'
-    major: '672'
-    minor: '0'
-    patch: '2'
-    patch_minor:
-
-  - user_agent_string: 'WormsiPhone-iPad/2.3 CFNetwork/548.1.4 Darwin/11.0.0'
-    family: 'CFNetwork'
-    major: '548'
-    minor: '1'
-    patch: '4'
-    patch_minor:
-
-  - user_agent_string: 'Rummy LITE iPad/2.3.0 CFNetwork/609.1.4 Darwin/13.0.0'
-    family: 'CFNetwork'
-    major: '609'
-    minor: '1'
-    patch: '4'
-    patch_minor:
-
-  - user_agent_string: 'MobileRSSFree-iPad/3.1 CFNetwork/467.12 Darwin/10.3.1'
-    family: 'CFNetwork'
-    major: '467'
-    minor: '12'
-    patch:
-    patch_minor:
-
-  - user_agent_string: 'MobileRSSFree-iPad/3.1.4 CFNetwork/485.13.9 Darwin/11.0.0'
-    family: 'CFNetwork'
-    major: '485'
-    minor: '13'
-    patch: '9'
-    patch_minor:
-
-  - user_agent_string: 'babbelIndonesian-iPad/4.0.1 CFNetwork/672.0.8 Darwin/14.0.0'
-    family: 'CFNetwork'
-    major: '672'
-    minor: '0'
-    patch: '8'
-    patch_minor:
-
-  - user_agent_string: 'WeltMobile-iPad/4.2 CFNetwork/609.1.4 Darwin/13.0.0'
-    family: 'CFNetwork'
-    major: '609'
-    minor: '1'
-    patch: '4'
-    patch_minor:
-
-  - user_agent_string: 'IMPlusFull-iPad/7.9.1 CFNetwork/548.0.4 Darwin/11.0.0'
-    family: 'CFNetwork'
-    major: '548'
-    minor: '0'
-    patch: '4'
-    patch_minor:
-
-  - user_agent_string: 'Cooliris/1.3 CFNetwork/342.1 Darwin/9.4.1'
-    family: 'CFNetwork'
-    major: '342'
-    minor: '1'
-    patch:
-    patch_minor:
-
-  - user_agent_string: 'Poof/1.0 CFNetwork/485.12.7 Darwin/10.4.0'
-    family: 'CFNetwork'
-    major: '485'
-    minor: '12'
-    patch: '7'
-    patch_minor:
-
-  - user_agent_string: 'Parking Mania Free/1.9.5.0 CFNetwork/548.0.4 Darwin/11.0.0'
-    family: 'CFNetwork'
-    major: '548'
-    minor: '0'
-    patch: '4'
-    patch_minor:
-
-  - user_agent_string: 'Planet Boing!/1.4.8 CFNetwork/609.1.4 Darwin/13.0.0'
-    family: 'CFNetwork'
-    major: '609'
-    minor: '1'
-    patch: '4'
-    patch_minor:
-
-  - user_agent_string: 'PlayTube/1.7 CFNetwork/672.0.2 Darwin/14.0.0'
-    family: 'CFNetwork'
-    major: '672'
-    minor: '0'
-    patch: '2'
-    patch_minor:
-
-  - user_agent_string: 'Mozilla/5.0 (Linux; U; Android 2.2.1; es-us) AppleWebKit/534.12 (KHTML, like Gecko) Puffin/1.3.2913S Mobile Safari/534.12'
-    family: 'Puffin'
-    major: '1'
-    minor: '3'
-    patch: '2913'
-    patch_minor:
-
-  - user_agent_string: 'Mozilla/5.0 (Linux; U; Android 3.2.1; es-es) AppleWebKit/534.35 (KHTML, like Gecko) Chrome/11.0.696.65 Safari/534.35 Puffin/2.0.6440M Mobile'
-    family: 'Puffin'
-    major: '2'
-    minor: '0'
-    patch: '6440'
-    patch_minor:
-
-  - user_agent_string: 'Mozilla/5.0 (Linux; U; Android 3.2; en-gb) AppleWebKit/534.35 (KHTML, like Gecko) Chrome/11.0.696.65 Safari/534.35 Puffin/2.0.5932M Mobile'
-    family: 'Puffin'
-    major: '2'
-    minor: '0'
-    patch: '5932'
-    patch_minor:
-
-  - user_agent_string: 'Mozilla/5.0 (Linux; U; Android 4.1.1; en-us) AppleWebKit/534.35 (KHTML, like Gecko)  Chrome/11.0.696.65 Safari/534.35 Puffin/2.9909AT Mobile'
-    family: 'Puffin'
-    major: '2'
-    minor: '9909'
-    patch:
-    patch_minor:
-
-  - user_agent_string: 'Mozilla/5.0 (Linux; U; Android 4.2.2; de-de) AppleWebKit/534.35 (KHTML, like Gecko)  Chrome/11.0.696.65 Safari/534.35 Puffin/3.11558AT Mobile'
-    family: 'Puffin'
-    major: '3'
-    minor: '11558'
-    patch:
-    patch_minor:
-
-  - user_agent_string: 'Mozilla/5.0 (Linux; U; Android 4.2.2; en-us) AppleWebKit/534.35 (KHTML, like Gecko)  Chrome/11.0.696.65 Safari/534.35 Puffin/3.11558AP Mobile'
-    family: 'Puffin'
-    major: '3'
-    minor: '11558'
-    patch:
-    patch_minor:
-
-  - user_agent_string: 'Mozilla/5.0 (X11; U; Linux i686; th-TH@calendar=gregorian) AppleWebKit/534.12 (KHTML, like Gecko) Puffin/1.3.2665MS Safari/534.12'
-    family: 'Puffin'
-    major: '1'
-    minor: '3'
-    patch: '2665'
-    patch_minor:
-
-  - user_agent_string: 'Mozilla/5.0 (X11; U; Linux x86_64; ar-AE) AppleWebKit/534.35 (KHTML, like Gecko)  Chrome/11.0.696.65 Safari/534.35 Puffin/3.10990IT'
-    family: 'Puffin'
-    major: '3'
-    minor: '10990'
-    patch:
-    patch_minor:
-
-  - user_agent_string: 'Mozilla/5.0 (X11; U; Linux x86_64; ar-SA) AppleWebKit/534.35 (KHTML, like Gecko)  Chrome/11.0.696.65 Safari/534.35 Puffin/3.11546IP'
-    family: 'Puffin'
-    major: '3'
-    minor: '11546'
-    patch:
-    patch_minor:
-
-  - user_agent_string: 'Mozilla/5.0 (X11; U; Linux x86_64; ar-ae) AppleWebKit/534.35 (KHTML, like Gecko)  Chrome/11.0.696.65 Safari/534.35 Puffin/2.10977AP'
-    family: 'Puffin'
-    major: '2'
-    minor: '10977'
-    patch:
-    patch_minor:
-
-  - user_agent_string: 'Mozilla/5.0 (X11; U; Linux x86_64; de-at) AppleWebKit/534.35 (KHTML, like Gecko)  Chrome/11.0.696.65 Safari/534.35 Puffin/2.10977AT'
-    family: 'Puffin'
-    major: '2'
-    minor: '10977'
-    patch:
-    patch_minor:
-
-  - user_agent_string: 'Mozilla/5.0 (iPad; U; CPU OS 7_0_6 like Mac OS X; de-DE) AppleWebKit/534.35 (KHTML, like Gecko)  Chrome/11.0.696.65 Safari/534.35 Puffin/3.11558IT Mobile'
-    family: 'Puffin'
-    major: '3'
-    minor: '11558'
-    patch:
-    patch_minor:
-
-  - user_agent_string: 'Mozilla/5.0 (iPhone; U; CPU iPhone OS 7_0_6 like Mac OS X; de-DE) AppleWebKit/534.35 (KHTML, like Gecko)  Chrome/11.0.696.65 Safari/534.35 Puffin/3.11558IP Mobile'
-    family: 'Puffin'
-    major: '3'
-    minor: '11558'
-    patch:
-    patch_minor:
-
-  - user_agent_string: 'Mozilla/5.0 (iPod; U; CPU iPhone OS 4_3_5 like Mac OS X; en-US) AppleWebKit/534.12 (KHTML, like Gecko) Puffin/1.3.3102MS Mobile Safari/534.12'
-    family: 'Puffin'
-    major: '1'
-    minor: '3'
-    patch: '3102'
-    patch_minor:
-
-  - user_agent_string: 'Mozilla/5.0 (iPod; U; CPU iPhone OS 5_1_1 like Mac OS X; de-DE) AppleWebKit/534.35 (KHTML, like Gecko)  Chrome/11.0.696.65 Safari/534.35 Puffin/3.9174IP Mobile'
-    family: 'Puffin'
-    major: '3'
-    minor: '9174'
-    patch:
-    patch_minor:
-
-  - user_agent_string: 'MacAppStore/2.0 (Macintosh; OS X 10.10.2; 14C81f) AppleWebKit/0600.3.10.2'
-    family: 'MacAppStore'
-    major: '2'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'iTunes/12.0.1 (Macintosh; OS X 10.9.2) AppleWebKit/537.74.9'
-    family: 'iTunes'
-    major: '12'
-    minor: '0'
-    patch: '1'
-
-  - user_agent_string: 'Ant/Ant-Nutch-1.1 (Ant Nutch Crawler; http://www.ant.com; crawler@ant.com)'
-    family: 'Ant-Nutch'
-    major: '1'
-    minor: '1'
-    patch:
-
-  - user_agent_string: 'Axtaris Web Crawler/Axtaris-1.0.1 (Hello from Axtaris.org | Web-Crawler; http://axtaris.org; crawler at axtaris dot org)'
-    family: 'Axtaris'
-    major: '1'
-    minor: '0'
-    patch: '1'
-
-  - user_agent_string: 'CazoodleBot/CazoodleBot-0.1 (CazoodleBot Crawler; http://www.cazoodle.com/cazoodlebot; cazoodlebot@cazoodle.com)'
-    family: 'CazoodleBot'
-    major: '0'
-    minor: '1'
-    patch:
-
-  - user_agent_string: 'Isara-Search/Isara-1.0 (A non-profit web crawler operated by a charity organization.; www.isara.org; webmaster@isara.org)'
-    family: 'Isara'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'noobot Spider/Noobot-1.2 (noobot-bot; http://www.noobot.fr)'
-    family: 'Noobot'
-    major: '1'
-    minor: '2'
-    patch:
-
-  - user_agent_string: 'asked/Nutch-0.8 (web crawler; http://asked.jp; epicurus at gmail dot com)'
-    family: 'Nutch'
-    major: '0'
-    minor: '8'
-    patch:
-
-  - user_agent_string: 'nutch crawler/Nutch-2.2'
-    family: 'Nutch'
-    major: '2'
-    minor: '2'
-    patch:
-
-  - user_agent_string: 'Spider/Nutch-2.3-SNAPSHOT (Webcrawler)'
-    family: 'Nutch'
-    major: '2'
-    minor: '3'
-    patch:
-
-  - user_agent_string: 'SheenBot/SheenBot-1.0.4 (Sheen web crawler)'
-    family: 'SheenBot'
-    major: '1'
-    minor: '0'
-    patch: '4'
-
-  - user_agent_string: 'SaladSpoon/ShopSalad 1.0 (Search Engine crawler for ShopSalad.com; http://shopsalad.com/en/partners.html; crawler AT shopsalad.com)'
-    family: 'ShopSalad'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'TailsweepBlogCrawler/Tailsweep-2.9-SNAPSHOT (http://www.tailsweep.com/; bot at [tailsweep] dot com)'
-    family: 'Tailsweep'
-    major: '2'
-    minor: '9'
-    patch:
-
-  - user_agent_string: 'SAE/fetchurl-22wy0njxnm WordPress/3.2.1; http://1.webfront.sinaapp.com'
-    family: 'fetchurl'
-    major: '22'
-    minor:
-    patch:
-
-  - user_agent_string: 'RedBot/redbot-1.0 (Rediff.com Crawler; redbot at rediff dot com)'
-    family: 'redbot'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'IS Alpha/zcspider-0.1'
-    family: 'zcspider'
-    major: '0'
-    minor: '1'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; 008/0.85; http://www.80legs.com/webcrawler.html) Gecko/2008032620'
-    family: '008'
-    major: '0'
-    minor: '85'
-    patch:
-
-  - user_agent_string: 'Altresium/4.6 (+http://www.altresium.com/bot.html)'
-    family: 'Altresium'
-    major: '4'
-    minor: '6'
-    patch:
-
-  - user_agent_string: 'Argus/1.1 (Nutch; http://www.simpy.com/bot.html; feedback at simpy dot com)'
-    family: 'Argus'
-    major: '1'
-    minor: '1'
-    patch:
-
-  - user_agent_string: 'Argus/2.8.65 CFNetwork/609 Darwin/13.0.0'
-    family: 'CFNetwork'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'DoCoMo/2.0 P05A(c100;TB;W24H15) (compatible; BaiduMobaider/1.0;  http://www.baidu.jp/spider/)'
-    family: 'BaiduMobaider'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'BoardReader/1.0 (http://boardreader.com/info/robots.htm)-Machine1'
-    family: 'BoardReader'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'DNSGroup/0.1 (DNS Group Crawler; http://www.dnsgroup.com/; crawler@dnsgroup.com)'
-    family: 'DNSGroup'
-    major: '0'
-    minor: '1'
-    patch:
-
-  - user_agent_string: 'DataparkSearch/4.35-02122005 ( http://www.dataparksearch.org/)'
-    family: 'DataparkSearch'
-    major: '4'
-    minor: '35'
-    patch:
-
-  - user_agent_string: 'EDI/1.6.0 (Edacious & Intelligent Web Crawler)'
-    family: 'EDI'
-    major: '1'
-    minor: '6'
-    patch: '0'
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; Goodzer/2.0; crawler@goodzer.com)'
-    family: 'Goodzer'
-    major: '2'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Grub/2.0 (Grub.org crawler; http://www.grub.org/; bot@grub.org)'
-    family: 'Grub'
-    major: '2'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'INGRID/2.0 (http://spsearch.ilse.nl/; Startpagina dochter links spider)'
-    family: 'INGRID'
-    major: '2'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'INGRID/3.0 MT (webcrawler@NOSPAMexperimental.net; http://aanmelden.ilse.nl/?aanmeld_mode=webhints)'
-    family: 'INGRID'
-    major: '3'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; Infohelfer/1.2.0; +http://www.infohelfer.de/crawler.php)'
-    family: 'Infohelfer'
-    major: '1'
-    minor: '2'
-    patch: '0'
-
-  - user_agent_string: 'LOOQ/0.1 alfa (LOOQ Crawler for european sites; http://looq.eu; root (at) looq dot eu)'
-    family: 'LOOQ'
-    major: '0'
-    minor: '1'
-    patch:
-
-  - user_agent_string: 'LinkedInBot/1.0 (compatible; Mozilla/5.0; Jakarta Commons-HttpClient/3.1  http://www.linkedin.com)'
-    family: 'LinkedInBot'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; PathDefender/1.0; +http://www.pathdefender.com/help/crawler)'
-    family: 'PathDefender'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; Peew/1.0; http://www.peew.de/crawler/)'
-    family: 'Peew'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'PostPost/1.0 ( http://postpo.st/crawlers)'
-    family: 'PostPost'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Steeler/1.3 (http://www.tkl.iis.u-tokyo.ac.jp/~crawler/)'
-    family: 'Steeler'
-    major: '1'
-    minor: '3'
-    patch:
-
-  - user_agent_string: 'Steeler/3.3 (http://www.tkl.iis.u-tokyo.ac.jp/~crawler/)'
-    family: 'Steeler'
-    major: '3'
-    minor: '3'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; Steeler/3.5; http://www.tkl.iis.u-tokyo.ac.jp/~crawler/)'
-    family: 'Steeler'
-    major: '3'
-    minor: '5'
-    patch:
-
-  - user_agent_string: 'VSE/1.0 (testcrawler@hotmail.com)'
-    family: 'VSE'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'VSE/1.0 (vsecrawler@hotmail.com)'
-    family: 'VSE'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; WebCrunch/1.2; +http://webcrunch.net/crawler)'
-    family: 'WebCrunch'
-    major: '1'
-    minor: '2'
-    patch:
-
-  - user_agent_string: 'WebZIP/7.0 (http://www.spidersoft.com)'
-    family: 'WebZIP'
-    major: '7'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Y!J-BRI/0.0.1 crawler ( http://help.yahoo.co.jp/help/jp/search/indexing/indexing-15.html )'
-    family: 'Y!J-BRI'
-    major: '0'
-    minor: '0'
-    patch: '1'
-
-  - user_agent_string: 'Y!J-BRW/1.0 crawler (http://help.yahoo.co.jp/help/jp/search/indexing/indexing-15.html)'
-    family: 'Y!J-BRW'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'YahooSeeker/1.0 (compatible; Mozilla 4.0; MSIE 5.5; http://help.yahoo.com/help/us/shop/merchant/)'
-    family: 'YahooSeeker'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'envolk/1.7 ( http://www.envolk.com/envolkspider.html)'
-    family: 'envolk'
-    major: '1'
-    minor: '7'
-    patch:
-
-  - user_agent_string: 'sproose/1.0beta (sproose bot; http://www.sproose.com/bot.html; crawler@sproose.com)'
-    family: 'sproose'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'wminer/1.2 (North America Web Crawler; http://www.wminer.com/bot; info at wminer dot com)'
-    family: 'wminer'
-    major: '1'
-    minor: '2'
-    patch:
-
-  - user_agent_string: 'Mozilla/4.0 (compatible; MSIE 4.0; MSIECrawler; Windows 95)'
-    family: 'MSIECrawler'
-    major: '4'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Mozilla/4.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/4.0; FDM; MSIECrawler; Media Center PC 5.0)'
-    family: 'MSIECrawler'
-    major: '9'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Apache-HttpClient/4.0-beta2 (java 1.5)'
-    family: 'Apache-HttpClient'
-    major: '4'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (Linux; U; Android 2.1-update1; de-de; E10i Build/2.1.1.C.0.0) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17 Google-HTTP-Java-Client/1.10.3-beta (gzip)'
-    family: 'Google-HTTP-Java-Client'
-    major: '1'
-    minor: '10'
-    patch: '3'
-
-  - user_agent_string: 'Google-HTTP-Java-Client/1.13.1-beta (gzip)'
-    family: 'Google-HTTP-Java-Client'
-    major: '1'
-    minor: '13'
-    patch: '1'
-
-  - user_agent_string: 'Google-YouTubeSample/1.0 Google-HTTP-Java-Client/1.7.0-beta (gzip) Google-HTTP-Java-Client/1.7.0-beta (gzip)'
-    family: 'Google-HTTP-Java-Client'
-    major: '1'
-    minor: '7'
-    patch: '0'
-
-  - user_agent_string: 'JNLP/1.7.0 javaws/10.17.2.02 (<internal>) Java/1.7.0_17'
-    family: 'JNLP'
-    major: '1'
-    minor: '7'
-    patch: '0'
-
-  - user_agent_string: 'JNLP/6.0 javaws/1.6.0_14 (b08) Java/1.6.0_14'
-    family: 'JNLP'
-    major: '6'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (Python-urllib2)'
-    family: 'Python-urllib'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Python-urllib/1.15'
-    family: 'Python-urllib'
-    major: '1'
-    minor: '15'
-    patch:
-
-  - user_agent_string: 'IMVU Client/498.0 Python-urllib/2.7'
-    family: 'Python-urllib'
-    major: '2'
-    minor: '7'
-    patch:
-
-  - user_agent_string: 'Python-urllib/3.4'
-    family: 'Python-urllib'
-    major: '3'
-    minor: '4'
-    patch:
-
-  - user_agent_string: 'TLSProber/0.8'
-    family: 'TLSProber'
-    major: '0'
-    minor: '8'
-    patch:
-
-  - user_agent_string: 'Asynchronous WinHTTP/1.0'
-    family: 'WinHTTP'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: '1470.net crawler'
-    family: '1470.net crawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: '50.nu/0.01 (  http://50.nu/bot.html )'
-    family: '50.nu'
-    major: '0'
-    minor: '01'
-    patch:
-
-  - user_agent_string: '8bo Crawler Bot'
-    family: '8bo Crawler Bot'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Aboundex/0.2 (http://www.aboundex.com/crawler/)'
-    family: 'Aboundex'
-    major: '0'
-    minor: '2'
-    patch:
-
-  - user_agent_string: 'Accoona-AI-Agent/1.1.1 (crawler at accoona dot com)'
-    family: 'Accoona-AI-Agent'
-    major: '1'
-    minor: '1'
-    patch: '1'
-
-  - user_agent_string: 'Accoona-Biz-Agent/1.1.1 crawler@accoona.com'
-    family: 'Accoona-Biz-Agent'
-    major: '1'
-    minor: '1'
-    patch: '1'
-
-  - user_agent_string: 'AdsBot-Google'
-    family: 'AdsBot-Google'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'AppEngine-Google; ( http://code.google.com/appengine)'
-    family: 'AppEngine-Google'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Inne: Mozilla/2.0 (compatible; Ask Jeeves/Teoma;  http://sp.ask.com/docs/about/tech_crawling.html)'
-    family: 'Ask Jeeves'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'BaiDuSpider'
-    family: 'BaiDuSpider'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Baiduspider'
-    family: 'Baiduspider'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: "'Mozilla/5.0 (compatible; Baiduspider/2.0; +ht'"
-    family: 'Baiduspider'
-    major: '2'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; Baiduspider-cpro; +http://www.baidu.com/search/spider.html)'
-    family: 'Baiduspider-cpro'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Baiduspider-image ( http://www.baidu.com/search/spider.htm)'
-    family: 'Baiduspider-image'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Baiduspider-testbranch'
-    family: 'Baiduspider-testbranch'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534  (KHTML, like Gecko) BingPreview/1.0b'
-    family: 'BingPreview'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'BlogBridge 6.7 (http://www.blogbridge.com/) 1.6.0_18'
-    family: 'BlogBridge'
-    major: '6'
-    minor: '7'
-    patch:
-
-  - user_agent_string: 'BoardReader Blog Indexer(http://boardreader.com)'
-    family: 'BoardReader Blog Indexer'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'BoardReader Favicon Fetcher /1.0 info@boardreader.com'
-    family: 'BoardReader Favicon Fetcher'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla 4.0(compatible; BotSeer/1.0;  http://botseer.ist.psu.edu)'
-    family: 'BotSeer'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'CRAWL-E/0.6.4'
-    family: 'CRAWL-E'
-    major: '0'
-    minor: '6'
-    patch: '4'
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; Charlotte/1.0b; charlotte@beta.spider.com)'
-    family: 'Charlotte'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Checklinks/1.3 (pywikipedia robot; http://toolserver.org/~dispenser/view/Checklinks)'
-    family: 'Checklinks'
-    major: '1'
-    minor: '3'
-    patch:
-
-  - user_agent_string: 'Comodo HTTP(S) Crawler - http://www.instantssl.com/crawler'
-    family: 'Comodo HTTP(S) Crawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Comodo-Webinspector-Crawler 2.1'
-    family: 'Comodo-Webinspector-Crawler'
-    major: '2'
-    minor: '1'
-    patch:
-
-  - user_agent_string: 'Comodo-Webinspector-Crawler 2.2.2, http://www.comodorobot.com'
-    family: 'Comodo-Webinspector-Crawler'
-    major: '2'
-    minor: '2'
-    patch: '2'
-
-  - user_agent_string: 'ConveraCrawler/0.9c ( http://www.authoritativeweb.com/crawl)'
-    family: 'ConveraCrawler'
-    major: '0'
-    minor: '9'
-    patch:
-
-  - user_agent_string: 'CrawlConvera0.1 (CrawlConvera@yahoo.com)'
-    family: 'CrawlConvera'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; MSIE or Firefox mutant; not on Windows server; + http://tab.search.daum.net/aboutWebSearch.html) Daumoa/3.0'
-    family: 'Daumoa'
-    major: '3'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; Firefox compatible; MS IE compatible;  http://search.daum.net/) Daumoa-feedfetcher/2.0'
-    family: 'Daumoa-feedfetcher'
-    major: '2'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Feed Seeker Bot (RSS Feed Seeker http://www.MyNewFavoriteThing.com/fsb.php)'
-    family: 'Feed Seeker Bot'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Flamingo_SearchEngine (+http://www.flamingosearch.com/bot)'
-    family: 'Flamingo_SearchEngine'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'FollowSite Bot ( http://www.followsite.com/bot.html )'
-    family: 'FollowSite Bot'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; Genieo/1.0 http://www.genieo.com/webfilter.html'
-    family: 'Genieo'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Mozilla/4.0 (compatible;  MSIE 5.01; GomezAgent 2.0; Windows NT)'
-    family: 'GomezAgent'
-    major: '2'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Googlebot v2.1 (+http://www.google.com/bot.html) (http://www.openwebspider.org/)'
-    family: 'Googlebot'
-    major: '2'
-    minor: '1'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; Googlebot/2.1;  http://www.google.com/bot.html)'
-    family: 'Googlebot'
-    major: '2'
-    minor: '1'
-    patch:
-
-  - user_agent_string: 'Googlebot/2.2'
-    family: 'Googlebot'
-    major: '2'
-    minor: '2'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (Windows; Mozilla 4.0(compatible; Googlebot/5.0;  http://www.google.com/googlebot); en-US;)'
-    family: 'Googlebot'
-    major: '5'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Googlebot-Image/1.0'
-    family: 'Googlebot-Image'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Googlebot-Mobile (compatible; Googlebot-Mobile/2.1; +http://www.google.com/bot.html)'
-    family: 'Googlebot-Mobile'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'DoCoMo//2.0 N905i(c100;TB;W24H16) (compatible; Googlebot-Mobile/2.1; +http://www.google.com/bot.html)'
-    family: 'Googlebot-Mobile'
-    major: '2'
-    minor: '1'
-    patch:
-
-  - user_agent_string: 'Googlebot-News'
-    family: 'Googlebot-News'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Googlebot-Video/1.0'
-    family: 'Googlebot-Video'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Googlebot-richsnippets'
-    family: 'Googlebot-richsnippets'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Google Web Preview'
-    family: 'Other'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko; Google Web Preview) Chrome/27.0 .1453 Safari/537.36.'
-    family: 'Chrome'
-    major: '27'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'HiddenMarket-1.0-beta (www.hiddenmarket.net/crawler.php)'
-    family: 'HiddenMarket'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'HooWWWer/2.1.0 ( http://cosco.hiit.fi/search/hoowwwer/ | mailto:crawler-info<at>hiit.fi)'
-    family: 'HooWWWer'
-    major: '2'
-    minor: '1'
-    patch: '0'
-
-  - user_agent_string: 'ICC-Crawler(Mozilla-compatible; http://kc.nict.go.jp/icc/crawl.html; icc-crawl(at)ml(dot)nict(dot)go(dot)jp)'
-    family: 'ICC-Crawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'ICC-Crawler/2.0 (Mozilla-compatible; ; http://kc.nict.go.jp/project1/crawl.html)'
-    family: 'ICC-Crawler'
-    major: '2'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'IconSurf/2.0 favicon finder (see http://iconsurf.com/robot.html)'
-    family: 'IconSurf'
-    major: '2'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'IlTrovatore/1.2 (IlTrovatore; http://www.iltrovatore.it/bot.html; bot@iltrovatore.it)'
-    family: 'IlTrovatore'
-    major: '1'
-    minor: '2'
-    patch:
-
-  - user_agent_string: 'IlTrovatore-Setaccio ( http://www.iltrovatore.it)'
-    family: 'IlTrovatore-Setaccio'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; InfuzApp/1.0; +http://www.infuz.com/bot.html)'
-    family: 'InfuzApp'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'InternetArchive-1.0'
-    family: 'InternetArchive'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'InternetArchive/0.8-dev (Nutch; http://lucene.apache.org/nutch/bot.html; nutch-agent@lucene.apache.org)'
-    family: 'InternetArchive'
-    major: '0'
-    minor: '8'
-    patch:
-
-  - user_agent_string: 'KDDI-CA34 UP.Browser/6.2.0.10.2.2(GUI)MMP/2.0 (compatible; KDDI-Googlebot-Mobile/2.1; http://www.google.com/bot.html)'
-    family: 'KDDI-Googlebot-Mobile'
-    major: '2'
-    minor: '1'
-    patch:
-
-  - user_agent_string: 'kalooga/KaloogaBot (Kalooga; http://www.kalooga.com/info.html?page=crawler)'
-    family: 'KaloogaBot'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; Kraken/0.1; http://linkfluence.net/; bot@linkfluence.net)'
-    family: 'Kraken'
-    major: '0'
-    minor: '1'
-    patch:
-
-  - user_agent_string: 'Kurzor/1.0 (Kurzor; http://adcenter.hu/docs/en/bot.html; cursor@easymail.hu)'
-    family: 'Kurzor'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'LEIA/3.01pr (LEIAcrawler; leia@gseek.com; http://www.gseek.com)'
-    family: 'LEIA'
-    major: '3'
-    minor: '01'
-    patch:
-
-  - user_agent_string: 'Mozilla/4.0 (compatible; MSIE 6.0; Windows compatible LesnikBot)'
-    family: 'LesnikBot'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Linguee Bot (bot@linguee.com)'
-    family: 'Linguee Bot'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'LinkAider (http://linkaider.com/crawler/)'
-    family: 'LinkAider'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Lite Bot0316B'
-    family: 'Lite Bot'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Llaut/1.0 (http://mnm.uib.es/~gallir/llaut/bot.html)'
-    family: 'Llaut'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; Linux x86_64; Mail.RU_Bot/Fast/2.0; +http://go.mail.ru/help/robots)'
-    family: 'Mail.RU_Bot'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; Linux x86_64; Mail.RU_Bot/2.0; +http://go.mail.ru/help/robots)'
-    family: 'Mail.RU_Bot'
-    major: '2'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Mediapartners-Google'
-    family: 'Mediapartners-Google'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'DoCoMo/2.0 SH905i(c100;TB;W24H16) (compatible; Mediapartners-Google/2.1; +http://www.google.com/bot.html)'
-    family: 'Mediapartners-Google'
-    major: '2'
-    minor: '1'
-    patch:
-
-  - user_agent_string: 'Microsoft Bing Mobile SocialStreams Bot'
-    family: 'Microsoft Bing Mobile SocialStreams Bot'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Microsoft MSN SocialStreams Bot,gzip(gfe),gzip(gfe)'
-    family: 'Microsoft MSN SocialStreams Bot'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'NING/1.0'
-    family: 'NING'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Netvibes (http://www.netvibes.com)'
-    family: 'Netvibes'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'NewsGator/2.0 Bot (http://www.newsgator.com)'
-    family: 'NewsGator'
-    major: '2'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'NewsGator/3.0,gzip(gfe),gzip(gfe)'
-    family: 'NewsGator'
-    major: '3'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'NewsGator FetchLinks extension/0.2.0 (http://graemef.com)'
-    family: 'NewsGator FetchLinks extension'
-    major: '0'
-    minor: '2'
-    patch: '0'
-
-  - user_agent_string: 'NewsGatorOnline/2.0 (http://www.newsgator.com)'
-    family: 'NewsGatorOnline'
-    major: '2'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'SapphireWebCrawler/1.0 (Sapphire Web Crawler using Nutch; http://boston.lti.cs.cmu.edu/crawler/; mhoy@cs.cmu.edu)'
-    family: 'Nutch; http:'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'NutchCVS/0.06-dev (Nutch running at UW; http://www.nutch.org/docs/en/bot.html; sycrawl@cs.washington.edu)'
-    family: 'NutchCVS'
-    major: '0'
-    minor: '06'
-    patch:
-
-  - user_agent_string: 'NutchOSUOSL/0.05-dev (Nutch; http://www.nutch.org/docs/en/bot.html; nutch-agent@lists.sourceforge.net)'
-    family: 'NutchOSUOSL'
-    major: '0'
-    minor: '05'
-    patch:
-
-  - user_agent_string: 'NutchOrg/0.03-dev (Nutch; http://www.nutch.org/docs/bot.html; nutch-agent@lists.sourceforge.net)'
-    family: 'NutchOrg'
-    major: '0'
-    minor: '03'
-    patch:
-
-  - user_agent_string: 'ObjectsSearch/0.2 (ObjectsSearch; http://www.ObjectsSearch.com/bot.html; support@thesoftwareobjects.com)'
-    family: 'ObjectsSearch'
-    major: '0'
-    minor: '2'
-    patch:
-
-  - user_agent_string: 'Orbiter ( http://www.dailyorbit.com/bot.htm)'
-    family: 'Orbiter'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'PagePeeker.com'
-    family: 'PagePeeker'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'PagesInventory (robot +http://www.pagesinventory.com)'
-    family: 'PagesInventory'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; PaxleFramework/0.1.1;  http://www.paxle.net/en/bot)'
-    family: 'PaxleFramework'
-    major: '0'
-    minor: '1'
-    patch: '1'
-
-  - user_agent_string: 'Peeplo Screenshot Bot/0.20 ( abuse at peeplo dot_com )'
-    family: 'Peeplo Screenshot Bot'
-    major: '0'
-    minor: '20'
-    patch:
-
-  - user_agent_string: 'PlantyNet_WebRobot_V1.9 babo@plantynet.com'
-    family: 'PlantyNet_WebRobot'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Pompos/1.2 http://pompos.iliad.fr'
-    family: 'Pompos'
-    major: '1'
-    minor: '2'
-    patch:
-
-  - user_agent_string: 'Reaper/1.3.6 (Linux; U; Android 4.3; de-DE; GT-I9300 Build/JSS15J)'
-    family: 'Reaper'
-    major: '1'
-    minor: '3'
-    patch: '6'
-
-  - user_agent_string: 'Reaper/2.07 ( http://www.sitesearch.ca/reaper)'
-    family: 'Reaper'
-    major: '2'
-    minor: '07'
-    patch:
-
-  - user_agent_string: 'RedCarpet/1.0 (http://www.redcarpet-inc.com/robots.html)'
-    family: 'RedCarpet'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'RedCarpet/2.1 CFNetwork/672.0.2 Darwin/14.0.0'
-    family: 'CFNetwork'
-    major: '672'
-    minor: '0'
-    patch: '2'
-
-  - user_agent_string: 'Riddler (http://riddler.io/about.html)'
-    family: 'Riddler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Scrapy/0.16.4 (+http://scrapy.org)'
-    family: 'Scrapy'
-    major: '0'
-    minor: '16'
-    patch: '4'
-
-  - user_agent_string: 'Scrapy/0.22.2 (+http://scrapy.org)'
-    family: 'Scrapy'
-    major: '0'
-    minor: '22'
-    patch: '2'
-
-  - user_agent_string: 'Simpy/1.1 (Simpy; http://www.simpy.com/?ref=bot; feedback at simpy dot com)'
-    family: 'Simpy'
-    major: '1'
-    minor: '1'
-    patch:
-
-  - user_agent_string: 'Mozilla/3.0 (Slurp.so/1.0; slurp@inktomi.com; http://www.inktomi.com/slurp.html)'
-    family: 'Slurp'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Slurp/2.0'
-    family: 'Slurp'
-    major: '2'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; Yahoo!; U; Slurp/3.0; http://help.yahoo.com/help/us/ysearch/slurp) Mozilla/5.0 ()'
-    family: 'Slurp'
-    major: '3'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; Speedy Spider; http://www.entireweb.com/about/search_tech/speedy_spider/)'
-    family: 'Speedy Spider'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Squrl Java/1.6.0_22'
-    family: 'Squrl Java'
-    major: '1'
-    minor: '6'
-    patch: '0'
-
-  - user_agent_string: 'TheUsefulbot_2.3.62 (bot@theusefulnet.com)'
-    family: 'TheUsefulbot'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (X11; U; Linux x86_64; de-DE; rv:1.9.0.19) Gecko/2010091808 ThumbShotsBot (KFSW 3.0.6-3)'
-    family: 'ThumbShotsBot'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; Thumbshots.ru; +http://thumbshots.ru/bot) Firefox/3'
-    family: 'Thumbshots.ru'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; Vagabondo/Wapspider; webcrawler at wise-guys dot nl; http://webagent.wise-guys.nl/)'
-    family: 'Vagabondo'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; Vagabondo/2.1; webcrawler at wise-guys dot nl; http://webagent.wise-guys.nl/)'
-    family: 'Vagabondo'
-    major: '2'
-    minor: '1'
-    patch:
-
-  - user_agent_string: 'Mozilla/4.0 (compatible;  Vagabondo/2.2; webcrawler at wise-guys dot nl; http://webagent.wise-guys.nl/)'
-    family: 'Vagabondo'
-    major: '2'
-    minor: '2'
-    patch:
-
-  - user_agent_string: 'Mozilla/4.0 (compatible;  Vagabondo/2.3; webcrawler at wise-guys dot nl; http://webagent.wise-guys.nl/)'
-    family: 'Vagabondo'
-    major: '2'
-    minor: '3'
-    patch:
-
-  - user_agent_string: 'Mozilla/4.0 (compatible;  Vagabondo/4.0Beta; webcrawler at wise-guys dot nl; http://webagent.wise-guys.nl/)'
-    family: 'Vagabondo'
-    major: '4'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Mozilla/4.0 (compatible; MSIE 5.0; Windows 95) VoilaBot BETA 1.2 (http://www.voila.com/)'
-    family: 'VoilaBot'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (Votay bot/4.0;  http://www.votay.com/arts/comics/)'
-    family: 'Votay bot'
-    major: '4'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; WASALive Bot ; http://blog.wasalive.com/wasalive-bots/)'
-    family: 'WASALive Bot'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (iPad; U; CPU iPhone OS 7_0 like Mac OS X; de-DE) WIRED/3.2.3.11.87970'
-    family: 'WIRE'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'WIRE/0.11 (Linux; i686; Robot,Spider,Crawler,aromano@cli.di.unipi.it)'
-    family: 'WIRE'
-    major: '0'
-    minor: '11'
-    patch:
-
-  - user_agent_string: 'WIRE/1.0 (Linux;i686;Bot,Robot,Spider,Crawler)'
-    family: 'WIRE'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (Windows; Windows NT 6.1; WOW64; rv:2.0b8pre; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; MS-RTC LM 8; OfficeLiveConnector.1.4; OfficeLivePatch.1.3; SLCC1; SLCC2; Media Center PC 6.0; GTB6.4; InfoPath.2; en-US; FunWebProducts; Zango 10.1.181.0; SV1; PRTG Network Monitor (www.paessler.com)) Gecko/20101114 Firefox/4.0b8pre QuickTime/7.6.2 Songbird/1.1.2 Web-sniffer/1.0.36 lftp/3.7.4 libwww-perl/5.820 GSiteCrawler/v1.12 rev. 260 Snoopy v1.2'
-    family: 'Web-sniffer'
-    major: '1'
-    minor: '0'
-    patch: '36'
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; WebThumbnail/2.2; Website Thumbnail Generator; +http://webthumbnail.org)'
-    family: 'WebThumb'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.9.0.17) Gecko WebThumb/1.0'
-    family: 'WebThumb'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'WhatWeb/0.4.8'
-    family: 'WhatWeb'
-    major: '0'
-    minor: '4'
-    patch: '8'
-
-  - user_agent_string: 'Jetpack by WordPress.com'
-    family: 'WordPress'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'WordPress/1.2.1 PHP/4.3.9-1'
-    family: 'WordPress'
-    major: '1'
-    minor: '2'
-    patch: '1'
-
-  - user_agent_string: 'Pachacutec/0.5 (qpImageBuilders.com); WordPress/3.1; http://contacto-latino.com/news'
-    family: 'WordPress'
-    major: '3'
-    minor: '1'
-    patch:
-
-  - user_agent_string: 'Wotbox/0.7-alpha (bot@wotbox.com; http://www.wotbox.com)'
-    family: 'Wotbox'
-    major: '0'
-    minor: '7'
-    patch:
-
-  - user_agent_string: 'Wotbox/2.01 ( http://www.wotbox.com/bot/)'
-    family: 'Wotbox'
-    major: '2'
-    minor: '01'
-    patch:
-
-  - user_agent_string: 'Xenu Link Sleuth 1.1f'
-    family: 'Xenu Link Sleuth'
-    major: '1'
-    minor: '1'
-    patch:
-
-  - user_agent_string: "Xenu's Link Sleuth 1.0p"
-    family: "Xenu's Link Sleuth"
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Xerka WebBot v1.0.0 [AIDO_CREA_ab]'
-    family: 'Xerka WebBot'
-    major: '1'
-    minor: '0'
-    patch: '0'
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; Yahoo! Slurp China; http://misc.yahoo.com.cn/help.html)'
-    family: 'Yahoo! Slurp'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; Yahoo! Slurp/3.0 ; http://help.yahoo.com/help/us/ysearch/slurp)'
-    family: 'Yahoo! Slurp'
-    major: '3'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'LG-C1500 UP.Browser/6.2.3 (GUI) MMP/1.0 (compatible;YahooSeeker/M1A1-R2D2; http://help.yahoo.com/help/us/ysearch/crawling/crawling-01.html)'
-    family: 'YahooSeeker'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots),gzip(gfe) AppEngine-Google; (+http://code.google.com/appengine; appid: twitter-mirror),gzip(gfe),gzip(gfe),gzip(gfe)'
-    family: 'YandexBot'
-    major: '3'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Yeti-FeedItemCrawler/1.0 (NHN Corp.;+http://help.naver.com/robots/)'
-    family: 'Yeti'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; YodaoBot/1.0; http://www.yodao.com/help/webmaster/spider/; )'
-    family: 'YodaoBot'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible;YodaoBot-Image/1.0;http://www.youdao.com/help/webmaster/spider/;)'
-    family: 'YodaoBot-Image'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'YowedoBot/Yowedo 1.0 (Search Engine crawler for yowedo.com; http://yowedo.com/en/partners.html; crawler@yowedo.com)'
-    family: 'Yowedo'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Zao-Crawler'
-    family: 'Zao'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'ZeBot_www.ze.bz (ze.bz@hotmail.com)'
-    family: 'ZeBot_www.ze.bz'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'ZooShot 0.42'
-    family: 'ZooShot'
-    major: '0'
-    minor: '42'
-    patch:
-
-  - user_agent_string: 'Mozilla/4.0 (compatible; MSIE; ZyBorg; Win32)'
-    family: 'ZyBorg'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/4.0 compatible ZyBorg/1.0 (ZyBorg@WISEnutbot.com; http://www.WISEnutbot.com)'
-    family: 'ZyBorg'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'AltaVista Intranet V2.0 Compaq Altavista Eval sveand@altavista.net'
-    family: 'altavista'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; archive.bibalex.org_bot; +http://www.test.com)'
-    family: 'archive.bibalex.org_bot'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; archive.org_bot/heritrix-1.15.1-x  http://pandora.nla.gov.au/crawl.html)'
-    family: 'archive.org_bot'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; special_archiver/3.2.0 +http://www.loc.gov/webarchiving/notice_to_webmasters.html)'
-    family: 'archiver'
-    major: '3'
-    minor: '2'
-    patch: '0'
-
-  - user_agent_string: 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50215; baiduspider)'
-    family: 'baiduspider'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'baiduspider-mobile-gate'
-    family: 'baiduspider-mobile-gate'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'bingbot'
-    family: 'bingbot'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; bingbot/2.0  http://www.bing.com/bingbot.htm)'
-    family: 'bingbot'
-    major: '2'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'boitho.com-dc/0.4 ( http://www.boitho.com/dcbot.html )'
-    family: 'boitho.com-dc'
-    major: '0'
-    minor: '4'
-    patch:
-
-  - user_agent_string: 'boitho.com-dc/0.86 ( http://www.boitho.com/dcbot.html )'
-    family: 'boitho.com-dc'
-    major: '0'
-    minor: '86'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; clumboot; +http://localhost/clumpit/bot.php)'
-    family: 'clumboot'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'findlinks/2.6 ( http://wortschatz.uni-leipzig.de/findlinks/)'
-    family: 'findlinks'
-    major: '2'
-    minor: '6'
-    patch:
-
-  - user_agent_string: 'Mozilla/4.0 compatible FurlBot/Furl Search 2.0 (FurlBot; http://www.furl.net; wn.furlbot@looksmart.net)'
-    family: 'furlbot'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'gonzo1[D] mailto:crawleradmin.t-info@telekom.de'
-    family: 'gonzo1'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'grub-client-1.5.3; (grub-client-1.5.3; Crawl your own stuff with http://grub.org)'
-    family: 'grub-client'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'gsa-crawler'
-    family: 'gsa-crawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; cdlwas_bot; heritrix/1.14.1 +http://webarchives.cdlib.org/p/webmasters)'
-    family: 'heritrix'
-    major: '1'
-    minor: '14'
-    patch: '1'
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; heritrix/3.2.0 +http://suki.ling.helsinki.fi/eng/project.html)'
-    family: 'heritrix'
-    major: '3'
-    minor: '2'
-    patch: '0'
-
-  - user_agent_string: 'holmes/2.3'
-    family: 'holmes'
-    major: '2'
-    minor: '3'
-    patch:
-
-  - user_agent_string: 'holmes/3.12.4 (http://morfeo.centrum.cz/bot)'
-    family: 'holmes'
-    major: '3'
-    minor: '12'
-    patch: '4'
-
-  - user_agent_string: 'htdig/3.1.6 (romieu@bastide-medical.fr)'
-    family: 'htdig'
-    major: '3'
-    minor: '1'
-    patch: '6'
-
-  - user_agent_string: 'ia_archiver/8.7 (Windows NT 5.0; )'
-    family: 'ia_archiver'
-    major: '8'
-    minor: '7'
-    patch:
-
-  - user_agent_string: 'ichiro/1.0 (ichiro@nttr.co.jp)'
-    family: 'ichiro'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'ichiro/5.0 (http://help.goo.ne.jp/door/crawler.html)'
-    family: 'ichiro'
-    major: '5'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'DoCoMo/2.0 P900i(c100;TB;W24H11)(compatible; ichiro/mobile goo;  http://help.goo.ne.jp/door/crawler.html)'
-    family: 'ichiro/mobile'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: '08_800w_web1 (larbin2.6.3@unspecified.mail)'
-    family: 'larbin'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; LYCOSA;+http://lycosa.se)'
-    family: 'lycos'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'masidani_bot_v0.3 (info@masidani.com)'
-    family: 'masidani_bot'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'mozDex/0.05-dev (mozDex; http://www.mozdex.com/bot.html; spider@mozdex.com)'
-    family: 'mozDex'
-    major: '0'
-    minor: '05'
-    patch:
-
-  - user_agent_string: 'msnbot/2.0 (+http://search.msn.com/msnbot.htm)'
-    family: 'msnbot'
-    major: '2'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13 (.NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; msnbot/2.1) Jakarta Commons-HttpClient/3.0-rc3 PHPCrawl GStreamer souphttpsrc libsoup/2.27.4 PycURL/7.19.0 XML-RPC for PHP 2.2.1 GoogleFriendConnect/1.0 HTMLParser/1.6 gPodder/0.15.2 ( http://gpodder.org/) anw webtool LoadControl/1.3 WinHttp urlgrabber/3.1.0'
-    family: 'msnbot'
-    major: '2'
-    minor: '1'
-    patch:
-
-  - user_agent_string: 'msnbot-media/1.0 ( http://search.msn.com/msnbot.htm)'
-    family: 'msnbot-media'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'msnbot-media/2.0b (+http://search.msn.com/msnbot.htm)'
-    family: 'msnbot-media'
-    major: '2'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'MSRBOT (http://research.microsoft.com/research/sv/msrbot)'
-    family: 'msrbot'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; scooter; .NET CLR 1.0.3705)'
-    family: 'scooter'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/4.0 (compatible; focuseekbot)'
-    family: 'seekbot'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'semanticdiscovery/0.2(http://www.semanticdiscovery.com/sd/robot.html)'
-    family: 'semanticdiscovery'
-    major: '0'
-    minor: '2'
-    patch:
-
-  - user_agent_string: 'semanticdiscovery/2.0(http://www.semanticdiscovery.com/robot.html)'
-    family: 'semanticdiscovery'
-    major: '2'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'voyager/1.0'
-    family: 'voyager'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'voyager/2.0 (http://www.kosmix.com/crawler.html)'
-    family: 'voyager'
-    major: '2'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'http://www.almaden.ibm.com/cs/crawler'
-    family: 'www.almaden.ibm.com'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: '449 Overture-WebCrawler/3.8/Fresh (atw-crawler at fast dot no; http://fast.no/support/crawler.asp'
-    family: '449 Overture-WebCrawler'
-    major: '3'
-    minor: '8'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; 80bot/0.71; http://www.80legs.com/spider.html;) Gecko/2008032620'
-    family: '80bot'
-    major: '0'
-    minor: '71'
-    patch:
-
-  - user_agent_string: 'A6-Indexer/1.0 (http://www.a6corp.com/a6-web-scraping-policy/)'
-    family: 'A6-Indexer'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'AcquiloSpider/1.0,gzip(gfe),gzip(gfe)'
-    family: 'AcquiloSpider'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Aleksika Spider/1.0 ( http://www.aleksika.com/)'
-    family: 'Aleksika Spider'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'AmorankSpider/0.1; +http://amorank.com/webcrawler.html'
-    family: 'AmorankSpider'
-    major: '0'
-    minor: '1'
-    patch:
-
-  - user_agent_string: 'AnomaliesBot/0.06-dev (The Anomalies Network Search Spider; http://www.anomalies.net; info@anomalies.net)'
-    family: 'AnomaliesBot'
-    major: '0'
-    minor: '06'
-    patch:
-
-  - user_agent_string: 'Automattic Analytics Crawler/0.1; http://wordpress.com/crawler/'
-    family: 'Automattic Analytics Crawler'
-    major: '0'
-    minor: '1'
-    patch:
-
-  - user_agent_string: 'Automattic Analytics Crawler/0.2;+http://wordpress.com/crawler/'
-    family: 'Automattic Analytics Crawler'
-    major: '0'
-    minor: '2'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; BLEXBot/1.0; +http://webmeup.com/crawler.html)'
-    family: 'BLEXBot'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'BabalooSpider/1.2 (BabalooSpider; http://www.babaloo.si; spider@babaloo.si)'
-    family: 'BabalooSpider'
-    major: '1'
-    minor: '2'
-    patch:
-
-  - user_agent_string: 'BabalooSpider/1.3 (BabalooSpider; http://www.babaloo.si; spider@babaloo.si)'
-    family: 'BabalooSpider'
-    major: '1'
-    minor: '3'
-    patch:
-
-  - user_agent_string: 'BebopBot/2.5.1 (compatible; media crawler V1;  http://www.apassion4jazz.net/bebopbot.html;)'
-    family: 'BebopBot'
-    major: '2'
-    minor: '5'
-    patch: '1'
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; BlinkaCrawler/1.0;  http://www.blinka.jp/crawler/)'
-    family: 'BlinkaCrawler'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'BlogRangerCrawler/1.0'
-    family: 'BlogRangerCrawler'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Brekiri crawler/1.0'
-    family: 'Brekiri crawler'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'BurstFindCrawler/1.1 (crawler.burstfind.com; http://crawler.burstfind.com; crawler@burstfind.com)'
-    family: 'BurstFindCrawler'
-    major: '1'
-    minor: '1'
-    patch:
-
-  - user_agent_string: 'CCBot/1.0 ( http://www.commoncrawl.org/bot.html)'
-    family: 'CCBot'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'CCBot/2.0 (http://commoncrawl.org/faq/)'
-    family: 'CCBot'
-    major: '2'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'CamontSpider/1.0  http://epweb2.ph.bham.ac.uk/user/slater/camont/info.html'
-    family: 'CamontSpider'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'CazoodleBot/0.1 (CazoodleBot Crawler; http://www.cazoodle.com; mqbot@cazoodle.com)'
-    family: 'CazoodleBot'
-    major: '0'
-    minor: '1'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; CloudServerMarketSpider/1.0; +http://www.cloudservermarket.com/spider.html)'
-    family: 'CloudServerMarketSpider'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; CompSpyBot/1.0; +http://www.compspy.com/spider.html)'
-    family: 'CompSpyBot'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'ConveraMultiMediaCrawler/0.1 ( http://www.authoritativeweb.com/crawl)'
-    family: 'ConveraMultiMediaCrawler'
-    major: '0'
-    minor: '1'
-    patch:
-
-  - user_agent_string: 'CosmixCrawler/0.1'
-    family: 'CosmixCrawler'
-    major: '0'
-    minor: '1'
-    patch:
-
-  - user_agent_string: 'Crawl/0.1 langcrawl/0.1'
-    family: 'Crawl'
-    major: '0'
-    minor: '1'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; CrawlBot/1.0.0)'
-    family: 'CrawlBot'
-    major: '1'
-    minor: '0'
-    patch: '0'
-
-  - user_agent_string: 'Crawllybot/0.1/0.1 (Crawllybot/0.1; http://www.crawlly.com; crawler@crawlly.com)'
-    family: 'Crawllybot'
-    major: '0'
-    minor: '1'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; Crawly/1.9;  http://92.51.162.40/crawler.html)'
-    family: 'Crawly'
-    major: '1'
-    minor: '9'
-    patch:
-
-  - user_agent_string: 'Crawlzilla/1.0 (Crawlzilla; http://www.crawlzilla.com; crawler@crawlzilla.com)'
-    family: 'Crawlzilla'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'CydralSpider/3.2 (Cydral Image Search; http://www.cydral.com)'
-    family: 'CydralSpider'
-    major: '3'
-    minor: '2'
-    patch:
-
-  - user_agent_string: 'DealGates Bot/1.1 by Luc Michalski (http://spider.dealgates.com/bot.html)'
-    family: 'DealGates Bot'
-    major: '1'
-    minor: '1'
-    patch:
-
-  - user_agent_string: 'Denodo IECrawler/4.5,gzip(gfe),gzip(gfe)'
-    family: 'Denodo IECrawler'
-    major: '4'
-    minor: '5'
-    patch:
-
-  - user_agent_string: 'Diffbot/0.1'
-    family: 'Diffbot'
-    major: '0'
-    minor: '1'
-    patch:
-
-  - user_agent_string: 'DomainCrawler/2.0 (info@domaincrawler.com; http://www.domaincrawler.com/bot'
-    family: 'DomainCrawler'
-    major: '2'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'DotBot/1.0.1 (http://www.dotnetdotcom.org/, crawler@dotnetdotcom.org)'
-    family: 'DotBot'
-    major: '1'
-    minor: '0'
-    patch: '1'
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; DotBot/1.1; http://www.dotnetdotcom.org/, crawler@dotnetdotcom.org)'
-    family: 'DotBot'
-    major: '1'
-    minor: '1'
-    patch:
-
-  - user_agent_string: 'DotSpotsBot/0.2 (crawler; support at dotspots.com)'
-    family: 'DotSpotsBot'
-    major: '0'
-    minor: '2'
-    patch:
-
-  - user_agent_string: 'ERACrawler/1.0'
-    family: 'ERACrawler'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; EventGuruBot/1.0; +http://www.eventguru.com/spider.html)'
-    family: 'EventGuruBot'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; Ex-Crawler/0.1.5a; powered by ex-crawler; +http://www.ex-crawler.de/) Java/1.6.0_20,gzip(gfe),gzip(gfe)'
-    family: 'Ex-Crawler'
-    major: '0'
-    minor: '1'
-    patch: '5'
-
-  - user_agent_string: 'ExactSeek Crawler/0.1'
-    family: 'ExactSeek Crawler'
-    major: '0'
-    minor: '1'
-    patch:
-
-  - user_agent_string: 'ExactSeekCrawler/1.0'
-    family: 'ExactSeekCrawler'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'FANGCrawl/0.01'
-    family: 'FANGCrawl'
-    major: '0'
-    minor: '01'
-    patch:
-
-  - user_agent_string: 'FAST Enterprise Crawler/6 (www.fastsearch.com)'
-    family: 'FAST Enterprise Crawler'
-    major: '6'
-    minor:
-    patch:
-
-  - user_agent_string: 'FAST-WebCrawler/2.2.11 (crawler@fast.no; http://www.fast.no/faq/faqfastwebsearch/faqfastwebcrawler.html)'
-    family: 'FAST-WebCrawler'
-    major: '2'
-    minor: '2'
-    patch: '11'
-
-  - user_agent_string: 'FAST-WebCrawler/3.7 (atw-crawler at fast dot no; http://fast.no/support/crawler.asp)'
-    family: 'FAST-WebCrawler'
-    major: '3'
-    minor: '7'
-    patch:
-
-  - user_agent_string: 'NokiaN70/. FASTMobileCrawl/6.6 Profile/MIDP-2.0 Configuration/CLDC-1.1'
-    family: 'FASTMobileCrawl'
-    major: '6'
-    minor: '6'
-    patch:
-
-  - user_agent_string: 'FlaxCrawler/1.0,gzip(gfe),gzip(gfe)'
-    family: 'FlaxCrawler'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'FyberSpider/1.3 (http://www.fybersearch.com/fyberspider.php)'
-    family: 'FyberSpider'
-    major: '1'
-    minor: '3'
-    patch:
-
-  - user_agent_string: 'GarlikCrawler/1.2 (http://garlik.com/'
-    family: 'GarlikCrawler'
-    major: '1'
-    minor: '2'
-    patch:
-
-  - user_agent_string: 'GematchCrawler/2.1 (http://www.gematch.com/crawler.html)'
-    family: 'GematchCrawler'
-    major: '2'
-    minor: '1'
-    patch:
-
-  - user_agent_string: 'Gigabot/2.0/gigablast.com/spider.html'
-    family: 'Gigabot'
-    major: '2'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Gigabot/3.0 (http://www.gigablast.com/spider.html)'
-    family: 'Gigabot'
-    major: '3'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'GingerCrawler/1.0 (Language Assistant for Dyslexics; www.gingersoftware.com/crawler_agent.htm; support at ginger software dot com)'
-    family: 'GingerCrawler'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'GoGuidesBot/0.0.1 (GoGuides Indexing Spider; http://www.goguides.org/spider.html)'
-    family: 'GoGuidesBot'
-    major: '0'
-    minor: '0'
-    patch: '1'
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; GrapeshotCrawler/2.0; +http://www.grapeshot.co.uk/crawler.php)'
-    family: 'GrapeshotCrawler'
-    major: '2'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'HPI FeedCrawler/0.1 (+http://www.hpi.uni-potsdam.de/meinel/bross/feedcrawler)'
-    family: 'HPI FeedCrawler'
-    major: '0'
-    minor: '1'
-    patch:
-
-  - user_agent_string: 'HRCrawler/2.0 (XF86; MacOS x86_64) AppleWebKit/537.31 (KHTML, like Gecko)'
-    family: 'HRCrawler'
-    major: '2'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; Hailoobot/1.2;  http://www.hailoo.com/spider.html)'
-    family: 'Hailoobot'
-    major: '1'
-    minor: '2'
-    patch:
-
-  - user_agent_string: 'Hatena::Crawler/0.01'
-    family: 'Hatena::Crawler'
-    major: '0'
-    minor: '01'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; HiveCrawler/1.2 http://www.businessinsider.com)'
-    family: 'HiveCrawler'
-    major: '1'
-    minor: '2'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; Host-Spy Crawler/1.2; +http://www.host-spy.com/)'
-    family: 'Host-Spy Crawler'
-    major: '1'
-    minor: '2'
-    patch:
-
-  - user_agent_string: 'HttpSpider/0.91'
-    family: 'HttpSpider'
-    major: '0'
-    minor: '91'
-    patch:
-
-  - user_agent_string: 'HuaweiSymantecSpider/1.0 DSE-support@huaweisymantec.com (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR ; http://www.huaweisymantec.com/cn/IRL/spider)'
-    family: 'HuaweiSymantecSpider'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'IRLbot/1.0 ( http://irl.cs.tamu.edu/crawler)'
-    family: 'IRLbot'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'IRLbot/3.0 (compatible; MSIE 6.0; http://irl.cs.tamu.edu/crawler)'
-    family: 'IRLbot'
-    major: '3'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Mozilla/4.0 (compatible; Iplexx Spider/1.1)'
-    family: 'Iplexx Spider'
-    major: '1'
-    minor: '1'
-    patch:
-
-  - user_agent_string: 'Jambot/0.1.1 (Jambot; http://www.jambot.com/blog; crawler@jambot.com)'
-    family: 'Jambot'
-    major: '0'
-    minor: '1'
-    patch: '1'
-
-  - user_agent_string: 'Jomjaibot/1.0 Crawl (+http://www.jomjaibot.com/)'
-    family: 'Jomjaibot'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'KIT webcrawler/0.2.4'
-    family: 'KIT webcrawler'
-    major: '0'
-    minor: '2'
-    patch: '4'
-
-  - user_agent_string: 'Kyoto-Crawler/2.0 (Mozilla-compatible; kyoto-crawler-contact(at)nlp(dot)kuee(dot)kyoto-u(dot)ac(dot)jp; http://nlp.ist.i.kyoto-u.ac.jp/)'
-    family: 'Kyoto-Crawler'
-    major: '2'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'LB-Crawler/1.0'
-    family: 'LB-Crawler'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'LSSRocketCrawler/1.0 LightspeedSystems'
-    family: 'LSSRocketCrawler'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7) Gecko/20040707 Lightningspider/0.9.2'
-    family: 'Lightningspider'
-    major: '0'
-    minor: '9'
-    patch: '2'
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; LikaholixCrawler/1.0; +http://mylikes.com/about/crawler)'
-    family: 'LikaholixCrawler'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Logict IPv6 Crawler/1.0 (http://ipv6search.logict.net),gzip(gfe),gzip(gfe)'
-    family: 'Logict IPv6 Crawler'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'MPICrawler/0.1 +http://kermit.news.cs.nyu.edu/crawler.html,gzip(gfe),gzip(gfe)'
-    family: 'MPICrawler'
-    major: '0'
-    minor: '1'
-    patch:
-
-  - user_agent_string: 'Opera/8.01 (J2ME/MIDP; MXit WebBot/1.8.3.119) Opera Mini/3.1'
-    family: 'MXit WebBot'
-    major: '1'
-    minor: '8'
-    patch: '3'
-
-  - user_agent_string: 'MetaGeneratorCrawler/1.3.8 (www.metagenerator.info)'
-    family: 'MetaGeneratorCrawler'
-    major: '1'
-    minor: '3'
-    patch: '8'
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; MetamojiCrawler/1.0; +http://www.metamoji.com/jp/crawler.html'
-    family: 'MetamojiCrawler'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'MonkeyCrawl/0.05 (MonkeyCrawl; http://www.monkeymethods.org;  )'
-    family: 'MonkeyCrawl'
-    major: '0'
-    minor: '05'
-    patch:
-
-  - user_agent_string: 'Mozilla crawl/5.0 (compatible; fairshare.cc +http://fairshare.cc)'
-    family: 'Mozilla crawl'
-    major: '5'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; NLCrawler/2.0.15; Linux 2.6.3-7; i686; en_US)KHTML/3.4.89 (like Gecko)'
-    family: 'NLCrawler'
-    major: '2'
-    minor: '0'
-    patch: '15'
-
-  - user_agent_string: 'NMG Spider/0.3 (szukanko.com)'
-    family: 'NMG Spider'
-    major: '0'
-    minor: '3'
-    patch:
-
-  - user_agent_string: 'NalezenCzBot/1.0 (http://www.nalezen.cz/about-crawler)'
-    family: 'NalezenCzBot'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'NationalDirectory-WebSpider/1.3'
-    family: 'NationalDirectory-WebSpider'
-    major: '1'
-    minor: '3'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; NetSeer crawler/2.0; +http://www.netseer.com/crawler.html; crawler@netseer.com)'
-    family: 'NetSeer crawler'
-    major: '2'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'NetWhatCrawler/0.06-dev (NetWhatCrawler from NetWhat.com; http://www.netwhat.com; support@netwhat.com)'
-    family: 'NetWhatCrawler'
-    major: '0'
-    minor: '06'
-    patch:
-
-  - user_agent_string: 'compatible; Netseer crawler/2.0; +http://www.netseer.com/crawler.html; crawler@netseer.com'
-    family: 'Netseer crawler'
-    major: '2'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'New-Sogou-Spider/1.0 (compatible; MSIE 5.5; Windows 98)'
-    family: 'New-Sogou-Spider'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'NewzCrawler/1.9 (compatible; MSIE 6.00; Newz Crawler 1.9; http://www.newzcrawler.com/ )'
-    family: 'NewzCrawler'
-    major: '1'
-    minor: '9'
-    patch:
-
-  - user_agent_string: 'NodejsSpider/1.0'
-    family: 'NodejsSpider'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; .None-Crawler/0.1 +http://domains.ericbinek.None/)'
-    family: 'None-Crawler'
-    major: '0'
-    minor: '1'
-    patch:
-
-  - user_agent_string: 'OmniExplorer_Bot/6.70 ( http://www.omni-explorer.com) WorldIndexer'
-    family: 'OmniExplorer_Bot'
-    major: '6'
-    minor: '70'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; OpenCrawler/0.1.6.6; http://code.google.com/p/opencrawler/),gzip(gfe),gzip(gfe)'
-    family: 'OpenCrawler'
-    major: '0'
-    minor: '1'
-    patch: '6'
-
-  - user_agent_string: 'OpenWebSpider/0.6 (http://www.openwebspider.org)'
-    family: 'OpenWebSpider'
-    major: '0'
-    minor: '6'
-    patch:
-
-  - user_agent_string: 'Overture-WebCrawler/3.8/Fresh (atw-crawler at fast dot no; http://fast.no/support/crawler.asp)'
-    family: 'Overture-WebCrawler'
-    major: '3'
-    minor: '8'
-    patch:
-
-  - user_agent_string: 'PArchiveCrawler/1.0'
-    family: 'PArchiveCrawler'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'PercolateCrawler/4 (ops@percolate.com)'
-    family: 'PercolateCrawler'
-    major: '4'
-    minor:
-    patch:
-
-  - user_agent_string: 'Pete-Spider/1.1'
-    family: 'Pete-Spider'
-    major: '1'
-    minor: '1'
-    patch:
-
-  - user_agent_string: 'PicSpider/1.1 (spider@217-20-118-26.internetserviceteam.com; http://www.bildkiste.de)'
-    family: 'PicSpider'
-    major: '1'
-    minor: '1'
-    patch:
-
-  - user_agent_string: 'PluckItCrawler/1.0 (compatible; Mozilla 4.0; MSIE 5.5; http://www.pluck.com;)'
-    family: 'PluckItCrawler'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; PornSpider/1.0; +http://www.pornspider.net)'
-    family: 'PornSpider'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'PortalBSpider/2.0 (spider@portalb.com)'
-    family: 'PortalBSpider'
-    major: '2'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; ProCogBot/1.0; +http://www.procog.com/spider.html)'
-    family: 'ProCogBot'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'ProloCrawler/1.0 (http://www.prolo.com)'
-    family: 'ProloCrawler'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'PsSpider/0.7 (spider@bildkiste.de)'
-    family: 'PsSpider'
-    major: '0'
-    minor: '7'
-    patch:
-
-  - user_agent_string: 'RSSIncludeBot/1.0 (http://www.rssinclude.com/spider)'
-    family: 'RSSIncludeBot'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ;  Embedded Web Browser from: http://bsalsa.com/; RSScrawler/4.0 (compatible; MSIE 6.0; Windows NT 5.0); .NET CLR 2.0.50727'
-    family: 'RSScrawler'
-    major: '4'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'RSpider/1.0'
-    family: 'RSpider'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'RyzeCrawler/1.1.0 (+http://www.ryze.nl/crawler/)'
-    family: 'RyzeCrawler'
-    major: '1'
-    minor: '1'
-    patch: '0'
-
-  - user_agent_string: 'SMXCrawler/1.0 (www.socialmetrix.com)'
-    family: 'SMXCrawler'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; SRCCN!Spider/1.1; +http://site.srccn.com/spider.html)'
-    family: 'SRCCN!Spider'
-    major: '1'
-    minor: '1'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; SWEBot/1.0; +http://swebot-crawler.net)'
-    family: 'SWEBot'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Sangfor Spider/0.7'
-    family: 'Sangfor Spider'
-    major: '0'
-    minor: '7'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (Linux; Android 5.0.1; SAMSUNG GT-I9506-ORANGE Build/LRX22C) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/2.1 Chrome/34.0.1847.76 Mobile Safari/537.36'
-    family: 'Samsung Internet'
-    major: '2'
-    minor: '1'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (Linux; Android 5.0.2; SAMSUNG SM-T800 Build/LRX22G) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/3.0 Chrome/38.0.2125.102 Safari/537.36'
-    family: 'Samsung Internet'
-    major: '3'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (Linux; Android 5.1.1; SAMSUNG SM-G920F Build/LMY47X) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/3.2 Chrome/38.0.2125.102 Mobile Safari/537.36'
-    family: 'Samsung Internet'
-    major: '3'
-    minor: '2'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (Linux; Android 5.0.2; SAMSUNG SM-T710 Build/LRX22G) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/3.5 Chrome/38.0.2125.102 Safari/537.36'
-    family: 'Samsung Internet'
-    major: '3'
-    minor: '5'
-    patch:
-
-  - user_agent_string: 'ScSpider/0.2'
-    family: 'ScSpider'
-    major: '0'
-    minor: '2'
-    patch:
-
-  - user_agent_string: 'ScollSpider/2.0 ( http://www.webwobot.com/ScollSpider.php)'
-    family: 'ScollSpider'
-    major: '2'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Screaming Frog SEO Spider/1.10'
-    family: 'Screaming Frog SEO Spider'
-    major: '1'
-    minor: '10'
-    patch:
-
-  - user_agent_string: 'Screaming Frog SEO Spider/2,01'
-    family: 'Screaming Frog SEO Spider'
-    major: '2'
-    minor:
-    patch:
-
-  - user_agent_string: 'SearchSpider/1.2.10'
-    family: 'SearchSpider'
-    major: '1'
-    minor: '2'
-    patch: '10'
-
-  - user_agent_string: 'Searchspider/1.2 (SearchSpider; http://www.searchspider.com; webmaster@searchspider.com)'
-    family: 'Searchspider'
-    major: '1'
-    minor: '2'
-    patch:
-
-  - user_agent_string: 'SimpleCrawler/0.1'
-    family: 'SimpleCrawler'
-    major: '0'
-    minor: '1'
-    patch:
-
-  - user_agent_string: 'SlugBug Spider/0.1 beta (SlugBug.com search engine; http://www.slugbug.com)'
-    family: 'SlugBug Spider'
-    major: '0'
-    minor: '1'
-    patch:
-
-  - user_agent_string: 'SmartAndSimpleWebCrawler/1.3 (https://crawler.dev.java.net),gzip(gfe),gzip(gfe)'
-    family: 'SmartAndSimpleWebCrawler'
-    major: '1'
-    minor: '3'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; Linux; Socialradarbot/2.0; en-US; crawler@infegy.com)'
-    family: 'Socialradarbot'
-    major: '2'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Sogou Orion spider/4.0( http://www.sogou.com/docs/help/webmasters.htm#07)'
-    family: 'Sogou Orion spider'
-    major: '4'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Sogou Pic Spider/3.0( http://www.sogou.com/docs/help/webmasters.htm#07)'
-    family: 'Sogou Pic Spider'
-    major: '3'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Sogou Push Spider/3.0( http://www.sogou.com/docs/help/webmasters.htm#07)'
-    family: 'Sogou Push Spider'
-    major: '3'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Sogou develop spider/4.0( http://www.sogou.com/docs/help/webmasters.htm#07)'
-    family: 'Sogou develop spider'
-    major: '4'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Sogou head spider/3.0( http://www.sogou.com/docs/help/webmasters.htm#07)'
-    family: 'Sogou head spider'
-    major: '3'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Sogou web spider/3.0( http://www.sogou.com/docs/help/webmasters.htm#07)'
-    family: 'Sogou web spider'
-    major: '3'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Sogou-Test-Spider/4.0 (compatible; MSIE 5.5; Windows 98)'
-    family: 'Sogou-Test-Spider'
-    major: '4'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; Sosoimagespider/2.0; +http://help.soso.com/soso-image-spider.htm)'
-    family: 'Sosoimagespider'
-    major: '2'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; Sosospider/2.0; +http://help.soso.com/webspider.htm)'
-    family: 'Sosospider'
-    major: '2'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Spider/5.0'
-    family: 'Spider'
-    major: '5'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'SpokeSpider/1.0 (http://support.spoke.com/webspider/) Mozilla/5.0 (not really)'
-    family: 'SpokeSpider'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; StoneSunSpider/1.1)'
-    family: 'StoneSunSpider'
-    major: '1'
-    minor: '1'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; StreamScraper/1.0; +http://code.google.com/p/streamscraper/)'
-    family: 'StreamScraper'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Mozilla/4.0 (compatible; MSIE 5.5; SuperSpider/139; Windows 98; Win 9x 4.90)'
-    family: 'SuperSpider'
-    major: '139'
-    minor:
-    patch:
-
-  - user_agent_string: 'T3census-Crawler/1.0'
-    family: 'T3census-Crawler'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'TECOMAC-Crawler/0.3'
-    family: 'TECOMAC-Crawler'
-    major: '0'
-    minor: '3'
-    patch:
-
-  - user_agent_string: 'Tasapspider/0.9'
-    family: 'Tasapspider'
-    major: '0'
-    minor: '9'
-    patch:
-
-  - user_agent_string: 'TinEye-bot/0.02 (see http://www.tineye.com/crawler.html)'
-    family: 'TinEye-bot'
-    major: '0'
-    minor: '02'
-    patch:
-
-  - user_agent_string: 'Top10Ranking Spider/3.1 ( http://www.top10Ranking.nl/, Top10ranking.nl heeft op een aantal woorden uw posities in Google gecheckt)'
-    family: 'Top10Ranking Spider'
-    major: '3'
-    minor: '1'
-    patch:
-
-  - user_agent_string: 'TouTrix crawler/1.0'
-    family: 'TouTrix crawler'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; TridentSpider/3.1)'
-    family: 'TridentSpider'
-    major: '3'
-    minor: '1'
-    patch:
-
-  - user_agent_string: 'TurnitinBot/1.5 (http://www.turnitin.com/robot/crawlerinfo.html)'
-    family: 'TurnitinBot'
-    major: '1'
-    minor: '5'
-    patch:
-
-  - user_agent_string: 'TurnitinBot/3.0 (http://www.turnitin.com/robot/crawlerinfo.html)'
-    family: 'TurnitinBot'
-    major: '3'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; Linux i686; en-US; URLfilterDB-crawler/1.0) ufdb/1.0'
-    family: 'URLfilterDB-crawler'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (URLfilterDB-crawler/1.1) ufdb/1.0'
-    family: 'URLfilterDB-crawler'
-    major: '1'
-    minor: '1'
-    patch:
-
-  - user_agent_string: 'VinjaVideoSpider/1.1'
-    family: 'VinjaVideoSpider'
-    major: '1'
-    minor: '1'
-    patch:
-
-  - user_agent_string: 'VisBot/2.0 (Visvo.com Crawler; http://www.visvo.com/bot.html; bot@visvo.com)'
-    family: 'VisBot'
-    major: '2'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; VodpodCrawler/1.0; +http://vodpod.com/site/help)'
-    family: 'VodpodCrawler'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'WSDLSpider/1.0 (http://www.wsdlworld.com)'
-    family: 'WSDLSpider'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; WangIDSpider/1.0; +http://www.wangid.com/spider.html)'
-    family: 'WangIDSpider'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Web-Robot/5.0 (en-US; web-robot.com/policy.html) Web-Robot Crawler/2.0.3'
-    family: 'Web-Robot'
-    major: '5'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'WebAlta Crawler/1.3.18 (http://www.webalta.net/ru/about_webmaster.html) (Windows; U; Windows NT 5.1; ru-RU)'
-    family: 'WebAlta Crawler'
-    major: '1'
-    minor: '3'
-    patch: '18'
-
-  - user_agent_string: 'WebAlta Crawler/2.0 (http://www.webalta.net/ru/about_webmaster.html) (Windows; U; Windows NT 5.1; ru-RU)'
-    family: 'WebAlta Crawler'
-    major: '2'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'WebIndexer/1-dev (Web Indexer; mailto://webindexerv1@yahoo.com; webindexerv1@yahoo.com)'
-    family: 'WebIndexer'
-    major: '1'
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; Webbot/0.1; http://www.webbot.ru/bot.html)'
-    family: 'Webbot'
-    major: '0'
-    minor: '1'
-    patch:
-
-  - user_agent_string: 'Webspider/1.0 (web spider;  )'
-    family: 'Webspider'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'WinWebBot/1.0; (Balaena Ltd, UK); http://www.balaena.com/winwebbot.html; winwebbot@balaena.com;)'
-    family: 'WinWebBot'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'WinkBot/0.06 (Wink.com search engine web crawler; http://www.wink.com/Wink:WinkBot; winkbot@wink.com)'
-    family: 'WinkBot'
-    major: '0'
-    minor: '06'
-    patch:
-
-  - user_agent_string: 'Yahoo-MMCrawler/3.x (mm dash crawler at trd dot overture dot com)'
-    family: 'Yahoo-MMCrawler'
-    major: '3'
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (Yahoo-MMCrawler/4.0; mailto:vertical-crawl-support@yahoo-inc.com)'
-    family: 'Yahoo-MMCrawler'
-    major: '4'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Yahoo-Newscrawler/3.9 (news-search-crawler at yahoo-inc dot com)'
-    family: 'Yahoo-Newscrawler'
-    major: '3'
-    minor: '9'
-    patch:
-
-  - user_agent_string: 'Yahoo-VerticalCrawler-FormerWebCrawler/3.9 crawler at trd dot overture dot com; http://www.alltheweb.com/help/webmaster/crawler'
-    family: 'Yahoo-VerticalCrawler-FormerWebCrawler'
-    major: '3'
-    minor: '9'
-    patch:
-
-  - user_agent_string: 'YoonoCrawler/1.0 (crawler@yoono.com)'
-    family: 'YoonoCrawler'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; YoudaoBot/1.0; http://www.youdao.com/help/webmaster/spider/; )'
-    family: 'YoudaoBot'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; ZemlyaCrawl/1.0; +http://zemlyaozer.com/bot)'
-    family: 'ZemlyaCrawl'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: "Zeusbot/0.8.1 (Ulysseek's web-crawling robot; http://www.zeusbot.com; agent@zeusbot.com)"
-    family: 'Zeusbot'
-    major: '0'
-    minor: '8'
-    patch: '1'
-
-  - user_agent_string: 'agbot/1.0 (AgHaven.com search engine crawler; http://search.aghaven.com; bot@aghaven.com)'
-    family: 'agbot'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; archive_crawler/3.0.0-SNAPSHOT-20091205.013431  http://www.archive.org/details/archive_crawler)'
-    family: 'archive_crawler'
-    major: '3'
-    minor: '0'
-    patch: '0'
-
-  - user_agent_string: 'audioCrawlerBot/1.0 (http://www.audiocrawler.com/)'
-    family: 'audioCrawlerBot'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'awesomebar_scraper/1.0'
-    family: 'awesomebar_scraper'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'blog_crawler/1.0'
-    family: 'blog_crawler'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; ca-crawler/1.0)'
-    family: 'ca-crawler'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'crawl/0.4 langcrawl/0.1'
-    family: 'crawl'
-    major: '0'
-    minor: '4'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; crawler/3.0.0 +http://www.notconfigured.com/)'
-    family: 'crawler'
-    major: '3'
-    minor: '0'
-    patch: '0'
-
-  - user_agent_string: 'dCrawlBot/1.0.1120'
-    family: 'dCrawlBot'
-    major: '1'
-    minor: '0'
-    patch: '1120'
-
-  - user_agent_string: 'deepcrawler/3.1 (http://www.queusearch.com/whatis_deepcrawler.php),gzip(gfe),gzip(gfe)'
-    family: 'deepcrawler'
-    major: '3'
-    minor: '1'
-    patch:
-
-  - user_agent_string: 'envolk[ITS]spider/1.6 ( http://www.envolk.com/envolkspider.html)'
-    family: 'envolk[ITS]spider'
-    major: '1'
-    minor: '6'
-    patch:
-
-  - user_agent_string: 'fastlwspider/1.0'
-    family: 'fastlwspider'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'i1searchbot/2.0 (i1search web crawler; http://www.i1search.com; crawler@i1search.com)'
-    family: 'i1searchbot'
-    major: '2'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; iaskspider/1.0; MSIE 6.0)'
-    family: 'iaskspider'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'iaskspider/2.0( http://iask.com/help/help_index.html)'
-    family: 'iaskspider'
-    major: '2'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Liquida.it-Crawler/1.0 ( crawler@liquida.it +http://www.liquida.it )'
-    family: 'it-Crawler'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'it2media-domain-crawler/1.0 on crawler-prod.it2media.de'
-    family: 'it2media-domain-crawler'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'jrCrawler/1.0b'
-    family: 'jrCrawler'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; loc-crawl/1.10.1 +http://www.google.com)'
-    family: 'loc-crawl'
-    major: '1'
-    minor: '10'
-    patch: '1'
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; loc-crawler/0.11.0 +http://loc.gov),gzip(gfe),gzip(gfe),gzip(gfe)'
-    family: 'loc-crawler'
-    major: '0'
-    minor: '11'
-    patch: '0'
-
-  - user_agent_string: 'DoCoMo/2.0 P904i( m65bot/0.1; c; http://m65.jp/bot.html )'
-    family: 'm65bot'
-    major: '0'
-    minor: '1'
-    patch:
-
-  - user_agent_string: 'magpie-crawler/1.1 (U; Linux amd64; en-GB;  http://www.brandwatch.net)'
-    family: 'magpie-crawler'
-    major: '1'
-    minor: '1'
-    patch:
-
-  - user_agent_string: 'noxtrumbot/1.0 (crawler@noxtrum.com)'
-    family: 'noxtrumbot'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'nyobot/1.1 (Noyb.com search engine crawler; http://www.noyb.com; bot@noyb.com),gzip(gfe),gzip(gfe)'
-    family: 'nyobot'
-    major: '1'
-    minor: '1'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; oBot/2.3.1; +http://filterdb.iss.net/crawler/)'
-    family: 'oBot'
-    major: '2'
-    minor: '3'
-    patch: '1'
-
-  - user_agent_string: 'omgilibot/0.3 +http://www.omgili.com/Crawler.html'
-    family: 'omgilibot'
-    major: '0'
-    minor: '3'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; rogerBot/1.0; UrlCrawler; http://www.seomoz.org/dp/rogerbot)'
-    family: 'rogerBot'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'rogerbot/1.1 (http://moz.com/help/pro/what-is-rogerbot-, rogerbot-crawler+pr1-crawler-14@moz.com)'
-    family: 'rogerbot'
-    major: '1'
-    minor: '1'
-    patch:
-
-  - user_agent_string: 'semantics webbot/1.0'
-    family: 'semantics webbot'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; socialbm_bot/1.0; +http://spider.socialbm.net)'
-    family: 'socialbm_bot'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'tCrawler/0.1,gzip(gfe),gzip(gfe),gzip(gfe)'
-    family: 'tCrawler'
-    major: '0'
-    minor: '1'
-    patch:
-
-  - user_agent_string: 'tivraSpider/1.0 (crawler@tivra.com)'
-    family: 'tivraSpider'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'webscraper/1.0'
-    family: 'webscraper'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'wume_crawler/1.1 (http://wume.cse.lehigh.edu/~xiq204/crawler/)'
-    family: 'wume_crawler'
-    major: '1'
-    minor: '1'
-    patch:
-
-  - user_agent_string: 'Abrave Spider v5.3 Robot 2 (http://robot.abrave.com)'
-    family: '3 Robot'
-    major: '2'
-    minor:
-    patch:
-
-  - user_agent_string: 'Apexoo Spider 1.1'
-    family: 'Apexoo Spider'
-    major: '1'
-    minor: '1'
-    patch:
-
-  - user_agent_string: 'BT Crawler 1.0,gzip(gfe),gzip(gfe),gzip(gfe)'
-    family: 'BT Crawler'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Bot Blocker Crawler 1.0 (btw, IncrediBILL says "HI!")'
-    family: 'Bot Blocker Crawler'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'BurstFind Crawler 1.1 - www.burstfind.com'
-    family: 'BurstFind Crawler'
-    major: '1'
-    minor: '1'
-    patch:
-
-  - user_agent_string: 'Comodo Spider 1.1'
-    family: 'Comodo Spider'
-    major: '1'
-    minor: '1'
-    patch:
-
-  - user_agent_string: 'Comodo Spider 1.2'
-    family: 'Comodo Spider'
-    major: '1'
-    minor: '2'
-    patch:
-
-  - user_agent_string: 'Crawler 0.1,gzip(gfe),gzip(gfe)'
-    family: 'Crawler'
-    major: '0'
-    minor: '1'
-    patch:
-
-  - user_agent_string: 'ExB Language Crawler 2.1.5 (+http://www.exb.de/crawler)'
-    family: 'ExB Language Crawler'
-    major: '2'
-    minor: '1'
-    patch: '5'
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; FAST Crawler 6.3)'
-    family: 'FAST Crawler'
-    major: '6'
-    minor: '3'
-    patch:
-
-  - user_agent_string: 'FAST EnterpriseCrawler 6'
-    family: 'FAST EnterpriseCrawler'
-    major: '6'
-    minor:
-    patch:
-
-  - user_agent_string: 'schibstedsokbot (compatible; Mozilla/5.0; MSIE 5.0; FAST FreshCrawler 6; Contact: webcrawl@schibstedsok.no;)'
-    family: 'FAST FreshCrawler'
-    major: '6'
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; FatBot 2.0; http://www.thefind.com/crawler)'
-    family: 'FatBot'
-    major: '2'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Feedjit Favicon Crawler 1.0'
-    family: 'Feedjit Favicon Crawler'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'HubSpot Crawler 1.0 http://www.hubspot.com/'
-    family: 'HubSpot Crawler'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Jaxified Crawler 1.0a (+http://www.jaxified.com/),gzip(gfe),gzip(gfe)'
-    family: 'Jaxified Crawler'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'LinksCrawler 0.1beta'
-    family: 'LinksCrawler'
-    major: '0'
-    minor: '1'
-    patch:
-
-  - user_agent_string: 'Liquida Spider 1.0 +http://liquida.com/'
-    family: 'Liquida Spider'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'My Spider 1.0,gzip(gfe),gzip(gfe)'
-    family: 'My Spider'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'NWSpider 0.9'
-    family: 'NWSpider'
-    major: '0'
-    minor: '9'
-    patch:
-
-  - user_agent_string: 'Netchart Adv Crawler 1.0'
-    family: 'Netchart Adv Crawler'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Mozilla/4.0 (NimbleCrawler 0.1) obeys NimbleCrawler directive contact jpump@looksmart.net'
-    family: 'NimbleCrawler'
-    major: '0'
-    minor: '1'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (Windows;) NimbleCrawler 2.0.1 obeys UserAgent NimbleCrawler For problems contact: crawler@healthline.com'
-    family: 'NimbleCrawler'
-    major: '2'
-    minor: '0'
-    patch: '1'
-
-  - user_agent_string: 'OMGCrawler 1.0'
-    family: 'OMGCrawler'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'SeekOn Spider 1.9(+http://www.seekon.com/spider.html)'
-    family: 'SeekOn Spider'
-    major: '1'
-    minor: '9'
-    patch:
-
-  - user_agent_string: 'Toms Spider 0.3'
-    family: 'Toms Spider'
-    major: '0'
-    minor: '3'
-    patch:
-
-  - user_agent_string: 'Tutorial Crawler 1.4'
-    family: 'Tutorial Crawler'
-    major: '1'
-    minor: '4'
-    patch:
-
-  - user_agent_string: 'RB2B-bot v0.1 (Using Fast Enterprise Crawler 6 search@reedbusiness.com)'
-    family: 'Using Fast Enterprise Crawler'
-    major: '6'
-    minor:
-    patch:
-
-  - user_agent_string: 'WocBot/Mozilla/5.0 (Wocodi Web Crawler 1.0; http://www.wocodi.com/crawler; crawler@wocodi.com)'
-    family: 'Wocodi Web Crawler'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; WordSurfer Spider 2.2;))'
-    family: 'WordSurfer Spider'
-    major: '2'
-    minor: '2'
-    patch:
-
-  - user_agent_string: 'XSpider 0.01;http://uncool.oicp.net/spider.html'
-    family: 'XSpider'
-    major: '0'
-    minor: '01'
-    patch:
-
-  - user_agent_string: 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 7.0) XSpider 7'
-    family: 'XSpider'
-    major: '7'
-    minor:
-    patch:
-
-  - user_agent_string: 'Xaldon WebSpider 2.7.b6'
-    family: 'Xaldon WebSpider'
-    major: '2'
-    minor: '7'
-    patch:
-
-  - user_agent_string: 'echocrawl 2.0'
-    family: 'echocrawl'
-    major: '2'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'enicura crawler 1.0,gzip(gfe),gzip(gfe)'
-    family: 'enicura crawler'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Mozilla/4.0 (compatible; lworld spider 1.0; Windows NT 5.1)'
-    family: 'lworld spider'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'FAST-mSEARCH Crawler 0.1 (bergum@fast.no)'
-    family: 'mSEARCH Crawler'
-    major: '0'
-    minor: '1'
-    patch:
-
-  - user_agent_string: '123metaspider-Bot (Version: 1.04, powered by www.123metaspider.com)'
-    family: '123metaspider-Bot'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: '360Spider'
-    family: '360Spider'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (Windows; U; Win98; en-US; rv:1.8webcrawler) http://skateboarddirectory.com'
-    family: '8webcrawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'AESOP_com_SpiderMan'
-    family: 'AESOP_com_SpiderMan'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: "AISearchBot (Email: aisearchbot@gmail.com; If your web site doesn't want to be crawled, please send us a email.)"
-    family: 'AISearchBot'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/4.0 (compatible; DAWINCI ANTIPLAG SPIDER)'
-    family: 'ANTIPLAG SPIDER'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'AcquiaCrawler,gzip(gfe),gzip(gfe)'
-    family: 'AcquiaCrawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Adaxas Spider (http://www.adaxas.net/)'
-    family: 'Adaxas Spider'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0) AddSugarSpiderBot www.idealobserver.com'
-    family: 'AddSugarSpiderBot'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'AdnormCrawler www.adnorm.com/crawler'
-    family: 'AdnormCrawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'www.website-analyzer.net Website Analyzer Crawler'
-    family: 'Analyzer Crawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Apexoo Spider (http://www.apexoo.com/spider/)'
-    family: 'Apexoo Spider'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'AppCodes crawler - looking for iOS app mentions. More info: support@appcodes.com. Robots.txt id: AppCodesCrawler'
-    family: 'AppCodes crawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'ArchitextSpider'
-    family: 'ArchitextSpider'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Arikus_Spider'
-    family: 'Arikus_Spider'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/4.0 (compatible; MSIE 6.0 compatible; Asterias Crawler v4;  http://www.singingfish.com/help/spider.html; webmaster@singingfish.com); SpiderThread  Revision: 3.0'
-    family: 'Asterias Crawler'
-    major: '4'
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/4.0 (compatible: AstraSpider V.2.1 : astrafind.com)'
-    family: 'AstraSpider'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Autonomy Spider'
-    family: 'Autonomy Spider'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'axadine/  (Axadine Crawler; http://www.axada.de/;  )'
-    family: 'Axadine Crawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; BIXOCRAWLER; +http://wiki.github.com/bixo/bixo/bixocrawler; bixo-dev@yahoogroups.com)'
-    family: 'BIXOCRAWLER'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/4.0 (compatible; BOTW Spider;  http://botw.org)'
-    family: 'BOTW Spider'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'BacklinkCrawler (http://www.backlinktest.com/crawler.html)'
-    family: 'BacklinkCrawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'BaiduImagespider ( http://help.baidu.jp/system/05.html)'
-    family: 'BaiduImagespider'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'BarraHomeCrawler (albertof@barrahome.org)'
-    family: 'BarraHomeCrawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'ZoomInfo::Beehive Crawler'
-    family: 'Beehive Crawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'BeijingCrawler'
-    family: 'BeijingCrawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'BejiBot Crawler (BNL Services; http://www.bejjan.net/crawler/)'
-    family: 'BejiBot'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'BravoBrian SpiderEngine MarcoPolo'
-    family: 'BravoBrian SpiderEngine'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'BrightCrawler (http://www.brightcloud.com/brightcrawler.asp)'
-    family: 'BrightCrawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'BuildCMS crawler (http://www.buildcms.com/crawler)'
-    family: 'BuildCMS crawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'ByWebSite-Search-Spider,gzip(gfe),gzip(gfe)'
-    family: 'ByWebSite-Search-Spider'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'CFG_SPIDER_USER_AGENT'
-    family: 'CFG_SPIDER_USER_AGENT'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/4.0 (CMS Crawler: http://www.cmscrawler.com)'
-    family: 'CMS Crawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'CMS crawler ( http://buytaert.net/crawler/)'
-    family: 'CMS crawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'CRAZYWEBCRAWLER 0.9.0, http://www.crazywebcrawler.com'
-    family: 'CRAZYWEBCRAWLER'
-    major: '0'
-    minor: '9'
-    patch: '0'
-
-  - user_agent_string: 'CSimpleSpider Robot'
-    family: 'CSimpleSpider'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Cityreview Robot (+http://www.cityreview.org/crawler/)'
-    family: 'Cityreview Robot'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Exalead Cloudview Crawler,gzip(gfe),gzip(gfe),gzip(gfe)'
-    family: 'Cloudview Crawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Comodo-Certificates-Spider'
-    family: 'Comodo-Certificates-Spider'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Computer_and_Automation_Research_Institute_Crawler (crawler@info.ilab.sztaki.hu)'
-    family: 'Computer_and_Automation_Research_Institute_Crawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Http Connector Spider, contact Alcatel-Lucent IDOL Search'
-    family: 'Connector Spider'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Content Crawler'
-    family: 'Content Crawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'CowCrawler/CowCrawler-dev (+http://beta.cow.com),gzip(gfe),gzip(gfe)'
-    family: 'CowCrawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; CrawlDaddy v0.3.0 abot v1.1.1.0 http://code.google.com/p/abot)'
-    family: 'CrawlDaddy'
-    major: '0'
-    minor: '3'
-    patch: '0'
-
-  - user_agent_string: 'CrawlFire - you can disable this Robot: http://pastebin.de/25277'
-    family: 'CrawlFire'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'CrawlWave/1.2 (crawlwave[at]circular.gr http://www.spiderwave.aueb.gr/'
-    family: 'CrawlWave'
-    major: '1'
-    minor: '2'
-    patch:
-
-  - user_agent_string: 'CrawlerBoy Pinpoint.com'
-    family: 'CrawlerBoy'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/4.0 (compatible; MSIE 5.0; Windows 98; DigExt; Crayon Crawler)'
-    family: 'Crayon Crawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'DRKSpider - Website link validator - http://www.drk.com.ar/spider/,gzip(gfe),gzip(gfe),gzip(gfe)'
-    family: 'DRKSpider'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'DefaultCrawlTest/0.6 (Ram Crawl Test; devarajaswami at yahoo dot com)'
-    family: 'DefaultCrawlTest'
-    major: '0'
-    minor: '6'
-    patch:
-
-  - user_agent_string: 'FFC Trap Door Spider'
-    family: 'Door Spider'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'DoubleVerify Crawler'
-    family: 'DoubleVerify Crawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'EasouSpider'
-    family: 'EasouSpider'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'EcoGrader Crawler: Beta'
-    family: 'EcoGrader Crawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Adknowledge Engage Crawler'
-    family: 'Engage Crawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'ByWebSite Search Engine Spider'
-    family: 'Engine Spider'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'EverbeeCrawler'
-    family: 'EverbeeCrawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; Ex-Crawler/v0.1.5ALPHA SVN rev58; powered by ex-crawler; +http://www.ex-crawler.de/) Java/1.6.0_20,gzip(gfe),gzip(gfe)'
-    family: 'Ex-Crawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'ExactSeek_Spider'
-    family: 'ExactSeek_Spider'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/4.0 (compatible; FastCrawler3, support-fastcrawler3@fast.no)'
-    family: 'FastCrawler3'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; Finderbots finder bot; +http://wiki.github.com/bixo/bixo/bixocrawler; bixo-dev@yahoogroups.com)'
-    family: 'Finderbots'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Findexa Crawler (http://www.findexa.no/gulesider/article26548.ece)'
-    family: 'Findexa Crawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/3.0 (compatible; Fluffy the spider; http://www.searchhippo.com/; info@searchhippo.com)'
-    family: 'Fluffy the spider'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0) (Atsameip FreeCrawl!)'
-    family: 'FreeCrawl'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Fujiko Spider (fujiko@inelegant.org)'
-    family: 'Fujiko Spider'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; FunkyCrawler; )'
-    family: 'FunkyCrawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'GSiteCrawler/v1.12 rev. 260 (http://gsitecrawler.com/)'
-    family: 'GSiteCrawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'GeekTools Crawler - http://domains.geek-tools.org'
-    family: 'GeekTools Crawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla 4.0 - GetMeLinked Spider www.GetMeLinked.com Web Directory'
-    family: 'GetMeLinked Spider'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Gnam Gnam Spider'
-    family: 'Gnam Spider'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; GoGuidesBot; http://www.goguides.org/spider.html)'
-    family: 'GoGuidesBot'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'GoScraper'
-    family: 'GoScraper'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'GrowerIdeas Crawler/GrowerIdeas-nutch-1.6 (Crawls URLs for indexing content for our new search startup which aims to provide simple and smart search across curated content. For more info please contact helloworld@growerideas.com. If you think'
-    family: 'GrowerIdeas Crawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Huaweisymantecspider (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727),gzip(gfe)'
-    family: 'Huaweisymantecspider'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'BlogPulse (ISSpider-3.0)'
-    family: 'ISSpider'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'IWE Spider v.01 - www.pavka.com.au'
-    family: 'IWE Spider'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'IXE Crawler'
-    family: 'IXE Crawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Imperia-LinkSpider,gzip(gfe),gzip(gfe)'
-    family: 'Imperia-LinkSpider'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'netEstate Impressumscrawler (+http://www.netestate.de/De/Loesungen/Impressumscrawler)'
-    family: 'Impressumscrawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Inar_spider2 (tspyyp@tom.com)'
-    family: 'Inar_spider2'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'IOI/2.0 (ISC Open Index crawler; http://index.isc.org/; bot@index.isc.org)'
-    family: 'Index crawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/4.0 (compatible; MSIE 5.5; Windows 98; Infocrawler; Alexa Toolbar)'
-    family: 'Infocrawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/4.0 (compatible; Inspyder-Crawler; http://www.inspyder.com)'
-    family: 'Inspyder-Crawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Willow Internet Crawler by Twotrees V2.1'
-    family: 'Internet Crawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/4.0 (SKIZZLE! Distributed Internet Spider v1.0 - www.SKIZZLE.com)'
-    family: 'Internet Spider'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'IssueCrawler'
-    family: 'IssueCrawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'JUST-CRAWLER( http://www.justsystems.com/jp/tech/crawler/)'
-    family: 'JUST-CRAWLER'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Jayde Crawler. http://www.jayde.com'
-    family: 'Jayde Crawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'JikeSpider; +http://shoulu.jike.com/spider.html'
-    family: 'JikeSpider'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible;WI Job Roboter Spider Version 3;+http://www.webintegration.at)'
-    family: 'Job Roboter'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'JobSpider_BA/1.1'
-    family: 'JobSpider_BA'
-    major: '1'
-    minor: '1'
-    patch:
-
-  - user_agent_string: 'KiwiStatus (NZS.com)/0.2 (NZS.com KiwiStatus Spider,  Local Search New Zealand; http://www.nzs.com; bot-at-nzs dot com)'
-    family: 'KiwiStatus Spider'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Kotoss Crawler http://hitokoto.kotoss.com,gzip(gfe),gzip(gfe)'
-    family: 'Kotoss Crawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; Kyluka crawl; crawl@kyluka.com; http://www.kyluka.com/static/crawl.html)'
-    family: 'Kyluka crawl'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'LNSpiderguy'
-    family: 'LNSpiderguy'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'LarbinWebCrawler (internet@bredband.net)'
-    family: 'LarbinWebCrawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'LargeSmall Crawler'
-    family: 'LargeSmall Crawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Lijit Crawler (+http://www.lijit.com/robot/crawler)'
-    family: 'Lijit Crawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'DocWeb Link Crawler (http://doc.php.net)'
-    family: 'Link Crawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; Lipperhey Spider; http://www.lipperhey.com/)'
-    family: 'Lipperhey Spider'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'LookUpCrawler - lookupcanada.ca [ZSEBOT]'
-    family: 'LookUpCrawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Lycos_Spider_(modspider)'
-    family: 'Lycos_Spider_'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0) METASpider'
-    family: 'METASpider'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'MQbot http://metaquerier.cs.uiuc.edu/crawler'
-    family: 'MQbot'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'MSIndianWebcrawl'
-    family: 'MSIndianWebcrawl'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'MSR-ISRCCrawler'
-    family: 'MSR-ISRCCrawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'MedSpider v0.0.1'
-    family: 'MedSpider'
-    major: '0'
-    minor: '0'
-    patch: '1'
-
-  - user_agent_string: 'Social Media Crawler using your Home URL on Twitter,Facebook,Myspace,Linkedin by ProfileCapture - contact profilecapture@gmail.com to report any problems with my crawling. http://profilecapture.com'
-    family: 'Media Crawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/4.0 (compatible); MSIE 5.0; Medialab Spider'
-    family: 'Medialab Spider'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'DomainsDB.net MetaCrawler v.0.9.7b (http://domainsdb.net/)'
-    family: 'MetaCrawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'FAST MetaWeb Crawler (helpdesk at fastsearch dot com)'
-    family: 'MetaWeb Crawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'CC Metadata Scaper http://wiki.creativecommons.org/Metadata_Scraper'
-    family: 'Metadata_Scraper'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: "MicrosoftPrototypeCrawler (How's my crawling? mailto:newbiecrawler@hotmail.com)"
-    family: 'MicrosoftPrototypeCrawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; MixrankBot; crawler@mixrank.com)'
-    family: 'MixrankBot'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Sogou Mobile Spider1.0 (http://wap.sogou.com)'
-    family: 'Mobile Spider1'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla-Firefox-Spider(Wenanry)'
-    family: 'Mozilla-Firefox-Spider'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'MultiCrawler, http://sw.deri.org/2006/04/multicrawler/robots.html'
-    family: 'MultiCrawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en; rv:1.9.1.3; MySpaceScraper) Gecko/20090824 Firefox/3.5.3 (.NET CLR 3.5.30729)'
-    family: 'MySpaceScraper'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Norbert the Spider(Burf.com)'
-    family: 'Norbert the Spider'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'NuSearch Spider www.nusearch.com'
-    family: 'NuSearch Spider'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Nusearch Spider (compatible; MSIE 6.0)'
-    family: 'Nusearch Spider'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'OpenWebSpider (link collector; http://links.port30.se/cia.html) v (http://www.openwebspider.org/)'
-    family: 'OpenWebSpider'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; OpenX Spider; http://www.openx.org)'
-    family: 'OpenX Spider'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; OpenindexSpider; +http://www.openindex.io/en/webmasters/spider.html)'
-    family: 'OpenindexSpider'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Orgbybot/OrgbyBot v1.2 (Spidering the net for Orgby; http://www.orgby.com/  ; Orgby.com Search Engine)'
-    family: 'Orgbybot'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'PDFBot (crawler@pdfind.com)'
-    family: 'PDFBot'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; InfoPath.2; .NET CLR 3.5.21022; .NET CLR 3.5.30729; MS-RTC LM 8; OfficeLiveConnector.1.4; OfficeLivePatch.1.3; .NET CLR 3.0.30729) Jakarta Commons-HttpClient/3.0-rc3 PHPCrawl GStreamer souphttpsrc libsoup/2.27.4 PycURL/7.19.0 XML-RPC for PHP 2.2.1 GoogleFriendConnect/1.0 HTMLParser/1.6 gPodder/0.15.2 ( http://gpodder.org/) anw webtool LoadControl/1.3 WinHttp urlgrabber/3.1.0'
-    family: 'PHPCrawl'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Fast PartnerSite Crawler'
-    family: 'PartnerSite Crawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Patwebbot (http://www.herz-power.de/technik.html)'
-    family: 'Patwebbot'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'PeerFactor Crawler'
-    family: 'PeerFactor Crawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'PhoenixWebBot Beta'
-    family: 'PhoenixWebBot'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'pipeLiner/0.10 (PipeLine Spider; http://www.pipeline-search.com/webmaster.html)'
-    family: 'PipeLine Spider'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'ProjectWF-java-test-crawler'
-    family: 'ProjectWF-java-test-crawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Punk Spider/PunkSPIDER-v0.1'
-    family: 'Punk Spider'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'QuerySeekerSpider ( http://queryseeker.com/bot.html )'
-    family: 'QuerySeekerSpider'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'QuickFinder Crawler'
-    family: 'QuickFinder Crawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'OpenLink Virtuoso RDF crawler'
-    family: 'RDF crawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Jaxified Public RSS Crawler ( http://www.jaxified.com/)'
-    family: 'RSS Crawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'RSS-SPIDER (RSS Feed Seeker http://www.MyNewFavoriteThing.com/fsb.php)'
-    family: 'RSS-SPIDER'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'RavenCrawler'
-    family: 'RavenCrawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'ReadPath_Spider'
-    family: 'ReadPath_Spider'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'LinkStar Research Crawler (http://linkstar.com/),gzip(gfe),gzip(gfe)'
-    family: 'Research Crawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Research spider - ak1835@albany.edu'
-    family: 'Research spider'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'RoboCrawl (www.canadiancontent.net)'
-    family: 'RoboCrawl'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (Windows NT 6.2; WOW64) Runet-Research-Crawler (itrack.ru/research/cmsrate; rating@itrack.ru)'
-    family: 'Runet-Research-Crawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Teragram/SAS Crawler'
-    family: 'SAS Crawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'SCrawlTest/CR1 (CWD; http://sproose.com; crawl@sproose.com)'
-    family: 'SCrawlTest'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; SISTRIX Crawler; http://crawler.sistrix.net/)'
-    family: 'SISTRIX Crawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36; SSL-Crawler: http://crawler.dcsec.uni-hannover.de'
-    family: 'SSL-Crawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'SWAT Crawler. AGH University project. In case of problem contact: opal@tempus.metal.agh.edu.pl. Thanks.'
-    family: 'SWAT Crawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'SandCrawler - Compatibility Testing'
-    family: 'SandCrawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Sangfor Spider'
-    family: 'Sangfor Spider'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/3.0 (compatible; ScollSpider; http://www.webwobot.com)'
-    family: 'ScollSpider'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'ScreenerBot Crawler Beta 2.0 (+http://www.ScreenerBot.com)'
-    family: 'ScreenerBot'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'SearchSpider.com/1.1'
-    family: 'SearchSpider'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'ownCloud Server Crawler'
-    family: 'Server Crawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Shim-Crawler'
-    family: 'Shim-Crawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'ShowyouBot (http://showyou.com/crawler)'
-    family: 'crawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.0) SiteCheck-sitecrawl by Siteimprove.com'
-    family: 'SiteCheck-sitecrawl'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'SiteCrawler,gzip(gfe),gzip(gfe)'
-    family: 'SiteCrawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/5.5 (compatible; MSIE 5.5; Windows NT 5.1) Sitespider+ b432.1'
-    family: 'Sitespider'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'SocialSpider-Finder/0.2'
-    family: 'SocialSpider'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Sosoblogspider+(+http://help.soso.com/soso-blog-spider.htm)'
-    family: 'Sosoblogspider'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Sosoimagespider ( http://help.soso.com/soso-image-spider.htm)'
-    family: 'Sosoimagespider'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Sosospider+(+help.soso.com/webspider.htm)'
-    family: 'Sosospider'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/4.0 (compatible; SpeedySpider; www.entireweb.com)'
-    family: 'SpeedySpider'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'SpiderKU/0.9'
-    family: 'SpiderKU'
-    major: '0'
-    minor: '9'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; SpiderLing (a SPIDER for LINGustic research); +http://nlp.fi.muni.cz/projects/biwec/)'
-    family: 'SpiderLing'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'SpiderMan 3.0.1-2-11-111 (CP/M;8-bit)'
-    family: 'SpiderMan'
-    major: '3'
-    minor: '0'
-    patch: '1'
-
-  - user_agent_string: 'Mozilla/4.0 (compatible; SpiderView 1.0;unix)'
-    family: 'SpiderView'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Spider_Monkey/7.06 (SpiderMonkey.ca info at http://SpiderMonkey.ca /sm.shtml)'
-    family: 'Spider_Monkey'
-    major: '7'
-    minor: '06'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; Spiderlytics/1.0; +spider@spiderlytics.com)'
-    family: 'Spiderlytics'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'PKU Student Spider'
-    family: 'Student Spider'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Symfony Spider (http://symfony.com/spider)'
-    family: 'Symfony Spider'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Synthesio Crawler release MonaLisa (contact at synthesio dot fr)'
-    family: 'Synthesio Crawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'TAMU_CS_IRL_CRAWLER/1.0'
-    family: 'TAMU_CS_IRL_CRAWLER'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'TTop-Crawler,gzip(gfe),gzip(gfe)'
-    family: 'TTop-Crawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'TayaCrawler (Beta; v0.1; tayadev@nexdegree.com)'
-    family: 'TayaCrawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'TelemetrySpider2/0.1 linux'
-    family: 'TelemetrySpider2'
-    major: '0'
-    minor: '1'
-    patch:
-
-  - user_agent_string: 'Theme Spider ( http://www.themespider.com/spider.html)'
-    family: 'Theme Spider'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Thesis_php_crawler'
-    family: 'Thesis_php_crawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Trends Crawler, Real time trends bot (info@trendscrawler.com)'
-    family: 'Trends Crawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'TwitSpider'
-    family: 'TwitSpider'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Twitmunin Crawler http://www.twitmunin.com'
-    family: 'Twitmunin Crawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; TwitterCrawler)'
-    family: 'TwitterCrawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'UCMore Crawler App'
-    family: 'UCMore Crawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'UOLCrawler (soscrawler@uol.com.br)'
-    family: 'UOLCrawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Links4US-Crawler, ( http://links4us.com/)'
-    family: 'US-Crawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'USyd-NLP-Spider (http://www.it.usyd.edu.au/~vinci/bot.html)'
-    family: 'USyd-NLP-Spider'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; UnisterBot; crawler@unister.de)'
-    family: 'UnisterBot'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/4.0, VM-Crawler/cs version info  ofni noisrev sc'
-    family: 'VM-Crawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'WEBB Crawler - see: http://badcheese.com/robots.html'
-    family: 'WEBB Crawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'WSDL Crawler'
-    family: 'WSDL Crawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'EmeraldShield.com WebBot'
-    family: 'com WebBot'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'WebCompanyCrawler'
-    family: 'WebCompanyCrawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'WebCrawler v1.3'
-    family: 'WebCrawler'
-    major: '1'
-    minor: '3'
-    patch:
-
-  - user_agent_string: 'WebVulnCrawl.blogspot.com/1.0 libwww-perl/5.803'
-    family: 'WebVulnCrawl'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'CyberPatrol SiteCat Webbot (http://www.cyberpatrol.com/cyberpatrolcrawler.asp)'
-    family: 'SiteCat Webbot'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'EricssonR320/R1A (Fast Wireless Crawler)'
-    family: 'Wireless Crawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'X-Crawler'
-    family: 'X-Crawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'XYZ Spider'
-    family: 'XYZ Spider'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Y!J-BRJ/YATS crawler (http://help.yahoo.co.jp/help/jp/search/indexing/indexing-15.html)'
-    family: 'YATS crawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Y!J-BRO/YFSJ crawler (compatible; Mozilla 4.0; MSIE 5.5; http://help.yahoo.co.jp/help/jp/search/indexing/indexing-15.html; YahooFeedSeekerJp/2.0)'
-    family: 'YFSJ crawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'YRL_ODP_CRAWLER'
-    family: 'YRL_ODP_CRAWLER'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (Android 3.0; YRSpider; +http://www.yunrang.com/yrspider.html)'
-    family: 'YRSpider'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: "YebolBot (Email: yebolbot@gmail.com; If the web crawling affects your web service, or you don't like to be crawled by us, please email us. We'll stop crawling immediately.)"
-    family: 'YebolBot'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/4.0 (compatible; Yet-Another-Spider; )'
-    family: 'Yet-Another-Spider'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'YisouSpider'
-    family: 'YisouSpider'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'NL-Crawler'
-    family: 'NL-Crawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; YoudaoBot-rts/1.0; http://www.youdao.com/help/webmaster/spider/; )'
-    family: 'YoudaoBot'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'ZIBB Crawler (email address / WWW address)'
-    family: 'ZIBB Crawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'ZillaCrawler'
-    family: 'ZillaCrawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'ZoomSpider - wrensoft.com'
-    family: 'ZoomSpider'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Zspider (+http://www.zhanzhangsou.com/index.htm)'
-    family: 'Zspider'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/4.0 (compatible; MSIE 7.0; acedo crawler extension)'
-    family: 'acedo crawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'acquia-crawler (detected bad behaviour? please tell us at it@acquia.com),gzip(gfe),gzip(gfe)'
-    family: 'acquia-crawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.21 (KHTML, like Gecko) adspider Safari/537.21'
-    family: 'adspider'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'amphetameme crawler (crawler@amphetameme.com)'
-    family: 'amphetameme crawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; ayna-crawler  http://www.ayna.com)'
-    family: 'ayna-crawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; Bender; http://sites.google.com/site/bendercrawler)'
-    family: 'bendercrawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'snap.com beta crawler v0'
-    family: 'beta crawler'
-    major: '0'
-    minor:
-    patch:
-
-  - user_agent_string: 'blackspider'
-    family: 'blackspider'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/4.0 (compatible; bmdspider; windows 5.1)'
-    family: 'bmdspider'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'boitho crawler'
-    family: 'boitho crawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'cis455crawler'
-    family: 'cis455crawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'http://www.Syntryx.com/ ANT Chassis 9.27; Mozilla/4.0 compatible crawler'
-    family: 'compatible crawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'crawler4j (http://code.google.com/p/crawler4j/)'
-    family: 'crawler4j'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'dtSearchSpider'
-    family: 'dtSearchSpider'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Enterprise_Search/1.0 110 (http://www.innerprise.net/es-spider.asp)'
-    family: 'es-spider'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'eseek-crawler.0.5 (crawler@exactseek.com)'
-    family: 'eseek-crawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'exooba/exooba crawler (exooba; exooba)'
-    family: 'exooba crawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'flatlandbot/allspark (Flatland Industries Web Spider; http://www.flatlandindustries.com/flatlandbot; jason@flatlandindustries.com)'
-    family: 'flatlandbot'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'haupia-crawler'
-    family: 'haupia-crawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'hitcrawler_0.1 (ringken@gmail.com)'
-    family: 'hitcrawler_0'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'iaskspider2 (iask@staff.sina.com.cn)'
-    family: 'iaskspider2'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'visaduhoc.info Crawler'
-    family: 'info Crawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'ip-web-crawler.com'
-    family: 'ip-web-crawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'jikespider "Mozilla/5.0'
-    family: 'jikespider'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0) compatible; kototoi-crawl@yl.is.s.u-tokyo.ac.jp'
-    family: 'kototoi-crawl'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'lb-spider'
-    family: 'lb-spider'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'ldspider (BTC 2011 crawl, harth@kit.edu, http://code.google.com/p/ldspider/wiki/Robots)'
-    family: 'ldspider'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; lemurwebcrawler admin@lemurproject.org; +http://boston.lti.cs.cmu.edu/crawler_12/)'
-    family: 'lemurwebcrawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'lmspider (lmspider@scansoft.com)'
-    family: 'lmspider'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'lworldspider'
-    family: 'lworldspider'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'trunk.ly spider contact@trunk.ly'
-    family: 'ly spider'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Vodafone mCrawler (bergum@fast.no)'
-    family: 'mCrawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'media-percbotspider <ops@percolate.com>'
-    family: 'media-percbotspider'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'DoCoMo/2.0 N902iS(c100;TB;W24H12)(compatible; moba-crawler; http://crawler.dena.jp/)'
-    family: 'moba-crawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Nokia6680/1.0 ((4.04.07) SymbianOS/8.0 Series60/2.6 Profile/MIDP-2.0 Configuration/CLDC-1.1 (for mobile crawler) )'
-    family: 'mobile crawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'n4p_bot (crawler@n4p.com)'
-    family: 'n4p_bot'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'na-Webcrawler (helpdesk@newsaktuell.de)'
-    family: 'na-Webcrawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: "nuSearch Spider <a href='http://www.nusearch.com'>www.nusearch.com</a> (compatible; MSIE 4.01; Windows NT)"
-    family: 'nuSearch Spider'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'parallelContextFocusCrawler1.1parallelContextFocusCrawler1.1'
-    family: 'parallelContextFocusCrawler1'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'persomm-spider/v1.0'
-    family: 'persomm-spider'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; http://www.pregnancycrawler.com)'
-    family: 'pregnancycrawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; ptd-crawler;  http://bixolabs.com/crawler/ptd/; crawler@bixolabs.com)'
-    family: 'ptd-crawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; pub-crawler; +http://wiki.github.com/bixo/bixo/bixocrawler; bixo-dev@yahoogroups.com)'
-    family: 'pub-crawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'pythonic-crawler (suzuki@tkl.iis.u-tokyo.ac.jp)'
-    family: 'pythonic-crawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (Windows NT 6.2; WOW64) Russian CMS rating crawler (itrack.ru/cmsrate, avlasov@itrack.ru)'
-    family: 'rating crawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'camoca/camoca-n.1.2 (super-agent; search crawler; info at does not exist dot com)'
-    family: 'search crawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; sgbot v0.01a, sgcrawlerbot@gmail.com)'
-    family: 'sgbot'
-    major: '0'
-    minor: '01'
-    patch:
-
-  - user_agent_string: 'spiderpig/0.1,gzip(gfe),gzip(gfe)'
-    family: 'spiderpig'
-    major: '0'
-    minor: '1'
-    patch:
-
-  - user_agent_string: 'ssearch_bot (sSearch Crawler; http://www.semantissimo.de)'
-    family: 'ssearch_bot'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; suggybot v0.01a, http://blog.suggy.com/was-ist-suggy/suggy-webcrawler/)'
-    family: 'suggybot'
-    major: '0'
-    minor: '01'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; uMBot-FC/1.0; mailto: crawling@ubermetrics-technologies.com)'
-    family: 'uMBot'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'unchaos_crawler_2.0.2 (search.engine@unchaos.com)'
-    family: 'unchaos_crawler_2'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'updated/0.1-alpha (updated crawler; http://www.updated.com; crawler@updated.com)'
-    family: 'updated crawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (Yahoo-Test/4.0 mailto:vertical-crawl-support@yahoo-inc.com)'
-    family: 'vertical-crawl'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'yp-crawl@attinteractive.com'
-    family: 'yp-crawl'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'yrspider (Mozilla/5.0 (compatible; YRSpider;  http://www.yunrang.com/yrspider.html))'
-    family: 'yrspider'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (Yahoo-Test/4.0 ysm-keystone-crawl-support@yahoo-inc.com)'
-    family: 'ysm-keystone-crawl'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; zyklop; +http://www.seoratio.de/zyklop-crawler/)'
-    family: 'zyklop-crawler'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (Linux; U; Android 4.2.1; en-gb; CUBOT ONE Build/JOP40D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30'
-    family: 'Android'
-    major: '4'
-    minor: '2'
-    patch: '1'
-
-  - user_agent_string: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9) AppleWebKit/537.71 (KHTML, like Gecko) Version/7.0 Safari/537.71 (Rival IQ, rivaliq.com)'
-    family: 'Rival IQ'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (Linux; U; en-gb) AppleWebKit/418.9.1 (KHTML, like Gecko) SiteCon/8.10.9'
-    family: 'SiteCon'
-    major: '8'
-    minor: '10'
-    patch: '9'
-
-  - user_agent_string: 'Mozilla/5.0 (iPhone; CPU iPhone OS 8_3 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) FxiOS/1.0 Mobile/12F69 Safari/600.1.4'
-    family: 'Firefox iOS'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (iPad; CPU iPhone OS 8_3 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) FxiOS/1.0 Mobile/12F69 Safari/600.1.4'
-    family: 'Firefox iOS'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_4) AppleWebKit/537.36 (KHTML, like Gecko) Spotify/1.0.9.133 Safari/537.36'
-    family: 'Spotify'
-    major: '1'
-    minor: '0'
-    patch: '9'
-
-  - user_agent_string: 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Spotify/1.0.9.133 Safari/537.36'
-    family: 'Spotify'
-    major: '1'
-    minor: '0'
-    patch: '9'
-
-  - user_agent_string: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/537.36 (KHTML, like Gecko) Spotify/1.0.4.90 Safari/537.36'
-    family: 'Spotify'
-    major: '1'
-    minor: '0'
-    patch: '4'
-
-  - user_agent_string: 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Spotify/1.0.3.101 Safari/537.36'
-    family: 'Spotify'
-    major: '1'
-    minor: '0'
-    patch: '3'
-
-  - user_agent_string: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/537.36 (KHTML, like Gecko) Spotify/1.0.8.59 Safari/537.36'
-    family: 'Spotify'
-    major: '1'
-    minor: '0'
-    patch: '8'
-
-  - user_agent_string: 'Mozilla/5.0 (Android 5.0; Tablet; rv:41.0) Gecko/41.0 Firefox/41.0'
-    family: 'Firefox Mobile'
-    major: '41'
-    minor: '0'
-    patch:
-
-  - user_agent_string: '[FBAN/FB4A;FBAV/3.4;FBBV/258875;FBDM/{density=0.75,width=240,height=320};FBLC/tr_TR;FBCR/o2 - de;FBPN/com.facebook.katana;FBDV/LG-E400;FBSV/2.3.6;]'
-    family: 'Facebook'
-    major: '3'
-    minor: '4'
-    patch:
-
-  - user_agent_string: '[FBAN/FB4A;FBAV/2.3;FBBV/149649;FBDM/{density=1.5,width=480,height=800};FBLC/es_ES;FBCR/;FBPN/com.facebook.katana;FBDV/LG-P920;FBSV/2.2.2;]'
-    family: 'Facebook'
-    major: '2'
-    minor: '3'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (Linux; U; Android 2.3.4; en-us; SCH-R720 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 [FBAN/FB4A;FBAV/1.8.1;FBPN/com.facebook.katana;FBDV/SCH-R720;FBSV/2.3.4;FBDM/{density=1.0,width=320,height='
-    family: 'Facebook'
-    major: '1'
-    minor: '8'
-    patch: '1'
-
-  - user_agent_string: 'Mozilla/5.0 (Linux; U; Android 4.2.2; de-de; 706_v92_jbla_fhd Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 [FB_IAB/FB4A;FBAV/24.0.0.30.15;]'
-    family: 'Facebook'
-    major: '24'
-    minor: '0'
-    patch: '0'
-
-  - user_agent_string: 'Mozilla/5.0 (iPhone; CPU iPhone OS 6_1_3 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Mobile/10B329 [FBAN/FBIOS;FBAV/6.5.1;FBBV/377040;FBDV/iPhone4,1;FBMD/iPhone;FBSN/iPhone OS;FBSV/6.1.3;FBSS/2; FBCR/Telekom.de;FBID/phone;FBLC/de_DE;'
-    family: 'Facebook'
-    major: '6'
-    minor: '5'
-    patch: '1'
-
-  - user_agent_string: 'Mozilla/5.0 (iPhone; CPU iPhone OS 6_1_3 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Mobile/10B329 [FBAN/FBIOS;FBAV/6.2;FBBV/228172;FBDV/iPhone5,1;FBMD/iPhone;FBSN/iPhone OS;FBSV/6.1.3;FBSS/2; FBCR/o2-de;FBID/phone;FBLC/pt_BR;FBOP/1]'
-    family: 'Facebook'
-    major: '6'
-    minor: '2'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (iPad; CPU OS 5_0 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Mobile/9A334 [FBAN/FBIOS;FBAV/6.5.1;FBBV/377040;FBDV/iPad2,1;FBMD/iPad;FBSN/iPhone OS;FBSV/5.0;FBSS/1; FBCR/;FBID/tablet;FBLC/de_DE;FBOP/1]'
-    family: 'Facebook'
-    major: '6'
-    minor: '5'
-    patch: '1'
-
-  - user_agent_string: 'Mozilla/5.0 (iPad; U; CPU iPhone OS 4_3_2 like Mac OS X; de_DE) AppleWebKit (KHTML, like Gecko) Mobile [FBAN/FBForIPhone;FBAV/4.0.2;FBBV/4020.0;FBDV/iPad1,1;FBMD/iPad;FBSN/iPhone OS;FBSV/4.3.2;FBSS/1; FBCR/;FBID/tablet;FBLC/de_DE;FBSF/1.0]'
-    family: 'Facebook'
-    major: '4'
-    minor: '0'
-    patch: '2'
-
-  - user_agent_string: 'Mozilla/5.0 (iPad; U; CPU iPhone OS 4_3_5 like Mac OS X; de_DE) AppleWebKit (KHTML, like Gecko) Mobile [FBAN/FBForIPhone;FBAV/4.0.3;FBBV/4030.0;FBDV/iPad2,2;FBMD/iPad;FBSN/iPhone OS;FBSV/4.3.5;FBSS/1; FBCR/Telekom.de;FBID/tablet;FBLC/de_DE;FBS'
-    family: 'Facebook'
-    major: '4'
-    minor: '0'
-    patch: '3'
-
-  - user_agent_string: 'Mozilla/5.0 (iPhone; CPU iPhone OS 5_1_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Mobile/9B206 [FBAN/FBIOS;FBAV/6.1;FBBV/201075;FBDV/iPhone3,1;FBMD/iPhone;FBSN/iPhone OS;FBSV/5.1.1;FBSS/2; FBCR/Vodafone.de;FBID/phone;FBLC/en_US;FBOP/1]'
-    family: 'Facebook'
-    major: '6'
-    minor: '1'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (iPhone; CPU iPhone OS 8_2 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Mobile/12D508 [FBAN/GroupsForiOS;FBAV/9.0;FBBV/7752968;FBDV/iPhone7,2;FBMD/iPhone;FBSN/iPhone OS;FBSV/8.2;FBSS/2; FBCR/Telekom.de;FBID/phone;FBLC/de_'
-    family: 'Facebook'
-    major: '9'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_1 like Mac OS X; fr_FR) AppleWebKit (KHTML, like Gecko) Mobile [FBAN/FBForIPhone;FBAV/4.0;FBBV/4000.0;FBDV/iPhone1,2;FBMD/iPhone;FBSN/iPhone OS;FBSV/4.1;FBSS/1; FBCR/Carrier;FBID/phone;FBLC/fr_FR;FBSF/1.'
-    family: 'Facebook'
-    major: '4'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Dalvik/1.2.0 (Linux; U; Android 2.2.2; HTC Desire Build/FRG83G) [FBAN/Orca-Android;FBAV/2.6.1-release;FBLC/de_DE;FBBV/288543;FBCR/o2 - de;FBMF/HTC;FBBD/htc_wwe;FBDV/HTC Desire;FBSV/2.2.2]'
-    family: 'Facebook'
-    major: '2'
-    minor: '6'
-    patch: '1'
-
-  - user_agent_string: '[FBAN/FB4A;FBAV/3.6;FBBV/330148;FBDM/{density=0.75,width=240,height=320};FBLC/de_DE;FBCR/o2 - de;FBPN/com.facebook.katana;FBDV/GT-S5570;FBSV/2.2.1;FBCA/armeabi:unknown;]'
-    family: 'Facebook'
-    major: '3'
-    minor: '6'
-    patch:
-
-  - user_agent_string: '[FBAN/PAAA;FBAV/1.7;FBDM/{density=2.0,width=720,height=1280};FBLC/es_ES;FB_FW/2;FBSN/Android;FBCR/FONIC;FBDV/GT-I9300;FBSV/4.1.2;]'
-    family: 'Facebook'
-    major: '1'
-    minor: '7'
-    patch:
-
-  - user_agent_string: '[FBAN/PAAA;FBAV/1.9;FBDM/{density=2.0,width=720,height=1280};FBLC/de_DE;FB_FW/2;FBSN/Android;FBCR/o2 - de;FBDV/GT-I9300;FBSV/4.3;]'
-    family: 'Facebook'
-    major: '1'
-    minor: '9'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (iPhone; CPU iPhone OS 6_1_4 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Mobile/10B350 [Pinterest/iOS]'
-    family: 'Pinterest'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (Linux; Android 4.4.2; A3-A11 Build/KOT49H) AppleWebKit/537.36 (KHTML like Gecko) Version/4.0 Chrome/30.0.0.0 Safari/537.36 [Pinterest/Android]'
-    family: 'Pinterest'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (iPhone; CPU iPhone OS 6_0_1 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Mobile/10A525 [Pinterest/iOS]'
-    family: 'Pinterest'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Pinterest for Android Tablet/1.8.4 (SGP321; 4.3)'
-    family: 'Pinterest'
-    major: '1'
-    minor: '8'
-    patch: '4'
-
-  - user_agent_string: 'Pinterest for Android Tablet/4.3.1 (A7600-H; 4.4.2)'
-    family: 'Pinterest'
-    major: '4'
-    minor: '3'
-    patch: '1'
-
-  - user_agent_string: 'Pinterest for Android/1.1.1 (endeavoru; 4.1.1)'
-    family: 'Pinterest'
-    major: '1'
-    minor: '1'
-    patch: '1'
-
-  - user_agent_string: 'Pinterest for Android/3.6.2 (klte; 4.4.2)'
-    family: 'Pinterest'
-    major: '3'
-    minor: '6'
-    patch: '2'
-
-  - user_agent_string: 'Pinterest/0.1'
-    family: 'Pinterest'
-    major: '0'
-    minor: '1'
-    patch:
-
-  - user_agent_string: 'Pinterest/0.2 (+http://www.pinterest.com/)'
-    family: 'Pinterest'
-    major: '0'
-    minor: '2'
-    patch:
-
-  - user_agent_string: 'Pinterest/3.2 CFNetwork/672.0.8 Darwin/14.0.0'
-    family: 'CFNetwork'
-    major: '672'
-    minor: '0'
-    patch: '8'
-
-  - user_agent_string: 'Pinterest/3.3.3 CFNetwork/609.1.4 Darwin/13.0.0'
-    family: 'CFNetwork'
-    major: '609'
-    minor: '1'
-    patch: '4'
-
-  - user_agent_string: 'Pinterest/3356 CFNetwork/711.0.6 Darwin/14.0.0'
-    family: 'CFNetwork'
-    major: '711'
-    minor: '0'
-    patch: '6'
-
-  - user_agent_string: 'Pinterest/4.1.3 CFNetwork/672.1.14 Darwin/14.0.0'
-    family: 'CFNetwork'
-    major: '672'
-    minor: '1'
-    patch: '14'
-
-  - user_agent_string: 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/538.1 (KHTML, like Gecko) qutebrowser/0.2.1 Safari/538.1'
-    family: 'qutebrowser'
-    major: '0'
-    minor: '2'
-    patch: '1'
-
-  - user_agent_string: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) pagedraw/0.1.0 Chrome/49.0.2623.75 Electron/0.37.8 Safari/537.36'
-    family: 'Electron'
-    major: '0'
-    minor: '37'
-    patch: '8'
-
-  - user_agent_string: 'Mozilla/5.0 (iPad; U; CPU OS 4_3_2 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Mobile'
-    family: 'Mobile Safari UI/WKWebView'
-    major: '4'
-    minor: '3'
-    patch: '2'
-
-  - user_agent_string: 'Mozilla/5.0 (iPad; U; CPU OS 4_3_2 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8H7 Safari'
-    family: 'Mobile Safari'
-    major: '5'
-    minor: '0'
-    patch: '2'
-
-  - user_agent_string: 'Mozilla/5.0 (Macintosh; Intel Mac OS X) AppleWebKit/538.1 (KHTML, like Gecko) QupZilla/1.6.3 Safari/538.1'
-    family: 'QupZilla'
-    major: '1'
-    minor: '6'
-    patch: '3'
-
-  - user_agent_string: 'Mozilla/5.0 (OS/2 Warp 4.5) AppleWebKit/537.21 (KHTML, like Gecko) QupZilla/1.6.4 Safari/537.21'
-    family: 'QupZilla'
-    major: '1'
-    minor: '6'
-    patch: '4'
-
-  - user_agent_string: 'Mozilla/5.0 (Unknown; UNIX BSD/SYSV system) AppleWebKit/534.34 (KHTML, like Gecko) QupZilla/1.7.0 Safari/534.34'
-    family: 'QupZilla'
-    major: '1'
-    minor: '7'
-    patch: '0'
-
-  - user_agent_string: 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.21 (KHTML, like Gecko) QupZilla/1.6.1 Safari/537.21'
-    family: 'QupZilla'
-    major: '1'
-    minor: '6'
-    patch: '1'
-
-  - user_agent_string: 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/538.1 (KHTML, like Gecko) Otter/0.9.03 beta 3 Safari/538.1'
-    family: 'Otter'
-    major: '0'
-    minor: '9'
-    patch: '03'
-
-  - user_agent_string: 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/538.1 (KHTML, like Gecko) Otter/0.9.04'
-    family: 'Otter'
-    major: '0'
-    minor: '9'
-    patch: '04'
-
-  - user_agent_string: 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.21 (KHTML, like Gecko) Otter/0.9.04-dev'
-    family: 'Otter'
-    major: '0'
-    minor: '9'
-    patch: '04'
-
-  - user_agent_string: 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/538.1 (KHTML, like Gecko) Otter/0.3.01-dev Safari/538.1'
-    family: 'Otter'
-    major: '0'
-    minor: '3'
-    patch: '01'
-
-  - user_agent_string: 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/538.1 (KHTML, like Gecko) Otter/0.9.03 beta 3 Safari/538.1'
-    family: 'Otter'
-    major: '0'
-    minor: '9'
-    patch: '03'
-
-  - user_agent_string: 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/538.1 (KHTML, like Gecko) Otter/0.9.05'
-    family: 'Otter'
-    major: '0'
-    minor: '9'
-    patch: '05'
-
-  - user_agent_string: 'Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; NOKIA; Lumia 930) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Mobile Safari/537.36 Edge/12.0'
-    family: 'Edge Mobile'
-    major: '12'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) brave/0.7.11 Chrome/47.0.2526.110 Brave/0.36.5 Safari/537.36'
-    family: 'Brave'
-    major: '0'
-    minor: '7'
-    patch: '11'
-
-  - user_agent_string: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) brave/0.7.12 Chrome/47.0.2526.110 Brave/0.36.7 Safari/537.36 '
-    family: 'Brave'
-    major: '0'
-    minor: '7'
-    patch: '12'
-
-  - user_agent_string: 'Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) brave/0.7.10 Chrome/47.0.2526.110 Brave/0.36.5 Safari/537.36'
-    family: 'Brave'
-    major: '0'
-    minor: '7'
-    patch: '10'
-
-  - user_agent_string: 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome Safari/537.36'
-    family: 'HeadlessChrome'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Roku/DVP-6.2 (096.02E06005A)'
-    family: 'Roku'
-    major: '6'
-    minor: '2'
-    patch:
-
-  - user_agent_string: 'Roku/DVP-5.0 (025.00E08043A)'
-    family: 'Roku'
-    major: '5'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Roku/DVP-5.1 (025.01E01195A)'
-    family: 'Roku'
-    major: '5'
-    minor: '1'
-    patch:
-
-  - user_agent_string: 'Microsoft Office/12.0 (Windows NT 6.1; Microsoft Office Outlook 12.0.6739; Pro)'
-    family: 'Outlook'
-    major: '2007'
-    minor:
-    patch:
-
-  - user_agent_string: 'Microsoft Office/14.0 (Windows NT 6.1; Microsoft Outlook 14.0.5128; Pro)'
-    family: 'Outlook'
-    major: '2010'
-    minor:
-    patch:
-
-  - user_agent_string: 'Microsoft Office/16.0 (Microsoft Outlook Mail 16.0.6525; Pro)'
-    family: 'Outlook'
-    major: '2016'
-    minor:
-    patch:
-
-  - user_agent_string: 'Microsoft Office/16.0 (Windows NT 10.0; Microsoft Outlook 16.0.6326; Pro)'
-    family: 'Outlook'
-    major: '2016'
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 10.0; WOW64; Trident/8.0; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729; Microsoft Outlook 16.0.6366; ms-office; MSOffice 16)'
-    family: 'Outlook'
-    major: '2016'
-    minor:
-    patch:
-
-  - user_agent_string: 'Outlook-Express/7.0 (MSIE 7.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; TmstmpExt)'
-    family: 'Windows Live Mail'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Outlook-Express/7.0 (MSIE 7.0; Windows NT 5.1; Trident/4.0; AskTB5.6; TmstmpExt)'
-    family: 'Windows Live Mail'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Outlook-Express/7.0 (MSIE 7.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; Media Center PC 6.0; OfficeLiveConnector.1.4; OfficeLivePatch.1.3; InfoPath.3; FDM; TmstmpExt)'
-    family: 'Windows Live Mail'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Outlook-Express/7.0 (MSIE 6.0; Windows NT 5.1; SV1; GTB6.3; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; InfoPath.2; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; OfficeLiveConnector.1.3; OfficeLivePatch.0.0; TmstmpExt)'
-    family: 'Windows Live Mail'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Outlook-Express/7.0 (MSIE 8; Windows NT 5.1; Trident/4.0; GTB7.0; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; TmstmpExt)'
-    family: 'Windows Live Mail'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Outlook-Express/7.0 (MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.1; TmstmpExt)'
-    family: 'Windows Live Mail'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Outlook-Express/7.0 (MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; HPDTDF; .NET4.0C; BRI/2; AskTbLOL/5.12.5.17640; TmstmpExt)'
-    family: 'Windows Live Mail'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (Linux; Android 5.0.1; GT-I9505 Build/LRX22C) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.111 YaBrowser/16.2.1.1239.00 Mobile Safari/537.36'
-    family: 'Yandex Browser'
-    major: '16'
-    minor: '2'
-    patch: '1'
-
-  - user_agent_string: 'Mozilla/5.0 (Linux; Android 4.4.2; SM-G800F Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.135 MobileIron/1.6.0 Mobile Safari/537.36'
-    family: 'MobileIron'
-    major: '1'
-    minor: '6'
-    patch: '0'
-
-  - user_agent_string: 'Mozilla/5.0 (Linux; Android 4.4.4; GT-I9195I Build/KTU84P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.130 Crosswalk/14.43.343.17 Mobile Safari/537.36'
-    family: 'Crosswalk'
-    major: '14'
-    minor: '43'
-    patch: '343'
-
-  - user_agent_string: 'Mozilla/5.0 (Linux; Android 6.0.1; Z831 Build/MMB29M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.94 Mobile Crosswalk/11.45.2454.20160425 Mobile Safari/537.36'
-    family: 'Crosswalk'
-    major: '11'
-    minor: '45'
-    patch: '2454'
-
-  - user_agent_string: 'Mozilla/5.0 (Linux; Android 4.1.2; GT-S7710 Build/JZO54K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile'
-    family: 'Chrome Mobile'
-    major: '18'
-    minor: '0'
-    patch: '1025'
-
-  - user_agent_string: 'Mozilla/5.0 (iPad; U; CPU OS 5_1_1 like Mac OS X; en-us) AppleWebKit/534.46.0 (KHTML, like Gecko) Chrome/19.0.1084.60 Mobile/9B206 Safari/7534.48.3'
-    family: 'Chrome Mobile'
-    major: '19'
-    minor: '0'
-    patch: '1084'
-
-  - user_agent_string: 'Mozilla/5.0 (Linux; U; Android 4.4.4; de-de; SM-G850F Build/KTU84P) AppleWebKit/537.16 (KHTML, like Gecko) Version/4.0 Mobile Safari/537.16 Chrome/33.0.0.0'
-    family: 'Chrome Mobile'
-    major: '33'
-    minor: '0'
-    patch: '0'
-
-  - user_agent_string: 'Mozilla/5.0 (Web0S; Linux/SmartTV) AppleWebKit/537.41 (KHTML, like Gecko) Large Screen WebAppManager Safari/537.41'
-    family: 'Safari'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'MacOutlook/15.27.0.161010 (Intelx64 Mac OS X Version 10.11.6 (Build 15G1108))'
-    family: 'MacOutlook'
-    major: '15'
-    minor: '27'
-    patch: '0'
-
-  - user_agent_string: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/601.7.8 (KHTML, like Gecko) Slack_SSB/2.0.3'
-    family: 'Slack Desktop Client'
-    major: '2'
-    minor: '0'
-    patch: '3'
-
-  - user_agent_string: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/537.36 (KHTML, like Gecko) AtomShell/2.6.0 Chrome/56.0.2924.87 Electron/1.6.3 Safari/537.36 MacAppStore/16.5.0 Slack_SSB/2.6.0'
-    family: 'Slack Desktop Client'
-    major: '2'
-    minor: '6'
-    patch: '0'
-
-  - user_agent_string: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Slack/2.6.0-beta18998559 Chrome/56.0.2924.87 AtomShell/1.6.3 Safari/537.36 Slack_SSB/2.6.0'
-    family: 'Slack Desktop Client'
-    major: '2'
-    minor: '6'
-    patch: '0'
-
-  - user_agent_string: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/603.1.30 (KHTML, like Gecko) HipChat/732 (modern)'
-    family: 'HipChat Desktop Client'
-    major: '732'
-    minor:
-    patch:
-
-  - user_agent_string: 'HipChat Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) QtWebEngine/5.7.0 Chrome/49.0.2623.111 Safari/537.36'
-    family: 'HipChat Desktop Client'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Microsoft-CryptoAPI/6.1'
-    family: 'Microsoft-CryptoAPI'
-    major: '6'
-    minor: '1'
-    patch:
-
-  - user_agent_string: 'Microsoft SkyDriveSync 17.3.6517.0809 ship; Windows NT 6.1 Service Pack 1 (7601)'
-    family: 'Microsoft SkyDriveSync'
-    major: '17'
-    minor: '3'
-    patch: '6517'
-
-  - user_agent_string: 'ExchangeServicesClient/14.02.0051.000'
-    family: 'ExchangeServicesClient'
-    major: '14'
-    minor: '02'
-    patch: '0051'
-
-  - user_agent_string: 'Mac OS X/10.11.6 (15G1004); ExchangeWebServices/6.0 (243); Mail/9.3 (3124)'
-    family: 'ExchangeWebServices'
-    major: '6'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0+(iPhone;+CPU+iPhone+OS+9_3_1+like+Mac+OS+X)+AppleWebKit/601.1.46+(KHTML,+like+Gecko)+Version/9.0+Mobile/13E238+Safari/601.1'
-    family: 'Mobile Safari'
-    major: '9'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0+(iPad;+CPU+OS+9_3_1+like+Mac+OS+X)+AppleWebKit/601.1.46+(KHTML,+like+Gecko)+Version/9.0+Mobile/13E238+Safari/601.1'
-    family: 'Mobile Safari'
-    major: '9'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Slackbot-LinkExpanding 1.0 (+https://api.slack.com/robots)'
-    family: 'Slackbot-LinkExpanding'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Slack-ImgProxy 1.136 (+https://api.slack.com/robots)'
-    family: 'Slack-ImgProxy'
-    major: '1'
-    minor: '136'
-    patch:
-
-  - user_agent_string: 'okhttp/3.4.2'
-    family: 'okhttp'
-    major: '3'
-    minor: '4'
-    patch: '2'
-
-  - user_agent_string: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_0) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1300.0 Iron/23.0.1300.0 Safari/537.11'
-    family: 'Iron'
-    major: '23'
-    minor: '0'
-    patch: '1300'
-
-  - user_agent_string: 'Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/534.13 (KHTML, like Gecko) Iron/9.0.600.2 Chrome/9.0.600.2 Safari/534.13'
-    family: 'Iron'
-    major: '9'
-    minor: '0'
-    patch: '600'
-
-  - user_agent_string: 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2750.0 Iron Safari/537.36'
-    family: 'Iron'
-    major: '52'
-    minor: '0'
-    patch: '2750'
-
-  - user_agent_string: 'Mozilla/5.0 (Android; U; en-US) AppleWebKit/533.19.4 (KHTML, like Gecko) AdobeAIR/23.0'
-    family: 'AdobeAIR'
-    major: '23'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US) AppleWebKit/533.19.4 (KHTML, like Gecko) AdobeAIR/19.0'
-    family: 'AdobeAIR'
-    major: '19'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (iOS; U; en-US) AppleWebKit/533.19.4 (KHTML, like Gecko) AdobeAIR/19.0'
-    family: 'AdobeAIR'
-    major: '19'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Kurio/3.0.8 Build 65303(Android Kitkat 4.4.4; Phone)'
-    family: 'Kurio App'
-    major: '3'
-    minor: '0'
-    patch: '8'
-
-  - user_agent_string: 'BacaBerita App/5.5.0 (Linux; U; Android 4.4.4; en-us) Mobile Safari'
-    family: 'BacaBerita App'
-    major: '5'
-    minor: '5'
-    patch: '0'
-
-  - user_agent_string: 'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) MxBrowser/4.5.2.2000 Chrome/30.0.1551.0 Safari/537.36'
-    family: 'Maxthon'
-    major: '4'
-    minor: '5'
-    patch: '2'
-
-  - user_agent_string: 'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Maxthon/4.4.5.1000 Chrome/30.0.1599.101 Safari/537.36'
-    family: 'Maxthon'
-    major: '4'
-    minor: '4'
-    patch: '5'
-
-  - user_agent_string: 'Mozilla/5.0 (Linux; Android 7.0; SM-G930P Build/NRD90M; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/58.0.3029.83 Mobile Safari/537.36 MxBrowser/4.5.10.7000'
-    family: 'Maxthon'
-    major: '4'
-    minor: '5'
-    patch: '10'
-
-  - user_agent_string: 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.6 (KHTML, like Gecko) Chrome/18.0.1025.133 Safari/537.6 Midori/0.5'
-    family: 'Midori'
-    major: '0'
-    minor: '5'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (iPad; U; CPU like Mac OS X; FIT_LANG_REPLACE) AppleWebKit/532+ (KHTML, like Gecko) Version/3.0 Mobile/1A538b Safari/419.3 Midori/0.4'
-    family: 'Midori'
-    major: '0'
-    minor: '4'
-    patch:
-
-  - user_agent_string: 'curl/7.29.0'
-    family: 'curl'
-    major: '7'
-    minor: '29'
-    patch: '0'
-
-  - user_agent_string: 'Debian APT-HTTP/1.3 (1.0.1ubuntu2)'
-    family: 'Debian APT-HTTP'
-    major: '1'
-    minor: '3'
-    patch:
-
-  - user_agent_string: 'jupdate'
-    family: 'jupdate'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'libcurl-agent/1.0'
-    family: 'libcurl-agent'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'libwww-perl/6.05'
-    family: 'libwww-perl'
-    major: '6'
-    minor: '05'
-    patch:
-
-  - user_agent_string: 'Microsoft-CryptoAPI/6.3'
-    family: 'Microsoft-CryptoAPI'
-    major: '6'
-    minor: '3'
-    patch:
-
-  - user_agent_string: 'OpenBSD ftp'
-    family: 'OpenBSD ftp'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'SophosAgent/1.0 (type= spa )'
-    family: 'SophosAgent'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'SophosUpdateManager/1.5.7.50 SDDS/2.0 (u= EO2ANA123G c= 6342da15-f351-4ab7-9656-3f5f2d50885d )'
-    family: 'SophosUpdateManager'
-    major: '1'
-    minor: '5'
-    patch: '7'
-
-  - user_agent_string: 'Ubuntu APT-HTTP/1.3 (0.7.20.2ubuntu6)'
-    family: 'Ubuntu APT-HTTP'
-    major: '1'
-    minor: '3'
-    patch:
-
-  - user_agent_string: 'urlgrabber/3.10 yum/3.4.3'
-    family: 'urlgrabber'
-    major: '3'
-    minor: '10'
-    patch:
-
-  - user_agent_string: 'urlgrabber/3.9.1 yum/3.2.29'
-    family: 'urlgrabber'
-    major: '3'
-    minor: '9'
-    patch: '1'
-
-  - user_agent_string: 'Wget/1.14 (linux-gnu)'
-    family: 'Wget'
-    major: '1'
-    minor: '14'
-    patch:
-
-  - user_agent_string: 'Windows-Update-Agent/7.9.9600.17729 Client-Protocol/1.21'
-    family: 'Windows-Update-Agent'
-    major: '7'
-    minor: '9'
-    patch: '9600'
-
-  - user_agent_string: 'Windows-Update-Agent/7.9.9600.18094 Client-Protocol/1.21'
-    family: 'Windows-Update-Agent'
-    major: '7'
-    minor: '9'
-    patch: '9600'
-
-  - user_agent_string: 'Mozilla/5.0 (Linux; Android 5.1.1; MI NOTE Pro Build/LMY47V; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/48.0.2564.116 Mobile Safari/537.36 baidubrowser/7.7.13.0 (Baidu; P1 5.1.1)'
-    family: 'Baidu Browser'
-    major: '7'
-    minor: '7'
-    patch: '13'
-
-  - user_agent_string: 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Dragon/36.1.1.21 Chrome/36.0.1985.97 Safari/537.36'
-    family: 'Dragon'
-    major: '36'
-    minor: '1'
-    patch: '1'
-
-  - user_agent_string: 'Mozilla/5.0 (Windows; U; Windows CE 5.1; rv:1.8.1a3) Gecko/20060610 Minimo/0.016'
-    family: 'Minimo'
-    major: '0'
-    minor: '016'
-    patch:
-
-  - user_agent_string: 'Opera/9.80 (MAUI Runtime; Opera Mini/4.4.39008/37.9178; U; en) Presto/2.12.423 Version/12.16'
-    family: 'Opera Mini'
-    major: '4'
-    minor: '4'
-    patch: '39008'
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; 008/0.83; http://www.80legs.com/spider.html) Gecko/2008032620'
-    family: '008'
-    major: '0'
-    minor: '83'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (iPhone; CPU iPhone OS 9_3_4 like Mac OS X) AppleWebKit/601.1 (KHTML, like Gecko) Outlook-iOS-Android/1.0 Mobile/13G35 Safari/601.1.46")'
-    family: 'Outlook-iOS-Android'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.21 Safari/537.36 MMS/1.0.2459.0'
-    family: 'Opera Neon'
-    major: '1'
-    minor: '0'
-    patch: '2459'
-
-  - user_agent_string: 'PANTECH-EUROPA-U4000-orange/1.0 Obigo/Q04C MMS/1.2.0 profile/MIDP-2.0 configuration/CLDC-1.1'
-    family: 'Obigo'
-    major: '04'
-    minor:
-    patch:
-
-  - user_agent_string: 'masscan/1.0 (https://github.com/robertdavidgraham/masscan)'
-    family: 'masscan'
-    major: '1'
-    minor: '0'
-    patch:
-
-
-  - user_agent_string: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36 SznProhlizec/3.8.4 NWjs/0.19.6'
-    family: 'Seznam.cz'
-    major: '3'
-    minor: '8'
-    patch: '4'
- 
-  - user_agent_string: 'Mozilla/5.0 (iPhone; CPU iPhone OS 10_2_1 like Mac OS X) AppleWebKit/602.4.6 (KHTML, like Gecko) Mobile/14D27 SznProhlizec/4.4i'
-    family: 'Seznam.cz'
-    major: '4'
-    minor: '4'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) coc_coc_browser/42.0 CoRom/36.0.1985.144 Chrome/36.0.1985.144 Safari/537.36'
-    family: 'Coc Coc'
-    major: '42'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) coc_coc_browser/49.0 Chrome/43.0.2357.138 Safari/537.36'
-    family: 'Coc Coc'
-    major: '49'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) coc_coc_browser/50.0.125 Chrome/44.0.2403.125 Safari/537.36'
-    family: 'Coc Coc'
-    major: '50'
-    minor: '0'
-    patch: '125'
-
-  - user_agent_string: 'Mozilla/5.0 (compatible; Qwantify/2.4w; +https://www.qwant.com/)/2.4w'
-    family: 'Qwantify'
-    major: '2'
-    minor: '4'
-    patch:
-
-  - user_agent_string: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12'
-    family: 'Edge'
-    major: '12'
-    minor:
-    patch:
-
-  - user_agent_string: 'Bloglovin/1.0 (http://www.bloglovin.com; 1000 subscribers)'
-    family: 'Bloglovin'
-    major: '1'
-    minor: '0'
-    patch:
-
-  - user_agent_string: 'Feedbin feed-id:1033517 - 1000 subscribers'
-    family: 'Feedbin'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Tiny Tiny RSS/16.3 (http://tt-rss.org/)'
-    family: 'Tiny Tiny RSS'
-    major: '16'
-    minor: '3'
-    patch:
-
-  - user_agent_string: 'Mtps Feed Aggregation System'
-    family: 'Mtps Feed Aggregation System'
-    major:
-    minor:
-    patch:
-
-  - user_agent_string: 'Stringer'
-    family: 'Stringer'
-    major:
-    minor:
-    patch:
-
+  - user_agent_string: 'Luminary/1.0'
+    family: 'Luminary'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Luminary/70 CFNetwork/978.0.7 Darwin/18.5.0'
+    family: 'Luminary'
+    major: '70'
+    minor:
+    patch:
+
+  - user_agent_string: 'Luminary/70 CFNetwork/975.0.3 Darwin/18.2.0'
+    family: 'Luminary'
+    major: '70'
+    minor:
+    patch:
+
+  - user_agent_string: 'Luminary/1.0.3 build 71/iOS 12.2'
+    family: 'Luminary'
+    major: '1'
+    minor: '0'
+    patch: '3'
+
+  - user_agent_string: 'Luminary/1.0.2 build 57/Android SDK 28'
+    family: 'Luminary'
+    major: '1'
+    minor: '0'
+    patch: '2'
+
+  - user_agent_string: 'Luminary/1.0.2 build 57/Android SDK 23'
+    family: 'Luminary'
+    major: '1'
+    minor: '0'
+    patch: '2'
+
+  - user_agent_string: 'Luminary/70 CFNetwork/976 Darwin/18.2.0'
+    family: 'Luminary'
+    major: '70'
+    minor:
+    patch:
+
+  - user_agent_string: 'Luminary/70 CFNetwork/978.0.7 Darwin/18.6.0'
+    family: 'Luminary'
+    major: '70'
+    minor:
+    patch:
+
+  - user_agent_string: 'Luminary/1.0.2 build 57/Android SDK 26'
+    family: 'Luminary'
+    major: '1'
+    minor: '0'
+    patch: '2'
+
+  - user_agent_string: 'LuminaryStage/3311 CFNetwork/978.0.7 Darwin/18.5.0'
+    family: 'Luminary'
+    major: '3311'
+    minor:
+    patch:
+
+  - user_agent_string: 'fakeLuminary/1.0'
+    family: 'Other'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'atc/1.0 watchOS/5.1.3 model/Watch3,4 hwp/t8004 build/16S535 (6; dt:156)'
+    family: 'Apple Watch App'
+    major: '3'
+    minor: '4'
+    patch:
+
+  - user_agent_string: 'atc/1.0 watchOS/5.2 model/Watch4,4 hwp/t8006 build/16T225 (6; dt:193)'
+    family: 'Apple Watch App'
+    major: '4'
+    minor: '4'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (Windows; U; en-US) AppleWebKit/531.9 (KHTML, like Gecko) AdobeAIR/2.5.1'
+    family: 'AdobeAIR'
+    major: '2'
+    minor: '5'
+    patch: '1'
+
+  - user_agent_string: 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; en-us; Silk/1.1.0-80) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16 Silk-Accelerated=true'
+    family: 'Amazon Silk'
+    major: '1'
+    minor: '1'
+    patch: '0-80'
+
+  - user_agent_string: 'Mozilla/5.0 (Linux; U; en-us; KFTT Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Silk/2.0 Safari/535.19 Silk-Accelerated=false'
+    family: 'Amazon Silk'
+    major: '2'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (Linux; U; en-us; KFOT Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Silk/2.1 Safari/535.19 Silk-Accelerated=true'
+    family: 'Amazon Silk'
+    major: '2'
+    minor: '1'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (Linux; U; en-us; KFTT Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Silk/2.2 Safari/535.19 Silk-Accelerated=true'
+    family: 'Amazon Silk'
+    major: '2'
+    minor: '2'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-gb; KFTT Build/IML74K) AppleWebKit/537.36 (KHTML, like Gecko) Silk/3.25 like Chrome/34.0.1847.137 Mobile Safari/537.36'
+    family: 'Amazon Silk'
+    major: '3'
+    minor: '25'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (Linux; U; Android 2.2.2; en-gb; HTC Desire Build/FRG83G) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1'
+    family: 'Android'
+    major: '2'
+    minor: '2'
+    patch: '2'
+
+  - user_agent_string: 'Mozilla/5.0 (Linux; U; Android 2.3.3; en-fr; HTC/WildfireS/1.33.163.2 Build/GRI40) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1'
+    family: 'Android'
+    major: '2'
+    minor: '3'
+    patch: '3'
+
+  - user_agent_string: 'Mozilla/5.0 (Linux; U; Android 2.3.4; en-us; Kindle Fire Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1'
+    family: 'Android'
+    major: '2'
+    minor: '3'
+    patch: '4'
+
+  - user_agent_string: 'Mozilla/5.0 (Linux;U;Android 2.3.5;en-us;TECNO T3 Build/master) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1'
+    family: 'Android'
+    major: '2'
+    minor: '3'
+    patch: '5'
+
+  - user_agent_string: 'Mozilla/5.0 (Linux; U; Android 3.0.1; en-us; GT-P7510 Build/HRI83) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13'
+    family: 'Android'
+    major: '3'
+    minor: '0'
+    patch: '1'
+
+  - user_agent_string: 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; KFTT Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30'
+    family: 'Android'
+    major: '4'
+    minor: '0'
+    patch: '3'
+
+  - user_agent_string: 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; KFOT Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30'
+    family: 'Android'
+    major: '4'
+    minor: '0'
+    patch: '3'
+
+  - user_agent_string: 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; Amaze_4G Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30'
+    family: 'Android'
+    major: '4'
+    minor: '0'
+    patch: '3'
+
+  - user_agent_string: 'Mozilla/5.0 (Linux; U; Android 4.0.4; en-us; PJ83100/2.20.502.7 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.0'
+    family: 'Android'
+    major: '4'
+    minor: '0'
+    patch: '4'
+
+  - user_agent_string: 'Mozilla/5.0 (Windows; U; Windows NT 6.1; zh_CN) AppleWebKit/534.7 (KHTML, like Gecko) Chrome/7.0 baidubrowser/1.x Safari/534.7'
+    family: 'Baidu Browser'
+    major: '1'
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; baidubrowser 1.x)'
+    family: 'Baidu Browser'
+    major: '1'
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.15 Safari/535.11 QQBrowser/6.13.13719.201'
+    family: 'QQ Browser'
+    major: '6'
+    minor: '13'
+    patch: '13719'
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0; QQBrowser/7.6.21433.400)'
+    family: 'QQ Browser'
+    major: '7'
+    minor: '6'
+    patch: '21433'
+
+  - user_agent_string: 'Mozilla/5.0 (Linux; U; Android 4.1.1; zh-cn; MI 2S Build/JRO03L) AppleWebKit/537.36 (KHTML, like Gecko)Version/4.0 MQQBrowser/5.0 Mobile Safari/537.36'
+    family: 'QQ Browser Mobile'
+    major: '5'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (iPhone 5; CPU iPhone OS 7_0_6 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/6.0 MQQBrowser/5.0.5 Mobile/11B651 Safari/8536.25'
+    family: 'QQ Browser Mobile'
+    major: '5'
+    minor: '0'
+    patch: '5'
+
+  - user_agent_string: 'MQQBrowser/371 Mozilla/5.0 (iPhone 4S; CPU iPhone OS 6_0_1 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Mobile/10A523 Safari/7534.48.3'
+    family: 'QQ Browser Mobile'
+    major: '371'
+    minor:
+    patch:
+
+  - user_agent_string: 'MQQBrowser/1.0/Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; NOKIA; RM-910apacprc200)'
+    family: 'QQ Browser Mobile'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'QQBrowser (Linux; U; zh-cn; HTC Hero Build/FRF91)'
+    family: 'QQ Browser'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (BB10; Touch) AppleWebKit/537.3+ (KHTML, like Gecko) Version/10.0.9.388 Mobile Safari/537.3+'
+    family: 'BlackBerry WebKit'
+    major: '10'
+    minor: '0'
+    patch: '9'
+
+  - user_agent_string: 'Mozilla/5.0 (PlayBook; U; RIM Tablet OS 1.0.0; en-US) AppleWebKit/534.8+ (KHTML, like Gecko) Version/0.0.1 Safari/534.8+'
+    family: 'BlackBerry WebKit'
+    major: '1'
+    minor: '0'
+    patch: '0'
+
+  - user_agent_string: 'Mozilla/5.0 (BlackBerry; U; BlackBerry 9800; en-GB) AppleWebKit/534.1+ (KHTML, like Gecko) Version/6.0.0.141 Mobile Safari/534.1+'
+    family: 'BlackBerry WebKit'
+    major: '6'
+    minor: '0'
+    patch: '0'
+
+  - user_agent_string: 'Mozilla/5.0 (BlackBerry; U; BlackBerry 9800; en-US) AppleWebKit/534.1  (KHTML, like Gecko) Version/6.0.0.91 Mobile Safari/534.1 '
+    family: 'BlackBerry WebKit'
+    major: '6'
+    minor: '0'
+    patch: '0'
+
+  - user_agent_string: 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; BOLT/2.101) AppleWebKit/530  (KHTML, like Gecko) Version/4.0 Safari/530.17'
+    family: 'BOLT'
+    major: '2'
+    minor: '101'
+    patch:
+
+  - user_agent_string: 'Bunjalloo/0.7.6(Nintendo DS;U;en)'
+    family: 'Bunjalloo'
+    major: '0'
+    minor: '7'
+    patch: '6'
+
+  - user_agent_string: 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; chromeframe; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729)'
+    family: 'IE'
+    major: '8'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; chromeframe; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; Sleipnir 2.8.5)3.0.30729)'
+    family: 'Sleipnir'
+    major: '2'
+    minor: '8'
+    patch: '5'
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; Windows NT 6.1; Catchpoint) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.81 Safari/537.36'
+    family: 'Catchpoint'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; Windows NT 6.1; Catchpoint bot) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.81 Safari/537.36'
+    family: 'Catchpoint bot'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (Macintosh) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.98 Safari/537.36 CreativeCloud/4.8.1.435'
+    family: 'Adobe CreativeCloud'
+    major: '4'
+    minor: '8'
+    patch: '1'
+
+  - user_agent_string: 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; chromeframe/11.0.660.0)'
+    family: 'Chrome Frame'
+    major: '11'
+    minor: '0'
+    patch: '660'
+
+  - user_agent_string: 'Mozilla/5.0 (Linux; Android 7.1.2; Nexus 5X Build/N2G47W; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/58.0.3029.83 Mobile Safari/537.36'
+    family: 'Chrome Mobile WebView'
+    major: '58'
+    minor: '0'
+    patch: '3029'
+    patch_minor: '83'
+
+  - user_agent_string: 'Mozilla/5.0 (Linux; Android 4.4.4; SHV31 Build/S2280) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/33.0.0.0 Mobile Safari/537.36'
+    family: 'Chrome Mobile WebView'
+    major: '33'
+    minor: '0'
+    patch: '0'
+    patch_minor: '0'
+
+  - user_agent_string: 'Mozilla/5.0 (Linux; Android 4.2; Galaxy Nexus Build/JOP40C) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19'
+    family: 'Chrome Mobile'
+    major: '18'
+    minor: '0'
+    patch: '1025'
+    patch_minor: '166'
+
+  - user_agent_string: 'Mozilla/5.0 (Linux; Android 4.1.1; SPH-L710 Build/JRO03L) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19'
+    family: 'Chrome Mobile'
+    major: '18'
+    minor: '0'
+    patch: '1025'
+    patch_minor: '166'
+
+  - user_agent_string: 'Mozilla/5.0 (Linux; Android 4.4.2; Nexus 5 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.122 Mobile Safari/537.36'
+    family: 'Chrome Mobile'
+    major: '35'
+    minor: '0'
+    patch: '1916'
+    patch_minor: '122'
+
+  - user_agent_string: 'Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Ubuntu/10.10 Chromium/10.0.648.133 Chrome/10.0.648.133 Safari/534.16'
+    family: 'Chromium'
+    major: '10'
+    minor: '0'
+    patch: '648'
+    patch_minor: '133'
+
+  - user_agent_string: 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.5 (KHTML, like Gecko) Comodo_Dragon/4.1.1.11 Chrome/4.1.249.1042 Safari/532.5'
+    family: 'Comodo Dragon'
+    major: '4'
+    minor: '1'
+    patch: '1'
+
+  - user_agent_string: 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.16) Gecko/20110302 Conkeror/0.9.2 (Debian-0.9.2+git100804-1)'
+    family: 'Conkeror'
+    major: '0'
+    minor: '9'
+    patch: '2'
+
+  - user_agent_string: 'Mozilla/5.0 (X11; Linux x86_64; rv:2.0) Gecko/20110408 conkeror/0.9.3'
+    family: 'Conkeror'
+    major: '0'
+    minor: '9'
+    patch: '3'
+
+  - user_agent_string: 'Mozilla/5.0 (SAMSUNG; SAMSUNG-GT-S8500/S8500XXJEE; U; Bada/1.0; nl-nl) AppleWebKit/533.1 (KHTML, like Gecko) Dolfin/2.0 Mobile WVGA SMM-MMS/1.2.0 OPN-B'
+    family: 'Dolfin'
+    major: '2'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)'
+    family: 'FacebookBot'
+    major: '1'
+    minor: '1'
+    patch:
+
+  - user_agent_string: 'LinkedInBot/1.0 (compatible; Mozilla/5.0; Jakarta Commons-HttpClient/3.1 +http://www.linkedin.com)'
+    family: 'LinkedInBot'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Google (+https://developers.google.com/+/web/snippet/)'
+    family: 'GooglePlusBot'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Firefox/11.0 (via ggpht.com GoogleImageProxy)'
+    family: 'GmailImageProxy'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Twitterbot/1.0'
+    family: 'Twitterbot'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'WhatsApp/2.17.70 W'
+    family: 'WhatsApp'
+    major: '2'
+    minor: '17'
+    patch: '70'
+
+  - user_agent_string: 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.1pre) Gecko/20090717 Ubuntu/9.04 (jaunty) Shiretoko/3.5.1pre'
+    family: 'Firefox (Shiretoko)'
+    major: '3'
+    minor: '5'
+    patch: '1pre'
+
+  - user_agent_string: 'Mozilla/5.0 (X11; Linux i686 (x86_64); rv:2.0b4) Gecko/20100818 Firefox/4.0b4'
+    family: 'Firefox Beta'
+    major: '4'
+    minor: '0'
+    patch: 'b4'
+
+  - user_agent_string: 'Mozilla/5.0 (X11; Linux x86_64; rv:2.0b8pre) Gecko/20101031 Firefox-4.0/4.0b8pre'
+    family: 'Firefox Beta'
+    major: '4'
+    minor: '0'
+    patch: 'b8pre'
+
+  - user_agent_string: 'Mozilla/5.0 (X11; U; SunOS i86pc; en-US; rv:1.8.0.5) Gecko/20060728 Firefox/1.5.0.5'
+    family: 'Firefox'
+    major: '1'
+    minor: '5'
+    patch: '0'
+
+  - user_agent_string: 'Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.12) Gecko/20101027 Ubuntu/10.04 (lucid) Firefox/3.6.12'
+    family: 'Firefox'
+    major: '3'
+    minor: '6'
+    patch: '12'
+
+  - user_agent_string: 'Mozilla/5.0 (Mobile; rv:15.0) Gecko/15.0 Firefox/15.0'
+    family: 'Firefox Mobile'
+    major: '15'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534+ (KHTML, like Gecko) FireWeb/1.0.0.0'
+    family: 'FireWeb'
+    major: '1'
+    minor: '0'
+    patch: '0'
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)'
+    family: 'Googlebot'
+    major: '2'
+    minor: '1'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (DTV) AppleWebKit/531.2+ (KHTML, like Gecko) Espial/6.1.6 AQUOSBrowser/2.0 (US01DTV;V;0001;0001)'
+    family: 'Espial'
+    major: '6'
+    minor: '1'
+    patch: '6'
+
+  - user_agent_string: 'iBrowser/Mini2.8 (Nokia5130c-2/07.97)'
+    family: 'iBrowser Mini'
+    major: '2'
+    minor: '8'
+    patch:
+
+  - user_agent_string: 'ICE Browser/5.05 (Java 1.4.0; Windows 2000 5.0 x86)'
+    family: 'ICE Browser'
+    major: '5'
+    minor: '05'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (X11; Linux x86_64; rv:2.0) Gecko/20110417 IceCat/4.0'
+    family: 'IceCat'
+    major: '4'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0; XBLWP7; ZuneWP7)'
+    family: 'IE Large Screen'
+    major: '9'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Mozilla/4.0 (compatible; MSIE 7.0; Windows Phone OS 7.0; Trident/3.1; IEMobile/7.0; SAMSUNG; SGH-i917)'
+    family: 'IE Mobile'
+    major: '7'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; SGH-i917)'
+    family: 'IE Mobile'
+    major: '9'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; NOKIA; Lumia 800)'
+    family: 'IE Mobile'
+    major: '9'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Lumia 920)'
+    family: 'IE Mobile'
+    major: '10'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6; .NET CLR 2.0.50727; .NET CLR 1.1.4322)'
+    family: 'IE'
+    major: '8'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Mozilla/4.0 WebTV/2.6 (compatible; MSIE 4.0)'
+    family: 'IE'
+    major: '4'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Mozilla/4.0 (compatible; MSIE 5.17; Mac_PowerPC)'
+    family: 'IE'
+    major: '5'
+    minor: '17'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; ARM; Trident/6.0)'
+    family: 'IE'
+    major: '10'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6; chromeframe; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)'
+    family: 'IE'
+    major: '8'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Java/1.6.0_43'
+    family: 'Java'
+    major: '6'
+    minor: '0'
+    patch: '43'
+
+  - user_agent_string: 'Java/1.7.0_71'
+    family: 'Java'
+    major: '7'
+    minor: '0'
+    patch: '71'
+
+  - user_agent_string: 'Java/1.8.0_25'
+    family: 'Java'
+    major: '8'
+    minor: '0'
+    patch: '25'
+
+  - user_agent_string: 'Mozilla/5.0 (Linux; U; en-US) AppleWebKit/528.5+ (KHTML, like Gecko, Safari/528.5+) Version/4.0 Kindle/3.0 (screen 600x800; rotate)'
+    family: 'Kindle'
+    major: '3'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (X11; U; Linux; de-DE) AppleWebKit/527  (KHTML, like Gecko, Safari/419.3) konqueror/4.3.1'
+    family: 'Konqueror'
+    major: '4'
+    minor: '3'
+    patch: '1'
+
+  - user_agent_string: 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.17) Gecko/20110414 Lightning/1.0b3pre Thunderbird/3.1.10'
+    family: 'Lightning'
+    major: '1'
+    minor: '0'
+    patch: 'b3pre'
+
+  - user_agent_string: 'Mozilla/5.0 (Linux x86_64) AppleWebKit/534.26+ WebKitGTK+/1.4.1 luakit/f3a2dbe'
+    family: 'LuaKit'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.47 Safari/535.11 MRCHROME'
+    family: 'Mail.ru Chromium Browser'
+    major: '17'
+    minor: '0'
+    patch: '963'
+
+  - user_agent_string: 'Midori/0.2 (X11; Linux; U; en-us) WebKit/531.2 '
+    family: 'Midori'
+    major: '0'
+    minor: '2'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B367 Safari/531.21.10'
+    family: 'Mobile Safari'
+    major: '4'
+    minor: '0'
+    patch: '4'
+
+  - user_agent_string: 'Mozilla/5.0 (iPod; U; CPU iPhone OS 4_3_2 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8H7 Safari/6533.18.5'
+    family: 'Mobile Safari'
+    major: '5'
+    minor: '0'
+    patch: '2'
+
+  - user_agent_string: 'Mozilla/5.0 (iPhone; CPU iPhone OS 12_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 ManagedBrowser/20181024.1'
+    family: 'Mobile Safari UI/WKWebView'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.1.2 Safari/605.1.15'
+    family: 'Safari'
+    major: '12'
+    minor: '1'
+    patch: '2'
+
+  - user_agent_string: 'Mozilla/5.0 (iPhone; CPU iPhone OS 12_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148'
+    family: 'Mobile Safari UI/WKWebView'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (iPhone; CPU iPhone OS 12_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 ManagedBrowser/20181024.1'
+    family: 'Mobile Safari UI/WKWebView'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (iPod touch; CPU iPhone OS 9_3_2 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Mobile/13F69'
+    family: 'Mobile Safari UI/WKWebView'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (iPhone; CPU iPhone OS 7_1_2 like Mac OS X) AppleWebKit/537.51.2 (KHTML, like Gecko) Mobile/11D257'
+    family: 'Mobile Safari UI/WKWebView'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.3a1) Gecko/20100208 MozillaDeveloperPreview/3.7a1 (.NET CLR 3.5.30729)'
+    family: 'MozillaDeveloperPreview'
+    major: '3'
+    minor: '7'
+    patch: 'a1'
+
+  - user_agent_string: 'NCSA_Mosaic/2.0 (Windows 3.1)'
+    family: 'NCSA Mosaic'
+    major: '2'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (PLAYSTATION 3; 3.55)'
+    family: 'NetFront'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (PLAYSTATION 3 4.31) AppleWebKit/531.22.8 (KHTML, like Gecko)'
+    family: 'NetFront NX'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/4.0 (PSP (PlayStation Portable); 2.00)'
+    family: 'NetFront'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (PlayStation Vita 1.81) AppleWebKit/531.22.8 (KHTML, like Gecko) Silk/3.2'
+    family: 'NetFront NX'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/4.0 (compatible; Linux 2.6.10) NetFront/3.3 Kindle/1.0 (screen 600x800)'
+    family: 'NetFront'
+    major: '3'
+    minor: '3'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (Nintendo 3DS; U; ; en) Version/1.7498.US'
+    family: 'NetFront NX'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (Nintendo WiiU) AppleWebKit/534.52 (KHTML, like Gecko) NX/2.1.0.8.21 NintendoBrowser/1.0.0.7494.US'
+    family: 'NetFront NX'
+    major: '2'
+    minor: '1'
+    patch: '0'
+
+  - user_agent_string: 'HUAWEI-M750/001.00 ACS-NetFront/3.2'
+    family: 'NetFront'
+    major: '3'
+    minor: '2'
+    patch:
+
+  - user_agent_string: 'Mozilla/4.0 (BREW 3.1.5; U; en-us; Sanyo; NetFront/3.5.1/AMB) Boost SCP3810'
+    family: 'NetFront'
+    major: '3'
+    minor: '5'
+    patch: '1'
+
+  - user_agent_string: 'NetFront/3.5.1 (BREW 3.1.5; U; en-us; LG; NetFront/3.5.1/WAP) Sprint LN240 MMP/2.0 Profile/MIDP-2.1 Configuration/CLDC-1.1'
+    family: 'NetFront'
+    major: '3'
+    minor: '5'
+    patch: '1'
+
+  - user_agent_string: 'Mozilla/4.0 (Brew MP 1.0.2; U; en-us; Sanyo; NetFront/3.5.1/AMB) Sprint E4100'
+    family: 'NetFront'
+    major: '3'
+    minor: '5'
+    patch: '1'
+
+  - user_agent_string: 'PantechP6010/JNUS11072011 BMP/1.0.2 DeviceId/141020 NetFront/4.1 OMC/1.5.3 Profile/MIDP-2.1 Configuration/CLDC-1.1'
+    family: 'NetFront'
+    major: '4'
+    minor: '1'
+    patch:
+
+  - user_agent_string: 'NetFront/4.2 (BMP 1.0.4; U; en-us; LG; NetFront/4.2/AMB) Boost LG272 MMP/2.0 Profile/MIDP-2.1 Configuration/CLDC-1.1'
+    family: 'NetFront'
+    major: '4'
+    minor: '2'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (SymbianOS/9.4; U; Series60/5.0 Nokia5800d-1/21.0.025; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413'
+    family: 'Nokia Browser'
+    major: '7'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (Symbian/3; Series60/5.2 NokiaN8-00/013.016; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/525 (KHTML, like Gecko) Version/3.0 BrowserNG/7.2.8.10 3gpp-gba'
+    family: 'Nokia Browser'
+    major: '7'
+    minor: '2'
+    patch: '8'
+
+  - user_agent_string: 'Mozilla/5.0 (Symbian/3; Series60/5.2 NokiaN8-00/012.002; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/533.4 (KHTML, like Gecko) NokiaBrowser/7.3.0 Mobile Safari/533.4 3gpp-gba'
+    family: 'Nokia Browser'
+    major: '7'
+    minor: '3'
+    patch: '0'
+
+  - user_agent_string: 'Mozilla/5.0 (Symbian/3; Series60/5.3 Nokia701/111.020.0307; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/533.4 (KHTML, like Gecko) NokiaBrowser/7.4.1.14 Mobile Safari/533.4 3gpp-gba'
+    family: 'Nokia Browser'
+    major: '7'
+    minor: '4'
+    patch: '1'
+
+  - user_agent_string: 'Mozilla/5.0 (MeeGo; NokiaN9) AppleWebKit/534.13 (KHTML, like Gecko) NokiaBrowser/8.5.0 Mobile Safari/534.13'
+    family: 'Nokia Browser'
+    major: '8'
+    minor: '5'
+    patch: '0'
+
+  - user_agent_string: 'ALCATEL-OT510A/382 ObigoInternetBrowser/Q05A'
+    family: 'Obigo'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Huawei/1.0/0HuaweiG2800/WAP2.0/Obigo-Browser/Q03C MMS/Obigo-MMS/1.2'
+    family: 'Obigo'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'PantechP7040/JLUS04042011 Browser/Obigo/Q05A OMC/1.5.3 Profile/MIDP-2.1 Configuration/CLDC-1.1'
+    family: 'Obigo'
+    major: '05'
+    minor:
+    patch:
+
+  - user_agent_string: 'OneBrowser/3.0 (SAMSUNG-GT-S5253/S5253DDKJ2)'
+    family: 'ONE Browser'
+    major: '3'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'OneBrowser/3.0 (NokiaC2-00/03.42)'
+    family: 'ONE Browser'
+    major: '3'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'SAMSUNG-C3053/1.0 Openwave/6.2.3 Profile/MIDP-2.0 Configuration/CLDC-1.1 UP.Browser/6.2.3.3.c.1.101 (GUI) MMP/2.0'
+    family: 'Openwave'
+    major: '6'
+    minor: '2'
+    patch: '3'
+
+  - user_agent_string: 'Opera/9.80 (VRE; Opera Mini/4.2/28.2794; U; en) Presto/2.8.119 Version/11.10'
+    family: 'Opera Mini'
+    major: '4'
+    minor: '2'
+    patch:
+
+  - user_agent_string: 'Opera/9.80 (BREW; Opera Mini/5.1.191/27.2202; U; en) Presto/2.8.119 240X400 LG VN271'
+    family: 'Opera Mini'
+    major: '5'
+    minor: '1'
+    patch: '191'
+
+  - user_agent_string: 'Opera/9.80 (Series 60; Opera Mini/6.24455/25.677; U; fr) Presto/2.5.25 Version/10.54'
+    family: 'Opera Mini'
+    major: '6'
+    minor: '24455'
+    patch:
+
+  - user_agent_string: 'Opera/9.80 (BlackBerry; Opera Mini/7.0.31437/28.3030; U; en) Presto/2.8.119 Version/11.10'
+    family: 'Opera Mini'
+    major: '7'
+    minor: '0'
+    patch: '31437'
+
+  - user_agent_string: 'Opera/9.80 (J2ME/MIDP; Opera Mini/9.80 (S60; SymbOS; Opera Mobi/23.348; U; en) Presto/2.5.25 Version/10.54'
+    family: 'Opera Mini'
+    major: '9'
+    minor: '80'
+    patch:
+
+  - user_agent_string: 'Opera/9.80 (J2ME/MIDP; Opera Mini/9.80 (J2ME/22.478; U; en) Presto/2.5.25 Version/10.54'
+    family: 'Opera Mini'
+    major: '9'
+    minor: '80'
+    patch:
+
+  - user_agent_string: 'Opera/9.80 (J2ME/MIDP; Opera Mini/9 (Compatible; MSIE:9.0; iPhone; BlackBerry9700; AppleWebKit/24.746; U; en) Presto/2.5.25 Version/10.54'
+    family: 'Opera Mini'
+    major: '9'
+    minor:
+    patch:
+
+  - user_agent_string: 'Opera/9.80 (Android; Opera Mini/7.6.35766/35.5706; U; en) Presto/2.8.119 Version/11.10'
+    family: 'Opera Mini'
+    major: '7'
+    minor: '6'
+    patch: '35766'
+
+  - user_agent_string: 'Opera/9.80 (S60; SymbOS; Opera Mobi/275; U; es-ES) Presto/2.4.13 Version/10.00'
+    family: 'Opera Mobile'
+    major: '10'
+    minor: '00'
+    patch:
+
+  - user_agent_string: 'Opera/9.80 (Android 3.2; Linux; Opera Tablet/ADR-1106291546; U; en) Presto/2.8.149 Version/11.10'
+    family: 'Opera Tablet'
+    major: '11'
+    minor: '10'
+    patch:
+
+  - user_agent_string: 'Opera/9.30 (Nintendo Wii; U; ; 3642; en)'
+    family: 'Opera'
+    major: '9'
+    minor: '30'
+    patch:
+
+  - user_agent_string: 'Opera/9.50 (Nintendo DSi; Opera/507; U; en-US)'
+    family: 'Opera'
+    major: '9'
+    minor: '50'
+    patch:
+
+  - user_agent_string: 'Opera/9.80 (Windows NT 5.1; U; ru) Presto/2.5.24 Version/10.53'
+    family: 'Opera'
+    major: '10'
+    minor: '53'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.20 Safari/537.36 OPR/15.0.1147.18 (Edition Next)'
+    family: 'Opera'
+    major: '15'
+    minor: '0'
+    patch: '1147'
+
+  - user_agent_string: 'Mozilla/5.0 (Linux; Android; 4.1.2; GT-I9100 Build/000000) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1234.12 Mobile Safari/537.22 OPR/14.0.123.123'
+    family: 'Opera Mobile'
+    major: '14'
+    minor: '0'
+    patch: '123'
+
+  - user_agent_string: 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.10 Safari/537.36 OPR/27.0.1689.22 (Edition developer)'
+    family: 'Opera'
+    major: '27'
+    minor: '0'
+    patch: '1689'
+
+  - user_agent_string: 'Mozilla/5.0 (iPhone; CPU iPhone OS 7_0_3 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Coast/3.1.0.79792 Mobile/11B511 Safari/7534.48.3'
+    family: 'Opera Coast'
+    major: '3'
+    minor: '1'
+    patch: '0'
+
+  - user_agent_string: 'Mozilla/5.0 (iPhone; CPU iPhone OS 7_1_1 like Mac OS X) AppleWebKit/537.51.2 (KHTML, like Gecko) OPiOS/8.0.1.80062 Mobile/11D201 Safari/9537.53'
+    family: 'Opera Mini'
+    major: '8'
+    minor: '0'
+    patch: '1'
+
+  - user_agent_string: 'SomethingWeNeverKnewExisted'
+    family: 'Other'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (Series40; NokiaC2-03/07.48; Profile/MIDP-2.1 Configuration/CLDC-1.1) Gecko/20100401 S40OviBrowser/2.2.0.0.33'
+    family: 'Ovi Browser'
+    major: '2'
+    minor: '2'
+    patch: '0'
+
+  - user_agent_string: 'Mozilla/5.0 (Series40; NokiaX2-05/08.35; Profile/MIDP-2.1 Configuration/CLDC-1.1) Gecko/20100401 S40OviBrowser/2.0.2.68.14'
+    family: 'Ovi Browser'
+    major: '2'
+    minor: '0'
+    patch: '2'
+
+  - user_agent_string: 'Mozilla/5.0 (Windows NT 5.1; rv:2.0) Gecko/20110407 Firefox/4.0.3 PaleMoon/4.0.3'
+    family: 'Pale Moon'
+    major: '4'
+    minor: '0'
+    patch: '3'
+
+  - user_agent_string: 'Mozilla/5.0 (X11; Linux x86_64; rv:3.0) Goanna/20170207 PaleMoon/27.1.0'
+    family: 'Pale Moon'
+    major: '27'
+    minor: '1'
+    patch: '0'
+
+  - user_agent_string: 'Mozilla/5.0 (X11; Linux x86_64; rv:3.0) Gecko/20100101 Goanna/20170207 PaleMoon/27.1.0'
+    family: 'Pale Moon'
+    major: '27'
+    minor: '1'
+    patch: '0'
+
+  - user_agent_string: 'Mozilla/5.0 (X11; Linux x86_64; rv:45.9) Gecko/20100101 Goanna/3.0 Firefox/45.9 PaleMoon/27.1.0'
+    family: 'Pale Moon'
+    major: '27'
+    minor: '1'
+    patch: '0'
+
+  - user_agent_string: 'Mozilla/5.0 (LG-T500 AppleWebkit/531 Browser/Phantom/V2.0 Widget/LGMW/3.0 MMS/LG-MMS-V1.0/1.2 Java/ASVM/1.1 Profile/MIDP-2.1 Configuration/CLDC-1.1)'
+    family: 'Phantom Browser'
+    major: '2'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Pingdom.com_bot_version_1.4_(http://www.pingdom.com/)'
+    family: 'PingdomBot'
+    major: '1'
+    minor: '4'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (Unknown; Linux x86_64) AppleWebKit/534.34 (KHTML, like Gecko) PingdomTMS/0.8.5 Safari/534.34'
+    family: 'PingdomBot'
+    major: '0'
+    minor: '8'
+    patch: '5'
+
+  - user_agent_string: 'NewRelicPinger/1.0 (1025794)'
+    family: 'NewRelicPingerBot'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/98 Safari/537.4 (StatusCake)'
+    family: 'StatusCakeBot'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/3.0 (Planetweb/2.100 JS SSL US; Dreamcast US)'
+    family: 'Planetweb'
+    major: '2'
+    minor: '100'
+    patch:
+
+  - user_agent_string: 'PyAMF/0.6.1'
+    family: 'PyAMF'
+    major: '0'
+    minor: '6'
+    patch: '1'
+
+  - user_agent_string: 'python-requests/0.14 CPython/2.6 Linux/2.6-43-server'
+    family: 'Python Requests'
+    major: '0'
+    minor: '14'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (X11i; Linux; C) AppleWebKikt/533.3 (KHTML, like Gecko) QtCarBrowser Safari/533.3'
+    family: 'QtCarBrowser'
+    major: '1'
+    minor:
+    patch:
+
+  - user_agent_string: 'Rackspace Monitoring/1.1 (https://monitoring.api.rackspacecloud.com)'
+    family: 'RackspaceBot'
+    major: '1'
+    minor: '1'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (X11; U; BSD Four; en-US) AppleWebKit/533.3 (KHTML, like Gecko) rekonq Safari/533.3'
+    family: 'Rekonq'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (X11; Linux i686) AppleWebKit/534.34 (KHTML, like Gecko) rekonq/1.0 Safari/534.34'
+    family: 'Rekonq'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) RockMelt/0.8.34.841 Chrome/6.0.472.63 Safari/534.3'
+    family: 'RockMelt'
+    major: '0'
+    minor: '8'
+    patch: '34'
+
+  - user_agent_string: 'Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-us) AppleWebKit/418.8 (KHTML, like Gecko) Safari/419.3'
+    family: 'Safari'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_5; en-us) AppleWebKit/533.18.1 (KHTML, like Gecko) Version/5.0.2 Safari/533.18.5'
+    family: 'Safari'
+    major: '5'
+    minor: '0'
+    patch: '2'
+
+  - user_agent_string: 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_7; en-us) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Safari/530.17 Skyfire/2.0'
+    family: 'Skyfire'
+    major: '2'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.21 (KHTML, like Gecko) Snowshoe/1.0.0 Safari/537.21'
+    family: 'Snowshoe'
+    major: '1'
+    minor: '0'
+    patch: '0'
+
+  - user_agent_string: 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.17) Gecko/20110414 Thunderbird/3.1.10 ThunderBrowse/3.3.5'
+    family: 'ThunderBrowse'
+    major: '3'
+    minor: '3'
+    patch: '5'
+
+  - user_agent_string: 'Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 Lightning/2.6.4'
+    family: 'Thunderbird'
+    major: '24'
+    minor: '2'
+    patch: '0'
+
+  - user_agent_string: 'Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0'
+    family: 'Thunderbird'
+    major: '24'
+    minor: '2'
+    patch: '0'
+
+  - user_agent_string: 'Mozilla/5.0 (Windows NT 6.1; rv:45.0) Gecko/20100101 Thunderbird/45.0'
+    family: 'Thunderbird'
+    major: '45'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (Windows NT 6.2; WOW64; rv:7.0.1) Gecko/20151105 Postbox/4.0.8'
+    family: 'Postbox'
+    major: '4'
+    minor: '0'
+    patch: '8'
+
+  - user_agent_string: 'Mozilla/4.0 (compatible; Lotus-Notes/6.0; Windows-NT)'
+    family: 'Lotus Notes'
+    major: '6'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Superhuman'
+    family: 'Superhuman'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'YahooMobileMail/1.0 (Android Mail; 1.3.10) (supersonic;HTC;PC36100;2.3.5/GRJ90)'
+    family: 'YahooMobileMail'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Barca/2.8.2'
+    family: 'Barca'
+    major: '2'
+    minor: '8'
+    patch: '2'
+
+  - user_agent_string: 'BarcaPro/1.4.12'
+    family: 'Barca'
+    major: '1'
+    minor: '4'
+    patch: '12'
+
+  - user_agent_string: 'The Bat! 4.0.0.22'
+    family: 'The Bat!'
+    major: '4'
+    minor: '0'
+    patch: '0'
+
+  - user_agent_string: 'MailBar/1.3.2 (Mac OS X Version 10.11.1 (Build 15B42))'
+    family: 'MailBar'
+    major: '1'
+    minor: '3'
+    patch: '2'
+
+  - user_agent_string: 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/534.34 (KHTML, like Gecko) kmail2/4.14.2 Safari/534.34'
+    family: 'kmail2'
+    major: '4'
+    minor: '14'
+    patch: '2'
+
+  - user_agent_string: 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; MSOffice 12)'
+    family: 'Outlook'
+    major: '2007'
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; InfoPath.2; MSOffice 14)'
+    family: 'Outlook'
+    major: '2010'
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/6.0; Microsoft Outlook 15.0.4420)'
+    family: 'Outlook'
+    major: '2013'
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/536.26.14 (KHTML, like Gecko)'
+    family: 'Apple Mail'
+    major: '536'
+    minor: '26'
+    patch: '14'
+
+  - user_agent_string: 'Airmail 1.0 rv:148 (Macintosh; Mac OS X 10.8.3; en_BE)'
+    family: 'Airmail'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Airmail 1.0.6 rv:196 (Macintosh; Mac OS X 10.8.4; en_GB)'
+    family: 'Airmail'
+    major: '1'
+    minor: '0'
+    patch: '6'
+
+  - user_agent_string: 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.220 Whale/1.3.45.0 Safari/537.36'
+    family: 'Whale'
+    major: '1'
+    minor: '3'
+    patch: '45'
+
+  - user_agent_string: 'Mozilla/5.0 (iPhone; CPU OS 10_2_1 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) 1Password/6.4.5 (like Version/10.2.1 Mobile/14D27 Safari/600.1.4)'
+    family: '1Password'
+    major: '6'
+    minor: '4'
+    patch: '5'
+
+  - user_agent_string: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.220 Whale/1.3.50.3 Safari/537.36'
+    family: 'Whale'
+    major: '1'
+    minor: '3'
+    patch: '50'
+
+  - user_agent_string: 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_2_6 like Mac OS X) AppleWebKit/604.5.6 (KHTML, like Gecko) Whale/0.9.1.679 Mobile/15D100 Safari/604.5.6'
+    family: 'Whale'
+    major: '0'
+    minor: '9'
+    patch: '1'
+
+  - user_agent_string: 'Mozilla/5.0 (Linux; Android 6.0.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Whale/0.9.5.0 Mobile Safari/537.36'
+    family: 'Whale'
+    major: '0'
+    minor: '9'
+    patch: '5'
+
+  - user_agent_string: 'Mozilla/5.0 (Linux; Android 7.1.2; Nexus 6P Build/WHALE) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.220 Whale/1.3.50.3 Mobile Safari/537.36 sidebar webpanel'
+    family: 'Whale'
+    major: '1'
+    minor: '3'
+    patch: '50'
+
+  - user_agent_string: 'Mozilla/5.0 (Linux; Android 7.1.2; Nexus 6P Build/WHALE) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.220 Whale/1.3.50.3 Mobile Safari/537.36'
+    family: 'Whale'
+    major: '1'
+    minor: '3'
+    patch: '50'
+
+  - user_agent_string: 'J2ME/UCWEB7.0.3.45/139/7682'
+    family: 'UC Browser'
+    major: '7'
+    minor: '0'
+    patch: '3'
+
+  - user_agent_string: 'NOKIA6120c/UC Browser7.4.0.65/28/352'
+    family: 'UC Browser'
+    major: '7'
+    minor: '4'
+    patch: '0'
+
+  - user_agent_string: 'UCWEB/3.0 (iPhone; CPU OS_6; en-US)AppleWebKit/534.1 U3/3.0.0 Mobile'
+    family: 'UC Browser'
+    major: '3'
+    minor: '0'
+    patch: '0'
+
+  - user_agent_string: 'UCWEB/2.0 (Linux; U; Opera Mini/7.1.32052/30.2697; en-US; GT-S5302) U2/1.0.0 UCBrowser/9.3.0.440 Mobile'
+    family: 'UC Browser'
+    major: '9'
+    minor: '3'
+    patch: '0'
+
+  - user_agent_string: 'IUC(U;iOS 5.1.1;Zh-cn;320*480;)/UCWEB7.9.0.94/41/997'
+    family: 'UC Browser'
+    major: '7'
+    minor: '9'
+    patch: '0'
+
+  - user_agent_string: 'Nokia5320di/UCWEB8.0.3.99/28/999'
+    family: 'UC Browser'
+    major: '8'
+    minor: '0'
+    patch: '3'
+
+  - user_agent_string: 'Nokia201/2.0 (11.21) Profile/MIDP-2.1 Configuration/CLDC-1.1 Mozilla/5.0 (Java; U; en-us; nokia201) UCBrowser8.3.0.154/70/355/UCWEB Mobile'
+    family: 'UC Browser'
+    major: '8'
+    minor: '3'
+    patch: '0'
+
+  - user_agent_string: 'Mozilla/5.0 (S60V5; U; en-us; NokiaC5-03) AppleWebKit/530.13 (KHTML, like Gecko) UCBrowser/8.7.0.218/50/352/UCWEB Mobile'
+    family: 'UC Browser'
+    major: '8'
+    minor: '7'
+    patch: '0'
+
+  - user_agent_string: 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 UBrowser/5.7.14488.1025 Safari/537.36'
+    family: 'UC Browser'
+    major: '5'
+    minor: '7'
+    patch: '14488'
+
+  - user_agent_string: 'Alcatel-OH5/1.0 UP.Browser/6.1.0.7.7 (GUI) MMP/1.0'
+    family: 'UP.Browser'
+    major: '6'
+    minor: '1'
+    patch: '0'
+
+  - user_agent_string: 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534+ (KHTML, like Gecko) Version/5.1.1 Safari/534.51.22'
+    family: 'WebKit Nightly'
+    major: '534'
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1+ (KHTML, like Gecko) Version/5.1.1 Safari/534.51.22'
+    family: 'WebKit Nightly'
+    major: '537'
+    minor: '1'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_4) AppleWebKit/537.8+ (KHTML, like Gecko) Version/6.0 Safari/536.25'
+    family: 'WebKit Nightly'
+    major: '537'
+    minor: '8'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (hp-tablet; Linux; hpwOS/3.0.0; U; en-US) AppleWebKit/534.6 (KHTML, like Gecko) wOSBrowser/233.58 Safari/534.6 TouchPad/1.0'
+    family: 'webOS Browser'
+    major: '3'
+    minor: '0'
+    patch: '0'
+
+  - user_agent_string: 'Mozilla/5.0 (webOS/1.2; U; en-US) AppleWebKit/525.27.1 (KHTML, like Gecko) Version/1.0 Safari/525.27.1 Desktop/1.0'
+    family: 'webOS Browser'
+    major: '1'
+    minor: '2'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (hp-tablet; Linux; hpwOS/3.0.5; U; en-US) AppleWebKit/534.6 (KHTML, like Gecko) wOSBrowser/234.83 Safari/534.6 TouchPad/1.0'
+    family: 'webOS Browser'
+    major: '3'
+    minor: '0'
+    patch: '5'
+
+  - user_agent_string: 'Mozilla/5.0 (X11; U; Linux i686; nl-NL) AppleWebKit/534.3 (KHTML, like Gecko) WeTab-Browser Safari/534.3'
+    family: 'WeTab'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1104.222 YaBrowser/1.5.1104.222 Safari/537.4'
+    family: 'Yandex Browser'
+    major: '1'
+    minor: '5'
+    patch: '1104'
+
+  - user_agent_string: 'Mozilla/5.0 YottaaMonitor;'
+    family: 'YottaaMonitor'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (Macintosh; Intel Mac OS X) AppleWebKit/534.34 (KHTML, like Gecko) PhantomJS/1.6.0 Safari/534.34'
+    family: 'PhantomJS'
+    major: '1'
+    minor: '6'
+    patch: '0'
+
+  - user_agent_string: 'Mozilla/5.0 (IE 11.0; Windows NT 6.3; Trident/7.0; .NET4.0E; .NET4.0C; rv:11.0) like Gecko'
+    family: 'IE'
+    major: '11'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; MSIE 9.0; AOL 9.7; AOLBuild 4343.19; Windows NT 6.1; WOW64; Trident/5.0; FunWebProducts)'
+    family: 'AOL'
+    major: '9'
+    minor: '7'
+    patch: '4343'
+
+  - user_agent_string: 'Mozilla/5.0 (Windows NT 6.3; Win64; x64; Trident/7.0; rv:11.0) like Gecko'
+    family: 'IE'
+    major: '11'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'HbbTV/1.1.1 (;Samsung;SmartTV2013;T-FXPDEUC-1102.2;;) WebKit'
+    family: 'HbbTV'
+    major: '1'
+    minor: '1'
+    patch: '1'
+
+  - user_agent_string: 'HbbTV/1.2.1 (;Panasonic;VIERA 2013;3.672;4101-0003 0002-0000;)'
+    family: 'HbbTV'
+    major: '1'
+    minor: '2'
+    patch: '1'
+
+  - user_agent_string: 'HbbTV/1.1.1 (;;;;;) firetv-firefox-plugin 1.1.20'
+    family: 'HbbTV'
+    major: '1'
+    minor: '1'
+    patch: '1'
+
+  - user_agent_string: 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; Trident/7.0; rv:11.0) like Gecko/20100101 Firefox/12.0'
+    family: 'IE'
+    major: '11'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.89 Vivaldi/1.0.83.38 Safari/537.36'
+    family: 'Vivaldi'
+    major: '1'
+    minor: '0'
+    patch: '83'
+
+  - user_agent_string: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.9600'
+    family: 'Edge'
+    major: '12'
+    minor: '9600'
+    patch:
+
+  - user_agent_string: 'Mozilla/4.0 (Vodafone/1.0/LG-GU280/v10a Browser/Obigo-Q7.3 MMS/LG-MMS-V1.0/1.2 Java/ASVM/1.1 Profile/MIDP-2.1 Configuration/CLDC-1.1)'
+    family: 'Obigo'
+    major: '7'
+    minor: '3'
+    patch:
+    patch_minor:
+
+  - user_agent_string: 'Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 6.12) Vodafone/1.0/HTC_Elf/1.11.164.2'
+    family: 'IE Mobile'
+    major: '6'
+    minor: '12'
+    patch:
+    patch_minor:
+
+  - user_agent_string: 'Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 8.12; MSIEMobile 6.0) Vodafone/1.0/HTC_HD2/1.44.162.6 (70494)'
+    family: 'IE Mobile'
+    major: '8'
+    minor: '12'
+    patch:
+    patch_minor:
+
+  - user_agent_string: 'Mozilla/5.0 (Mobile; Windows Phone 8.1; Android 4.0; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; NOKIA; Lumia 920)'
+    family: 'IE Mobile'
+    major: '11'
+    minor: '0'
+    patch:
+    patch_minor:
+
+  - user_agent_string: 'Mozilla/5.0 (SymbianOS/9.2; U; Series60/3.1 Vodafone/1.0/SamsungSGHi560/I560AEHB1 Profile/MIDP-2.0 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413'
+    family: 'Nokia OSS Browser'
+    major: '3'
+    minor: '1'
+    patch:
+    patch_minor:
+
+  - user_agent_string: 'Mozilla/5.0 (Vodafone/1.0/LG-KC910/V08h Browser/Teleca-Q7.1 MMS/LG-MMS-V1.0/1.2 MediaPlayer/LGPlayer/1.0 Java/ASVM/1.1 Profile/MIDP-2.1 Configuration/CLDC-1.1)'
+    family: 'Teleca Browser'
+    major:
+    minor:
+    patch:
+    patch_minor:
+
+  - user_agent_string: 'Vodafone/1.0/0Vodafone715/B116 Browser/Obigo-Browser/Q04A MMS/Obigo-MMS/Q04A SyncML/HW-SyncML/1.0 Java/QVM/4.1 Profile/MIDP-2.0 Configuration/CLDC-1.1'
+    family: 'Obigo'
+    major:
+    minor:
+    patch:
+    patch_minor:
+
+  - user_agent_string: 'Opera/9.80 (Android 1.6; Linux; Opera Mobi/ADR-1107051709; U; en) Presto/2.8.149 Version/11.10'
+    family: 'Opera Mobile'
+    major: '11'
+    minor: '10'
+    patch:
+    patch_minor:
+
+  - user_agent_string: 'Opera/9.80 (Windows Mobile; WCE; Opera Mobi/WMD-50430; U; en) Presto/2.4.13 Version/10.00'
+    family: 'Opera Mobile'
+    major: '10'
+    minor: '00'
+    patch:
+    patch_minor:
+
+  - user_agent_string: '(Opera) Vodafone/1.0/HPiPAQDataMessenger/1.00.00 Browser/Opera/9.5 Profile/MIDP-2.0 Configuration/CLDC-1.1 Opera/9.5 (Microsoft Windows; PPC; Opera Mobi/15142; U; en)'
+    family: 'Opera Mobile'
+    major: '9'
+    minor: '5'
+    patch:
+    patch_minor:
+
+  - user_agent_string: 'HTC MAX 4G Opera/9.5 (Microsoft Windows; PPC; Opera Mobi/1409; U; ru)'
+    family: 'Opera Mobile'
+    major: '9'
+    minor: '5'
+    patch:
+    patch_minor:
+
+  - user_agent_string: 'iBrowser/3.0/Mozilla/5.0 (Linux; U; Android 2.3.6; yy-yy; Karbonn A2 Build/GRK39F) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1'
+    family: 'Android'
+    major: '2'
+    minor: '3'
+    patch: '6'
+    patch_minor:
+
+  - user_agent_string: 'Mozilla/5.0 (Series40; NokiaC3-01/05.60; Profile/MIDP-2.1 Configuration/CLDC-1.1) Gecko/20100401 S40OviBrowser/2.2.0.0.31'
+    family: 'Ovi Browser'
+    major: '2'
+    minor: '2'
+    patch: '0'
+    patch_minor:
+
+  - user_agent_string: 'iRAPP/1.16.0 NokiaN95_8GB/31.0.015; Series60/3.1 Profile/MIDP-2.0 Configuration/CLDC-1.'
+    family: 'iRAPP'
+    major: '1'
+    minor: '16'
+    patch:
+    patch_minor:
+
+  - user_agent_string: 'iRAPP/1.3.0 Nokia5230/50.0.101 Series60/5.0 Profile/MIDP-2.1 Configuration/CLDC-1.1 3gpp-gba'
+    family: 'iRAPP'
+    major: '1'
+    minor: '3'
+    patch:
+    patch_minor:
+
+  - user_agent_string: 'iRAPP/3.5.0 NokiaN8-00/111.040.1511 Series60/5.3 Profile/MIDP-2.1 Configuration/CLDC-1.1 3gpp-gba'
+    family: 'iRAPP'
+    major: '3'
+    minor: '5'
+    patch:
+    patch_minor:
+
+  - user_agent_string: 'LG-GD710/V10f; Mozilla/5.0 (Profile/MIDP-2.0 Configuration/CLDC-1.1; Opera Mini/att/4.2.14812; U; en) Opera 9.50'
+    family: 'Opera Mini'
+    major: '4'
+    minor: '2'
+    patch: '14812'
+    patch_minor:
+
+  - user_agent_string: 'SAMSUNG-SGH-A897/A897UCJC1; Mozilla/5.0 (Profile/MIDP-2.0 Configuration/CLDC-1.1; Opera Mini/att/4.2.15304; U; fr-US) Opera 9.50'
+    family: 'Opera Mini'
+    major: '4'
+    minor: '2'
+    patch: '15304'
+    patch_minor:
+
+  - user_agent_string: 'MQQBrowser/39 Mozilla/5.0 (iPhone 4S; CPU iPhone OS 6_0_1 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Mobile/10A523 Safari/7534.48.3'
+    family: 'QQ Browser Mobile'
+    major: '39'
+    minor:
+    patch:
+    patch_minor:
+
+  - user_agent_string: 'MQQBrowser/391 Mozilla/5.0 (iPhone 4S; CPU iPhone OS 5_0 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Mobile/9A334 Safari/7534.48.3'
+    family: 'QQ Browser Mobile'
+    major: '391'
+    minor:
+    patch:
+    patch_minor:
+
+  - user_agent_string: 'MQQBrowser/20 (Linux; U; 2.3.3; en-us; HTC Desire S Build/GRI40;480*800)'
+    family: 'QQ Browser Mobile'
+    major: '20'
+    minor:
+    patch:
+    patch_minor:
+
+  - user_agent_string: 'MQQBrowser/Mini2.8 (ZTE-X990/X990_V2_Z12_ESFR_D18F100)'
+    family: 'QQ Browser Mini'
+    major: '2'
+    minor: '8'
+    patch:
+    patch_minor:
+
+  - user_agent_string: 'MQQBrowser/Mini3.1 (SonyEricssonJ105i/R1HA035)'
+    family: 'QQ Browser Mini'
+    major: '3'
+    minor: '1'
+    patch:
+    patch_minor:
+
+  - user_agent_string: 'QQBrowser/14 (Linux; U; 2.2.2; en-us; Motorola XT316 BUILD/FRG83G) Mobile/0050'
+    family: 'QQ Browser'
+    major: '14'
+    minor:
+    patch:
+    patch_minor:
+
+  - user_agent_string: 'Dolphin 6.5.1 (iPad; iPhone OS 6.1.3; de_DE)'
+    family: 'Dolphin'
+    major: '6'
+    minor: '5'
+    patch: '1'
+    patch_minor:
+
+  - user_agent_string: 'Dolphin 7.4 (iPhone; iPhone OS 7.0.2; de_DE)'
+    family: 'Dolphin'
+    major: '7'
+    minor: '4'
+    patch:
+    patch_minor:
+
+  - user_agent_string: 'Dolphin 7.5.1 (iPhone; iPhone OS 7.0.3; de_DE)'
+    family: 'Dolphin'
+    major: '7'
+    minor: '5'
+    patch: '1'
+    patch_minor:
+
+  - user_agent_string: 'Mozilla/5.0 (Linux; U; Android 2.1-update1; zh-cn; XT701 Build/STCU_31.05.4) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17 DolphinHDCN/7.0.1'
+    family: 'Dolphin'
+    major: '7'
+    minor: '0'
+    patch: '1'
+    patch_minor:
+
+  - user_agent_string: 'Mozilla/5.0 (Linux; U; Android 2.2; en-gb; GT-P1000 Build/FROYO) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 DolphinHDCN/6.3.1'
+    family: 'Dolphin'
+    major: '6'
+    minor: '3'
+    patch: '1'
+    patch_minor:
+
+  - user_agent_string: 'Mozilla/5.0 (Linux; U; Android 4.1.1; en-us; Nexus 7 Build/JRO03D) AppleWebKit/534.30 (KHTML, like Gecko) Dolphin/INT-1.0.4 Mobile Safari/534.30'
+    family: 'Dolphin'
+    major: '1'
+    minor: '0'
+    patch: '4'
+    patch_minor:
+
+  - user_agent_string: 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; en-us) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16 DolphinHDCN/6.1.0'
+    family: 'Dolphin'
+    major: '6'
+    minor: '1'
+    patch: '0'
+    patch_minor:
+
+  - user_agent_string: 'Mozilla/5.0(miniGUI/3.x; U; Linux i686; en-US) AppleWebKit/534.26 (KHTML, like Gecko) mDolphin/3.0 chrome/10.0 Safria/534.26'
+    family: 'mDolphin'
+    major: '3'
+    minor: '0'
+    patch:
+    patch_minor:
+
+  - user_agent_string: 'Mozilla/5.0(miniGUI/3.x; U; Linux i686; en; ) AppleWebKit/533.9.0 (KHTML, like Gecko) mDolphin/3.0.0 Safria/533.9.0'
+    family: 'mDolphin'
+    major: '3'
+    minor: '0'
+    patch: '0'
+    patch_minor:
+
+  - user_agent_string: 'CFNetwork, iPhone OS 5.1.1, iPhone4,1'
+    family: 'CFNetwork'
+    major:
+    minor:
+    patch:
+    patch_minor:
+
+  - user_agent_string: 'CFNetwork, iPhone OS 7.0.4, iPhone5,2'
+    family: 'CFNetwork'
+    major:
+    minor:
+    patch:
+    patch_minor:
+
+  - user_agent_string: 'CFNetwork, iPhone OS 7.0, iPhone4,1'
+    family: 'CFNetwork'
+    major:
+    minor:
+    patch:
+    patch_minor:
+
+  - user_agent_string: 'Safari5530.17 CFNetwork/438.12 Darwin/9.7.0 (i386) (Macmini2,1)'
+    family: 'CFNetwork'
+    major: '438'
+    minor: '12'
+    patch:
+    patch_minor:
+
+  - user_agent_string: 'Safari/6533.18.5 CFNetwork/454.9.8 Darwin/10.4.0 (i386) (MacBookPro7,1)'
+    family: 'Safari'
+    major: '6533'
+    minor: '18'
+    patch: '5'
+    patch_minor:
+
+  - user_agent_string: 'Safari/7536.30.1 CFNetwork/520.5.1 Darwin/11.4.2 (i386) (MacBook3,1)'
+    family: 'Safari'
+    major: '7536'
+    minor: '30'
+    patch: '1'
+    patch_minor:
+
+  - user_agent_string: 'Reader Notifier/5 CFNetwork/596.3.3 Darwin/12.3.0 (x86_64) (MacBookPro7,1)'
+    family: 'Reader Notifier'
+    major: '5'
+    minor:
+    patch:
+    patch_minor:
+
+  - user_agent_string: 'Safari/9537.71 CFNetwork/673.0.2 Darwin/13.0.1 (x86_64) (MacBookPro11,1)'
+    family: 'Safari'
+    major: '9537'
+    minor: '71'
+    patch:
+    patch_minor:
+
+  - user_agent_string: 'DEPoker-iPad/1.0.2 CFNetwork/548.1.4 Darwin/11.0.0'
+    family: 'DEPoker'
+    major: '1'
+    minor: '0'
+    patch: '2'
+    patch_minor:
+
+  - user_agent_string: 'JDSports-iPad/1.1 CFNetwork/672.0.8 Darwin/14.0.0'
+    family: 'JDSports'
+    major: '1'
+    minor: '1'
+    patch:
+    patch_minor:
+
+  - user_agent_string: 'AngryBirdsBlack-iPhone/1.1.0 CFNetwork/548.1.4 Darwin/11.0.0'
+    family: 'AngryBirdsBlack'
+    major: '1'
+    minor: '1'
+    patch: '0'
+    patch_minor:
+
+  - user_agent_string: 'Bing for iPad/1.1.2 CFNetwork/485.13.9 Darwin/11.0.0'
+    family: 'Bing for iPad'
+    major: '1'
+    minor: '1'
+    patch: '2'
+    patch_minor:
+
+  - user_agent_string: 'NightstandPaid-iPad/1.3.1 CFNetwork/548.1.4 Darwin/11.0.0'
+    family: 'NightstandPaid'
+    major: '1'
+    minor: '3'
+    patch: '1'
+    patch_minor:
+
+  - user_agent_string: 'Glo-De-iPad/1.4.7 CFNetwork/672.0.2 Darwin/14.0.0'
+    family: 'Glo-De'
+    major: '1'
+    minor: '4'
+    patch: '7'
+    patch_minor:
+
+  - user_agent_string: 'Island for iPhone/1.95 CFNetwork/672.0.2 Darwin/14.0.0'
+    family: 'Island for iPhone'
+    major: '1'
+    minor: '95'
+    patch:
+    patch_minor:
+
+  - user_agent_string: 'WormsiPhone-iPad/2.3 CFNetwork/548.1.4 Darwin/11.0.0'
+    family: 'WormsiPhone'
+    major: '2'
+    minor: '3'
+    patch:
+    patch_minor:
+
+  - user_agent_string: 'Rummy LITE iPad/2.3.0 CFNetwork/609.1.4 Darwin/13.0.0'
+    family: 'Rummy LITE iPad'
+    major: '2'
+    minor: '3'
+    patch: '0'
+    patch_minor:
+
+  - user_agent_string: 'MobileRSSFree-iPad/3.1 CFNetwork/467.12 Darwin/10.3.1'
+    family: 'MobileRSSFree'
+    major: '3'
+    minor: '1'
+    patch:
+    patch_minor:
+
+  - user_agent_string: 'MobileRSSFree-iPad/3.1.4 CFNetwork/485.13.9 Darwin/11.0.0'
+    family: 'MobileRSSFree'
+    major: '3'
+    minor: '1'
+    patch: '4'
+    patch_minor:
+
+  - user_agent_string: 'babbelIndonesian-iPad/4.0.1 CFNetwork/672.0.8 Darwin/14.0.0'
+    family: 'babbelIndonesian'
+    major: '4'
+    minor: '0'
+    patch: '1'
+    patch_minor:
+
+  - user_agent_string: 'WeltMobile-iPad/4.2 CFNetwork/609.1.4 Darwin/13.0.0'
+    family: 'WeltMobile'
+    major: '4'
+    minor: '2'
+    patch:
+    patch_minor:
+
+  - user_agent_string: 'IMPlusFull-iPad/7.9.1 CFNetwork/548.0.4 Darwin/11.0.0'
+    family: 'IMPlusFull'
+    major: '7'
+    minor: '9'
+    patch: '1'
+    patch_minor:
+
+  - user_agent_string: 'Cooliris/1.3 CFNetwork/342.1 Darwin/9.4.1'
+    family: 'Cooliris'
+    major: '1'
+    minor: '3'
+    patch:
+    patch_minor:
+
+  - user_agent_string: 'Poof/1.0 CFNetwork/485.12.7 Darwin/10.4.0'
+    family: 'Poof'
+    major: '1'
+    minor: '0'
+    patch:
+    patch_minor:
+
+  - user_agent_string: 'Parking Mania Free/1.9.5.0 CFNetwork/548.0.4 Darwin/11.0.0'
+    family: 'Parking Mania Free'
+    major: '1'
+    minor: '9'
+    patch: '5'
+    patch_minor: '0'
+
+  - user_agent_string: 'Planet Boing!/1.4.8 CFNetwork/609.1.4 Darwin/13.0.0'
+    family: 'Planet Boing!'
+    major: '1'
+    minor: '4'
+    patch: '8'
+    patch_minor:
+
+  - user_agent_string: 'PlayTube/1.7 CFNetwork/672.0.2 Darwin/14.0.0'
+    family: 'PlayTube'
+    major: '1'
+    minor: '7'
+    patch:
+    patch_minor:
+
+  - user_agent_string: 'Mozilla/5.0 (Linux; U; Android 2.2.1; es-us) AppleWebKit/534.12 (KHTML, like Gecko) Puffin/1.3.2913S Mobile Safari/534.12'
+    family: 'Puffin'
+    major: '1'
+    minor: '3'
+    patch: '2913'
+    patch_minor:
+
+  - user_agent_string: 'Mozilla/5.0 (Linux; U; Android 3.2.1; es-es) AppleWebKit/534.35 (KHTML, like Gecko) Chrome/11.0.696.65 Safari/534.35 Puffin/2.0.6440M Mobile'
+    family: 'Puffin'
+    major: '2'
+    minor: '0'
+    patch: '6440'
+    patch_minor:
+
+  - user_agent_string: 'Mozilla/5.0 (Linux; U; Android 3.2; en-gb) AppleWebKit/534.35 (KHTML, like Gecko) Chrome/11.0.696.65 Safari/534.35 Puffin/2.0.5932M Mobile'
+    family: 'Puffin'
+    major: '2'
+    minor: '0'
+    patch: '5932'
+    patch_minor:
+
+  - user_agent_string: 'Mozilla/5.0 (Linux; U; Android 4.1.1; en-us) AppleWebKit/534.35 (KHTML, like Gecko)  Chrome/11.0.696.65 Safari/534.35 Puffin/2.9909AT Mobile'
+    family: 'Puffin'
+    major: '2'
+    minor: '9909'
+    patch:
+    patch_minor:
+
+  - user_agent_string: 'Mozilla/5.0 (Linux; U; Android 4.2.2; de-de) AppleWebKit/534.35 (KHTML, like Gecko)  Chrome/11.0.696.65 Safari/534.35 Puffin/3.11558AT Mobile'
+    family: 'Puffin'
+    major: '3'
+    minor: '11558'
+    patch:
+    patch_minor:
+
+  - user_agent_string: 'Mozilla/5.0 (Linux; U; Android 4.2.2; en-us) AppleWebKit/534.35 (KHTML, like Gecko)  Chrome/11.0.696.65 Safari/534.35 Puffin/3.11558AP Mobile'
+    family: 'Puffin'
+    major: '3'
+    minor: '11558'
+    patch:
+    patch_minor:
+
+  - user_agent_string: 'Mozilla/5.0 (X11; U; Linux i686; th-TH@calendar=gregorian) AppleWebKit/534.12 (KHTML, like Gecko) Puffin/1.3.2665MS Safari/534.12'
+    family: 'Puffin'
+    major: '1'
+    minor: '3'
+    patch: '2665'
+    patch_minor:
+
+  - user_agent_string: 'Mozilla/5.0 (X11; U; Linux x86_64; ar-AE) AppleWebKit/534.35 (KHTML, like Gecko)  Chrome/11.0.696.65 Safari/534.35 Puffin/3.10990IT'
+    family: 'Puffin'
+    major: '3'
+    minor: '10990'
+    patch:
+    patch_minor:
+
+  - user_agent_string: 'Mozilla/5.0 (X11; U; Linux x86_64; ar-SA) AppleWebKit/534.35 (KHTML, like Gecko)  Chrome/11.0.696.65 Safari/534.35 Puffin/3.11546IP'
+    family: 'Puffin'
+    major: '3'
+    minor: '11546'
+    patch:
+    patch_minor:
+
+  - user_agent_string: 'Mozilla/5.0 (X11; U; Linux x86_64; ar-ae) AppleWebKit/534.35 (KHTML, like Gecko)  Chrome/11.0.696.65 Safari/534.35 Puffin/2.10977AP'
+    family: 'Puffin'
+    major: '2'
+    minor: '10977'
+    patch:
+    patch_minor:
+
+  - user_agent_string: 'Mozilla/5.0 (X11; U; Linux x86_64; de-at) AppleWebKit/534.35 (KHTML, like Gecko)  Chrome/11.0.696.65 Safari/534.35 Puffin/2.10977AT'
+    family: 'Puffin'
+    major: '2'
+    minor: '10977'
+    patch:
+    patch_minor:
+
+  - user_agent_string: 'Mozilla/5.0 (iPad; U; CPU OS 7_0_6 like Mac OS X; de-DE) AppleWebKit/534.35 (KHTML, like Gecko)  Chrome/11.0.696.65 Safari/534.35 Puffin/3.11558IT Mobile'
+    family: 'Puffin'
+    major: '3'
+    minor: '11558'
+    patch:
+    patch_minor:
+
+  - user_agent_string: 'Mozilla/5.0 (iPhone; U; CPU iPhone OS 7_0_6 like Mac OS X; de-DE) AppleWebKit/534.35 (KHTML, like Gecko)  Chrome/11.0.696.65 Safari/534.35 Puffin/3.11558IP Mobile'
+    family: 'Puffin'
+    major: '3'
+    minor: '11558'
+    patch:
+    patch_minor:
+
+  - user_agent_string: 'Mozilla/5.0 (iPod; U; CPU iPhone OS 4_3_5 like Mac OS X; en-US) AppleWebKit/534.12 (KHTML, like Gecko) Puffin/1.3.3102MS Mobile Safari/534.12'
+    family: 'Puffin'
+    major: '1'
+    minor: '3'
+    patch: '3102'
+    patch_minor:
+
+  - user_agent_string: 'Mozilla/5.0 (iPod; U; CPU iPhone OS 5_1_1 like Mac OS X; de-DE) AppleWebKit/534.35 (KHTML, like Gecko)  Chrome/11.0.696.65 Safari/534.35 Puffin/3.9174IP Mobile'
+    family: 'Puffin'
+    major: '3'
+    minor: '9174'
+    patch:
+    patch_minor:
+
+  - user_agent_string: 'MacAppStore/2.0 (Macintosh; OS X 10.10.2; 14C81f) AppleWebKit/0600.3.10.2'
+    family: 'MacAppStore'
+    major: '2'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'iTunes/12.0.1 (Macintosh; OS X 10.9.2) AppleWebKit/537.74.9'
+    family: 'iTunes'
+    major: '12'
+    minor: '0'
+    patch: '1'
+
+  - user_agent_string: 'Ant/Ant-Nutch-1.1 (Ant Nutch Crawler; http://www.ant.com; crawler@ant.com)'
+    family: 'Ant-Nutch'
+    major: '1'
+    minor: '1'
+    patch:
+
+  - user_agent_string: 'Axtaris Web Crawler/Axtaris-1.0.1 (Hello from Axtaris.org | Web-Crawler; http://axtaris.org; crawler at axtaris dot org)'
+    family: 'Axtaris'
+    major: '1'
+    minor: '0'
+    patch: '1'
+
+  - user_agent_string: 'Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko PTST/1.0'
+    family: 'WebPageTest.org bot'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.0 Safari/537.36 PTST/1.0'
+    family: 'WebPageTest.org bot'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (Linux; Android 6.0.1; Moto G (4) Build/MPJ24.139-64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.146 Mobile Safari/537.36 PTST/180521.140508'
+    family: 'WebPageTest.org bot'
+    major: '180521'
+    minor: '140508'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (Linux; Android 6.0.1; Moto G (4) Build/MPJ24.139-64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.81 Mobile Safari/537.36 PTST/391'
+    family: 'WebPageTest.org bot'
+    major: '391'
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (X11; Datanyze; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36'
+    family: 'Datanyze'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'CazoodleBot/CazoodleBot-0.1 (CazoodleBot Crawler; http://www.cazoodle.com/cazoodlebot; cazoodlebot@cazoodle.com)'
+    family: 'CazoodleBot'
+    major: '0'
+    minor: '1'
+    patch:
+
+  - user_agent_string: 'Isara-Search/Isara-1.0 (A non-profit web crawler operated by a charity organization.; www.isara.org; webmaster@isara.org)'
+    family: 'Isara'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'noobot Spider/Noobot-1.2 (noobot-bot; http://www.noobot.fr)'
+    family: 'Noobot'
+    major: '1'
+    minor: '2'
+    patch:
+
+  - user_agent_string: 'asked/Nutch-0.8 (web crawler; http://asked.jp; epicurus at gmail dot com)'
+    family: 'Nutch'
+    major: '0'
+    minor: '8'
+    patch:
+
+  - user_agent_string: 'nutch crawler/Nutch-2.2'
+    family: 'Nutch'
+    major: '2'
+    minor: '2'
+    patch:
+
+  - user_agent_string: 'Spider/Nutch-2.3-SNAPSHOT (Webcrawler)'
+    family: 'Nutch'
+    major: '2'
+    minor: '3'
+    patch:
+
+  - user_agent_string: 'SheenBot/SheenBot-1.0.4 (Sheen web crawler)'
+    family: 'SheenBot'
+    major: '1'
+    minor: '0'
+    patch: '4'
+
+  - user_agent_string: 'SaladSpoon/ShopSalad 1.0 (Search Engine crawler for ShopSalad.com; http://shopsalad.com/en/partners.html; crawler AT shopsalad.com)'
+    family: 'ShopSalad'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'TailsweepBlogCrawler/Tailsweep-2.9-SNAPSHOT (http://www.tailsweep.com/; bot at [tailsweep] dot com)'
+    family: 'Tailsweep'
+    major: '2'
+    minor: '9'
+    patch:
+
+  - user_agent_string: 'SAE/fetchurl-22wy0njxnm WordPress/3.2.1; http://1.webfront.sinaapp.com'
+    family: 'fetchurl'
+    major: '22'
+    minor:
+    patch:
+
+  - user_agent_string: 'RedBot/redbot-1.0 (Rediff.com Crawler; redbot at rediff dot com)'
+    family: 'redbot'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'IS Alpha/zcspider-0.1'
+    family: 'zcspider'
+    major: '0'
+    minor: '1'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; 008/0.85; http://www.80legs.com/webcrawler.html) Gecko/2008032620'
+    family: '008'
+    major: '0'
+    minor: '85'
+    patch:
+
+  - user_agent_string: 'Altresium/4.6 (+http://www.altresium.com/bot.html)'
+    family: 'Altresium'
+    major: '4'
+    minor: '6'
+    patch:
+
+  - user_agent_string: 'Argus/1.1 (Nutch; http://www.simpy.com/bot.html; feedback at simpy dot com)'
+    family: 'Argus'
+    major: '1'
+    minor: '1'
+    patch:
+
+  - user_agent_string: 'Argus/2.8.65 CFNetwork/609 Darwin/13.0.0'
+    family: 'Argus'
+    major: '2'
+    minor: '8'
+    patch: '65'
+
+  - user_agent_string: 'DoCoMo/2.0 P05A(c100;TB;W24H15) (compatible; BaiduMobaider/1.0;  http://www.baidu.jp/spider/)'
+    family: 'BaiduMobaider'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'BoardReader/1.0 (http://boardreader.com/info/robots.htm)-Machine1'
+    family: 'BoardReader'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'DNSGroup/0.1 (DNS Group Crawler; http://www.dnsgroup.com/; crawler@dnsgroup.com)'
+    family: 'DNSGroup'
+    major: '0'
+    minor: '1'
+    patch:
+
+  - user_agent_string: 'DataparkSearch/4.35-02122005 ( http://www.dataparksearch.org/)'
+    family: 'DataparkSearch'
+    major: '4'
+    minor: '35'
+    patch:
+
+  - user_agent_string: 'EDI/1.6.0 (Edacious & Intelligent Web Crawler)'
+    family: 'EDI'
+    major: '1'
+    minor: '6'
+    patch: '0'
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; Goodzer/2.0; crawler@goodzer.com)'
+    family: 'Goodzer'
+    major: '2'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Grub/2.0 (Grub.org crawler; http://www.grub.org/; bot@grub.org)'
+    family: 'Grub'
+    major: '2'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'INGRID/2.0 (http://spsearch.ilse.nl/; Startpagina dochter links spider)'
+    family: 'INGRID'
+    major: '2'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'INGRID/3.0 MT (webcrawler@NOSPAMexperimental.net; http://aanmelden.ilse.nl/?aanmeld_mode=webhints)'
+    family: 'INGRID'
+    major: '3'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; Infohelfer/1.2.0; +http://www.infohelfer.de/crawler.php)'
+    family: 'Infohelfer'
+    major: '1'
+    minor: '2'
+    patch: '0'
+
+  - user_agent_string: 'LOOQ/0.1 alfa (LOOQ Crawler for european sites; http://looq.eu; root (at) looq dot eu)'
+    family: 'LOOQ'
+    major: '0'
+    minor: '1'
+    patch:
+
+  - user_agent_string: 'LinkedInBot/1.0 (compatible; Mozilla/5.0; Jakarta Commons-HttpClient/3.1  http://www.linkedin.com)'
+    family: 'LinkedInBot'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; PathDefender/1.0; +http://www.pathdefender.com/help/crawler)'
+    family: 'PathDefender'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; Peew/1.0; http://www.peew.de/crawler/)'
+    family: 'Peew'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'PostPost/1.0 ( http://postpo.st/crawlers)'
+    family: 'PostPost'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Steeler/1.3 (http://www.tkl.iis.u-tokyo.ac.jp/~crawler/)'
+    family: 'Steeler'
+    major: '1'
+    minor: '3'
+    patch:
+
+  - user_agent_string: 'Steeler/3.3 (http://www.tkl.iis.u-tokyo.ac.jp/~crawler/)'
+    family: 'Steeler'
+    major: '3'
+    minor: '3'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; Steeler/3.5; http://www.tkl.iis.u-tokyo.ac.jp/~crawler/)'
+    family: 'Steeler'
+    major: '3'
+    minor: '5'
+    patch:
+
+  - user_agent_string: 'VSE/1.0 (testcrawler@hotmail.com)'
+    family: 'VSE'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'VSE/1.0 (vsecrawler@hotmail.com)'
+    family: 'VSE'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; WebCrunch/1.2; +http://webcrunch.net/crawler)'
+    family: 'WebCrunch'
+    major: '1'
+    minor: '2'
+    patch:
+
+  - user_agent_string: 'WebZIP/7.0 (http://www.spidersoft.com)'
+    family: 'WebZIP'
+    major: '7'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Y!J-BRI/0.0.1 crawler ( http://help.yahoo.co.jp/help/jp/search/indexing/indexing-15.html )'
+    family: 'Y!J-BRI'
+    major: '0'
+    minor: '0'
+    patch: '1'
+
+  - user_agent_string: 'Y!J-BRW/1.0 crawler (http://help.yahoo.co.jp/help/jp/search/indexing/indexing-15.html)'
+    family: 'Y!J-BRW'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'YahooSeeker/1.0 (compatible; Mozilla 4.0; MSIE 5.5; http://help.yahoo.com/help/us/shop/merchant/)'
+    family: 'YahooSeeker'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'envolk/1.7 ( http://www.envolk.com/envolkspider.html)'
+    family: 'envolk'
+    major: '1'
+    minor: '7'
+    patch:
+
+  - user_agent_string: 'sproose/1.0beta (sproose bot; http://www.sproose.com/bot.html; crawler@sproose.com)'
+    family: 'sproose'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'wminer/1.2 (North America Web Crawler; http://www.wminer.com/bot; info at wminer dot com)'
+    family: 'wminer'
+    major: '1'
+    minor: '2'
+    patch:
+
+  - user_agent_string: 'Mozilla/4.0 (compatible; MSIE 4.0; MSIECrawler; Windows 95)'
+    family: 'MSIECrawler'
+    major: '4'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Mozilla/4.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/4.0; FDM; MSIECrawler; Media Center PC 5.0)'
+    family: 'MSIECrawler'
+    major: '9'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Apache-HttpClient/4.0-beta2 (java 1.5)'
+    family: 'Apache-HttpClient'
+    major: '4'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (Linux; U; Android 2.1-update1; de-de; E10i Build/2.1.1.C.0.0) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17 Google-HTTP-Java-Client/1.10.3-beta (gzip)'
+    family: 'Google-HTTP-Java-Client'
+    major: '1'
+    minor: '10'
+    patch: '3'
+
+  - user_agent_string: 'Google-HTTP-Java-Client/1.13.1-beta (gzip)'
+    family: 'Google-HTTP-Java-Client'
+    major: '1'
+    minor: '13'
+    patch: '1'
+
+  - user_agent_string: 'Google-YouTubeSample/1.0 Google-HTTP-Java-Client/1.7.0-beta (gzip) Google-HTTP-Java-Client/1.7.0-beta (gzip)'
+    family: 'Google-HTTP-Java-Client'
+    major: '1'
+    minor: '7'
+    patch: '0'
+
+  - user_agent_string: 'JNLP/1.7.0 javaws/10.17.2.02 (<internal>) Java/1.7.0_17'
+    family: 'JNLP'
+    major: '1'
+    minor: '7'
+    patch: '0'
+
+  - user_agent_string: 'JNLP/6.0 javaws/1.6.0_14 (b08) Java/1.6.0_14'
+    family: 'JNLP'
+    major: '6'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (Python-urllib2)'
+    family: 'Python-urllib'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Python-urllib/1.15'
+    family: 'Python-urllib'
+    major: '1'
+    minor: '15'
+    patch:
+
+  - user_agent_string: 'IMVU Client/498.0 Python-urllib/2.7'
+    family: 'Python-urllib'
+    major: '2'
+    minor: '7'
+    patch:
+
+  - user_agent_string: 'Python-urllib/3.4'
+    family: 'Python-urllib'
+    major: '3'
+    minor: '4'
+    patch:
+
+  - user_agent_string: 'TLSProber/0.8'
+    family: 'TLSProber'
+    major: '0'
+    minor: '8'
+    patch:
+
+  - user_agent_string: 'Asynchronous WinHTTP/1.0'
+    family: 'WinHTTP'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: '1470.net crawler'
+    family: '1470.net crawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: '50.nu/0.01 (  http://50.nu/bot.html )'
+    family: '50.nu'
+    major: '0'
+    minor: '01'
+    patch:
+
+  - user_agent_string: '8bo Crawler Bot'
+    family: '8bo Crawler Bot'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Aboundex/0.2 (http://www.aboundex.com/crawler/)'
+    family: 'Aboundex'
+    major: '0'
+    minor: '2'
+    patch:
+
+  - user_agent_string: 'Accoona-AI-Agent/1.1.1 (crawler at accoona dot com)'
+    family: 'Accoona-AI-Agent'
+    major: '1'
+    minor: '1'
+    patch: '1'
+
+  - user_agent_string: 'Accoona-Biz-Agent/1.1.1 crawler@accoona.com'
+    family: 'Accoona-Biz-Agent'
+    major: '1'
+    minor: '1'
+    patch: '1'
+
+  - user_agent_string: 'AdsBot-Google'
+    family: 'AdsBot-Google'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'AppEngine-Google; ( http://code.google.com/appengine)'
+    family: 'AppEngine-Google'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Inne: Mozilla/2.0 (compatible; Ask Jeeves/Teoma;  http://sp.ask.com/docs/about/tech_crawling.html)'
+    family: 'Ask Jeeves'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'BaiDuSpider'
+    family: 'BaiDuSpider'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Baiduspider'
+    family: 'Baiduspider'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: "'Mozilla/5.0 (compatible; Baiduspider/2.0; +ht'"
+    family: 'Baiduspider'
+    major: '2'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; Baiduspider-cpro; +http://www.baidu.com/search/spider.html)'
+    family: 'Baiduspider-cpro'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Baiduspider-image ( http://www.baidu.com/search/spider.htm)'
+    family: 'Baiduspider-image'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Baiduspider-testbranch'
+    family: 'Baiduspider-testbranch'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534  (KHTML, like Gecko) BingPreview/1.0b'
+    family: 'BingPreview'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'BlogBridge 6.7 (http://www.blogbridge.com/) 1.6.0_18'
+    family: 'BlogBridge'
+    major: '6'
+    minor: '7'
+    patch:
+
+  - user_agent_string: 'BoardReader Blog Indexer(http://boardreader.com)'
+    family: 'BoardReader Blog Indexer'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'BoardReader Favicon Fetcher /1.0 info@boardreader.com'
+    family: 'BoardReader Favicon Fetcher'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla 4.0(compatible; BotSeer/1.0;  http://botseer.ist.psu.edu)'
+    family: 'BotSeer'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'CRAWL-E/0.6.4'
+    family: 'CRAWL-E'
+    major: '0'
+    minor: '6'
+    patch: '4'
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; Charlotte/1.0b; charlotte@beta.spider.com)'
+    family: 'Charlotte'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Checklinks/1.3 (pywikipedia robot; http://toolserver.org/~dispenser/view/Checklinks)'
+    family: 'Checklinks'
+    major: '1'
+    minor: '3'
+    patch:
+
+  - user_agent_string: 'Comodo HTTP(S) Crawler - http://www.instantssl.com/crawler'
+    family: 'Comodo HTTP(S) Crawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Comodo-Webinspector-Crawler 2.1'
+    family: 'Comodo-Webinspector-Crawler'
+    major: '2'
+    minor: '1'
+    patch:
+
+  - user_agent_string: 'Comodo-Webinspector-Crawler 2.2.2, http://www.comodorobot.com'
+    family: 'Comodo-Webinspector-Crawler'
+    major: '2'
+    minor: '2'
+    patch: '2'
+
+  - user_agent_string: 'ConveraCrawler/0.9c ( http://www.authoritativeweb.com/crawl)'
+    family: 'ConveraCrawler'
+    major: '0'
+    minor: '9'
+    patch:
+
+  - user_agent_string: 'CrawlConvera0.1 (CrawlConvera@yahoo.com)'
+    family: 'CrawlConvera'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; MSIE or Firefox mutant; not on Windows server; + http://tab.search.daum.net/aboutWebSearch.html) Daumoa/3.0'
+    family: 'Daumoa'
+    major: '3'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; Firefox compatible; MS IE compatible;  http://search.daum.net/) Daumoa-feedfetcher/2.0'
+    family: 'Daumoa-feedfetcher'
+    major: '2'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Feed Seeker Bot (RSS Feed Seeker http://www.MyNewFavoriteThing.com/fsb.php)'
+    family: 'Feed Seeker Bot'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Flamingo_SearchEngine (+http://www.flamingosearch.com/bot)'
+    family: 'Flamingo_SearchEngine'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'FollowSite Bot ( http://www.followsite.com/bot.html )'
+    family: 'FollowSite Bot'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; Genieo/1.0 http://www.genieo.com/webfilter.html'
+    family: 'Genieo'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Mozilla/4.0 (compatible;  MSIE 5.01; GomezAgent 2.0; Windows NT)'
+    family: 'GomezAgent'
+    major: '2'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Googlebot v2.1 (+http://www.google.com/bot.html) (http://www.openwebspider.org/)'
+    family: 'Googlebot'
+    major: '2'
+    minor: '1'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; Googlebot/2.1;  http://www.google.com/bot.html)'
+    family: 'Googlebot'
+    major: '2'
+    minor: '1'
+    patch:
+
+  - user_agent_string: 'Googlebot/2.2'
+    family: 'Googlebot'
+    major: '2'
+    minor: '2'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (Windows; Mozilla 4.0(compatible; Googlebot/5.0;  http://www.google.com/googlebot); en-US;)'
+    family: 'Googlebot'
+    major: '5'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Googlebot-Image/1.0'
+    family: 'Googlebot-Image'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Googlebot-Mobile (compatible; Googlebot-Mobile/2.1; +http://www.google.com/bot.html)'
+    family: 'Googlebot-Mobile'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'DoCoMo//2.0 N905i(c100;TB;W24H16) (compatible; Googlebot-Mobile/2.1; +http://www.google.com/bot.html)'
+    family: 'Googlebot-Mobile'
+    major: '2'
+    minor: '1'
+    patch:
+
+  - user_agent_string: 'Googlebot-News'
+    family: 'Googlebot-News'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Googlebot-Video/1.0'
+    family: 'Googlebot-Video'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Googlebot-richsnippets'
+    family: 'Googlebot-richsnippets'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Google Web Preview'
+    family: 'Other'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.78 Safari/537.36'
+    family: 'Chrome'
+    major: '60'
+    minor: '0'
+    patch: '3112'
+    patch_minor: '78'
+
+  - user_agent_string: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112 Safari/537.36'
+    family: 'Chrome'
+    major: '60'
+    minor: '0'
+    patch: '3112'
+    patch_minor:
+
+  - user_agent_string: 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko; Google Web Preview) Chrome/27.0 .1453 Safari/537.36.'
+    family: 'Chrome'
+    major: '27'
+    minor: '0'
+    patch:
+    patch_minor:
+
+  - user_agent_string: 'HiddenMarket-1.0-beta (www.hiddenmarket.net/crawler.php)'
+    family: 'HiddenMarket'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'HooWWWer/2.1.0 ( http://cosco.hiit.fi/search/hoowwwer/ | mailto:crawler-info<at>hiit.fi)'
+    family: 'HooWWWer'
+    major: '2'
+    minor: '1'
+    patch: '0'
+
+  - user_agent_string: 'ICC-Crawler(Mozilla-compatible; http://kc.nict.go.jp/icc/crawl.html; icc-crawl(at)ml(dot)nict(dot)go(dot)jp)'
+    family: 'ICC-Crawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'ICC-Crawler/2.0 (Mozilla-compatible; ; http://kc.nict.go.jp/project1/crawl.html)'
+    family: 'ICC-Crawler'
+    major: '2'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'IconSurf/2.0 favicon finder (see http://iconsurf.com/robot.html)'
+    family: 'IconSurf'
+    major: '2'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'IlTrovatore/1.2 (IlTrovatore; http://www.iltrovatore.it/bot.html; bot@iltrovatore.it)'
+    family: 'IlTrovatore'
+    major: '1'
+    minor: '2'
+    patch:
+
+  - user_agent_string: 'IlTrovatore-Setaccio ( http://www.iltrovatore.it)'
+    family: 'IlTrovatore-Setaccio'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; InfuzApp/1.0; +http://www.infuz.com/bot.html)'
+    family: 'InfuzApp'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'InternetArchive-1.0'
+    family: 'InternetArchive'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'InternetArchive/0.8-dev (Nutch; http://lucene.apache.org/nutch/bot.html; nutch-agent@lucene.apache.org)'
+    family: 'InternetArchive'
+    major: '0'
+    minor: '8'
+    patch:
+
+  - user_agent_string: 'KDDI-CA34 UP.Browser/6.2.0.10.2.2(GUI)MMP/2.0 (compatible; KDDI-Googlebot-Mobile/2.1; http://www.google.com/bot.html)'
+    family: 'KDDI-Googlebot-Mobile'
+    major: '2'
+    minor: '1'
+    patch:
+
+  - user_agent_string: 'kalooga/KaloogaBot (Kalooga; http://www.kalooga.com/info.html?page=crawler)'
+    family: 'KaloogaBot'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; Kraken/0.1; http://linkfluence.net/; bot@linkfluence.net)'
+    family: 'Kraken'
+    major: '0'
+    minor: '1'
+    patch:
+
+  - user_agent_string: 'Kurzor/1.0 (Kurzor; http://adcenter.hu/docs/en/bot.html; cursor@easymail.hu)'
+    family: 'Kurzor'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'LEIA/3.01pr (LEIAcrawler; leia@gseek.com; http://www.gseek.com)'
+    family: 'LEIA'
+    major: '3'
+    minor: '01'
+    patch:
+
+  - user_agent_string: 'Mozilla/4.0 (compatible; MSIE 6.0; Windows compatible LesnikBot)'
+    family: 'LesnikBot'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Linguee Bot (bot@linguee.com)'
+    family: 'Linguee Bot'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'LinkAider (http://linkaider.com/crawler/)'
+    family: 'LinkAider'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Lite Bot0316B'
+    family: 'Lite Bot'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Llaut/1.0 (http://mnm.uib.es/~gallir/llaut/bot.html)'
+    family: 'Llaut'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; Linux x86_64; Mail.RU_Bot/Fast/2.0; +http://go.mail.ru/help/robots)'
+    family: 'Mail.RU_Bot'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; Linux x86_64; Mail.RU_Bot/2.0; +http://go.mail.ru/help/robots)'
+    family: 'Mail.RU_Bot'
+    major: '2'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Mediapartners-Google'
+    family: 'Mediapartners-Google'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'DoCoMo/2.0 SH905i(c100;TB;W24H16) (compatible; Mediapartners-Google/2.1; +http://www.google.com/bot.html)'
+    family: 'Mediapartners-Google'
+    major: '2'
+    minor: '1'
+    patch:
+
+  - user_agent_string: 'Microsoft Bing Mobile SocialStreams Bot'
+    family: 'Microsoft Bing Mobile SocialStreams Bot'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Microsoft MSN SocialStreams Bot,gzip(gfe),gzip(gfe)'
+    family: 'Microsoft MSN SocialStreams Bot'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'NING/1.0'
+    family: 'NING'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Netvibes (http://www.netvibes.com)'
+    family: 'Netvibes'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'NewsGator/2.0 Bot (http://www.newsgator.com)'
+    family: 'NewsGator'
+    major: '2'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'NewsGator/3.0,gzip(gfe),gzip(gfe)'
+    family: 'NewsGator'
+    major: '3'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'NewsGator FetchLinks extension/0.2.0 (http://graemef.com)'
+    family: 'NewsGator FetchLinks extension'
+    major: '0'
+    minor: '2'
+    patch: '0'
+
+  - user_agent_string: 'NewsGatorOnline/2.0 (http://www.newsgator.com)'
+    family: 'NewsGatorOnline'
+    major: '2'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'SapphireWebCrawler/1.0 (Sapphire Web Crawler using Nutch; http://boston.lti.cs.cmu.edu/crawler/; mhoy@cs.cmu.edu)'
+    family: 'Nutch; http:'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'NutchCVS/0.06-dev (Nutch running at UW; http://www.nutch.org/docs/en/bot.html; sycrawl@cs.washington.edu)'
+    family: 'NutchCVS'
+    major: '0'
+    minor: '06'
+    patch:
+
+  - user_agent_string: 'NutchOSUOSL/0.05-dev (Nutch; http://www.nutch.org/docs/en/bot.html; nutch-agent@lists.sourceforge.net)'
+    family: 'NutchOSUOSL'
+    major: '0'
+    minor: '05'
+    patch:
+
+  - user_agent_string: 'NutchOrg/0.03-dev (Nutch; http://www.nutch.org/docs/bot.html; nutch-agent@lists.sourceforge.net)'
+    family: 'NutchOrg'
+    major: '0'
+    minor: '03'
+    patch:
+
+  - user_agent_string: 'ObjectsSearch/0.2 (ObjectsSearch; http://www.ObjectsSearch.com/bot.html; support@thesoftwareobjects.com)'
+    family: 'ObjectsSearch'
+    major: '0'
+    minor: '2'
+    patch:
+
+  - user_agent_string: 'Orbiter ( http://www.dailyorbit.com/bot.htm)'
+    family: 'Orbiter'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'PagePeeker.com'
+    family: 'PagePeeker'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'PagesInventory (robot +http://www.pagesinventory.com)'
+    family: 'PagesInventory'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; PaxleFramework/0.1.1;  http://www.paxle.net/en/bot)'
+    family: 'PaxleFramework'
+    major: '0'
+    minor: '1'
+    patch: '1'
+
+  - user_agent_string: 'Peeplo Screenshot Bot/0.20 ( abuse at peeplo dot_com )'
+    family: 'Peeplo Screenshot Bot'
+    major: '0'
+    minor: '20'
+    patch:
+
+  - user_agent_string: 'PlantyNet_WebRobot_V1.9 babo@plantynet.com'
+    family: 'PlantyNet_WebRobot'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Pompos/1.2 http://pompos.iliad.fr'
+    family: 'Pompos'
+    major: '1'
+    minor: '2'
+    patch:
+
+  - user_agent_string: 'Reaper/1.3.6 (Linux; U; Android 4.3; de-DE; GT-I9300 Build/JSS15J)'
+    family: 'Reaper'
+    major: '1'
+    minor: '3'
+    patch: '6'
+
+  - user_agent_string: 'Reaper/2.07 ( http://www.sitesearch.ca/reaper)'
+    family: 'Reaper'
+    major: '2'
+    minor: '07'
+    patch:
+
+  - user_agent_string: 'RedCarpet/1.0 (http://www.redcarpet-inc.com/robots.html)'
+    family: 'RedCarpet'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'RedCarpet/2.1 CFNetwork/672.0.2 Darwin/14.0.0'
+    family: 'RedCarpet'
+    major: '2'
+    minor: '1'
+    patch:
+
+  - user_agent_string: 'Riddler (http://riddler.io/about.html)'
+    family: 'Riddler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Scrapy/0.16.4 (+http://scrapy.org)'
+    family: 'Scrapy'
+    major: '0'
+    minor: '16'
+    patch: '4'
+
+  - user_agent_string: 'Scrapy/0.22.2 (+http://scrapy.org)'
+    family: 'Scrapy'
+    major: '0'
+    minor: '22'
+    patch: '2'
+
+  - user_agent_string: 'Simpy/1.1 (Simpy; http://www.simpy.com/?ref=bot; feedback at simpy dot com)'
+    family: 'Simpy'
+    major: '1'
+    minor: '1'
+    patch:
+
+  - user_agent_string: 'Mozilla/3.0 (Slurp.so/1.0; slurp@inktomi.com; http://www.inktomi.com/slurp.html)'
+    family: 'Slurp'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Slurp/2.0'
+    family: 'Slurp'
+    major: '2'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; Yahoo!; U; Slurp/3.0; http://help.yahoo.com/help/us/ysearch/slurp) Mozilla/5.0 ()'
+    family: 'Slurp'
+    major: '3'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; Speedy Spider; http://www.entireweb.com/about/search_tech/speedy_spider/)'
+    family: 'Speedy Spider'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Squrl Java/1.6.0_22'
+    family: 'Squrl Java'
+    major: '1'
+    minor: '6'
+    patch: '0'
+
+  - user_agent_string: 'TheUsefulbot_2.3.62 (bot@theusefulnet.com)'
+    family: 'TheUsefulbot'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (X11; U; Linux x86_64; de-DE; rv:1.9.0.19) Gecko/2010091808 ThumbShotsBot (KFSW 3.0.6-3)'
+    family: 'ThumbShotsBot'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; Thumbshots.ru; +http://thumbshots.ru/bot) Firefox/3'
+    family: 'Thumbshots.ru'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; Vagabondo/Wapspider; webcrawler at wise-guys dot nl; http://webagent.wise-guys.nl/)'
+    family: 'Vagabondo'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; Vagabondo/2.1; webcrawler at wise-guys dot nl; http://webagent.wise-guys.nl/)'
+    family: 'Vagabondo'
+    major: '2'
+    minor: '1'
+    patch:
+
+  - user_agent_string: 'Mozilla/4.0 (compatible;  Vagabondo/2.2; webcrawler at wise-guys dot nl; http://webagent.wise-guys.nl/)'
+    family: 'Vagabondo'
+    major: '2'
+    minor: '2'
+    patch:
+
+  - user_agent_string: 'Mozilla/4.0 (compatible;  Vagabondo/2.3; webcrawler at wise-guys dot nl; http://webagent.wise-guys.nl/)'
+    family: 'Vagabondo'
+    major: '2'
+    minor: '3'
+    patch:
+
+  - user_agent_string: 'Mozilla/4.0 (compatible;  Vagabondo/4.0Beta; webcrawler at wise-guys dot nl; http://webagent.wise-guys.nl/)'
+    family: 'Vagabondo'
+    major: '4'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Mozilla/4.0 (compatible; MSIE 5.0; Windows 95) VoilaBot BETA 1.2 (http://www.voila.com/)'
+    family: 'VoilaBot'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (Votay bot/4.0;  http://www.votay.com/arts/comics/)'
+    family: 'Votay bot'
+    major: '4'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; WASALive Bot ; http://blog.wasalive.com/wasalive-bots/)'
+    family: 'WASALive Bot'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (iPad; U; CPU iPhone OS 7_0 like Mac OS X; de-DE) WIRED/3.2.3.11.87970'
+    family: 'WIRE'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'WIRE/0.11 (Linux; i686; Robot,Spider,Crawler,aromano@cli.di.unipi.it)'
+    family: 'WIRE'
+    major: '0'
+    minor: '11'
+    patch:
+
+  - user_agent_string: 'WIRE/1.0 (Linux;i686;Bot,Robot,Spider,Crawler)'
+    family: 'WIRE'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (Windows; Windows NT 6.1; WOW64; rv:2.0b8pre; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; MS-RTC LM 8; OfficeLiveConnector.1.4; OfficeLivePatch.1.3; SLCC1; SLCC2; Media Center PC 6.0; GTB6.4; InfoPath.2; en-US; FunWebProducts; Zango 10.1.181.0; SV1; PRTG Network Monitor (www.paessler.com)) Gecko/20101114 Firefox/4.0b8pre QuickTime/7.6.2 Songbird/1.1.2 Web-sniffer/1.0.36 lftp/3.7.4 libwww-perl/5.820 GSiteCrawler/v1.12 rev. 260 Snoopy v1.2'
+    family: 'Web-sniffer'
+    major: '1'
+    minor: '0'
+    patch: '36'
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; WebThumbnail/2.2; Website Thumbnail Generator; +http://webthumbnail.org)'
+    family: 'WebThumb'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.9.0.17) Gecko WebThumb/1.0'
+    family: 'WebThumb'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'WhatWeb/0.4.8'
+    family: 'WhatWeb'
+    major: '0'
+    minor: '4'
+    patch: '8'
+
+  - user_agent_string: 'Jetpack by WordPress.com'
+    family: 'WordPress'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'WordPress/1.2.1 PHP/4.3.9-1'
+    family: 'WordPress'
+    major: '1'
+    minor: '2'
+    patch: '1'
+
+  - user_agent_string: 'Pachacutec/0.5 (qpImageBuilders.com); WordPress/3.1; http://contacto-latino.com/news'
+    family: 'WordPress'
+    major: '3'
+    minor: '1'
+    patch:
+
+  - user_agent_string: 'Wotbox/0.7-alpha (bot@wotbox.com; http://www.wotbox.com)'
+    family: 'Wotbox'
+    major: '0'
+    minor: '7'
+    patch:
+
+  - user_agent_string: 'Wotbox/2.01 ( http://www.wotbox.com/bot/)'
+    family: 'Wotbox'
+    major: '2'
+    minor: '01'
+    patch:
+
+  - user_agent_string: 'Xenu Link Sleuth 1.1f'
+    family: 'Xenu Link Sleuth'
+    major: '1'
+    minor: '1'
+    patch:
+
+  - user_agent_string: "Xenu's Link Sleuth 1.0p"
+    family: "Xenu's Link Sleuth"
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Xerka WebBot v1.0.0 [AIDO_CREA_ab]'
+    family: 'Xerka WebBot'
+    major: '1'
+    minor: '0'
+    patch: '0'
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; Yahoo! Slurp China; http://misc.yahoo.com.cn/help.html)'
+    family: 'Yahoo! Slurp'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; Yahoo! Slurp/3.0 ; http://help.yahoo.com/help/us/ysearch/slurp)'
+    family: 'Yahoo! Slurp'
+    major: '3'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'LG-C1500 UP.Browser/6.2.3 (GUI) MMP/1.0 (compatible;YahooSeeker/M1A1-R2D2; http://help.yahoo.com/help/us/ysearch/crawling/crawling-01.html)'
+    family: 'YahooSeeker'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots),gzip(gfe) AppEngine-Google; (+http://code.google.com/appengine; appid: twitter-mirror),gzip(gfe),gzip(gfe),gzip(gfe)'
+    family: 'YandexBot'
+    major: '3'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Yeti-FeedItemCrawler/1.0 (NHN Corp.;+http://help.naver.com/robots/)'
+    family: 'Yeti'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; YodaoBot/1.0; http://www.yodao.com/help/webmaster/spider/; )'
+    family: 'YodaoBot'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible;YodaoBot-Image/1.0;http://www.youdao.com/help/webmaster/spider/;)'
+    family: 'YodaoBot-Image'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'YowedoBot/Yowedo 1.0 (Search Engine crawler for yowedo.com; http://yowedo.com/en/partners.html; crawler@yowedo.com)'
+    family: 'Yowedo'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Zao-Crawler'
+    family: 'Zao'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'ZeBot_www.ze.bz (ze.bz@hotmail.com)'
+    family: 'ZeBot_www.ze.bz'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'ZooShot 0.42'
+    family: 'ZooShot'
+    major: '0'
+    minor: '42'
+    patch:
+
+  - user_agent_string: 'Mozilla/4.0 (compatible; MSIE; ZyBorg; Win32)'
+    family: 'ZyBorg'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/4.0 compatible ZyBorg/1.0 (ZyBorg@WISEnutbot.com; http://www.WISEnutbot.com)'
+    family: 'ZyBorg'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'AltaVista Intranet V2.0 Compaq Altavista Eval sveand@altavista.net'
+    family: 'altavista'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; archive.bibalex.org_bot; +http://www.test.com)'
+    family: 'archive.bibalex.org_bot'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; archive.org_bot/heritrix-1.15.1-x  http://pandora.nla.gov.au/crawl.html)'
+    family: 'archive.org_bot'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; special_archiver/3.2.0 +http://www.loc.gov/webarchiving/notice_to_webmasters.html)'
+    family: 'archiver'
+    major: '3'
+    minor: '2'
+    patch: '0'
+
+  - user_agent_string: 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50215; baiduspider)'
+    family: 'baiduspider'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'baiduspider-mobile-gate'
+    family: 'baiduspider-mobile-gate'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'bingbot'
+    family: 'bingbot'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; bingbot/2.0  http://www.bing.com/bingbot.htm)'
+    family: 'bingbot'
+    major: '2'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'boitho.com-dc/0.4 ( http://www.boitho.com/dcbot.html )'
+    family: 'boitho.com-dc'
+    major: '0'
+    minor: '4'
+    patch:
+
+  - user_agent_string: 'boitho.com-dc/0.86 ( http://www.boitho.com/dcbot.html )'
+    family: 'boitho.com-dc'
+    major: '0'
+    minor: '86'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; clumboot; +http://localhost/clumpit/bot.php)'
+    family: 'clumboot'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'findlinks/2.6 ( http://wortschatz.uni-leipzig.de/findlinks/)'
+    family: 'findlinks'
+    major: '2'
+    minor: '6'
+    patch:
+
+  - user_agent_string: 'Mozilla/4.0 compatible FurlBot/Furl Search 2.0 (FurlBot; http://www.furl.net; wn.furlbot@looksmart.net)'
+    family: 'furlbot'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'gonzo1[D] mailto:crawleradmin.t-info@telekom.de'
+    family: 'gonzo1'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'grub-client-1.5.3; (grub-client-1.5.3; Crawl your own stuff with http://grub.org)'
+    family: 'grub-client'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'gsa-crawler'
+    family: 'gsa-crawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; cdlwas_bot; heritrix/1.14.1 +http://webarchives.cdlib.org/p/webmasters)'
+    family: 'heritrix'
+    major: '1'
+    minor: '14'
+    patch: '1'
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; heritrix/3.2.0 +http://suki.ling.helsinki.fi/eng/project.html)'
+    family: 'heritrix'
+    major: '3'
+    minor: '2'
+    patch: '0'
+
+  - user_agent_string: 'holmes/2.3'
+    family: 'holmes'
+    major: '2'
+    minor: '3'
+    patch:
+
+  - user_agent_string: 'holmes/3.12.4 (http://morfeo.centrum.cz/bot)'
+    family: 'holmes'
+    major: '3'
+    minor: '12'
+    patch: '4'
+
+  - user_agent_string: 'htdig/3.1.6 (romieu@bastide-medical.fr)'
+    family: 'htdig'
+    major: '3'
+    minor: '1'
+    patch: '6'
+
+  - user_agent_string: 'ia_archiver/8.7 (Windows NT 5.0; )'
+    family: 'ia_archiver'
+    major: '8'
+    minor: '7'
+    patch:
+
+  - user_agent_string: 'ichiro/1.0 (ichiro@nttr.co.jp)'
+    family: 'ichiro'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'ichiro/5.0 (http://help.goo.ne.jp/door/crawler.html)'
+    family: 'ichiro'
+    major: '5'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'DoCoMo/2.0 P900i(c100;TB;W24H11)(compatible; ichiro/mobile goo;  http://help.goo.ne.jp/door/crawler.html)'
+    family: 'ichiro/mobile'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: '08_800w_web1 (larbin2.6.3@unspecified.mail)'
+    family: 'larbin'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; LYCOSA;+http://lycosa.se)'
+    family: 'lycos'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'masidani_bot_v0.3 (info@masidani.com)'
+    family: 'masidani_bot'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'mozDex/0.05-dev (mozDex; http://www.mozdex.com/bot.html; spider@mozdex.com)'
+    family: 'mozDex'
+    major: '0'
+    minor: '05'
+    patch:
+
+  - user_agent_string: 'msnbot/2.0 (+http://search.msn.com/msnbot.htm)'
+    family: 'msnbot'
+    major: '2'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13 (.NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; msnbot/2.1) Jakarta Commons-HttpClient/3.0-rc3 PHPCrawl GStreamer souphttpsrc libsoup/2.27.4 PycURL/7.19.0 XML-RPC for PHP 2.2.1 GoogleFriendConnect/1.0 HTMLParser/1.6 gPodder/0.15.2 ( http://gpodder.org/) anw webtool LoadControl/1.3 WinHttp urlgrabber/3.1.0'
+    family: 'msnbot'
+    major: '2'
+    minor: '1'
+    patch:
+
+  - user_agent_string: 'msnbot-media/1.0 ( http://search.msn.com/msnbot.htm)'
+    family: 'msnbot-media'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'msnbot-media/2.0b (+http://search.msn.com/msnbot.htm)'
+    family: 'msnbot-media'
+    major: '2'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'MSRBOT (http://research.microsoft.com/research/sv/msrbot)'
+    family: 'msrbot'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; scooter; .NET CLR 1.0.3705)'
+    family: 'scooter'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/4.0 (compatible; focuseekbot)'
+    family: 'seekbot'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'semanticdiscovery/0.2(http://www.semanticdiscovery.com/sd/robot.html)'
+    family: 'semanticdiscovery'
+    major: '0'
+    minor: '2'
+    patch:
+
+  - user_agent_string: 'semanticdiscovery/2.0(http://www.semanticdiscovery.com/robot.html)'
+    family: 'semanticdiscovery'
+    major: '2'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'voyager/1.0'
+    family: 'voyager'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'voyager/2.0 (http://www.kosmix.com/crawler.html)'
+    family: 'voyager'
+    major: '2'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'http://www.almaden.ibm.com/cs/crawler'
+    family: 'www.almaden.ibm.com'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: '449 Overture-WebCrawler/3.8/Fresh (atw-crawler at fast dot no; http://fast.no/support/crawler.asp'
+    family: '449 Overture-WebCrawler'
+    major: '3'
+    minor: '8'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; 80bot/0.71; http://www.80legs.com/spider.html;) Gecko/2008032620'
+    family: '80bot'
+    major: '0'
+    minor: '71'
+    patch:
+
+  - user_agent_string: 'A6-Indexer/1.0 (http://www.a6corp.com/a6-web-scraping-policy/)'
+    family: 'A6-Indexer'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'AcquiloSpider/1.0,gzip(gfe),gzip(gfe)'
+    family: 'AcquiloSpider'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Aleksika Spider/1.0 ( http://www.aleksika.com/)'
+    family: 'Aleksika Spider'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'AmorankSpider/0.1; +http://amorank.com/webcrawler.html'
+    family: 'AmorankSpider'
+    major: '0'
+    minor: '1'
+    patch:
+
+  - user_agent_string: 'AnomaliesBot/0.06-dev (The Anomalies Network Search Spider; http://www.anomalies.net; info@anomalies.net)'
+    family: 'AnomaliesBot'
+    major: '0'
+    minor: '06'
+    patch:
+
+  - user_agent_string: 'Automattic Analytics Crawler/0.1; http://wordpress.com/crawler/'
+    family: 'Automattic Analytics Crawler'
+    major: '0'
+    minor: '1'
+    patch:
+
+  - user_agent_string: 'Automattic Analytics Crawler/0.2;+http://wordpress.com/crawler/'
+    family: 'Automattic Analytics Crawler'
+    major: '0'
+    minor: '2'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; BLEXBot/1.0; +http://webmeup.com/crawler.html)'
+    family: 'BLEXBot'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'BabalooSpider/1.2 (BabalooSpider; http://www.babaloo.si; spider@babaloo.si)'
+    family: 'BabalooSpider'
+    major: '1'
+    minor: '2'
+    patch:
+
+  - user_agent_string: 'BabalooSpider/1.3 (BabalooSpider; http://www.babaloo.si; spider@babaloo.si)'
+    family: 'BabalooSpider'
+    major: '1'
+    minor: '3'
+    patch:
+
+  - user_agent_string: 'BebopBot/2.5.1 (compatible; media crawler V1;  http://www.apassion4jazz.net/bebopbot.html;)'
+    family: 'BebopBot'
+    major: '2'
+    minor: '5'
+    patch: '1'
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; BlinkaCrawler/1.0;  http://www.blinka.jp/crawler/)'
+    family: 'BlinkaCrawler'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'BlogRangerCrawler/1.0'
+    family: 'BlogRangerCrawler'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Brekiri crawler/1.0'
+    family: 'Brekiri crawler'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'BurstFindCrawler/1.1 (crawler.burstfind.com; http://crawler.burstfind.com; crawler@burstfind.com)'
+    family: 'BurstFindCrawler'
+    major: '1'
+    minor: '1'
+    patch:
+
+  - user_agent_string: 'CCBot/1.0 ( http://www.commoncrawl.org/bot.html)'
+    family: 'CCBot'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'CCBot/2.0 (http://commoncrawl.org/faq/)'
+    family: 'CCBot'
+    major: '2'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'CamontSpider/1.0  http://epweb2.ph.bham.ac.uk/user/slater/camont/info.html'
+    family: 'CamontSpider'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'CazoodleBot/0.1 (CazoodleBot Crawler; http://www.cazoodle.com; mqbot@cazoodle.com)'
+    family: 'CazoodleBot'
+    major: '0'
+    minor: '1'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; CloudServerMarketSpider/1.0; +http://www.cloudservermarket.com/spider.html)'
+    family: 'CloudServerMarketSpider'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; CompSpyBot/1.0; +http://www.compspy.com/spider.html)'
+    family: 'CompSpyBot'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'ConveraMultiMediaCrawler/0.1 ( http://www.authoritativeweb.com/crawl)'
+    family: 'ConveraMultiMediaCrawler'
+    major: '0'
+    minor: '1'
+    patch:
+
+  - user_agent_string: 'CosmixCrawler/0.1'
+    family: 'CosmixCrawler'
+    major: '0'
+    minor: '1'
+    patch:
+
+  - user_agent_string: 'Crawl/0.1 langcrawl/0.1'
+    family: 'Crawl'
+    major: '0'
+    minor: '1'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; CrawlBot/1.0.0)'
+    family: 'CrawlBot'
+    major: '1'
+    minor: '0'
+    patch: '0'
+
+  - user_agent_string: 'Crawllybot/0.1/0.1 (Crawllybot/0.1; http://www.crawlly.com; crawler@crawlly.com)'
+    family: 'Crawllybot'
+    major: '0'
+    minor: '1'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; Crawly/1.9;  http://92.51.162.40/crawler.html)'
+    family: 'Crawly'
+    major: '1'
+    minor: '9'
+    patch:
+
+  - user_agent_string: 'Crawlzilla/1.0 (Crawlzilla; http://www.crawlzilla.com; crawler@crawlzilla.com)'
+    family: 'Crawlzilla'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'CydralSpider/3.2 (Cydral Image Search; http://www.cydral.com)'
+    family: 'CydralSpider'
+    major: '3'
+    minor: '2'
+    patch:
+
+  - user_agent_string: 'DealGates Bot/1.1 by Luc Michalski (http://spider.dealgates.com/bot.html)'
+    family: 'DealGates Bot'
+    major: '1'
+    minor: '1'
+    patch:
+
+  - user_agent_string: 'Denodo IECrawler/4.5,gzip(gfe),gzip(gfe)'
+    family: 'Denodo IECrawler'
+    major: '4'
+    minor: '5'
+    patch:
+
+  - user_agent_string: 'Diffbot/0.1'
+    family: 'Diffbot'
+    major: '0'
+    minor: '1'
+    patch:
+
+  - user_agent_string: 'DomainCrawler/2.0 (info@domaincrawler.com; http://www.domaincrawler.com/bot'
+    family: 'DomainCrawler'
+    major: '2'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'DotBot/1.0.1 (http://www.dotnetdotcom.org/, crawler@dotnetdotcom.org)'
+    family: 'DotBot'
+    major: '1'
+    minor: '0'
+    patch: '1'
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; DotBot/1.1; http://www.dotnetdotcom.org/, crawler@dotnetdotcom.org)'
+    family: 'DotBot'
+    major: '1'
+    minor: '1'
+    patch:
+
+  - user_agent_string: 'DotSpotsBot/0.2 (crawler; support at dotspots.com)'
+    family: 'DotSpotsBot'
+    major: '0'
+    minor: '2'
+    patch:
+
+  - user_agent_string: 'ERACrawler/1.0'
+    family: 'ERACrawler'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; EventGuruBot/1.0; +http://www.eventguru.com/spider.html)'
+    family: 'EventGuruBot'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; Ex-Crawler/0.1.5a; powered by ex-crawler; +http://www.ex-crawler.de/) Java/1.6.0_20,gzip(gfe),gzip(gfe)'
+    family: 'Ex-Crawler'
+    major: '0'
+    minor: '1'
+    patch: '5'
+
+  - user_agent_string: 'ExactSeek Crawler/0.1'
+    family: 'ExactSeek Crawler'
+    major: '0'
+    minor: '1'
+    patch:
+
+  - user_agent_string: 'ExactSeekCrawler/1.0'
+    family: 'ExactSeekCrawler'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'FANGCrawl/0.01'
+    family: 'FANGCrawl'
+    major: '0'
+    minor: '01'
+    patch:
+
+  - user_agent_string: 'FAST Enterprise Crawler/6 (www.fastsearch.com)'
+    family: 'FAST Enterprise Crawler'
+    major: '6'
+    minor:
+    patch:
+
+  - user_agent_string: 'FAST-WebCrawler/2.2.11 (crawler@fast.no; http://www.fast.no/faq/faqfastwebsearch/faqfastwebcrawler.html)'
+    family: 'FAST-WebCrawler'
+    major: '2'
+    minor: '2'
+    patch: '11'
+
+  - user_agent_string: 'FAST-WebCrawler/3.7 (atw-crawler at fast dot no; http://fast.no/support/crawler.asp)'
+    family: 'FAST-WebCrawler'
+    major: '3'
+    minor: '7'
+    patch:
+
+  - user_agent_string: 'NokiaN70/. FASTMobileCrawl/6.6 Profile/MIDP-2.0 Configuration/CLDC-1.1'
+    family: 'FASTMobileCrawl'
+    major: '6'
+    minor: '6'
+    patch:
+
+  - user_agent_string: 'FlaxCrawler/1.0,gzip(gfe),gzip(gfe)'
+    family: 'FlaxCrawler'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'FyberSpider/1.3 (http://www.fybersearch.com/fyberspider.php)'
+    family: 'FyberSpider'
+    major: '1'
+    minor: '3'
+    patch:
+
+  - user_agent_string: 'GarlikCrawler/1.2 (http://garlik.com/'
+    family: 'GarlikCrawler'
+    major: '1'
+    minor: '2'
+    patch:
+
+  - user_agent_string: 'GematchCrawler/2.1 (http://www.gematch.com/crawler.html)'
+    family: 'GematchCrawler'
+    major: '2'
+    minor: '1'
+    patch:
+
+  - user_agent_string: 'Gigabot/2.0/gigablast.com/spider.html'
+    family: 'Gigabot'
+    major: '2'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Gigabot/3.0 (http://www.gigablast.com/spider.html)'
+    family: 'Gigabot'
+    major: '3'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'GingerCrawler/1.0 (Language Assistant for Dyslexics; www.gingersoftware.com/crawler_agent.htm; support at ginger software dot com)'
+    family: 'GingerCrawler'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'GoGuidesBot/0.0.1 (GoGuides Indexing Spider; http://www.goguides.org/spider.html)'
+    family: 'GoGuidesBot'
+    major: '0'
+    minor: '0'
+    patch: '1'
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; GrapeshotCrawler/2.0; +http://www.grapeshot.co.uk/crawler.php)'
+    family: 'GrapeshotCrawler'
+    major: '2'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'HPI FeedCrawler/0.1 (+http://www.hpi.uni-potsdam.de/meinel/bross/feedcrawler)'
+    family: 'HPI FeedCrawler'
+    major: '0'
+    minor: '1'
+    patch:
+
+  - user_agent_string: 'HRCrawler/2.0 (XF86; MacOS x86_64) AppleWebKit/537.31 (KHTML, like Gecko)'
+    family: 'HRCrawler'
+    major: '2'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; Hailoobot/1.2;  http://www.hailoo.com/spider.html)'
+    family: 'Hailoobot'
+    major: '1'
+    minor: '2'
+    patch:
+
+  - user_agent_string: 'Hatena::Crawler/0.01'
+    family: 'Hatena::Crawler'
+    major: '0'
+    minor: '01'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; HiveCrawler/1.2 http://www.businessinsider.com)'
+    family: 'HiveCrawler'
+    major: '1'
+    minor: '2'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; Host-Spy Crawler/1.2; +http://www.host-spy.com/)'
+    family: 'Host-Spy Crawler'
+    major: '1'
+    minor: '2'
+    patch:
+
+  - user_agent_string: 'HttpSpider/0.91'
+    family: 'HttpSpider'
+    major: '0'
+    minor: '91'
+    patch:
+
+  - user_agent_string: 'HuaweiSymantecSpider/1.0 DSE-support@huaweisymantec.com (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR ; http://www.huaweisymantec.com/cn/IRL/spider)'
+    family: 'HuaweiSymantecSpider'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'IRLbot/1.0 ( http://irl.cs.tamu.edu/crawler)'
+    family: 'IRLbot'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'IRLbot/3.0 (compatible; MSIE 6.0; http://irl.cs.tamu.edu/crawler)'
+    family: 'IRLbot'
+    major: '3'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Mozilla/4.0 (compatible; Iplexx Spider/1.1)'
+    family: 'Iplexx Spider'
+    major: '1'
+    minor: '1'
+    patch:
+
+  - user_agent_string: 'Jambot/0.1.1 (Jambot; http://www.jambot.com/blog; crawler@jambot.com)'
+    family: 'Jambot'
+    major: '0'
+    minor: '1'
+    patch: '1'
+
+  - user_agent_string: 'Jomjaibot/1.0 Crawl (+http://www.jomjaibot.com/)'
+    family: 'Jomjaibot'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'KIT webcrawler/0.2.4'
+    family: 'KIT webcrawler'
+    major: '0'
+    minor: '2'
+    patch: '4'
+
+  - user_agent_string: 'Kyoto-Crawler/2.0 (Mozilla-compatible; kyoto-crawler-contact(at)nlp(dot)kuee(dot)kyoto-u(dot)ac(dot)jp; http://nlp.ist.i.kyoto-u.ac.jp/)'
+    family: 'Kyoto-Crawler'
+    major: '2'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'LB-Crawler/1.0'
+    family: 'LB-Crawler'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'LSSRocketCrawler/1.0 LightspeedSystems'
+    family: 'LSSRocketCrawler'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7) Gecko/20040707 Lightningspider/0.9.2'
+    family: 'Lightningspider'
+    major: '0'
+    minor: '9'
+    patch: '2'
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; LikaholixCrawler/1.0; +http://mylikes.com/about/crawler)'
+    family: 'LikaholixCrawler'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Logict IPv6 Crawler/1.0 (http://ipv6search.logict.net),gzip(gfe),gzip(gfe)'
+    family: 'Logict IPv6 Crawler'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'MPICrawler/0.1 +http://kermit.news.cs.nyu.edu/crawler.html,gzip(gfe),gzip(gfe)'
+    family: 'MPICrawler'
+    major: '0'
+    minor: '1'
+    patch:
+
+  - user_agent_string: 'Opera/8.01 (J2ME/MIDP; MXit WebBot/1.8.3.119) Opera Mini/3.1'
+    family: 'MXit WebBot'
+    major: '1'
+    minor: '8'
+    patch: '3'
+
+  - user_agent_string: 'MetaGeneratorCrawler/1.3.8 (www.metagenerator.info)'
+    family: 'MetaGeneratorCrawler'
+    major: '1'
+    minor: '3'
+    patch: '8'
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; MetamojiCrawler/1.0; +http://www.metamoji.com/jp/crawler.html'
+    family: 'MetamojiCrawler'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'MonkeyCrawl/0.05 (MonkeyCrawl; http://www.monkeymethods.org;  )'
+    family: 'MonkeyCrawl'
+    major: '0'
+    minor: '05'
+    patch:
+
+  - user_agent_string: 'Mozilla crawl/5.0 (compatible; fairshare.cc +http://fairshare.cc)'
+    family: 'Mozilla crawl'
+    major: '5'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; NLCrawler/2.0.15; Linux 2.6.3-7; i686; en_US)KHTML/3.4.89 (like Gecko)'
+    family: 'NLCrawler'
+    major: '2'
+    minor: '0'
+    patch: '15'
+
+  - user_agent_string: 'NMG Spider/0.3 (szukanko.com)'
+    family: 'NMG Spider'
+    major: '0'
+    minor: '3'
+    patch:
+
+  - user_agent_string: 'NalezenCzBot/1.0 (http://www.nalezen.cz/about-crawler)'
+    family: 'NalezenCzBot'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'NationalDirectory-WebSpider/1.3'
+    family: 'NationalDirectory-WebSpider'
+    major: '1'
+    minor: '3'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; NetSeer crawler/2.0; +http://www.netseer.com/crawler.html; crawler@netseer.com)'
+    family: 'NetSeer crawler'
+    major: '2'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'NetWhatCrawler/0.06-dev (NetWhatCrawler from NetWhat.com; http://www.netwhat.com; support@netwhat.com)'
+    family: 'NetWhatCrawler'
+    major: '0'
+    minor: '06'
+    patch:
+
+  - user_agent_string: 'compatible; Netseer crawler/2.0; +http://www.netseer.com/crawler.html; crawler@netseer.com'
+    family: 'Netseer crawler'
+    major: '2'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'New-Sogou-Spider/1.0 (compatible; MSIE 5.5; Windows 98)'
+    family: 'New-Sogou-Spider'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'NewzCrawler/1.9 (compatible; MSIE 6.00; Newz Crawler 1.9; http://www.newzcrawler.com/ )'
+    family: 'NewzCrawler'
+    major: '1'
+    minor: '9'
+    patch:
+
+  - user_agent_string: 'NodejsSpider/1.0'
+    family: 'NodejsSpider'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; .None-Crawler/0.1 +http://domains.ericbinek.None/)'
+    family: 'None-Crawler'
+    major: '0'
+    minor: '1'
+    patch:
+
+  - user_agent_string: 'OmniExplorer_Bot/6.70 ( http://www.omni-explorer.com) WorldIndexer'
+    family: 'OmniExplorer_Bot'
+    major: '6'
+    minor: '70'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; OpenCrawler/0.1.6.6; http://code.google.com/p/opencrawler/),gzip(gfe),gzip(gfe)'
+    family: 'OpenCrawler'
+    major: '0'
+    minor: '1'
+    patch: '6'
+
+  - user_agent_string: 'OpenWebSpider/0.6 (http://www.openwebspider.org)'
+    family: 'OpenWebSpider'
+    major: '0'
+    minor: '6'
+    patch:
+
+  - user_agent_string: 'Overture-WebCrawler/3.8/Fresh (atw-crawler at fast dot no; http://fast.no/support/crawler.asp)'
+    family: 'Overture-WebCrawler'
+    major: '3'
+    minor: '8'
+    patch:
+
+  - user_agent_string: 'PArchiveCrawler/1.0'
+    family: 'PArchiveCrawler'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'PercolateCrawler/4 (ops@percolate.com)'
+    family: 'PercolateCrawler'
+    major: '4'
+    minor:
+    patch:
+
+  - user_agent_string: 'Pete-Spider/1.1'
+    family: 'Pete-Spider'
+    major: '1'
+    minor: '1'
+    patch:
+
+  - user_agent_string: 'PicSpider/1.1 (spider@217-20-118-26.internetserviceteam.com; http://www.bildkiste.de)'
+    family: 'PicSpider'
+    major: '1'
+    minor: '1'
+    patch:
+
+  - user_agent_string: 'PluckItCrawler/1.0 (compatible; Mozilla 4.0; MSIE 5.5; http://www.pluck.com;)'
+    family: 'PluckItCrawler'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; PornSpider/1.0; +http://www.pornspider.net)'
+    family: 'PornSpider'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'PortalBSpider/2.0 (spider@portalb.com)'
+    family: 'PortalBSpider'
+    major: '2'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; ProCogBot/1.0; +http://www.procog.com/spider.html)'
+    family: 'ProCogBot'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'ProloCrawler/1.0 (http://www.prolo.com)'
+    family: 'ProloCrawler'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'PsSpider/0.7 (spider@bildkiste.de)'
+    family: 'PsSpider'
+    major: '0'
+    minor: '7'
+    patch:
+
+  - user_agent_string: 'RSSIncludeBot/1.0 (http://www.rssinclude.com/spider)'
+    family: 'RSSIncludeBot'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ;  Embedded Web Browser from: http://bsalsa.com/; RSScrawler/4.0 (compatible; MSIE 6.0; Windows NT 5.0); .NET CLR 2.0.50727'
+    family: 'RSScrawler'
+    major: '4'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'RSpider/1.0'
+    family: 'RSpider'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'RyzeCrawler/1.1.0 (+http://www.ryze.nl/crawler/)'
+    family: 'RyzeCrawler'
+    major: '1'
+    minor: '1'
+    patch: '0'
+
+  - user_agent_string: 'SMXCrawler/1.0 (www.socialmetrix.com)'
+    family: 'SMXCrawler'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; SRCCN!Spider/1.1; +http://site.srccn.com/spider.html)'
+    family: 'SRCCN!Spider'
+    major: '1'
+    minor: '1'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; SWEBot/1.0; +http://swebot-crawler.net)'
+    family: 'SWEBot'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Sangfor Spider/0.7'
+    family: 'Sangfor Spider'
+    major: '0'
+    minor: '7'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (Linux; U; Sailfish 3.0; Mobile; rv:45.0) Gecko/45.0 Firefox/45.0 SailfishBrowser/1.0'
+    family: 'Sailfish Browser'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (Linux; U; Sailfish 3.0; Mobile; rv:45.0) Gecko/45.0 Firefox/45.0 SailfishBrowser/1.2.3'
+    family: 'Sailfish Browser'
+    major: '1'
+    minor: '2'
+    patch: '3'
+
+  - user_agent_string: 'Mozilla/5.0 (Linux; Android 5.0.1; SAMSUNG GT-I9506-ORANGE Build/LRX22C) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/2.1 Chrome/34.0.1847.76 Mobile Safari/537.36'
+    family: 'Samsung Internet'
+    major: '2'
+    minor: '1'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (Linux; Android 5.0.2; SAMSUNG SM-T800 Build/LRX22G) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/3.0 Chrome/38.0.2125.102 Safari/537.36'
+    family: 'Samsung Internet'
+    major: '3'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (Linux; Android 5.1.1; SAMSUNG SM-G920F Build/LMY47X) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/3.2 Chrome/38.0.2125.102 Mobile Safari/537.36'
+    family: 'Samsung Internet'
+    major: '3'
+    minor: '2'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (Linux; Android 5.0.2; SAMSUNG SM-T710 Build/LRX22G) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/3.5 Chrome/38.0.2125.102 Safari/537.36'
+    family: 'Samsung Internet'
+    major: '3'
+    minor: '5'
+    patch:
+
+  - user_agent_string: 'ScSpider/0.2'
+    family: 'ScSpider'
+    major: '0'
+    minor: '2'
+    patch:
+
+  - user_agent_string: 'ScollSpider/2.0 ( http://www.webwobot.com/ScollSpider.php)'
+    family: 'ScollSpider'
+    major: '2'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Screaming Frog SEO Spider/1.10'
+    family: 'Screaming Frog SEO Spider'
+    major: '1'
+    minor: '10'
+    patch:
+
+  - user_agent_string: 'Screaming Frog SEO Spider/2,01'
+    family: 'Screaming Frog SEO Spider'
+    major: '2'
+    minor:
+    patch:
+
+  - user_agent_string: 'SearchSpider/1.2.10'
+    family: 'SearchSpider'
+    major: '1'
+    minor: '2'
+    patch: '10'
+
+  - user_agent_string: 'Searchspider/1.2 (SearchSpider; http://www.searchspider.com; webmaster@searchspider.com)'
+    family: 'Searchspider'
+    major: '1'
+    minor: '2'
+    patch:
+
+  - user_agent_string: 'SimpleCrawler/0.1'
+    family: 'SimpleCrawler'
+    major: '0'
+    minor: '1'
+    patch:
+
+  - user_agent_string: 'SlugBug Spider/0.1 beta (SlugBug.com search engine; http://www.slugbug.com)'
+    family: 'SlugBug Spider'
+    major: '0'
+    minor: '1'
+    patch:
+
+  - user_agent_string: 'SmartAndSimpleWebCrawler/1.3 (https://crawler.dev.java.net),gzip(gfe),gzip(gfe)'
+    family: 'SmartAndSimpleWebCrawler'
+    major: '1'
+    minor: '3'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; Linux; Socialradarbot/2.0; en-US; crawler@infegy.com)'
+    family: 'Socialradarbot'
+    major: '2'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Sogou Orion spider/4.0( http://www.sogou.com/docs/help/webmasters.htm#07)'
+    family: 'Sogou Orion spider'
+    major: '4'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Sogou Pic Spider/3.0( http://www.sogou.com/docs/help/webmasters.htm#07)'
+    family: 'Sogou Pic Spider'
+    major: '3'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Sogou Push Spider/3.0( http://www.sogou.com/docs/help/webmasters.htm#07)'
+    family: 'Sogou Push Spider'
+    major: '3'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Sogou develop spider/4.0( http://www.sogou.com/docs/help/webmasters.htm#07)'
+    family: 'Sogou develop spider'
+    major: '4'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Sogou head spider/3.0( http://www.sogou.com/docs/help/webmasters.htm#07)'
+    family: 'Sogou head spider'
+    major: '3'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Sogou web spider/3.0( http://www.sogou.com/docs/help/webmasters.htm#07)'
+    family: 'Sogou web spider'
+    major: '3'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Sogou-Test-Spider/4.0 (compatible; MSIE 5.5; Windows 98)'
+    family: 'Sogou-Test-Spider'
+    major: '4'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; Sosoimagespider/2.0; +http://help.soso.com/soso-image-spider.htm)'
+    family: 'Sosoimagespider'
+    major: '2'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; Sosospider/2.0; +http://help.soso.com/webspider.htm)'
+    family: 'Sosospider'
+    major: '2'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Spider/5.0'
+    family: 'Spider'
+    major: '5'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'SpokeSpider/1.0 (http://support.spoke.com/webspider/) Mozilla/5.0 (not really)'
+    family: 'SpokeSpider'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; StoneSunSpider/1.1)'
+    family: 'StoneSunSpider'
+    major: '1'
+    minor: '1'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; StreamScraper/1.0; +http://code.google.com/p/streamscraper/)'
+    family: 'StreamScraper'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Mozilla/4.0 (compatible; MSIE 5.5; SuperSpider/139; Windows 98; Win 9x 4.90)'
+    family: 'SuperSpider'
+    major: '139'
+    minor:
+    patch:
+
+  - user_agent_string: 'T3census-Crawler/1.0'
+    family: 'T3census-Crawler'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'TECOMAC-Crawler/0.3'
+    family: 'TECOMAC-Crawler'
+    major: '0'
+    minor: '3'
+    patch:
+
+  - user_agent_string: 'Tasapspider/0.9'
+    family: 'Tasapspider'
+    major: '0'
+    minor: '9'
+    patch:
+
+  - user_agent_string: 'TinEye-bot/0.02 (see http://www.tineye.com/crawler.html)'
+    family: 'TinEye-bot'
+    major: '0'
+    minor: '02'
+    patch:
+
+  - user_agent_string: 'Top10Ranking Spider/3.1 ( http://www.top10Ranking.nl/, Top10ranking.nl heeft op een aantal woorden uw posities in Google gecheckt)'
+    family: 'Top10Ranking Spider'
+    major: '3'
+    minor: '1'
+    patch:
+
+  - user_agent_string: 'TouTrix crawler/1.0'
+    family: 'TouTrix crawler'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; TridentSpider/3.1)'
+    family: 'TridentSpider'
+    major: '3'
+    minor: '1'
+    patch:
+
+  - user_agent_string: 'TurnitinBot/1.5 (http://www.turnitin.com/robot/crawlerinfo.html)'
+    family: 'TurnitinBot'
+    major: '1'
+    minor: '5'
+    patch:
+
+  - user_agent_string: 'TurnitinBot/3.0 (http://www.turnitin.com/robot/crawlerinfo.html)'
+    family: 'TurnitinBot'
+    major: '3'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; Linux i686; en-US; URLfilterDB-crawler/1.0) ufdb/1.0'
+    family: 'URLfilterDB-crawler'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (URLfilterDB-crawler/1.1) ufdb/1.0'
+    family: 'URLfilterDB-crawler'
+    major: '1'
+    minor: '1'
+    patch:
+
+  - user_agent_string: 'VinjaVideoSpider/1.1'
+    family: 'VinjaVideoSpider'
+    major: '1'
+    minor: '1'
+    patch:
+
+  - user_agent_string: 'VisBot/2.0 (Visvo.com Crawler; http://www.visvo.com/bot.html; bot@visvo.com)'
+    family: 'VisBot'
+    major: '2'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; VodpodCrawler/1.0; +http://vodpod.com/site/help)'
+    family: 'VodpodCrawler'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'WSDLSpider/1.0 (http://www.wsdlworld.com)'
+    family: 'WSDLSpider'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; WangIDSpider/1.0; +http://www.wangid.com/spider.html)'
+    family: 'WangIDSpider'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Web-Robot/5.0 (en-US; web-robot.com/policy.html) Web-Robot Crawler/2.0.3'
+    family: 'Web-Robot'
+    major: '5'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'WebAlta Crawler/1.3.18 (http://www.webalta.net/ru/about_webmaster.html) (Windows; U; Windows NT 5.1; ru-RU)'
+    family: 'WebAlta Crawler'
+    major: '1'
+    minor: '3'
+    patch: '18'
+
+  - user_agent_string: 'WebAlta Crawler/2.0 (http://www.webalta.net/ru/about_webmaster.html) (Windows; U; Windows NT 5.1; ru-RU)'
+    family: 'WebAlta Crawler'
+    major: '2'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'WebIndexer/1-dev (Web Indexer; mailto://webindexerv1@yahoo.com; webindexerv1@yahoo.com)'
+    family: 'WebIndexer'
+    major: '1'
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; Webbot/0.1; http://www.webbot.ru/bot.html)'
+    family: 'Webbot'
+    major: '0'
+    minor: '1'
+    patch:
+
+  - user_agent_string: 'Webspider/1.0 (web spider;  )'
+    family: 'Webspider'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'WinWebBot/1.0; (Balaena Ltd, UK); http://www.balaena.com/winwebbot.html; winwebbot@balaena.com;)'
+    family: 'WinWebBot'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'WinkBot/0.06 (Wink.com search engine web crawler; http://www.wink.com/Wink:WinkBot; winkbot@wink.com)'
+    family: 'WinkBot'
+    major: '0'
+    minor: '06'
+    patch:
+
+  - user_agent_string: 'Yahoo-MMCrawler/3.x (mm dash crawler at trd dot overture dot com)'
+    family: 'Yahoo-MMCrawler'
+    major: '3'
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (Yahoo-MMCrawler/4.0; mailto:vertical-crawl-support@yahoo-inc.com)'
+    family: 'Yahoo-MMCrawler'
+    major: '4'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Yahoo-Newscrawler/3.9 (news-search-crawler at yahoo-inc dot com)'
+    family: 'Yahoo-Newscrawler'
+    major: '3'
+    minor: '9'
+    patch:
+
+  - user_agent_string: 'Yahoo-VerticalCrawler-FormerWebCrawler/3.9 crawler at trd dot overture dot com; http://www.alltheweb.com/help/webmaster/crawler'
+    family: 'Yahoo-VerticalCrawler-FormerWebCrawler'
+    major: '3'
+    minor: '9'
+    patch:
+
+  - user_agent_string: 'YoonoCrawler/1.0 (crawler@yoono.com)'
+    family: 'YoonoCrawler'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; YoudaoBot/1.0; http://www.youdao.com/help/webmaster/spider/; )'
+    family: 'YoudaoBot'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; ZemlyaCrawl/1.0; +http://zemlyaozer.com/bot)'
+    family: 'ZemlyaCrawl'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: "Zeusbot/0.8.1 (Ulysseek's web-crawling robot; http://www.zeusbot.com; agent@zeusbot.com)"
+    family: 'Zeusbot'
+    major: '0'
+    minor: '8'
+    patch: '1'
+
+  - user_agent_string: 'agbot/1.0 (AgHaven.com search engine crawler; http://search.aghaven.com; bot@aghaven.com)'
+    family: 'agbot'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; archive_crawler/3.0.0-SNAPSHOT-20091205.013431  http://www.archive.org/details/archive_crawler)'
+    family: 'archive_crawler'
+    major: '3'
+    minor: '0'
+    patch: '0'
+
+  - user_agent_string: 'audioCrawlerBot/1.0 (http://www.audiocrawler.com/)'
+    family: 'audioCrawlerBot'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'awesomebar_scraper/1.0'
+    family: 'awesomebar_scraper'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'blog_crawler/1.0'
+    family: 'blog_crawler'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; ca-crawler/1.0)'
+    family: 'ca-crawler'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'crawl/0.4 langcrawl/0.1'
+    family: 'crawl'
+    major: '0'
+    minor: '4'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; crawler/3.0.0 +http://www.notconfigured.com/)'
+    family: 'crawler'
+    major: '3'
+    minor: '0'
+    patch: '0'
+
+  - user_agent_string: 'dCrawlBot/1.0.1120'
+    family: 'dCrawlBot'
+    major: '1'
+    minor: '0'
+    patch: '1120'
+
+  - user_agent_string: 'deepcrawler/3.1 (http://www.queusearch.com/whatis_deepcrawler.php),gzip(gfe),gzip(gfe)'
+    family: 'deepcrawler'
+    major: '3'
+    minor: '1'
+    patch:
+
+  - user_agent_string: 'envolk[ITS]spider/1.6 ( http://www.envolk.com/envolkspider.html)'
+    family: 'envolk[ITS]spider'
+    major: '1'
+    minor: '6'
+    patch:
+
+  - user_agent_string: 'fastlwspider/1.0'
+    family: 'fastlwspider'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'i1searchbot/2.0 (i1search web crawler; http://www.i1search.com; crawler@i1search.com)'
+    family: 'i1searchbot'
+    major: '2'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; iaskspider/1.0; MSIE 6.0)'
+    family: 'iaskspider'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'iaskspider/2.0( http://iask.com/help/help_index.html)'
+    family: 'iaskspider'
+    major: '2'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Liquida.it-Crawler/1.0 ( crawler@liquida.it +http://www.liquida.it )'
+    family: 'it-Crawler'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'it2media-domain-crawler/1.0 on crawler-prod.it2media.de'
+    family: 'it2media-domain-crawler'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'jrCrawler/1.0b'
+    family: 'jrCrawler'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; loc-crawl/1.10.1 +http://www.google.com)'
+    family: 'loc-crawl'
+    major: '1'
+    minor: '10'
+    patch: '1'
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; loc-crawler/0.11.0 +http://loc.gov),gzip(gfe),gzip(gfe),gzip(gfe)'
+    family: 'loc-crawler'
+    major: '0'
+    minor: '11'
+    patch: '0'
+
+  - user_agent_string: 'DoCoMo/2.0 P904i( m65bot/0.1; c; http://m65.jp/bot.html )'
+    family: 'm65bot'
+    major: '0'
+    minor: '1'
+    patch:
+
+  - user_agent_string: 'magpie-crawler/1.1 (U; Linux amd64; en-GB;  http://www.brandwatch.net)'
+    family: 'magpie-crawler'
+    major: '1'
+    minor: '1'
+    patch:
+
+  - user_agent_string: 'noxtrumbot/1.0 (crawler@noxtrum.com)'
+    family: 'noxtrumbot'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'nyobot/1.1 (Noyb.com search engine crawler; http://www.noyb.com; bot@noyb.com),gzip(gfe),gzip(gfe)'
+    family: 'nyobot'
+    major: '1'
+    minor: '1'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; oBot/2.3.1; +http://filterdb.iss.net/crawler/)'
+    family: 'oBot'
+    major: '2'
+    minor: '3'
+    patch: '1'
+
+  - user_agent_string: 'omgilibot/0.3 +http://www.omgili.com/Crawler.html'
+    family: 'omgilibot'
+    major: '0'
+    minor: '3'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; rogerBot/1.0; UrlCrawler; http://www.seomoz.org/dp/rogerbot)'
+    family: 'rogerBot'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'rogerbot/1.1 (http://moz.com/help/pro/what-is-rogerbot-, rogerbot-crawler+pr1-crawler-14@moz.com)'
+    family: 'rogerbot'
+    major: '1'
+    minor: '1'
+    patch:
+
+  - user_agent_string: 'semantics webbot/1.0'
+    family: 'semantics webbot'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; socialbm_bot/1.0; +http://spider.socialbm.net)'
+    family: 'socialbm_bot'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'tCrawler/0.1,gzip(gfe),gzip(gfe),gzip(gfe)'
+    family: 'tCrawler'
+    major: '0'
+    minor: '1'
+    patch:
+
+  - user_agent_string: 'tivraSpider/1.0 (crawler@tivra.com)'
+    family: 'tivraSpider'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'webscraper/1.0'
+    family: 'webscraper'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'wume_crawler/1.1 (http://wume.cse.lehigh.edu/~xiq204/crawler/)'
+    family: 'wume_crawler'
+    major: '1'
+    minor: '1'
+    patch:
+
+  - user_agent_string: 'Abrave Spider v5.3 Robot 2 (http://robot.abrave.com)'
+    family: '3 Robot'
+    major: '2'
+    minor:
+    patch:
+
+  - user_agent_string: 'Apexoo Spider 1.1'
+    family: 'Apexoo Spider'
+    major: '1'
+    minor: '1'
+    patch:
+
+  - user_agent_string: 'BT Crawler 1.0,gzip(gfe),gzip(gfe),gzip(gfe)'
+    family: 'BT Crawler'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Bot Blocker Crawler 1.0 (btw, IncrediBILL says "HI!")'
+    family: 'Bot Blocker Crawler'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'BurstFind Crawler 1.1 - www.burstfind.com'
+    family: 'BurstFind Crawler'
+    major: '1'
+    minor: '1'
+    patch:
+
+  - user_agent_string: 'Comodo Spider 1.1'
+    family: 'Comodo Spider'
+    major: '1'
+    minor: '1'
+    patch:
+
+  - user_agent_string: 'Comodo Spider 1.2'
+    family: 'Comodo Spider'
+    major: '1'
+    minor: '2'
+    patch:
+
+  - user_agent_string: 'Crawler 0.1,gzip(gfe),gzip(gfe)'
+    family: 'Crawler'
+    major: '0'
+    minor: '1'
+    patch:
+
+  - user_agent_string: 'ExB Language Crawler 2.1.5 (+http://www.exb.de/crawler)'
+    family: 'ExB Language Crawler'
+    major: '2'
+    minor: '1'
+    patch: '5'
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; FAST Crawler 6.3)'
+    family: 'FAST Crawler'
+    major: '6'
+    minor: '3'
+    patch:
+
+  - user_agent_string: 'FAST EnterpriseCrawler 6'
+    family: 'FAST EnterpriseCrawler'
+    major: '6'
+    minor:
+    patch:
+
+  - user_agent_string: 'schibstedsokbot (compatible; Mozilla/5.0; MSIE 5.0; FAST FreshCrawler 6; Contact: webcrawl@schibstedsok.no;)'
+    family: 'FAST FreshCrawler'
+    major: '6'
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; FatBot 2.0; http://www.thefind.com/crawler)'
+    family: 'FatBot'
+    major: '2'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Feedjit Favicon Crawler 1.0'
+    family: 'Feedjit Favicon Crawler'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'HubSpot Crawler 1.0 http://www.hubspot.com/'
+    family: 'HubSpot Crawler'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Jaxified Crawler 1.0a (+http://www.jaxified.com/),gzip(gfe),gzip(gfe)'
+    family: 'Jaxified Crawler'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'LinksCrawler 0.1beta'
+    family: 'LinksCrawler'
+    major: '0'
+    minor: '1'
+    patch:
+
+  - user_agent_string: 'Liquida Spider 1.0 +http://liquida.com/'
+    family: 'Liquida Spider'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'My Spider 1.0,gzip(gfe),gzip(gfe)'
+    family: 'My Spider'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'NWSpider 0.9'
+    family: 'NWSpider'
+    major: '0'
+    minor: '9'
+    patch:
+
+  - user_agent_string: 'Netchart Adv Crawler 1.0'
+    family: 'Netchart Adv Crawler'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Mozilla/4.0 (NimbleCrawler 0.1) obeys NimbleCrawler directive contact jpump@looksmart.net'
+    family: 'NimbleCrawler'
+    major: '0'
+    minor: '1'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (Windows;) NimbleCrawler 2.0.1 obeys UserAgent NimbleCrawler For problems contact: crawler@healthline.com'
+    family: 'NimbleCrawler'
+    major: '2'
+    minor: '0'
+    patch: '1'
+
+  - user_agent_string: 'OMGCrawler 1.0'
+    family: 'OMGCrawler'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'SeekOn Spider 1.9(+http://www.seekon.com/spider.html)'
+    family: 'SeekOn Spider'
+    major: '1'
+    minor: '9'
+    patch:
+
+  - user_agent_string: 'Toms Spider 0.3'
+    family: 'Toms Spider'
+    major: '0'
+    minor: '3'
+    patch:
+
+  - user_agent_string: 'Tutorial Crawler 1.4'
+    family: 'Tutorial Crawler'
+    major: '1'
+    minor: '4'
+    patch:
+
+  - user_agent_string: 'RB2B-bot v0.1 (Using Fast Enterprise Crawler 6 search@reedbusiness.com)'
+    family: 'Using Fast Enterprise Crawler'
+    major: '6'
+    minor:
+    patch:
+
+  - user_agent_string: 'WocBot/Mozilla/5.0 (Wocodi Web Crawler 1.0; http://www.wocodi.com/crawler; crawler@wocodi.com)'
+    family: 'Wocodi Web Crawler'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; WordSurfer Spider 2.2;))'
+    family: 'WordSurfer Spider'
+    major: '2'
+    minor: '2'
+    patch:
+
+  - user_agent_string: 'XSpider 0.01;http://uncool.oicp.net/spider.html'
+    family: 'XSpider'
+    major: '0'
+    minor: '01'
+    patch:
+
+  - user_agent_string: 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 7.0) XSpider 7'
+    family: 'XSpider'
+    major: '7'
+    minor:
+    patch:
+
+  - user_agent_string: 'Xaldon WebSpider 2.7.b6'
+    family: 'Xaldon WebSpider'
+    major: '2'
+    minor: '7'
+    patch:
+
+  - user_agent_string: 'echocrawl 2.0'
+    family: 'echocrawl'
+    major: '2'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'enicura crawler 1.0,gzip(gfe),gzip(gfe)'
+    family: 'enicura crawler'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Mozilla/4.0 (compatible; lworld spider 1.0; Windows NT 5.1)'
+    family: 'lworld spider'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'FAST-mSEARCH Crawler 0.1 (bergum@fast.no)'
+    family: 'FAST-mSEARCH Crawler'
+    major: '0'
+    minor: '1'
+    patch:
+
+  - user_agent_string: '123metaspider-Bot (Version: 1.04, powered by www.123metaspider.com)'
+    family: '123metaspider-Bot'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: '360Spider'
+    family: '360Spider'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (Windows; U; Win98; en-US; rv:1.8webcrawler) http://skateboarddirectory.com'
+    family: '8webcrawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'AESOP_com_SpiderMan'
+    family: 'AESOP_com_SpiderMan'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: "AISearchBot (Email: aisearchbot@gmail.com; If your web site doesn't want to be crawled, please send us a email.)"
+    family: 'AISearchBot'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/4.0 (compatible; DAWINCI ANTIPLAG SPIDER)'
+    family: 'ANTIPLAG SPIDER'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'AcquiaCrawler,gzip(gfe),gzip(gfe)'
+    family: 'AcquiaCrawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Adaxas Spider (http://www.adaxas.net/)'
+    family: 'Adaxas Spider'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0) AddSugarSpiderBot www.idealobserver.com'
+    family: 'AddSugarSpiderBot'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'AdnormCrawler www.adnorm.com/crawler'
+    family: 'AdnormCrawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'www.website-analyzer.net Website Analyzer Crawler'
+    family: 'Analyzer Crawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Apexoo Spider (http://www.apexoo.com/spider/)'
+    family: 'Apexoo Spider'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'AppCodes crawler - looking for iOS app mentions. More info: support@appcodes.com. Robots.txt id: AppCodesCrawler'
+    family: 'AppCodes crawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'ArchitextSpider'
+    family: 'ArchitextSpider'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Arikus_Spider'
+    family: 'Arikus_Spider'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/4.0 (compatible; MSIE 6.0 compatible; Asterias Crawler v4;  http://www.singingfish.com/help/spider.html; webmaster@singingfish.com); SpiderThread  Revision: 3.0'
+    family: 'Asterias Crawler'
+    major: '4'
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/4.0 (compatible: AstraSpider V.2.1 : astrafind.com)'
+    family: 'AstraSpider'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Autonomy Spider'
+    family: 'Autonomy Spider'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'axadine/  (Axadine Crawler; http://www.axada.de/;  )'
+    family: 'Axadine Crawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; BIXOCRAWLER; +http://wiki.github.com/bixo/bixo/bixocrawler; bixo-dev@yahoogroups.com)'
+    family: 'BIXOCRAWLER'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/4.0 (compatible; BOTW Spider;  http://botw.org)'
+    family: 'BOTW Spider'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'BacklinkCrawler (http://www.backlinktest.com/crawler.html)'
+    family: 'BacklinkCrawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'BaiduImagespider ( http://help.baidu.jp/system/05.html)'
+    family: 'BaiduImagespider'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'BarraHomeCrawler (albertof@barrahome.org)'
+    family: 'BarraHomeCrawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'ZoomInfo::Beehive Crawler'
+    family: 'Beehive Crawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'BeijingCrawler'
+    family: 'BeijingCrawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'BejiBot Crawler (BNL Services; http://www.bejjan.net/crawler/)'
+    family: 'BejiBot'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'BravoBrian SpiderEngine MarcoPolo'
+    family: 'BravoBrian SpiderEngine'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'BrightCrawler (http://www.brightcloud.com/brightcrawler.asp)'
+    family: 'BrightCrawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'BuildCMS crawler (http://www.buildcms.com/crawler)'
+    family: 'BuildCMS crawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'ByWebSite-Search-Spider,gzip(gfe),gzip(gfe)'
+    family: 'ByWebSite-Search-Spider'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'CFG_SPIDER_USER_AGENT'
+    family: 'CFG_SPIDER_USER_AGENT'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/4.0 (CMS Crawler: http://www.cmscrawler.com)'
+    family: 'CMS Crawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'CMS crawler ( http://buytaert.net/crawler/)'
+    family: 'CMS crawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'CRAZYWEBCRAWLER 0.9.0, http://www.crazywebcrawler.com'
+    family: 'CRAZYWEBCRAWLER'
+    major: '0'
+    minor: '9'
+    patch: '0'
+
+  - user_agent_string: 'CSimpleSpider Robot'
+    family: 'CSimpleSpider'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Cityreview Robot (+http://www.cityreview.org/crawler/)'
+    family: 'Cityreview Robot'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Exalead Cloudview Crawler,gzip(gfe),gzip(gfe),gzip(gfe)'
+    family: 'Cloudview Crawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Comodo-Certificates-Spider'
+    family: 'Comodo-Certificates-Spider'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Computer_and_Automation_Research_Institute_Crawler (crawler@info.ilab.sztaki.hu)'
+    family: 'Computer_and_Automation_Research_Institute_Crawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Http Connector Spider, contact Alcatel-Lucent IDOL Search'
+    family: 'Connector Spider'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Content Crawler'
+    family: 'Content Crawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'CowCrawler/CowCrawler-dev (+http://beta.cow.com),gzip(gfe),gzip(gfe)'
+    family: 'CowCrawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; CrawlDaddy v0.3.0 abot v1.1.1.0 http://code.google.com/p/abot)'
+    family: 'CrawlDaddy'
+    major: '0'
+    minor: '3'
+    patch: '0'
+
+  - user_agent_string: 'CrawlFire - you can disable this Robot: http://pastebin.de/25277'
+    family: 'CrawlFire'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'CrawlWave/1.2 (crawlwave[at]circular.gr http://www.spiderwave.aueb.gr/'
+    family: 'CrawlWave'
+    major: '1'
+    minor: '2'
+    patch:
+
+  - user_agent_string: 'CrawlerBoy Pinpoint.com'
+    family: 'CrawlerBoy'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/4.0 (compatible; MSIE 5.0; Windows 98; DigExt; Crayon Crawler)'
+    family: 'Crayon Crawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'DRKSpider - Website link validator - http://www.drk.com.ar/spider/,gzip(gfe),gzip(gfe),gzip(gfe)'
+    family: 'DRKSpider'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'DefaultCrawlTest/0.6 (Ram Crawl Test; devarajaswami at yahoo dot com)'
+    family: 'DefaultCrawlTest'
+    major: '0'
+    minor: '6'
+    patch:
+
+  - user_agent_string: 'FFC Trap Door Spider'
+    family: 'Door Spider'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'DoubleVerify Crawler'
+    family: 'DoubleVerify Crawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'EasouSpider'
+    family: 'EasouSpider'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'EcoGrader Crawler: Beta'
+    family: 'EcoGrader Crawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Adknowledge Engage Crawler'
+    family: 'Engage Crawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'ByWebSite Search Engine Spider'
+    family: 'Engine Spider'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'EverbeeCrawler'
+    family: 'EverbeeCrawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; Ex-Crawler/v0.1.5ALPHA SVN rev58; powered by ex-crawler; +http://www.ex-crawler.de/) Java/1.6.0_20,gzip(gfe),gzip(gfe)'
+    family: 'Ex-Crawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'ExactSeek_Spider'
+    family: 'ExactSeek_Spider'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/4.0 (compatible; FastCrawler3, support-fastcrawler3@fast.no)'
+    family: 'FastCrawler3'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; Finderbots finder bot; +http://wiki.github.com/bixo/bixo/bixocrawler; bixo-dev@yahoogroups.com)'
+    family: 'Finderbots'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Findexa Crawler (http://www.findexa.no/gulesider/article26548.ece)'
+    family: 'Findexa Crawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/3.0 (compatible; Fluffy the spider; http://www.searchhippo.com/; info@searchhippo.com)'
+    family: 'Fluffy the spider'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0) (Atsameip FreeCrawl!)'
+    family: 'FreeCrawl'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Fujiko Spider (fujiko@inelegant.org)'
+    family: 'Fujiko Spider'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; FunkyCrawler; )'
+    family: 'FunkyCrawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'GSiteCrawler/v1.12 rev. 260 (http://gsitecrawler.com/)'
+    family: 'GSiteCrawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'GeekTools Crawler - http://domains.geek-tools.org'
+    family: 'GeekTools Crawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla 4.0 - GetMeLinked Spider www.GetMeLinked.com Web Directory'
+    family: 'GetMeLinked Spider'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Gnam Gnam Spider'
+    family: 'Gnam Spider'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; GoGuidesBot; http://www.goguides.org/spider.html)'
+    family: 'GoGuidesBot'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'GoScraper'
+    family: 'GoScraper'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'GrowerIdeas Crawler/GrowerIdeas-nutch-1.6 (Crawls URLs for indexing content for our new search startup which aims to provide simple and smart search across curated content. For more info please contact helloworld@growerideas.com. If you think'
+    family: 'GrowerIdeas Crawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Huaweisymantecspider (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727),gzip(gfe)'
+    family: 'Huaweisymantecspider'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'BlogPulse (ISSpider-3.0)'
+    family: 'ISSpider'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'IWE Spider v.01 - www.pavka.com.au'
+    family: 'IWE Spider'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'IXE Crawler'
+    family: 'IXE Crawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Imperia-LinkSpider,gzip(gfe),gzip(gfe)'
+    family: 'Imperia-LinkSpider'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'netEstate Impressumscrawler (+http://www.netestate.de/De/Loesungen/Impressumscrawler)'
+    family: 'Impressumscrawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Inar_spider2 (tspyyp@tom.com)'
+    family: 'Inar_spider2'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'IOI/2.0 (ISC Open Index crawler; http://index.isc.org/; bot@index.isc.org)'
+    family: 'Index crawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/4.0 (compatible; MSIE 5.5; Windows 98; Infocrawler; Alexa Toolbar)'
+    family: 'Infocrawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/4.0 (compatible; Inspyder-Crawler; http://www.inspyder.com)'
+    family: 'Inspyder-Crawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Willow Internet Crawler by Twotrees V2.1'
+    family: 'Internet Crawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/4.0 (SKIZZLE! Distributed Internet Spider v1.0 - www.SKIZZLE.com)'
+    family: 'Internet Spider'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'IssueCrawler'
+    family: 'IssueCrawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'JUST-CRAWLER( http://www.justsystems.com/jp/tech/crawler/)'
+    family: 'JUST-CRAWLER'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Jayde Crawler. http://www.jayde.com'
+    family: 'Jayde Crawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'JikeSpider; +http://shoulu.jike.com/spider.html'
+    family: 'JikeSpider'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible;WI Job Roboter Spider Version 3;+http://www.webintegration.at)'
+    family: 'Job Roboter'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'JobSpider_BA/1.1'
+    family: 'JobSpider_BA'
+    major: '1'
+    minor: '1'
+    patch:
+
+  - user_agent_string: 'KiwiStatus (NZS.com)/0.2 (NZS.com KiwiStatus Spider,  Local Search New Zealand; http://www.nzs.com; bot-at-nzs dot com)'
+    family: 'KiwiStatus Spider'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Kotoss Crawler http://hitokoto.kotoss.com,gzip(gfe),gzip(gfe)'
+    family: 'Kotoss Crawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; Kyluka crawl; crawl@kyluka.com; http://www.kyluka.com/static/crawl.html)'
+    family: 'Kyluka crawl'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'LNSpiderguy'
+    family: 'LNSpiderguy'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'LarbinWebCrawler (internet@bredband.net)'
+    family: 'LarbinWebCrawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'LargeSmall Crawler'
+    family: 'LargeSmall Crawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Lijit Crawler (+http://www.lijit.com/robot/crawler)'
+    family: 'Lijit Crawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'DocWeb Link Crawler (http://doc.php.net)'
+    family: 'Link Crawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; Lipperhey Spider; http://www.lipperhey.com/)'
+    family: 'Lipperhey Spider'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'LookUpCrawler - lookupcanada.ca [ZSEBOT]'
+    family: 'LookUpCrawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Lycos_Spider_(modspider)'
+    family: 'Lycos_Spider_'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0) METASpider'
+    family: 'METASpider'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'MQbot http://metaquerier.cs.uiuc.edu/crawler'
+    family: 'MQbot'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'MSIndianWebcrawl'
+    family: 'MSIndianWebcrawl'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'MSR-ISRCCrawler'
+    family: 'MSR-ISRCCrawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'MedSpider v0.0.1'
+    family: 'MedSpider'
+    major: '0'
+    minor: '0'
+    patch: '1'
+
+  - user_agent_string: 'Social Media Crawler using your Home URL on Twitter,Facebook,Myspace,Linkedin by ProfileCapture - contact profilecapture@gmail.com to report any problems with my crawling. http://profilecapture.com'
+    family: 'Media Crawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/4.0 (compatible); MSIE 5.0; Medialab Spider'
+    family: 'Medialab Spider'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'DomainsDB.net MetaCrawler v.0.9.7b (http://domainsdb.net/)'
+    family: 'MetaCrawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'FAST MetaWeb Crawler (helpdesk at fastsearch dot com)'
+    family: 'MetaWeb Crawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'CC Metadata Scaper http://wiki.creativecommons.org/Metadata_Scraper'
+    family: 'Metadata_Scraper'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: "MicrosoftPrototypeCrawler (How's my crawling? mailto:newbiecrawler@hotmail.com)"
+    family: 'MicrosoftPrototypeCrawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; MixrankBot; crawler@mixrank.com)'
+    family: 'MixrankBot'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Sogou Mobile Spider1.0 (http://wap.sogou.com)'
+    family: 'Mobile Spider1'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla-Firefox-Spider(Wenanry)'
+    family: 'Mozilla-Firefox-Spider'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'MultiCrawler, http://sw.deri.org/2006/04/multicrawler/robots.html'
+    family: 'MultiCrawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en; rv:1.9.1.3; MySpaceScraper) Gecko/20090824 Firefox/3.5.3 (.NET CLR 3.5.30729)'
+    family: 'MySpaceScraper'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Norbert the Spider(Burf.com)'
+    family: 'Norbert the Spider'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'NuSearch Spider www.nusearch.com'
+    family: 'NuSearch Spider'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Nusearch Spider (compatible; MSIE 6.0)'
+    family: 'Nusearch Spider'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'OpenWebSpider (link collector; http://links.port30.se/cia.html) v (http://www.openwebspider.org/)'
+    family: 'OpenWebSpider'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; OpenX Spider; http://www.openx.org)'
+    family: 'OpenX Spider'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; OpenindexSpider; +http://www.openindex.io/en/webmasters/spider.html)'
+    family: 'OpenindexSpider'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Orgbybot/OrgbyBot v1.2 (Spidering the net for Orgby; http://www.orgby.com/  ; Orgby.com Search Engine)'
+    family: 'Orgbybot'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'PDFBot (crawler@pdfind.com)'
+    family: 'PDFBot'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; InfoPath.2; .NET CLR 3.5.21022; .NET CLR 3.5.30729; MS-RTC LM 8; OfficeLiveConnector.1.4; OfficeLivePatch.1.3; .NET CLR 3.0.30729) Jakarta Commons-HttpClient/3.0-rc3 PHPCrawl GStreamer souphttpsrc libsoup/2.27.4 PycURL/7.19.0 XML-RPC for PHP 2.2.1 GoogleFriendConnect/1.0 HTMLParser/1.6 gPodder/0.15.2 ( http://gpodder.org/) anw webtool LoadControl/1.3 WinHttp urlgrabber/3.1.0'
+    family: 'PHPCrawl'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Fast PartnerSite Crawler'
+    family: 'PartnerSite Crawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Patwebbot (http://www.herz-power.de/technik.html)'
+    family: 'Patwebbot'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'PeerFactor Crawler'
+    family: 'PeerFactor Crawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'PhoenixWebBot Beta'
+    family: 'PhoenixWebBot'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'pipeLiner/0.10 (PipeLine Spider; http://www.pipeline-search.com/webmaster.html)'
+    family: 'PipeLine Spider'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'ProjectWF-java-test-crawler'
+    family: 'ProjectWF-java-test-crawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Punk Spider/PunkSPIDER-v0.1'
+    family: 'Punk Spider'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'QuerySeekerSpider ( http://queryseeker.com/bot.html )'
+    family: 'QuerySeekerSpider'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'QuickFinder Crawler'
+    family: 'QuickFinder Crawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'OpenLink Virtuoso RDF crawler'
+    family: 'RDF crawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Jaxified Public RSS Crawler ( http://www.jaxified.com/)'
+    family: 'RSS Crawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'RSS-SPIDER (RSS Feed Seeker http://www.MyNewFavoriteThing.com/fsb.php)'
+    family: 'RSS-SPIDER'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'RavenCrawler'
+    family: 'RavenCrawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'ReadPath_Spider'
+    family: 'ReadPath_Spider'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'LinkStar Research Crawler (http://linkstar.com/),gzip(gfe),gzip(gfe)'
+    family: 'Research Crawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Research spider - ak1835@albany.edu'
+    family: 'Research spider'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'RoboCrawl (www.canadiancontent.net)'
+    family: 'RoboCrawl'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (Windows NT 6.2; WOW64) Runet-Research-Crawler (itrack.ru/research/cmsrate; rating@itrack.ru)'
+    family: 'Runet-Research-Crawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Teragram/SAS Crawler'
+    family: 'SAS Crawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'SCrawlTest/CR1 (CWD; http://sproose.com; crawl@sproose.com)'
+    family: 'SCrawlTest'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; SISTRIX Crawler; http://crawler.sistrix.net/)'
+    family: 'SISTRIX Crawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36; SSL-Crawler: http://crawler.dcsec.uni-hannover.de'
+    family: 'SSL-Crawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'SWAT Crawler. AGH University project. In case of problem contact: opal@tempus.metal.agh.edu.pl. Thanks.'
+    family: 'SWAT Crawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'SandCrawler - Compatibility Testing'
+    family: 'SandCrawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Sangfor Spider'
+    family: 'Sangfor Spider'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/3.0 (compatible; ScollSpider; http://www.webwobot.com)'
+    family: 'ScollSpider'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'ScreenerBot Crawler Beta 2.0 (+http://www.ScreenerBot.com)'
+    family: 'ScreenerBot'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'SearchSpider.com/1.1'
+    family: 'SearchSpider'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'ownCloud Server Crawler'
+    family: 'Server Crawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Shim-Crawler'
+    family: 'Shim-Crawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'ShowyouBot (http://showyou.com/crawler)'
+    family: 'crawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.0) SiteCheck-sitecrawl by Siteimprove.com'
+    family: 'SiteCheck-sitecrawl'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'SiteCrawler,gzip(gfe),gzip(gfe)'
+    family: 'SiteCrawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/5.5 (compatible; MSIE 5.5; Windows NT 5.1) Sitespider+ b432.1'
+    family: 'Sitespider'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'SocialSpider-Finder/0.2'
+    family: 'SocialSpider'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Sosoblogspider+(+http://help.soso.com/soso-blog-spider.htm)'
+    family: 'Sosoblogspider'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Sosoimagespider ( http://help.soso.com/soso-image-spider.htm)'
+    family: 'Sosoimagespider'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Sosospider+(+help.soso.com/webspider.htm)'
+    family: 'Sosospider'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/4.0 (compatible; SpeedySpider; www.entireweb.com)'
+    family: 'SpeedySpider'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'SpiderKU/0.9'
+    family: 'SpiderKU'
+    major: '0'
+    minor: '9'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; SpiderLing (a SPIDER for LINGustic research); +http://nlp.fi.muni.cz/projects/biwec/)'
+    family: 'SpiderLing'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'SpiderMan 3.0.1-2-11-111 (CP/M;8-bit)'
+    family: 'SpiderMan'
+    major: '3'
+    minor: '0'
+    patch: '1'
+
+  - user_agent_string: 'Mozilla/4.0 (compatible; SpiderView 1.0;unix)'
+    family: 'SpiderView'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Spider_Monkey/7.06 (SpiderMonkey.ca info at http://SpiderMonkey.ca /sm.shtml)'
+    family: 'Spider_Monkey'
+    major: '7'
+    minor: '06'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; Spiderlytics/1.0; +spider@spiderlytics.com)'
+    family: 'Spiderlytics'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'PKU Student Spider'
+    family: 'Student Spider'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Symfony Spider (http://symfony.com/spider)'
+    family: 'Symfony Spider'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Synthesio Crawler release MonaLisa (contact at synthesio dot fr)'
+    family: 'Synthesio Crawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'TAMU_CS_IRL_CRAWLER/1.0'
+    family: 'TAMU_CS_IRL_CRAWLER'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'TTop-Crawler,gzip(gfe),gzip(gfe)'
+    family: 'TTop-Crawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'TayaCrawler (Beta; v0.1; tayadev@nexdegree.com)'
+    family: 'TayaCrawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'TelemetrySpider2/0.1 linux'
+    family: 'TelemetrySpider2'
+    major: '0'
+    minor: '1'
+    patch:
+
+  - user_agent_string: 'Theme Spider ( http://www.themespider.com/spider.html)'
+    family: 'Theme Spider'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Thesis_php_crawler'
+    family: 'Thesis_php_crawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Trends Crawler, Real time trends bot (info@trendscrawler.com)'
+    family: 'Trends Crawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'TwitSpider'
+    family: 'TwitSpider'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Twitmunin Crawler http://www.twitmunin.com'
+    family: 'Twitmunin Crawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; TwitterCrawler)'
+    family: 'TwitterCrawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'UCMore Crawler App'
+    family: 'UCMore Crawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'UOLCrawler (soscrawler@uol.com.br)'
+    family: 'UOLCrawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Links4US-Crawler, ( http://links4us.com/)'
+    family: 'US-Crawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'USyd-NLP-Spider (http://www.it.usyd.edu.au/~vinci/bot.html)'
+    family: 'USyd-NLP-Spider'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; UnisterBot; crawler@unister.de)'
+    family: 'UnisterBot'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/4.0, VM-Crawler/cs version info  ofni noisrev sc'
+    family: 'VM-Crawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'WEBB Crawler - see: http://badcheese.com/robots.html'
+    family: 'WEBB Crawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'WSDL Crawler'
+    family: 'WSDL Crawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'EmeraldShield.com WebBot'
+    family: 'com WebBot'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'WebCompanyCrawler'
+    family: 'WebCompanyCrawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'WebCrawler v1.3'
+    family: 'WebCrawler'
+    major: '1'
+    minor: '3'
+    patch:
+
+  - user_agent_string: 'WebVulnCrawl.blogspot.com/1.0 libwww-perl/5.803'
+    family: 'WebVulnCrawl'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'CyberPatrol SiteCat Webbot (http://www.cyberpatrol.com/cyberpatrolcrawler.asp)'
+    family: 'SiteCat Webbot'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'EricssonR320/R1A (Fast Wireless Crawler)'
+    family: 'Wireless Crawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'X-Crawler'
+    family: 'X-Crawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'XYZ Spider'
+    family: 'XYZ Spider'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Y!J-BRJ/YATS crawler (http://help.yahoo.co.jp/help/jp/search/indexing/indexing-15.html)'
+    family: 'YATS crawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Y!J-BRO/YFSJ crawler (compatible; Mozilla 4.0; MSIE 5.5; http://help.yahoo.co.jp/help/jp/search/indexing/indexing-15.html; YahooFeedSeekerJp/2.0)'
+    family: 'YFSJ crawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'YRL_ODP_CRAWLER'
+    family: 'YRL_ODP_CRAWLER'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (Android 3.0; YRSpider; +http://www.yunrang.com/yrspider.html)'
+    family: 'YRSpider'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: "YebolBot (Email: yebolbot@gmail.com; If the web crawling affects your web service, or you don't like to be crawled by us, please email us. We'll stop crawling immediately.)"
+    family: 'YebolBot'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/4.0 (compatible; Yet-Another-Spider; )'
+    family: 'Yet-Another-Spider'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'YisouSpider'
+    family: 'YisouSpider'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'NL-Crawler'
+    family: 'NL-Crawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; YoudaoBot-rts/1.0; http://www.youdao.com/help/webmaster/spider/; )'
+    family: 'YoudaoBot'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'ZIBB Crawler (email address / WWW address)'
+    family: 'ZIBB Crawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'ZillaCrawler'
+    family: 'ZillaCrawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'ZoomSpider - wrensoft.com'
+    family: 'ZoomSpider'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Zspider (+http://www.zhanzhangsou.com/index.htm)'
+    family: 'Zspider'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/4.0 (compatible; MSIE 7.0; acedo crawler extension)'
+    family: 'acedo crawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'acquia-crawler (detected bad behaviour? please tell us at it@acquia.com),gzip(gfe),gzip(gfe)'
+    family: 'acquia-crawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.21 (KHTML, like Gecko) adspider Safari/537.21'
+    family: 'adspider'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'amphetameme crawler (crawler@amphetameme.com)'
+    family: 'amphetameme crawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; ayna-crawler  http://www.ayna.com)'
+    family: 'ayna-crawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; Bender; http://sites.google.com/site/bendercrawler)'
+    family: 'bendercrawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'snap.com beta crawler v0'
+    family: 'beta crawler'
+    major: '0'
+    minor:
+    patch:
+
+  - user_agent_string: 'blackspider'
+    family: 'blackspider'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/4.0 (compatible; bmdspider; windows 5.1)'
+    family: 'bmdspider'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'boitho crawler'
+    family: 'boitho crawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'cis455crawler'
+    family: 'cis455crawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'http://www.Syntryx.com/ ANT Chassis 9.27; Mozilla/4.0 compatible crawler'
+    family: 'compatible crawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'crawler4j (http://code.google.com/p/crawler4j/)'
+    family: 'crawler4j'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'dtSearchSpider'
+    family: 'dtSearchSpider'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Enterprise_Search/1.0 110 (http://www.innerprise.net/es-spider.asp)'
+    family: 'es-spider'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'eseek-crawler.0.5 (crawler@exactseek.com)'
+    family: 'eseek-crawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'exooba/exooba crawler (exooba; exooba)'
+    family: 'exooba crawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'flatlandbot/allspark (Flatland Industries Web Spider; http://www.flatlandindustries.com/flatlandbot; jason@flatlandindustries.com)'
+    family: 'flatlandbot'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'haupia-crawler'
+    family: 'haupia-crawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'hitcrawler_0.1 (ringken@gmail.com)'
+    family: 'hitcrawler_0'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'iaskspider2 (iask@staff.sina.com.cn)'
+    family: 'iaskspider2'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'visaduhoc.info Crawler'
+    family: 'info Crawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'ip-web-crawler.com'
+    family: 'ip-web-crawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'jikespider "Mozilla/5.0'
+    family: 'jikespider'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0) compatible; kototoi-crawl@yl.is.s.u-tokyo.ac.jp'
+    family: 'kototoi-crawl'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'lb-spider'
+    family: 'lb-spider'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'ldspider (BTC 2011 crawl, harth@kit.edu, http://code.google.com/p/ldspider/wiki/Robots)'
+    family: 'ldspider'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; lemurwebcrawler admin@lemurproject.org; +http://boston.lti.cs.cmu.edu/crawler_12/)'
+    family: 'lemurwebcrawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'lmspider (lmspider@scansoft.com)'
+    family: 'lmspider'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'lworldspider'
+    family: 'lworldspider'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'trunk.ly spider contact@trunk.ly'
+    family: 'ly spider'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Vodafone mCrawler (bergum@fast.no)'
+    family: 'mCrawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'media-percbotspider <ops@percolate.com>'
+    family: 'media-percbotspider'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'DoCoMo/2.0 N902iS(c100;TB;W24H12)(compatible; moba-crawler; http://crawler.dena.jp/)'
+    family: 'moba-crawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Nokia6680/1.0 ((4.04.07) SymbianOS/8.0 Series60/2.6 Profile/MIDP-2.0 Configuration/CLDC-1.1 (for mobile crawler) )'
+    family: 'mobile crawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'n4p_bot (crawler@n4p.com)'
+    family: 'n4p_bot'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'na-Webcrawler (helpdesk@newsaktuell.de)'
+    family: 'na-Webcrawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: "nuSearch Spider <a href='http://www.nusearch.com'>www.nusearch.com</a> (compatible; MSIE 4.01; Windows NT)"
+    family: 'nuSearch Spider'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'parallelContextFocusCrawler1.1parallelContextFocusCrawler1.1'
+    family: 'parallelContextFocusCrawler1'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'persomm-spider/v1.0'
+    family: 'persomm-spider'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; http://www.pregnancycrawler.com)'
+    family: 'pregnancycrawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; ptd-crawler;  http://bixolabs.com/crawler/ptd/; crawler@bixolabs.com)'
+    family: 'ptd-crawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; pub-crawler; +http://wiki.github.com/bixo/bixo/bixocrawler; bixo-dev@yahoogroups.com)'
+    family: 'pub-crawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'pythonic-crawler (suzuki@tkl.iis.u-tokyo.ac.jp)'
+    family: 'pythonic-crawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (Windows NT 6.2; WOW64) Russian CMS rating crawler (itrack.ru/cmsrate, avlasov@itrack.ru)'
+    family: 'rating crawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'camoca/camoca-n.1.2 (super-agent; search crawler; info at does not exist dot com)'
+    family: 'search crawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; sgbot v0.01a, sgcrawlerbot@gmail.com)'
+    family: 'sgbot'
+    major: '0'
+    minor: '01'
+    patch:
+
+  - user_agent_string: 'spiderpig/0.1,gzip(gfe),gzip(gfe)'
+    family: 'spiderpig'
+    major: '0'
+    minor: '1'
+    patch:
+
+  - user_agent_string: 'ssearch_bot (sSearch Crawler; http://www.semantissimo.de)'
+    family: 'ssearch_bot'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; suggybot v0.01a, http://blog.suggy.com/was-ist-suggy/suggy-webcrawler/)'
+    family: 'suggybot'
+    major: '0'
+    minor: '01'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; uMBot-FC/1.0; mailto: crawling@ubermetrics-technologies.com)'
+    family: 'uMBot'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'unchaos_crawler_2.0.2 (search.engine@unchaos.com)'
+    family: 'unchaos_crawler_2'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'updated/0.1-alpha (updated crawler; http://www.updated.com; crawler@updated.com)'
+    family: 'updated crawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (Yahoo-Test/4.0 mailto:vertical-crawl-support@yahoo-inc.com)'
+    family: 'vertical-crawl'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'yp-crawl@attinteractive.com'
+    family: 'yp-crawl'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'yrspider (Mozilla/5.0 (compatible; YRSpider;  http://www.yunrang.com/yrspider.html))'
+    family: 'yrspider'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (Yahoo-Test/4.0 ysm-keystone-crawl-support@yahoo-inc.com)'
+    family: 'ysm-keystone-crawl'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; zyklop; +http://www.seoratio.de/zyklop-crawler/)'
+    family: 'zyklop-crawler'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (Linux; U; Android 4.2.1; en-gb; CUBOT ONE Build/JOP40D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30'
+    family: 'Android'
+    major: '4'
+    minor: '2'
+    patch: '1'
+
+  - user_agent_string: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9) AppleWebKit/537.71 (KHTML, like Gecko) Version/7.0 Safari/537.71 (Rival IQ, rivaliq.com)'
+    family: 'Rival IQ'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (Linux; U; en-gb) AppleWebKit/418.9.1 (KHTML, like Gecko) SiteCon/8.10.9'
+    family: 'SiteCon'
+    major: '8'
+    minor: '10'
+    patch: '9'
+
+  - user_agent_string: 'Mozilla/5.0 (iPhone; CPU iPhone OS 8_3 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) FxiOS/1.0 Mobile/12F69 Safari/600.1.4'
+    family: 'Firefox iOS'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (iPad; CPU iPhone OS 8_3 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) FxiOS/1.0 Mobile/12F69 Safari/600.1.4'
+    family: 'Firefox iOS'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_4) AppleWebKit/537.36 (KHTML, like Gecko) Spotify/1.0.9.133 Safari/537.36'
+    family: 'Spotify'
+    major: '1'
+    minor: '0'
+    patch: '9'
+
+  - user_agent_string: 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Spotify/1.0.9.133 Safari/537.36'
+    family: 'Spotify'
+    major: '1'
+    minor: '0'
+    patch: '9'
+
+  - user_agent_string: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/537.36 (KHTML, like Gecko) Spotify/1.0.4.90 Safari/537.36'
+    family: 'Spotify'
+    major: '1'
+    minor: '0'
+    patch: '4'
+
+  - user_agent_string: 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Spotify/1.0.3.101 Safari/537.36'
+    family: 'Spotify'
+    major: '1'
+    minor: '0'
+    patch: '3'
+
+  - user_agent_string: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/537.36 (KHTML, like Gecko) Spotify/1.0.8.59 Safari/537.36'
+    family: 'Spotify'
+    major: '1'
+    minor: '0'
+    patch: '8'
+
+  - user_agent_string: 'Mozilla/5.0 (Android 5.0; Tablet; rv:41.0) Gecko/41.0 Firefox/41.0'
+    family: 'Firefox Mobile'
+    major: '41'
+    minor: '0'
+    patch:
+
+  - user_agent_string: '[FBAN/FB4A;FBAV/3.4;FBBV/258875;FBDM/{density=0.75,width=240,height=320};FBLC/tr_TR;FBCR/o2 - de;FBPN/com.facebook.katana;FBDV/LG-E400;FBSV/2.3.6;]'
+    family: 'Facebook'
+    major: '3'
+    minor: '4'
+    patch:
+
+  - user_agent_string: '[FBAN/FB4A;FBAV/2.3;FBBV/149649;FBDM/{density=1.5,width=480,height=800};FBLC/es_ES;FBCR/;FBPN/com.facebook.katana;FBDV/LG-P920;FBSV/2.2.2;]'
+    family: 'Facebook'
+    major: '2'
+    minor: '3'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (Linux; U; Android 2.3.4; en-us; SCH-R720 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 [FBAN/FB4A;FBAV/1.8.1;FBPN/com.facebook.katana;FBDV/SCH-R720;FBSV/2.3.4;FBDM/{density=1.0,width=320,height='
+    family: 'Facebook'
+    major: '1'
+    minor: '8'
+    patch: '1'
+
+  - user_agent_string: 'Mozilla/5.0 (Linux; U; Android 4.2.2; de-de; 706_v92_jbla_fhd Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 [FB_IAB/FB4A;FBAV/24.0.0.30.15;]'
+    family: 'Facebook'
+    major: '24'
+    minor: '0'
+    patch: '0'
+
+  - user_agent_string: 'Mozilla/5.0 (iPhone; CPU iPhone OS 6_1_3 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Mobile/10B329 [FBAN/FBIOS;FBAV/6.5.1;FBBV/377040;FBDV/iPhone4,1;FBMD/iPhone;FBSN/iPhone OS;FBSV/6.1.3;FBSS/2; FBCR/Telekom.de;FBID/phone;FBLC/de_DE;'
+    family: 'Facebook'
+    major: '6'
+    minor: '5'
+    patch: '1'
+
+  - user_agent_string: 'Mozilla/5.0 (iPhone; CPU iPhone OS 6_1_3 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Mobile/10B329 [FBAN/FBIOS;FBAV/6.2;FBBV/228172;FBDV/iPhone5,1;FBMD/iPhone;FBSN/iPhone OS;FBSV/6.1.3;FBSS/2; FBCR/o2-de;FBID/phone;FBLC/pt_BR;FBOP/1]'
+    family: 'Facebook'
+    major: '6'
+    minor: '2'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (iPad; CPU OS 5_0 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Mobile/9A334 [FBAN/FBIOS;FBAV/6.5.1;FBBV/377040;FBDV/iPad2,1;FBMD/iPad;FBSN/iPhone OS;FBSV/5.0;FBSS/1; FBCR/;FBID/tablet;FBLC/de_DE;FBOP/1]'
+    family: 'Facebook'
+    major: '6'
+    minor: '5'
+    patch: '1'
+
+  - user_agent_string: 'Mozilla/5.0 (iPad; U; CPU iPhone OS 4_3_2 like Mac OS X; de_DE) AppleWebKit (KHTML, like Gecko) Mobile [FBAN/FBForIPhone;FBAV/4.0.2;FBBV/4020.0;FBDV/iPad1,1;FBMD/iPad;FBSN/iPhone OS;FBSV/4.3.2;FBSS/1; FBCR/;FBID/tablet;FBLC/de_DE;FBSF/1.0]'
+    family: 'Facebook'
+    major: '4'
+    minor: '0'
+    patch: '2'
+
+  - user_agent_string: 'Mozilla/5.0 (iPad; U; CPU iPhone OS 4_3_5 like Mac OS X; de_DE) AppleWebKit (KHTML, like Gecko) Mobile [FBAN/FBForIPhone;FBAV/4.0.3;FBBV/4030.0;FBDV/iPad2,2;FBMD/iPad;FBSN/iPhone OS;FBSV/4.3.5;FBSS/1; FBCR/Telekom.de;FBID/tablet;FBLC/de_DE;FBS'
+    family: 'Facebook'
+    major: '4'
+    minor: '0'
+    patch: '3'
+
+  - user_agent_string: 'Mozilla/5.0 (iPhone; CPU iPhone OS 5_1_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Mobile/9B206 [FBAN/FBIOS;FBAV/6.1;FBBV/201075;FBDV/iPhone3,1;FBMD/iPhone;FBSN/iPhone OS;FBSV/5.1.1;FBSS/2; FBCR/Vodafone.de;FBID/phone;FBLC/en_US;FBOP/1]'
+    family: 'Facebook'
+    major: '6'
+    minor: '1'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (iPhone; CPU iPhone OS 8_2 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Mobile/12D508 [FBAN/GroupsForiOS;FBAV/9.0;FBBV/7752968;FBDV/iPhone7,2;FBMD/iPhone;FBSN/iPhone OS;FBSV/8.2;FBSS/2; FBCR/Telekom.de;FBID/phone;FBLC/de_'
+    family: 'Facebook'
+    major: '9'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_1 like Mac OS X; fr_FR) AppleWebKit (KHTML, like Gecko) Mobile [FBAN/FBForIPhone;FBAV/4.0;FBBV/4000.0;FBDV/iPhone1,2;FBMD/iPhone;FBSN/iPhone OS;FBSV/4.1;FBSS/1; FBCR/Carrier;FBID/phone;FBLC/fr_FR;FBSF/1.'
+    family: 'Facebook'
+    major: '4'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Dalvik/1.2.0 (Linux; U; Android 2.2.2; HTC Desire Build/FRG83G) [FBAN/Orca-Android;FBAV/2.6.1-release;FBLC/de_DE;FBBV/288543;FBCR/o2 - de;FBMF/HTC;FBBD/htc_wwe;FBDV/HTC Desire;FBSV/2.2.2]'
+    family: 'Facebook'
+    major: '2'
+    minor: '6'
+    patch: '1'
+
+  - user_agent_string: '[FBAN/FB4A;FBAV/3.6;FBBV/330148;FBDM/{density=0.75,width=240,height=320};FBLC/de_DE;FBCR/o2 - de;FBPN/com.facebook.katana;FBDV/GT-S5570;FBSV/2.2.1;FBCA/armeabi:unknown;]'
+    family: 'Facebook'
+    major: '3'
+    minor: '6'
+    patch:
+
+  - user_agent_string: '[FBAN/PAAA;FBAV/1.7;FBDM/{density=2.0,width=720,height=1280};FBLC/es_ES;FB_FW/2;FBSN/Android;FBCR/FONIC;FBDV/GT-I9300;FBSV/4.1.2;]'
+    family: 'Facebook'
+    major: '1'
+    minor: '7'
+    patch:
+
+  - user_agent_string: '[FBAN/PAAA;FBAV/1.9;FBDM/{density=2.0,width=720,height=1280};FBLC/de_DE;FB_FW/2;FBSN/Android;FBCR/o2 - de;FBDV/GT-I9300;FBSV/4.3;]'
+    family: 'Facebook'
+    major: '1'
+    minor: '9'
+    patch:
+
+  - user_agent_string: '[FBAN/FB4A;FBAV/130.0.321;FBBV/149649;FBDM/{density=1.5,width=480,height=800};FBLC/es_ES;FBCR/;FBPN/com.facebook.katana;FBDV/LG-P920;FBSV/2.2.2;]'
+    family: 'Facebook'
+    major: '130'
+    minor: '0'
+    patch: '321'
+
+  - user_agent_string: 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15G77 [FBAN/FBIOS;FBDV/iPhone10,4;FBMD/iPhone;FBSN/iOS;FBSV/11.4.1;FBSS/2;FBCR/A1;FBID/phone;FBLC/de_DE;FBOP/5;FBRV/122166081]'
+    family: 'Facebook'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (iPhone; CPU iPhone OS 10_2_1 like Mac OS X) AppleWebKit/602.4.6 (KHTML, like Gecko) Mobile/14D27 [FBAN/MessengerForiOS;FBAV/124.0.0.50.70;FBBV/63293619;FBDV/iPhone7,1;FBMD/iPhone;FBSN/iOS;FBSV/10.2.1;FBSS/3;FBCR/Viettel;FBID/phone;FBLC/vi_VN;FBOP/5;FBRV/0]'
+    family: 'Facebook Messenger'
+    major: '124'
+    minor: '0'
+    patch: '0'
+    patch_minor: '50'
+
+  - user_agent_string: 'Mozilla/5.0 (Linux; Android 6.0.1; SM-A910F Build/MMB29M; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/58.0.3029.83 Mobile Safari/537.36 [FB_IAB/MESSENGER;FBAV/120.0.0.14.84;]'
+    family: 'Facebook Messenger'
+    major: '120'
+    minor: '0'
+    patch: '0'
+    patch_minor: '14'
+
+  - user_agent_string: 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15G77 [FBAN/FBIOS;FBAV/194.0.0.38.99;FBBV/127868476;FBDV/iPhone7,2;FBMD/iPhone;FBSN/iOS;FBSV/11.4.1;FBSS/2;FBCR/OrangeBotswana;FBID/phone;FBLC/en_GB;FBOP/5;FBRV/128807018]'
+    family: 'Facebook'
+    major: '194'
+    minor: '0'
+    patch: '0'
+    patch_minor: '38'
+
+  - user_agent_string: 'Mozilla/5.0 (iPhone; CPU iPhone OS 6_1_4 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Mobile/10B350 [Pinterest/iOS]'
+    family: 'Pinterest'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (Linux; Android 4.4.2; A3-A11 Build/KOT49H) AppleWebKit/537.36 (KHTML like Gecko) Version/4.0 Chrome/30.0.0.0 Safari/537.36 [Pinterest/Android]'
+    family: 'Pinterest'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (iPhone; CPU iPhone OS 6_0_1 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Mobile/10A525 [Pinterest/iOS]'
+    family: 'Pinterest'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Pinterest for Android Tablet/1.8.4 (SGP321; 4.3)'
+    family: 'Pinterest'
+    major: '1'
+    minor: '8'
+    patch: '4'
+
+  - user_agent_string: 'Pinterest for Android Tablet/4.3.1 (A7600-H; 4.4.2)'
+    family: 'Pinterest'
+    major: '4'
+    minor: '3'
+    patch: '1'
+
+  - user_agent_string: 'Pinterest for Android/1.1.1 (endeavoru; 4.1.1)'
+    family: 'Pinterest'
+    major: '1'
+    minor: '1'
+    patch: '1'
+
+  - user_agent_string: 'Pinterest for Android/3.6.2 (klte; 4.4.2)'
+    family: 'Pinterest'
+    major: '3'
+    minor: '6'
+    patch: '2'
+
+  - user_agent_string: 'Pinterest/0.1'
+    family: 'Pinterest'
+    major: '0'
+    minor: '1'
+    patch:
+
+  - user_agent_string: 'Pinterest/0.2 (+http://www.pinterest.com/)'
+    family: 'Pinterest'
+    major: '0'
+    minor: '2'
+    patch:
+
+  - user_agent_string: 'Pinterest for Android/1.1.12 (endeavoru; 4.1.1)'
+    family: 'Pinterest'
+    major: '1'
+    minor: '1'
+    patch: '12'
+
+  - user_agent_string: 'Pinterest/3.2 CFNetwork/672.0.8 Darwin/14.0.0'
+    family: 'Pinterest'
+    major: '3'
+    minor: '2'
+    patch:
+
+  - user_agent_string: 'Pinterest/3.3.3 CFNetwork/609.1.4 Darwin/13.0.0'
+    family: 'Pinterest'
+    major: '3'
+    minor: '3'
+    patch: '3'
+
+  - user_agent_string: 'Pinterest/3356 CFNetwork/711.0.6 Darwin/14.0.0'
+    family: 'Pinterest'
+    major: '3356'
+    minor:
+    patch:
+
+  - user_agent_string: 'Pinterest/4.1.3 CFNetwork/672.1.14 Darwin/14.0.0'
+    family: 'Pinterest'
+    major: '4'
+    minor: '1'
+    patch: '3'
+
+  - user_agent_string: 'Pinterest/0.2 (+https://www.pinterest.com/bot.html)'
+    family: 'Pinterestbot'
+    major: '0'
+    minor: '2'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; Pinterestbot/1.0; +https://www.pinterest.com/bot.html)'
+    family: 'Pinterestbot'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.96 Mobile Safari/537.36 (compatible; Pinterestbot/1.0; +https://www.pinterest.com/bot.html)'
+    family: 'Pinterestbot'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/538.1 (KHTML, like Gecko) qutebrowser/0.2.1 Safari/538.1'
+    family: 'qutebrowser'
+    major: '0'
+    minor: '2'
+    patch: '1'
+
+  - user_agent_string: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) pagedraw/0.1.0 Chrome/49.0.2623.75 Electron/0.37.8 Safari/537.36'
+    family: 'Electron'
+    major: '0'
+    minor: '37'
+    patch: '8'
+
+  - user_agent_string: 'Mozilla/5.0 (iPad; U; CPU OS 4_3_2 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Mobile'
+    family: 'Mobile Safari UI/WKWebView'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (iPad; U; CPU OS 4_3_2 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8H7 Safari'
+    family: 'Mobile Safari'
+    major: '5'
+    minor: '0'
+    patch: '2'
+
+  - user_agent_string: 'Mozilla/5.0 (Macintosh; Intel Mac OS X) AppleWebKit/538.1 (KHTML, like Gecko) QupZilla/1.6.3 Safari/538.1'
+    family: 'QupZilla'
+    major: '1'
+    minor: '6'
+    patch: '3'
+
+  - user_agent_string: 'Mozilla/5.0 (OS/2 Warp 4.5) AppleWebKit/537.21 (KHTML, like Gecko) QupZilla/1.6.4 Safari/537.21'
+    family: 'QupZilla'
+    major: '1'
+    minor: '6'
+    patch: '4'
+
+  - user_agent_string: 'Mozilla/5.0 (Unknown; UNIX BSD/SYSV system) AppleWebKit/534.34 (KHTML, like Gecko) QupZilla/1.7.0 Safari/534.34'
+    family: 'QupZilla'
+    major: '1'
+    minor: '7'
+    patch: '0'
+
+  - user_agent_string: 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.21 (KHTML, like Gecko) QupZilla/1.6.1 Safari/537.21'
+    family: 'QupZilla'
+    major: '1'
+    minor: '6'
+    patch: '1'
+
+  - user_agent_string: 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/538.1 (KHTML, like Gecko) Otter/0.9.03 beta 3 Safari/538.1'
+    family: 'Otter'
+    major: '0'
+    minor: '9'
+    patch: '03'
+
+  - user_agent_string: 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/538.1 (KHTML, like Gecko) Otter/0.9.04'
+    family: 'Otter'
+    major: '0'
+    minor: '9'
+    patch: '04'
+
+  - user_agent_string: 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.21 (KHTML, like Gecko) Otter/0.9.04-dev'
+    family: 'Otter'
+    major: '0'
+    minor: '9'
+    patch: '04'
+
+  - user_agent_string: 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/538.1 (KHTML, like Gecko) Otter/0.3.01-dev Safari/538.1'
+    family: 'Otter'
+    major: '0'
+    minor: '3'
+    patch: '01'
+
+  - user_agent_string: 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/538.1 (KHTML, like Gecko) Otter/0.9.03 beta 3 Safari/538.1'
+    family: 'Otter'
+    major: '0'
+    minor: '9'
+    patch: '03'
+
+  - user_agent_string: 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/538.1 (KHTML, like Gecko) Otter/0.9.05'
+    family: 'Otter'
+    major: '0'
+    minor: '9'
+    patch: '05'
+
+  - user_agent_string: 'Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; NOKIA; Lumia 930) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Mobile Safari/537.36 Edge/12.0'
+    family: 'Edge Mobile'
+    major: '12'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (iPhone; CPU iPhone OS 12_3_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.1.1 EdgiOS/44.5.0.10 Mobile/15E148 Safari/604.1'
+    family: 'Edge Mobile'
+    major: '44'
+    minor: '5'
+    patch: '0'
+
+  - user_agent_string: 'Mozilla/5.0 (Linux; Android 8.1.0; Pixel Build/OPM4.171019.021.D1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.109 Mobile Safari/537.36 EdgA/42.0.0.2057'
+    family: 'Edge Mobile'
+    major: '42'
+    minor: '0'
+    patch: '0'
+
+  - user_agent_string: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) brave/0.7.11 Chrome/47.0.2526.110 Brave/0.36.5 Safari/537.36'
+    family: 'Brave'
+    major: '0'
+    minor: '7'
+    patch: '11'
+
+  - user_agent_string: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) brave/0.7.12 Chrome/47.0.2526.110 Brave/0.36.7 Safari/537.36 '
+    family: 'Brave'
+    major: '0'
+    minor: '7'
+    patch: '12'
+
+  - user_agent_string: 'Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) brave/0.7.10 Chrome/47.0.2526.110 Brave/0.36.5 Safari/537.36'
+    family: 'Brave'
+    major: '0'
+    minor: '7'
+    patch: '10'
+
+  - user_agent_string: 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome Safari/537.36'
+    family: 'HeadlessChrome'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_1) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/62.0.3202.89 Safari/537.36'
+    family: 'HeadlessChrome'
+    major: '62'
+    minor: '0'
+    patch: '3202'
+
+  - user_agent_string: 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/59.0.3071.109 HeadlessChrome/59.0.3071.109 Safari/537.36'
+    family: 'HeadlessChrome'
+    major: '59'
+    minor: '0'
+    patch: '3071'
+
+  - user_agent_string: 'Roku/DVP-6.2 (096.02E06005A)'
+    family: 'Roku'
+    major: '6'
+    minor: '2'
+    patch:
+
+  - user_agent_string: 'Roku/DVP-5.0 (025.00E08043A)'
+    family: 'Roku'
+    major: '5'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Roku/DVP-5.1 (025.01E01195A)'
+    family: 'Roku'
+    major: '5'
+    minor: '1'
+    patch:
+
+  - user_agent_string: 'Microsoft Office/12.0 (Windows NT 6.1; Microsoft Office Outlook 12.0.6739; Pro)'
+    family: 'Outlook'
+    major: '2007'
+    minor:
+    patch:
+
+  - user_agent_string: 'Microsoft Office/14.0 (Windows NT 6.1; Microsoft Outlook 14.0.5128; Pro)'
+    family: 'Outlook'
+    major: '2010'
+    minor:
+    patch:
+
+  - user_agent_string: 'Microsoft Office/16.0 (Microsoft Outlook Mail 16.0.6525; Pro)'
+    family: 'Outlook'
+    major: '2016'
+    minor:
+    patch:
+
+  - user_agent_string: 'Microsoft Office/16.0 (Windows NT 10.0; Microsoft Outlook 16.0.6326; Pro)'
+    family: 'Outlook'
+    major: '2016'
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 10.0; WOW64; Trident/8.0; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729; Microsoft Outlook 16.0.6366; ms-office; MSOffice 16)'
+    family: 'Outlook'
+    major: '2016'
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/4.0 (compatible; ms-office; MSOffice 16)'
+    family: 'Outlook'
+    major: '2016'
+    minor:
+    patch:
+
+  - user_agent_string: 'Outlook-Express/7.0 (MSIE 7.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; TmstmpExt)'
+    family: 'Windows Live Mail'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Outlook-Express/7.0 (MSIE 7.0; Windows NT 5.1; Trident/4.0; AskTB5.6; TmstmpExt)'
+    family: 'Windows Live Mail'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Outlook-Express/7.0 (MSIE 7.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; Media Center PC 6.0; OfficeLiveConnector.1.4; OfficeLivePatch.1.3; InfoPath.3; FDM; TmstmpExt)'
+    family: 'Windows Live Mail'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Outlook-Express/7.0 (MSIE 6.0; Windows NT 5.1; SV1; GTB6.3; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; InfoPath.2; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; OfficeLiveConnector.1.3; OfficeLivePatch.0.0; TmstmpExt)'
+    family: 'Windows Live Mail'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Outlook-Express/7.0 (MSIE 8; Windows NT 5.1; Trident/4.0; GTB7.0; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; TmstmpExt)'
+    family: 'Windows Live Mail'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Outlook-Express/7.0 (MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.1; TmstmpExt)'
+    family: 'Windows Live Mail'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Outlook-Express/7.0 (MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; HPDTDF; .NET4.0C; BRI/2; AskTbLOL/5.12.5.17640; TmstmpExt)'
+    family: 'Windows Live Mail'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (Linux; Android 5.0.1; GT-I9505 Build/LRX22C) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.111 YaBrowser/16.2.1.1239.00 Mobile Safari/537.36'
+    family: 'Yandex Browser'
+    major: '16'
+    minor: '2'
+    patch: '1'
+
+  - user_agent_string: 'Mozilla/5.0 (Linux; Android 4.4.2; SM-G800F Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.135 MobileIron/1.6.0 Mobile Safari/537.36'
+    family: 'MobileIron'
+    major: '1'
+    minor: '6'
+    patch: '0'
+
+  - user_agent_string: 'Mozilla/5.0 (Linux; Android 4.4.4; GT-I9195I Build/KTU84P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.130 Crosswalk/14.43.343.17 Mobile Safari/537.36'
+    family: 'Crosswalk'
+    major: '14'
+    minor: '43'
+    patch: '343'
+
+  - user_agent_string: 'Mozilla/5.0 (Linux; Android 6.0.1; Z831 Build/MMB29M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.94 Mobile Crosswalk/11.45.2454.20160425 Mobile Safari/537.36'
+    family: 'Crosswalk'
+    major: '11'
+    minor: '45'
+    patch: '2454'
+
+  - user_agent_string: 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Mobile/15A372 Safari Line/7.12.0'
+    family: 'LINE'
+    major: '7'
+    minor: '12'
+    patch: '0'
+
+  - user_agent_string: 'Mozilla/5.0 (Linux; Android 5.1; FTJ152B Build/LMY47D; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/51.0.2704.81 Mobile Safari/537.36 Line/6.4.1'
+    family: 'LINE'
+    major: '6'
+    minor: '4'
+    patch: '1'
+
+  - user_agent_string: 'Mozilla/5.0 (Linux; Android 4.1.2; GT-S7710 Build/JZO54K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile'
+    family: 'Chrome Mobile'
+    major: '18'
+    minor: '0'
+    patch: '1025'
+    patch_minor: '166'
+
+  - user_agent_string: 'Mozilla/5.0 (iPad; U; CPU OS 5_1_1 like Mac OS X; en-us) AppleWebKit/534.46.0 (KHTML, like Gecko) Chrome/19.0.1084.60 Mobile/9B206 Safari/7534.48.3'
+    family: 'Chrome Mobile'
+    major: '19'
+    minor: '0'
+    patch: '1084'
+    patch_minor: '60'
+
+  - user_agent_string: 'Mozilla/5.0 (Linux; U; Android 4.4.4; de-de; SM-G850F Build/KTU84P) AppleWebKit/537.16 (KHTML, like Gecko) Version/4.0 Mobile Safari/537.16 Chrome/33.0.0.0'
+    family: 'Chrome Mobile WebView'
+    major: '33'
+    minor: '0'
+    patch: '0'
+    patch_minor: '0'
+
+  - user_agent_string: 'Mozilla/5.0 (Linux; U; Android 6.0.1; ru-ru; Redmi 4 Build/MMB29M) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/61.0.3163.128 Mobile Safari/537.36 XiaoMi/MiuiBrowser/10.3.6-g'
+    family: 'MiuiBrowser'
+    major: '10'
+    minor: '3'
+    patch: '6'
+
+  - user_agent_string: 'Mozilla/5.0 (Linux; U; Android 7.1.2; ru-ru; Redmi 4A Build/N2G47H) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/61.0.3163.128 Mobile Safari/537.36 XiaoMi/Mint Browser/1.3.3'
+    family: 'Mint Browser'
+    major: '1'
+    minor: '3'
+    patch: '3'
+
+  - user_agent_string: 'Mozilla/5.0 (Web0S; Linux/SmartTV) AppleWebKit/537.41 (KHTML, like Gecko) Large Screen WebAppManager Safari/537.41'
+    family: 'Safari'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'MacOutlook/15.27.0.161010 (Intelx64 Mac OS X Version 10.11.6 (Build 15G1108))'
+    family: 'MacOutlook'
+    major: '15'
+    minor: '27'
+    patch: '0'
+
+  - user_agent_string: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/601.7.8 (KHTML, like Gecko) Slack_SSB/2.0.3'
+    family: 'Slack Desktop Client'
+    major: '2'
+    minor: '0'
+    patch: '3'
+
+  - user_agent_string: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/537.36 (KHTML, like Gecko) AtomShell/2.6.0 Chrome/56.0.2924.87 Electron/1.6.3 Safari/537.36 MacAppStore/16.5.0 Slack_SSB/2.6.0'
+    family: 'Slack Desktop Client'
+    major: '2'
+    minor: '6'
+    patch: '0'
+
+  - user_agent_string: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Slack/2.6.0-beta18998559 Chrome/56.0.2924.87 AtomShell/1.6.3 Safari/537.36 Slack_SSB/2.6.0'
+    family: 'Slack Desktop Client'
+    major: '2'
+    minor: '6'
+    patch: '0'
+
+  - user_agent_string: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/603.1.30 (KHTML, like Gecko) HipChat/732 (modern)'
+    family: 'HipChat Desktop Client'
+    major: '732'
+    minor:
+    patch:
+
+  - user_agent_string: 'HipChat Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) QtWebEngine/5.7.0 Chrome/49.0.2623.111 Safari/537.36'
+    family: 'HipChat Desktop Client'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Microsoft-CryptoAPI/6.1'
+    family: 'Microsoft-CryptoAPI'
+    major: '6'
+    minor: '1'
+    patch:
+
+  - user_agent_string: 'Microsoft SkyDriveSync 17.3.6517.0809 ship; Windows NT 6.1 Service Pack 1 (7601)'
+    family: 'Microsoft SkyDriveSync'
+    major: '17'
+    minor: '3'
+    patch: '6517'
+
+  - user_agent_string: 'ExchangeServicesClient/14.02.0051.000'
+    family: 'ExchangeServicesClient'
+    major: '14'
+    minor: '02'
+    patch: '0051'
+
+  - user_agent_string: 'Mac OS X/10.11.6 (15G1004); ExchangeWebServices/6.0 (243); Mail/9.3 (3124)'
+    family: 'ExchangeWebServices'
+    major: '6'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0+(iPhone;+CPU+iPhone+OS+9_3_1+like+Mac+OS+X)+AppleWebKit/601.1.46+(KHTML,+like+Gecko)+Version/9.0+Mobile/13E238+Safari/601.1'
+    family: 'Mobile Safari'
+    major: '9'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0+(iPad;+CPU+OS+9_3_1+like+Mac+OS+X)+AppleWebKit/601.1.46+(KHTML,+like+Gecko)+Version/9.0+Mobile/13E238+Safari/601.1'
+    family: 'Mobile Safari'
+    major: '9'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Slackbot-LinkExpanding 1.0 (+https://api.slack.com/robots)'
+    family: 'Slackbot-LinkExpanding'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Slack-ImgProxy 1.136 (+https://api.slack.com/robots)'
+    family: 'Slack-ImgProxy'
+    major: '1'
+    minor: '136'
+    patch:
+
+  - user_agent_string: 'okhttp/3.4.2'
+    family: 'okhttp'
+    major: '3'
+    minor: '4'
+    patch: '2'
+
+  - user_agent_string: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_0) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1300.0 Iron/23.0.1300.0 Safari/537.11'
+    family: 'Iron'
+    major: '23'
+    minor: '0'
+    patch: '1300'
+
+  - user_agent_string: 'Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/534.13 (KHTML, like Gecko) Iron/9.0.600.2 Chrome/9.0.600.2 Safari/534.13'
+    family: 'Iron'
+    major: '9'
+    minor: '0'
+    patch: '600'
+
+  - user_agent_string: 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2750.0 Iron Safari/537.36'
+    family: 'Iron'
+    major: '52'
+    minor: '0'
+    patch: '2750'
+
+  - user_agent_string: 'Mozilla/5.0 (Android; U; en-US) AppleWebKit/533.19.4 (KHTML, like Gecko) AdobeAIR/23.0'
+    family: 'AdobeAIR'
+    major: '23'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US) AppleWebKit/533.19.4 (KHTML, like Gecko) AdobeAIR/19.0'
+    family: 'AdobeAIR'
+    major: '19'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (iOS; U; en-US) AppleWebKit/533.19.4 (KHTML, like Gecko) AdobeAIR/19.0'
+    family: 'AdobeAIR'
+    major: '19'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Kurio/3.0.8 Build 65303(Android Kitkat 4.4.4; Phone)'
+    family: 'Kurio App'
+    major: '3'
+    minor: '0'
+    patch: '8'
+
+  - user_agent_string: 'BacaBerita App/5.5.0 (Linux; U; Android 4.4.4; en-us) Mobile Safari'
+    family: 'BacaBerita App'
+    major: '5'
+    minor: '5'
+    patch: '0'
+
+  - user_agent_string: 'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) MxBrowser/4.5.2.2000 Chrome/30.0.1551.0 Safari/537.36'
+    family: 'Maxthon'
+    major: '4'
+    minor: '5'
+    patch: '2'
+
+  - user_agent_string: 'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Maxthon/4.4.5.1000 Chrome/30.0.1599.101 Safari/537.36'
+    family: 'Maxthon'
+    major: '4'
+    minor: '4'
+    patch: '5'
+
+  - user_agent_string: 'Mozilla/5.0 (Linux; Android 7.0; SM-G930P Build/NRD90M; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/58.0.3029.83 Mobile Safari/537.36 MxBrowser/4.5.10.7000'
+    family: 'Maxthon'
+    major: '4'
+    minor: '5'
+    patch: '10'
+
+  - user_agent_string: 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.6 (KHTML, like Gecko) Chrome/18.0.1025.133 Safari/537.6 Midori/0.5'
+    family: 'Midori'
+    major: '0'
+    minor: '5'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (iPad; U; CPU like Mac OS X; FIT_LANG_REPLACE) AppleWebKit/532+ (KHTML, like Gecko) Version/3.0 Mobile/1A538b Safari/419.3 Midori/0.4'
+    family: 'Midori'
+    major: '0'
+    minor: '4'
+    patch:
+
+  - user_agent_string: 'curl/7.29.0'
+    family: 'curl'
+    major: '7'
+    minor: '29'
+    patch: '0'
+
+  - user_agent_string: 'Debian APT-HTTP/1.3 (1.0.1ubuntu2)'
+    family: 'Debian APT-HTTP'
+    major: '1'
+    minor: '3'
+    patch:
+
+  - user_agent_string: 'jupdate'
+    family: 'jupdate'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'libcurl-agent/1.0'
+    family: 'libcurl-agent'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'libwww-perl/6.05'
+    family: 'libwww-perl'
+    major: '6'
+    minor: '05'
+    patch:
+
+  - user_agent_string: 'Microsoft-CryptoAPI/6.3'
+    family: 'Microsoft-CryptoAPI'
+    major: '6'
+    minor: '3'
+    patch:
+
+  - user_agent_string: 'OpenBSD ftp'
+    family: 'OpenBSD ftp'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'SophosAgent/1.0 (type= spa )'
+    family: 'SophosAgent'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'SophosUpdateManager/1.5.7.50 SDDS/2.0 (u= EO2ANA123G c= 6342da15-f351-4ab7-9656-3f5f2d50885d )'
+    family: 'SophosUpdateManager'
+    major: '1'
+    minor: '5'
+    patch: '7'
+
+  - user_agent_string: 'Ubuntu APT-HTTP/1.3 (0.7.20.2ubuntu6)'
+    family: 'Ubuntu APT-HTTP'
+    major: '1'
+    minor: '3'
+    patch:
+
+  - user_agent_string: 'urlgrabber/3.10 yum/3.4.3'
+    family: 'urlgrabber'
+    major: '3'
+    minor: '10'
+    patch:
+
+  - user_agent_string: 'urlgrabber/3.9.1 yum/3.2.29'
+    family: 'urlgrabber'
+    major: '3'
+    minor: '9'
+    patch: '1'
+
+  - user_agent_string: 'Wget/1.14 (linux-gnu)'
+    family: 'Wget'
+    major: '1'
+    minor: '14'
+    patch:
+
+  - user_agent_string: 'wget2/1.99.2'
+    family: 'wget2'
+    major: '1'
+    minor: '99'
+    patch: '2'
+
+  - user_agent_string: 'Windows-Update-Agent/7.9.9600.17729 Client-Protocol/1.21'
+    family: 'Windows-Update-Agent'
+    major: '7'
+    minor: '9'
+    patch: '9600'
+
+  - user_agent_string: 'Windows-Update-Agent/7.9.9600.18094 Client-Protocol/1.21'
+    family: 'Windows-Update-Agent'
+    major: '7'
+    minor: '9'
+    patch: '9600'
+
+  - user_agent_string: 'Mozilla/5.0 (Linux; Android 5.1.1; MI NOTE Pro Build/LMY47V; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/48.0.2564.116 Mobile Safari/537.36 baidubrowser/7.7.13.0 (Baidu; P1 5.1.1)'
+    family: 'Baidu Browser'
+    major: '7'
+    minor: '7'
+    patch: '13'
+
+  - user_agent_string: 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Dragon/36.1.1.21 Chrome/36.0.1985.97 Safari/537.36'
+    family: 'Dragon'
+    major: '36'
+    minor: '1'
+    patch: '1'
+
+  - user_agent_string: 'Mozilla/5.0 (Windows; U; Windows CE 5.1; rv:1.8.1a3) Gecko/20060610 Minimo/0.016'
+    family: 'Minimo'
+    major: '0'
+    minor: '016'
+    patch:
+
+  - user_agent_string: 'Opera/9.80 (MAUI Runtime; Opera Mini/4.4.39008/37.9178; U; en) Presto/2.12.423 Version/12.16'
+    family: 'Opera Mini'
+    major: '4'
+    minor: '4'
+    patch: '39008'
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; 008/0.83; http://www.80legs.com/spider.html) Gecko/2008032620'
+    family: '008'
+    major: '0'
+    minor: '83'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (iPhone; CPU iPhone OS 9_3_4 like Mac OS X) AppleWebKit/601.1 (KHTML, like Gecko) Outlook-iOS-Android/1.0 Mobile/13G35 Safari/601.1.46")'
+    family: 'Outlook-iOS-Android'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.21 Safari/537.36 MMS/1.0.2459.0'
+    family: 'Opera Neon'
+    major: '1'
+    minor: '0'
+    patch: '2459'
+
+  - user_agent_string: 'PANTECH-EUROPA-U4000-orange/1.0 Obigo/Q04C MMS/1.2.0 profile/MIDP-2.0 configuration/CLDC-1.1'
+    family: 'Obigo'
+    major: '04'
+    minor:
+    patch:
+
+  - user_agent_string: 'masscan/1.0 (https://github.com/robertdavidgraham/masscan)'
+    family: 'masscan'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36 SznProhlizec/4.3.0-251281'
+    family: 'Seznam prohlížeč'
+    major: '4'
+    minor: '3'
+    patch: '0'
+
+  - user_agent_string: 'Mozilla/5.0 (Linux; Android 7.1.2; Redmi 4X Build/N2G47H) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/64.0.3282.137 Mobile Safari/537.36 SznProhlizec/5.2.1a'
+    family: 'Seznam prohlížeč'
+    major: '5'
+    minor: '2'
+    patch: '1'
+
+  - user_agent_string: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36 SznProhlizec/3.8.4 NWjs/0.19.6'
+    family: 'Seznam prohlížeč'
+    major: '3'
+    minor: '8'
+    patch: '4'
+
+  - user_agent_string: 'Mozilla/5.0 (iPhone; CPU iPhone OS 10_2_1 like Mac OS X) AppleWebKit/602.4.6 (KHTML, like Gecko) Mobile/14D27 SznProhlizec/4.4i'
+    family: 'Seznam prohlížeč'
+    major: '4'
+    minor: '4'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) coc_coc_browser/42.0 CoRom/36.0.1985.144 Chrome/36.0.1985.144 Safari/537.36'
+    family: 'Coc Coc'
+    major: '42'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) coc_coc_browser/49.0 Chrome/43.0.2357.138 Safari/537.36'
+    family: 'Coc Coc'
+    major: '49'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) coc_coc_browser/50.0.125 Chrome/44.0.2403.125 Safari/537.36'
+    family: 'Coc Coc'
+    major: '50'
+    minor: '0'
+    patch: '125'
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; Qwantify/2.4w; +https://www.qwant.com/)/2.4w'
+    family: 'Qwantify'
+    major: '2'
+    minor: '4'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12'
+    family: 'Edge'
+    major: '12'
+    minor:
+    patch:
+
+  - user_agent_string: 'Bloglovin/1.0 (http://www.bloglovin.com; 1000 subscribers)'
+    family: 'Bloglovin'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Feedbin feed-id:1033517 - 1000 subscribers'
+    family: 'Feedbin'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Tiny Tiny RSS/16.3 (http://tt-rss.org/)'
+    family: 'Tiny Tiny RSS'
+    major: '16'
+    minor: '3'
+    patch:
+
+  - user_agent_string: 'Mtps Feed Aggregation System'
+    family: 'Mtps Feed Aggregation System'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Stringer'
+    family: 'Stringer'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Box Sync/4.0.7848;Darwin/10.13;i386/64bit'
+    family: 'Box Sync'
+    major: '4'
+    minor: '0'
+    patch: '7848'
+
+  - user_agent_string: 'Box/1.2.93;Darwin/10.13;i386/64bit'
+    family: 'Box'
+    major: '1'
+    minor: '2'
+    patch: '93'
+
+  - user_agent_string: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_0) AppleWebKit/537.36 (KHTML, like Gecko) BoxNotes/1.3.0 Chrome/56.0.2924.87 Electron/1.6.8 Safari/537.36'
+    family: 'BoxNotes'
+    major: '1'
+    minor: '3'
+    patch: '0'
+
+  - user_agent_string: 'Box Sync/4.0.7848;Windows/8.1;x86 Family 6 Model 158 Stepping 9, GenuineIntel/32bit'
+    family: 'Box Sync'
+    major: '4'
+    minor: '0'
+    patch: '7848'
+
+  - user_agent_string: 'Box Sync/4.0.7848;Windows/10;Intel64 Family 6 Model 158 Stepping 9, GenuineIntel/64bit'
+    family: 'Box Sync'
+    major: '4'
+    minor: '0'
+    patch: '7848'
+
+  - user_agent_string: 'Mozilla/5.0 (Windows NT 6.3) AppleWebKit/537.36 (KHTML, like Gecko) BoxNotes/1.3.0 Chrome/56.0.2924.87 Electron/1.6.8 Safari/537.36'
+    family: 'BoxNotes'
+    major: '1'
+    minor: '3'
+    patch: '0'
+
+  - user_agent_string: 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) BoxNotes/1.3.0 Chrome/56.0.2924.87 Electron/1.6.8 Safari/537.36'
+    family: 'BoxNotes'
+    major: '1'
+    minor: '3'
+    patch: '0'
+
+  - user_agent_string: 'Box/1.2.93;Windows/10;Intel64 Family 6 Model 158 Stepping 9, GenuineIntel/64bit'
+    family: 'Box'
+    major: '1'
+    minor: '2'
+    patch: '93'
+
+  - user_agent_string: 'Evolution/3.26.2.1'
+    family: 'Evolution'
+    major: '3'
+    minor: '26'
+    patch: '2.1'
+
+  - user_agent_string: 'RCM CardDAV plugin/2.0.4'
+    family: 'RCM CardDAV plugin'
+    major: '2'
+    minor: '0'
+    patch: '4'
+
+  - user_agent_string: 'RCM CardDAV plugin/0.9.2-dev'
+    family: 'RCM CardDAV plugin'
+    major: '0'
+    minor: '9'
+    patch: '2-dev'
+
+  - user_agent_string: 'DAVdroid/1.9.2-gplay (2017/11/04; dav4android; okhttp3) Android/7.1.2'
+    family: 'DAVdroid'
+    major: '1'
+    minor: '9'
+    patch: '2'
+
+  - user_agent_string: 'DAVdroid/1.9-ose (2017/10/19; dav4android; okhttp3) Android/7.1.2'
+    family: 'DAVdroid'
+    major: '1'
+    minor: '9'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (Windows) mirall/2.3.2 (build 1) (Nextcloud)'
+    family: 'Nextcloud'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (Linux) mirall/2.3.2 (Nextcloud)'
+    family: 'Nextcloud'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (Android) ownCloud-android/2.0.0'
+    family: 'Owncloud'
+    major: '2'
+    minor: '0'
+    patch: '0'
+
+  - user_agent_string: 'Mozilla/5.0 (iPhone; CPU iPhone OS 10_0_2 like Mac OS X) AppleWebKit/602.1.50 (KHTML, like Gecko) AppleNews/608.0.1 Version/2.0.1'
+    family: 'Mobile Safari UI/WKWebView'
+    major: '10'
+    minor: '0'
+    patch: '2'
+
+  - user_agent_string: 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.3; WOW64; Trident/7.0; .NET4.0E; .NET4.0C; InfoPath.3)'
+    family: 'IE'
+    major: '11'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.2; Trident/6.0; .NET4.0E; .NET4.0C; .NET CLR 3.5.30729; .NET CLR 2.0.50727; .NET CLR 3.0.30729)'
+    family: 'IE'
+    major: '10'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; InfoPath.2)'
+    family: 'IE'
+    major: '9'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Tableau/1.0 (1025794)'
+    family: 'Tableau'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_2_5 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/11.2.5 Mobile/9B179 Safari/7534.48.3 OktaMobile/5.10.2'
+    family: 'OktaMobile'
+    major: '5'
+    minor: '10'
+    patch: '2'
+
+  - user_agent_string: 'BUbiNG (+http://law.di.unimi.it/BUbiNG.html)'
+    family: 'BUbiNG'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (compatible; SemrushBot/1.2~bl; +http://www.semrush.com/bot.html)'
+    family: 'SemrushBot'
+    major: '1'
+    minor: '2'
+    patch:
+
+  - user_agent_string: 'Outlook-iOS/665.29827.prod.iphone (2.63.0)'
+    family: 'Outlook-iOS'
+    major: '2'
+    minor: '63'
+    patch: '0'
+
+  - user_agent_string: 'Mozilla/5.0 (Linux; Android 7.0; LG-TP260 Build/NRD90U; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/64.0.3282.137 Mobile Safari/537.36 Instagram 33.0.0.11.92 Android (24/7.0; 320dpi; 720x1193; LGE/lge; LG-TP260; lv517; lv517; en_US; 93117667)'
+    family: 'Instagram'
+    major: '33'
+    minor: '0'
+    patch: '0'
+
+  - user_agent_string: 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_2_5 like Mac OS X) AppleWebKit/604.5.6 (KHTML, like Gecko) Mobile/15D60 Instagram 33.0.0.11.96 (iPhone9,3; iOS 11_2_5; en_AU; en-AU; scale=2.00; gamut=wide; 750x1334)'
+    family: 'Instagram'
+    major: '33'
+    minor: '0'
+    patch: '0'
+
+  - user_agent_string: 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_2_6 like Mac OS X) AppleWebKit/604.5.6 (KHTML, like Gecko) Mobile/15D100 Flipboard/4.2.2'
+    family: 'Flipboard'
+    major: '4'
+    minor: '2'
+    patch: '2'
+
+  - user_agent_string: 'Mozilla/5.0 (Linux; Android 7.0; SM-G610F Build/NRD90M; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/63.0.3239.111 Mobile Safari/537.36 Flipboard/4.1.9/4323,4.1.9.4323'
+    family: 'Flipboard'
+    major: '4'
+    minor: '1'
+    patch: '9'
+
+  - user_agent_string: 'Mozilla/5.0 (Linux; Android 7.0; SM-G930F Build/NRD90M; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/64.0.3282.137 Mobile Safari/537.36 Onefootball/Android/9.10.6'
+    family: 'Onefootball'
+    major: '9'
+    minor: '10'
+    patch: '6'
+
+  - user_agent_string: 'Mozilla/5.0 (Linux; Android 7.0; SM-A520F Build/NRD90M; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/58.0.3029.83 Mobile Safari/537.36 Flipboard-Briefing/2.7.28'
+    family: 'Flipboard-Briefing'
+    major: '2'
+    minor: '7'
+    patch: '28'
+
+
+  - user_agent_string: 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 10.0; WOW64; Trident/8.0; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729)'
+    family: 'IE'
+    major: '11'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'ESPN Radio/3.2.113 CFNetwork/485.12.30 Darwin/10.4.0'
+    family: 'ESPN'
+    major: '3'
+    minor: '2'
+    patch: '113'
+
+  - user_agent_string: 'ESPN Radio 4.7.4 rv:1032 (iPhone; iPhone OS 9.2.1; en_US)'
+    family: 'ESPN'
+    major: '4'
+    minor: '7'
+    patch: '4'
+    patch_minor: '1032'
+
+  - user_agent_string: 'ESPN Radio 4.5.1 (iPhone; iPhone OS 5.1.1; en_US)'
+    family: 'ESPN'
+    major: '4'
+    minor: '5'
+    patch: '1'
+
+  - user_agent_string: 'ESPN Radio 4.0 (iPhone; iPhone OS 7.1.2; en_AU)'
+    family: 'ESPN'
+    major: '4'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (X11; Linux x86_64; rv:55.0) Gecko/20100101 Firefox/55.2.2 Waterfox/55.2.2'
+    family: 'Waterfox'
+    major: '55'
+    minor: '2'
+    patch: '2'
+
+  - user_agent_string: 'Mozilla/5.0 (X11; Linux x86_64; rv:55.0) Gecko/20100101 Goanna/4.0 Firefox/55.0 Basilisk/20171113'
+    family: 'Basilisk'
+    major: '55'
+    minor: '0'
+    patch: '20171113'
+
+  - user_agent_string: 'Go-http-client/1.1'
+    family: 'Go-http-client'
+    major: '1'
+    minor: '1'
+    patch:
+
+  - user_agent_string: 'scalaj-http/1.0'
+    family: 'scalaj-http'
+    major: '1'
+    minor: '0'
+    patch:
+
+  - user_agent_string: 'reqwest/0.8.1'
+    family: 'reqwest'
+    major: '0'
+    minor: '8'
+    patch: '1'
+
+  - user_agent_string: 'akka-http/10.0.10'
+    family: 'akka-http'
+    major: '10'
+    minor: '0'
+    patch: '10'
+
+  - user_agent_string: 'Python/3.6 aiohttp/3.5.4'
+    family: 'Python aiohttp'
+    major: '3'
+    minor: '5'
+    patch: '4'
+
+  - user_agent_string: 'unirest-java/1.3.11'
+    family: 'unirest-java'
+    major: '1'
+    minor: '3'
+    patch: '11'
+
+  - user_agent_string: 'axios/0.18.0'
+    family: 'axios'
+    major: '0'
+    minor: '18'
+    patch: '0'
+
+  - user_agent_string: 'got/9.6.0 (https://github.com/sindresorhus/got)'
+    family: 'got'
+    major: '9'
+    minor: '6'
+    patch: '0'
+
+  - user_agent_string: 'S3Gof3r'
+    family: 'S3Gof3r'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'rusoto/0.36.0 rust/1.35.0 linux'
+    family: 'rusoto'
+    major: '0'
+    minor: '36'
+    patch: '0'
+
+  - user_agent_string: 'ibm-cos-sdk-java/2.3.0 Linux/4.9.0-8-amd64 Java_HotSpot(TM)_64-Bit_Server_VM/9.0.4+11/9.0.4'
+    family: 'ibm-cos-sdk-java'
+    major: '2'
+    minor: '3'
+    patch: '0'
+
+  - user_agent_string: 'aws-sdk-dotnet-45/3.3.11.0 aws-sdk-dotnet-core/3.3.17.10 .NET_Runtime/4.0 .NET_Framework/4.0 OS/Microsoft_Windows_NT_6.2.9200.0 ClientSync'
+    family: 'aws-sdk-dotnet-45'
+    major: '3'
+    minor: '3'
+    patch: '11'
+    patch_minor: '0'
+
+  - user_agent_string: 'Boto/2.48.0 Python/2.7.14 Linux/4.2.0-41-generic'
+    family: 'Boto'
+    major: '2'
+    minor: '48'
+    patch: '0'
+
+  - user_agent_string: 'aws-cli/1.14.9 Python/2.7.12 Linux/4.9.76-3.78.amzn1.x86_64 botocore/1.8.13'
+    family: 'aws-cli'
+    major: '1'
+    minor: '14'
+    patch: '9'
+
+  - user_agent_string: 'Boto3/1.6.2 Python/3.4.3 Linux/4.4.35-33.55.amzn1.x86_64 Botocore/1.9.2 Resource'
+    family: 'Boto3'
+    major: '1'
+    minor: '6'
+    patch: '2'
+
+  - user_agent_string: 'ElasticMapReduce/1.0.0 emrfs/s3n {}, aws-sdk-java/1.11.129 Linux/4.4.35-33.55.amzn1.x86_64 OpenJDK_64-Bit_Server_VM/25.141-b16/1.8.0_141 scala/2.11.8'
+    family: 'aws-sdk-java'
+    major: '1'
+    minor: '11'
+    patch: '129'
+
+  - user_agent_string: 'Hadoop 2.6.0-cdh5.14.0, aws-sdk-java/1.11.134 Linux/4.4.0-1052-aws OpenJDK_64-Bit_Server_VM/25.151-b12/1.8.0_151'
+    family: 'aws-sdk-java'
+    major: '1'
+    minor: '11'
+    patch: '134'
+
+  - user_agent_string: 'Hadoop 2.8.3-amzn-0, aws-sdk-java/1.11.267 Linux/4.9.77-31.58.amzn1.x86_64 OpenJDK_64-Bit_Server_VM/25.161-b14 java/1.8.0_161 scala/2.11.8'
+    family: 'aws-sdk-java'
+    major: '1'
+    minor: '11'
+    patch: '267'
+
+  - user_agent_string: 'aws-sdk-java/1.11.226 Mac_OS_X/10.12.6 Java_HotSpot(TM)_64-Bit_Server_VM/25.131-b11 java/1.8.0_131 scala/2.11.11'
+    family: 'aws-sdk-java'
+    major: '1'
+    minor: '11'
+    patch: '226'
+
+  - user_agent_string: 'aws-sdk-ruby2/2.2.18 ruby/2.1.5 x86_64-linux'
+    family: 'aws-sdk-ruby2'
+    major: '2'
+    minor: '2'
+    patch: '18'
+
+  - user_agent_string: 'aws-sdk-cpp/1.0.64 Linux/4.4.0-66-generic x86_64'
+    family: 'aws-sdk-cpp'
+    major: '1'
+    minor: '0'
+    patch: '64'
+
+  - user_agent_string: 'aws-sdk-go/1.4.12 (go1.6; linux; amd64) S3Manager'
+    family: 'aws-sdk-go'
+    major: '1'
+    minor: '4'
+    patch: '12'
+
+  - user_agent_string: 'aws-sdk-nodejs/2.141.0 win32/v8.4.0'
+    family: 'aws-sdk-nodejs'
+    major: '2'
+    minor: '141'
+    patch: '0'
+
+  - user_agent_string: 'JetS3t/0.9.0 (Linux/4.4.0-1044-aws; amd64; en; JVM 1.8.0_131)'
+    family: 'JetS3t'
+    major: '0'
+    minor: '9'
+    patch: '0'
+
+  - user_agent_string: 's3fs/1.80 (commit hash 6be3236; OpenSSL)'
+    family: 's3fs'
+    major: '1'
+    minor: '80'
+    patch:
+
+  - user_agent_string: 'Cyberduck/6.3.0.27105 (Windows 10/10.0) (x86)'
+    family: 'Cyberduck'
+    major: '6'
+    minor: '3'
+    patch: '0'
+
+  - user_agent_string: 'S3 Browser 7-4-5 https://s3browser.com'
+    family: 'S3 Browser'
+    major: '7'
+    minor: '4'
+    patch: '5'
+
+  - user_agent_string: 'rclone/v1.34'
+    family: 'rclone'
+    major: '1'
+    minor: '34'
+    patch:
+
+  - user_agent_string: 'PycURL/7.43.0 libcurl/7.38.0 OpenSSL/1.0.1t zlib/1.2.8 libidn/1.29 libssh2/1.4.3 librtmp/2.3'
+    family: 'PycURL'
+    major: '7'
+    minor: '43'
+    patch: '0'
+
+  - user_agent_string: 'Axel 2.4 (Linux)'
+    family: 'Axel'
+    major: '2'
+    minor: '4'
+    patch:
+
+  - user_agent_string: 'lftp/4.7.7'
+    family: 'lftp'
+    major: '4'
+    minor: '7'
+    patch: '7'
+
+  - user_agent_string: 'aria2/1.19.0'
+    family: 'aria2'
+    major: '1'
+    minor: '19'
+    patch: '0'
+
+  - user_agent_string: 'SalesforceMobileSDK/5.3.0 android mobile/7.1.1 (XT1635-02) Salesforce1/15.2 Native uid_bef1747905d064c6 ftr_ Cordova/6.2.3'
+    family: 'Salesforce'
+    major: '15'
+    minor: '2'
+    patch:
+
+  - user_agent_string: 'YahooMailProxy; https://help.yahoo.com/kb/yahoo-mail-proxy-SLN28749.html'
+    family: 'YahooMailProxy'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_2_6 like Mac OS X) AppleWebKit/604.5.6 (KHTML, like Gecko) Snapchat/10.38.0.25 (iPhone8,1; iOS 11.2.6; gzip)'
+    family: 'Snapchat'
+    major: '10'
+    minor: '38'
+    patch: '0'
+    patch_minor: '25'
+
+  - user_agent_string: 'Mozilla/5.0 (iPad; U; CPU OS 4_3_5 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Mobile/8L1 Twitter for iPad'
+    family: 'Twitter'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (Linux; Android 9; Nokia 2.1 Build/PKQ1.181105.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/74.0.3729.157 Mobile Safari/537.36 TwitterAndroid'
+    family: 'Twitter'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_2_1 like Mac OS X) AppleWebKit/604.4.7 (KHTML, like Gecko) Mobile/15C153 Twitter for iPhone/7.19'
+    family: 'Twitter'
+    major: '7'
+    minor: '19'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (iPhone; CPU iPhone OS 7_1_2 like Mac OS X) AppleWebKit/537.51.2 (KHTML, like Gecko) GSA/4.2.2.38484 Mobile/11D257 Safari/9537.53'
+    family: 'Google'
+    major: '4'
+    minor: '2'
+    patch: '2'
+
+  - user_agent_string: 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_0_2 like Mac OS X) AppleWebKit/604.1.34 (KHTML, like Gecko) GSA/36.0.169645775 Mobile/15A421 Safari/604.1'
+    family: 'Google'
+    major: '36'
+    minor: '0'
+    patch: '169645775'
+
+  - user_agent_string: 'ViaFree-DK/3.8.3 (com.MTGx.ViaFree.dk; build:7383; iOS 12.1.0) Alamofire/4.7.0'
+    family: 'ViaFree'
+    major: '3'
+    minor: '8'
+    patch: '3'
+
+  - user_agent_string: 'Viafree-tvOS-DK/3.7.1 (com.MTGx.ViaFree.dk; build:7341; tvOS 12.1.0) Alamofire/4.7.0'
+    family: 'ViaFree'
+    major: '3'
+    minor: '7'
+    patch: '1'
+
+  - user_agent_string: 'OC/15.0.5071.1000 (Skype for Business)'
+    family: 'Skype'
+    major: '15'
+    minor: '0'
+    patch: '5071'
+    patch_minor: '1000'
+
+  - user_agent_string: 'Mozilla/5.0 (Linux; Android 8.1.0; TA-1024 Build/OPR1.170623.026; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/71.0.3578.99 Mobile Safari/537.36 GSA/8.65.5.21.arm64'
+    family: 'Google'
+    major: '8'
+    minor: '65'
+    patch: '5'
+
+  - user_agent_string: 'Mozilla/5.0 (Linux; Android 8.0.0; SM-G960F Build/R16NW; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/71.0.3578.99 Mobile Safari/537.36 GSA/8.65.5.21.arm64'
+    family: 'Google'
+    major: '8'
+    minor: '65'
+    patch: '5'
+
+  - user_agent_string: 'Mozilla/5.0 (Linux; Android 9; Pixel 3 Build/PQ1A.181205.006; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/71.0.3578.99 Mobile Safari/537.36 GSA/8.65.5.21.arm64'
+    family: 'Google'
+    major: '8'
+    minor: '65'
+    patch: '5'
+
+  - user_agent_string: 'Microsoft Office Word 2014'
+    family: 'Word'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Ghost/2.13.1+moya (https://github.com/TryGhost/Ghost)'
+    family: 'Ghost'
+    major: '2'
+    minor: '13'
+    patch: '1'
+
+  - user_agent_string: 'Ghost/2.10.8 (https://github.com/TryGhost/Ghost)'
+    family: 'Ghost'
+    major: '2'
+    minor: '10'
+    patch: '8'
+
+  - user_agent_string: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3763.0 Safari/537.36 Edg/75.0.131.0'
+    family: 'Edge'
+    major: '75'
+    minor: '0'
+    patch: '131'
+    patch_minor: '0'
+
+  - user_agent_string: 'Mozilla/5.0 (iPad; CPU OS 12_3_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 TopBuzz com.alex.NewsMaster/8.2.1 (iPad; iOS 12.3.1; en; WIFI)'
+    family: 'TopBuzz'
+    major: '8'
+    minor: '2'
+    patch: '1'
+
+  - user_agent_string: 'Mozilla/5.0 (Linux; Android 9; SM-G950U Build/PPR1.180610.011; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/76.0.3809.111 Mobile Safari/537.36 JsSdk/2 TopBuzz/9.4.3 NetType/4G'
+    family: 'TopBuzz'
+    major: '9'
+    minor: '4'
+    patch: '3'
+
+  - user_agent_string: 'Mozilla/5.0 (Linux; Android 9; SM-J737A Build/PPR1.180610.011; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/75.0.3770.143 Mobile Safari/537.36 JsSdk/2 TopBuzz/9.1.4 NetType/4G'
+    family: 'TopBuzz'
+    major: '9'
+    minor: '1'
+    patch: '4'
+
+  - user_agent_string: 'Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_3 like Mac OS X) AppleWebKit/603.3.8 (KHTML, like Gecko) Mobile/14G60 TopBuzz com.topbuzz.videoen/8.2.2 (iPhone; iOS 10.3.3; en; WIFI; CTRadioAccessTechnologyLTE)'
+    family: 'TopBuzz'
+    major: '8'
+    minor: '2'
+    patch: '2'
+
+  - user_agent_string: 'Snapchat/10.29.1.0 (iPhone10,1; iOS 11.2; gzip)'
+    family: 'Snapchat'
+    major: '10'
+    minor: '29'
+    patch: '1'
+
+  - user_agent_string: 'OgScrper/1.0.0'
+    family: 'OgScrper'
+    major: '1'
+    minor: '0'
+    patch: '0'
+
+  - user_agent_string: 'Android: Client/0.0.0-indev (Android SDK built for x86; Android 9)'
+    family: 'Android'
+    major: '9'
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (Linux; U; Android 9; zh-cn; vivo X21 Build/PKQ1.180819.001) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/9.9 Mobile Safari/537.36'
+    family: 'QQ Browser Mobile'
+    major: '9'
+    minor: '9'
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_2 like Mac OS X) AppleWebKit/603.2.4 (KHTML, like Gecko) Mobile/14F89 Safari/603.2.4 EdgiOS/41.1.35.1'
+    family: 'Edge Mobile'
+    major: '41'
+    minor: '1'
+    patch: '35'
+    patch_minor: '1'
+
+  - user_agent_string: 'Mozilla/5.0 (Linux; Android 8.0; Pixel XL Build/OPP3.170518.006) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.0 Mobile Safari/537.36 EdgA/41.1.35.1'
+    family: 'Edge Mobile'
+    major: '41'
+    minor: '1'
+    patch: '35'
+    patch_minor: '1'
+
+  - user_agent_string: 'Mozilla/5.0 (compatible;AspiegelBot)'
+    family: 'AspiegelBot'
+    major:
+    minor:
+    patch:
+  
+  - user_agent_string: 'Mozilla/5.0 (Linux; Android 7.0;) AppleWebKit/537.36 (KHTML, like Gecko) Mobile Safari/537.36 (compatible; AspiegelBot)'
+    family: 'AspiegelBot'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'Mozilla/5.0 QGIS/31100'
+    family: 'QGIS'
+    major: '3'
+    minor: '11'
+    patch: '0'
+
+  - user_agent_string: 'Mozilla/5.0 QGIS/2.18.20'
+    family: 'QGIS'
+    major: '2'
+    minor: '18'
+    patch: '20'
+
+  - user_agent_string: 'JOSM/1.5 (15492 nl) Windows 7 64-Bit Java/1.8.0_221'
+    family: 'JOSM'
+    major: '1'
+    minor: '5'
+    patch:
+
+  - user_agent_string: 'FME/2018.7.34.18312  libcurl/7.57.0 WinSSL zlib/1.2.11 WinIDN libssh2/1.7.0'
+    family: 'FME'
+    major: '2018.7'
+    minor: '34'
+    patch: '18312'
+
+  - user_agent_string: 'GeoEvent Server 10.5.1'
+    family: 'GeoEvent Server'
+    major: '10'
+    minor: '5'
+    patch: '1'
+    
+  - user_agent_string: 'ArcGIS Pro 2.4.2 (000000000) - ArcGIS Pro'
+    family: 'ArcGIS Pro'
+    major: '2'
+    minor: '4'
+    patch: '2'
+  
+  - user_agent_string: 'ArcGIS Client Using WinInet'
+    family: 'ArcMap'
+    major:
+    minor:
+    patch:
+
+  - user_agent_string: 'ArcGISRuntime-Android/10.3.0 (Android 4.4; armeabi-v7a; SAMSUNG-GT-I9195) arcgis-collector/18.0.3 (00000000-0000-0000-0000-000000000000)'
+    family: 'Collector for ArcGIS'
+    major: '18'
+    minor: '0'
+    patch: '3'
+
+  - user_agent_string: 'ArcGISRuntime-iOS/10.3.0 (iOS 10.2.1; iPad5,4) arcgis-collector/19.0.2 (00000000-0000-0000-0000-000000000000)'
+    family: 'Collector for ArcGIS'
+    major: '19'
+    minor: '0'
+    patch: '2'
+
+  - user_agent_string: 'ArcGISRuntime-iOS/100.4 (iOS 11.4; iPad7,6) arcgis-aurora/18.1.0 (00000000-0000-0000-0000-000000000000)'
+    family: 'Collector for ArcGIS'
+    major: '18'
+    minor: '1'
+    patch: '0'
+
+  - user_agent_string: 'ArcGISRuntime-NET/10.3.0 (Windows 10.0.18362; x64; UAP; Windows.Desktop) arcgis-collector/18.0.2 (00000000-0000-0000-0000-000000000000)'
+    family: 'Collector for ArcGIS'
+    major: '18'
+    minor: '0'
+    patch: '2'
+
+  - user_agent_string: 'Collector-Android-10.3.7/ArcGIS.Android-10.2.5/7.0/SAMSUNG-SM-T815'
+    family: 'Collector for ArcGIS'
+    major: '10'
+    minor: '3'
+    patch: '7'
+
+  - user_agent_string: 'Collector-iOS-10.4.0:ArcGISiOS-10.2.4+Collector/13.1.2/iPad5,4'
+    family: 'Collector for ArcGIS'
+    major: '10'
+    minor: '4'
+    patch: '0'
+
+  - user_agent_string: 'Collector/6212016 CFNetwork/978.0.7 Darwin/18.7.0'
+    family: 'Collector for ArcGIS'
+    major: '6212016'
+    minor:
+    patch:
+
+  - user_agent_string: 'ArcGISRuntime-Android/100.2.2 (Android 6.0; armeabi-v7a; SAMSUNG-SM-T800) arcgis-explorer/18.1.0 (00000000-0000-0000-0000-000000000000)'
+    family: 'Explorer for ArcGIS'
+    major: '18'
+    minor: '1'
+    patch: '0'
+
+  - user_agent_string: 'ArcGISRuntime-iOS/100.1 (iPhone OS 9.3.5; iPad2,2) arcgis-explorer/17.1.2 (00000000-0000-0000-0000-000000000000)'
+    family: 'Explorer for ArcGIS'
+    major: '17'
+    minor: '1'
+    patch: '2'
+
+  - user_agent_string: 'Explorer/1544 CFNetwork/1107.1 Darwin/19.0.0'
+    family: 'Explorer for ArcGIS'
+    major: '1544'
+    minor:
+    patch:
+    
+  - user_agent_string: 'Explorer-Android-10.2.10/ArcGIS.Android-10.2.8/5.1.1/SAMSUNG-SM-G361F'
+    family: 'Explorer for ArcGIS'
+    major: '10'
+    minor: '2'
+    patch: '10'
+
+  - user_agent_string: 'Explorer-iOS-10.2.10:ArcGISiOS-10.2.4+Collector/13.1.3/iPhone9,3'
+    family: 'Explorer for ArcGIS'
+    major: '10'
+    minor: '2'
+    patch: '10'
+
+  - user_agent_string: 'ArcGISRuntime-Android/100.1.1 (Android 7.0; arm64-v8a; SAMSUNG-SM-G930F) arcgis-workforce/17.0.1 (00000000-0000-0000-0000-000000000000)'
+    family: 'Workforce for ArcGIS'
+    major: '17'
+    minor: '0'
+    patch: '1'
+
+  - user_agent_string: 'Workforce-iOS-17.0.1:ArcGISiOS-100.0.0.1529+dev/13.2/iPad6,12'
+    family: 'Workforce for ArcGIS'
+    major: '17'
+    minor: '0'
+    patch: '1'
+    
+  - user_agent_string: 'AR/10.2.6.1704 .Net/Desktop (Win32NT/6.1.7601.65536; Win64) arcgisearth/1.5'
+    family: 'ArcGIS Earth'
+    major: '1'
+    minor: '5'
+    patch:
+
+  - user_agent_string: 'ArcGISRuntime-iOS/100.6 (iOS 12.3.1; iPad6,3) com.esri.earth.phone/1.0.0'
+    family: 'ArcGIS Earth'
+    major: '1'
+    minor: '0'
+    patch: '0'
+
+  - user_agent_string: 'ArcGISiOS-10.2.4/12.1/iPad5,2'
+    family: 'ArcGIS Runtime SDK for iOS'
+    major: '10'
+    minor: '2'
+    patch: '4'
+
+  - user_agent_string: 'ArcGISRuntime-iOS/100.1.1 (iOS 12.4.1; iPhone10,4)'
+    family: 'ArcGIS Runtime SDK for iOS'
+    major: '100'
+    minor: '1'
+    patch: '1'
+  
+  - user_agent_string: 'ArcGIS.Android-10.2.4/8.0.0/SAMSUNG-SM-A530F'
+    family: 'ArcGIS Runtime SDK for Android'
+    major: '10'
+    minor: '2'
+    patch: '4'
+
+  - user_agent_string: 'ArcGIS.Android.10.2'
+    family: 'ArcGIS Runtime SDK for Android'
+    major: '10'
+    minor: '2'
+    patch: 
+
+  - user_agent_string: 'ArcGISRuntime-Android/100.4 (Android 10.0; arm64-v8a; ONEPLUS-HD1903)'
+    family: 'ArcGIS Runtime SDK for Android'
+    major: '100'
+    minor: '4'
+    patch:
+
+  - user_agent_string: 'ArcGISRuntime-Qt/100.3 (Windows 10; x86_64; Qt 5.12.1; C++)'
+    family: 'ArcGIS Runtime SDK for Qt'
+    major: '100'
+    minor: '3'
+    patch:
+  
+  - user_agent_string: 'ArcGISRuntime-NET/100.7 (Windows 10.0.18362; Win64; WOW64; UAP; Windows.Desktop)'
+    family: 'ArcGIS Runtime SDK for NET'
+    major: '100'
+    minor: '7'
+    patch:
diff --git a/src/Web/UAParser.hs b/src/Web/UAParser.hs
--- a/src/Web/UAParser.hs
+++ b/src/Web/UAParser.hs
@@ -66,9 +66,12 @@
     where
       UAConfig{..} = uaConfig
 
-      go UAParser{..} = either (const Nothing) mkRes
+      go UAParser{..} = either (const Nothing) (fmap normalize . mkRes)
                       . mapM T.decodeUtf8' =<< match uaRegex bs []
         where
+          normalize (UAResult f v1 v2 v3) = UAResult f (normalizeMaybeText v1) (normalizeMaybeText v2) (normalizeMaybeText v3)
+          normalizeMaybeText (Just "") = Nothing
+          normalizeMaybeText x         = x
           mkRes caps@(_:f:v1:v2:v3:_) = Just $ UAResult (repF caps f) (repV1 caps (Just v1)) (repV2 caps (Just v2)) (repV3 caps (Just v3))
           mkRes caps@[_,f,v1,v2]      = Just $ UAResult (repF caps f) (repV1 caps (Just v1)) (repV2 caps (Just v2)) (repV3 caps Nothing)
           mkRes caps@[_,f,v1]         = Just $ UAResult (repF caps f) (repV1 caps (Just v1)) (repV2 caps Nothing) (repV3 caps Nothing)
diff --git a/src/Web/UAParser/SuiteUtils.hs b/src/Web/UAParser/SuiteUtils.hs
--- a/src/Web/UAParser/SuiteUtils.hs
+++ b/src/Web/UAParser/SuiteUtils.hs
@@ -22,7 +22,7 @@
 
 -- Loading Test Cases
 loadTests :: FromJSON a => FilePath -> IO a
-loadTests fp = parseMonad p =<< either (error . show) id `fmap` decodeFileEither fp'
+loadTests fp = either (error . show) (either error id . parseEither p) `fmap` decodeFileEither fp'
   where
     fp' = "deps/uap-core" </> fp
     p = withObject "Value" $ \x -> x .: "test_cases"
diff --git a/ua-parser.cabal b/ua-parser.cabal
--- a/ua-parser.cabal
+++ b/ua-parser.cabal
@@ -1,6 +1,6 @@
 name:                ua-parser
 description:         Please refer to the git/github README on the project for example usage.
-version:             0.7.5.1
+version:             0.7.6.0
 synopsis:            A library for parsing User-Agent strings, official Haskell port of ua-parser
 license:             BSD3
 license-file:        LICENSE
@@ -9,9 +9,8 @@
 category:            Web
 build-type:          Simple
 cabal-version:       >=1.10
-tested-with:         GHC == 7.6.3
-                   , GHC == 7.8.4
-                   , GHC == 7.10.2
+tested-with:         GHC == 8.6.5
+                   , GHC == 8.8.4
 
 extra-source-files: src/Web/UAParser/SuiteUtils.hs
                     README.md
