useragent-ng
Version:
Fast & effecient user agent string parser. Uses uap-core (Browserscope) data for parsing. Drop-in replacement for useragent
633 lines (626 loc) • 99.9 kB
JavaScript
"use strict";
/**
* TL;DR: Don't touch this.
*
* DO NOT EDIT THIS FILE, IT IS AUTOMATICALLY GENERATED AND COMPILED FROM AN
* EXTERNAL REGEXPS DATABASE. TO UPDATE THIS FILE MANUALLY PLEASE RUN:
*
* ```
* npm run build
* ```
*
* FROM THE ROOT OF THIS REPOSITORY.
*
* IF YOU FIND A REGULAR EXPRESSION THAT IS BROKEN OR MISSING, PLEASE MAKE A PULL REQUEST TO
* https://github.com/ua-parser/uap-core
*
*/
exports.browser = [
[/(Rival IQ, rivaliq.com)/, "Rival IQ"],
[/(GeoEvent Server) (\d+)(?:\.(\d+)(?:\.(\d+)|)|)/, 0],
[/(ArcGIS Pro)(?: (\d+)\.(\d+)\.([^ ]+)|)/, 0],
[/ArcGIS Client Using WinInet/, "ArcMap"],
[/(OperationsDashboard)-(?:Windows)-(\d+)\.(\d+)\.(\d+)/, "Operations Dashboard for ArcGIS"],
[/(arcgisearth)\/(\d+)\.(\d+)(?:\.(\d+)|)/, "ArcGIS Earth"],
[/com.esri.(earth).phone\/(\d+)\.(\d+)(?:\.(\d+)|)/, "ArcGIS Earth"],
[/(arcgis-explorer)\/(\d+)\.(\d+)\.(\d+)/, "Explorer for ArcGIS"],
[/arcgis-(collector|aurora)\/(\d+)\.(\d+)\.(\d+)/, "Collector for ArcGIS"],
[/(arcgis-workforce)\/(\d+)\.(\d+)\.(\d+)/, "Workforce for ArcGIS"],
[/(Collector|Explorer|Workforce)-(?:Android|iOS)-(\d+)\.(\d+)(?:\.(\d+)|)/, "$1 for ArcGIS"],
[/(Explorer|Collector)\/(\d+) CFNetwork/, "$1 for ArcGIS"],
[/ArcGISRuntime-(Android|iOS|NET|Qt)\/(\d+)\.(\d+)(?:\.(\d+)|)/, "ArcGIS Runtime SDK for $1"],
[/ArcGIS\.?(iOS|Android|NET|Qt)(?:-|\.)(\d+)\.(\d+)(?:\.(\d+)|)/, "ArcGIS Runtime SDK for $1"],
[/ArcGIS\.Runtime\.(Qt)\.(\d+)\.(\d+)(?:\.(\d+)|)/, "ArcGIS Runtime SDK for $1"],
[/^(Luminary)[Stage]+\/(\d+) CFNetwork/, 0],
[/(ESPN)[%20| ]+Radio\/(\d+)\.(\d+)\.(\d+) CFNetwork/, 0],
[/(Antenna)\/(\d+) CFNetwork/, "AntennaPod"],
[/(TopPodcasts)Pro\/(\d+) CFNetwork/, 0],
[/(MusicDownloader)Lite\/(\d+)\.(\d+)\.(\d+) CFNetwork/, 0],
[/^(.{0,200})-iPad\/(\d+)(?:\.(\d+)|)(?:\.(\d+)|)(?:\.(\d+)|) CFNetwork/, 0],
[/^(.{0,200})-iPhone\/(\d+)(?:\.(\d+)|)(?:\.(\d+)|)(?:\.(\d+)|) CFNetwork/, 0],
[/^(.{0,200})\/(\d+)(?:\.(\d+)|)(?:\.(\d+)|)(?:\.(\d+)|) CFNetwork/, 0],
[/^(Luminary)\/(\d+)(?:\.(\d+)|)(?:\.(\d+)|)/, 0],
[/(espn\.go)/, "ESPN"],
[/(espnradio\.com)/, "ESPN"],
[/ESPN APP$/, "ESPN"],
[/(audioboom\.com)/, "AudioBoom"],
[/ (Rivo) RHYTHM/, 0],
[/(CFNetwork)(?:\/(\d+)\.(\d+)(?:\.(\d+)|)|)/, "CFNetwork"],
[/(Pingdom\.com_bot_version_)(\d+)\.(\d+)/, "PingdomBot"],
[/(PingdomTMS)\/(\d+)\.(\d+)\.(\d+)/, "PingdomBot"],
[/ (PTST)\/(\d+)(?:\.(\d+)|)$/, "WebPageTest.org bot"],
[/X11; (Datanyze); Linux/, 0],
[/(NewRelicPinger)\/(\d+)\.(\d+)/, "NewRelicPingerBot"],
[/(Tableau)\/(\d+)\.(\d+)/, "Tableau"],
[/AppleWebKit\/\d{1,10}\.\d{1,10}.{0,200} Safari.{0,200} (CreativeCloud)\/(\d+)\.(\d+).(\d+)/, "Adobe CreativeCloud"],
[/(Salesforce)(?:.)\/(\d+)\.(\d?)/, 0],
[/(\(StatusCake\))/, "StatusCakeBot"],
[/(facebookexternalhit)\/(\d+)\.(\d+)/, "FacebookBot"],
[/Google.{0,50}\/\+\/web\/snippet/, "GooglePlusBot"],
[/via ggpht\.com GoogleImageProxy/, "GmailImageProxy"],
[/YahooMailProxy; https:\/\/help\.yahoo\.com\/kb\/yahoo-mail-proxy-SLN28749\.html/, "YahooMailProxy"],
[/(Twitterbot)\/(\d+)\.(\d+)/, "Twitterbot"],
[/\/((?:Ant-|)Nutch|[A-z]+[Bb]ot|[A-z]+[Ss]pider|Axtaris|fetchurl|Isara|ShopSalad|Tailsweep)[ \-](\d+)(?:\.(\d+)|)(?:\.(\d+)|)/, 0],
[/\b(008|Altresium|Argus|BaiduMobaider|BoardReader|DNSGroup|DataparkSearch|EDI|Goodzer|Grub|INGRID|Infohelfer|LinkedInBot|LOOQ|Nutch|OgScrper|Pandora|PathDefender|Peew|PostPost|Steeler|Twitterbot|VSE|WebCrunch|WebZIP|Y!J-BR[A-Z]|YahooSeeker|envolk|sproose|wminer)\/(\d+)(?:\.(\d+)|)(?:\.(\d+)|)/, 0],
[/(MSIE) (\d+)\.(\d+)([a-z]\d|[a-z]|);.{0,200} MSIECrawler/, "MSIECrawler"],
[/(DAVdroid)\/(\d+)\.(\d+)(?:\.(\d+)|)/, 0],
[/(Google-HTTP-Java-Client|Apache-HttpClient|PostmanRuntime|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+)|)|)/, 0],
[/(Pinterest(?:bot|))\/(\d+)(?:\.(\d+)|)(?:\.(\d+)|)[;\s(]+\+https:\/\/www.pinterest.com\/bot.html/, "Pinterestbot"],
[/(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|PHPCrawl|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+)|)|)|)/, 0],
[/\b(Boto3?|JetS3t|aws-(?:cli|sdk-(?:cpp|go|java|nodejs|ruby2?|dotnet-(?:\d{1,2}|core)))|s3fs)\/(\d+)\.(\d+)(?:\.(\d+)|)/, 0],
[/(FME)\/(\d+\.\d+)\.(\d+)\.(\d+)/, 0],
[/(QGIS)\/(\d)\.?0?(\d{1,2})\.?0?(\d{1,2})/, 0],
[/(JOSM)\/(\d+)\.(\d+)/, 0],
[/(Tygron Platform) \((\d+)\.(\d+)\.(\d+(?:\.\d+| RC \d+\.\d+))/, 0],
[/\[(FBAN\/MessengerForiOS|FB_IAB\/MESSENGER);FBAV\/(\d+)(?:\.(\d+)(?:\.(\d+)(?:\.(\d+)|)|)|)/, "Facebook Messenger"],
[/\[FB.{0,300};(FBAV)\/(\d+)(?:\.(\d+)|)(?:\.(\d+)|)/, "Facebook"],
[/\[FB.{0,300};/, "Facebook"],
[/^.{0,200}?(?:\/[A-Za-z0-9\.]{0,50}|) {0,2}([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+)|)|)/, 0],
[/^.{0,200}?((?:[A-Za-z][A-Za-z0-9 -]{0,50}|)[^C][^Uu][Bb]ot)\b(?:(?:[ /]| v)(\d+)(?:\.(\d+)|)(?:\.(\d+)|)|)/, 0],
[/^.{0,200}?((?:[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+)|)|)/, 0],
[/(HbbTV)\/(\d+)\.(\d+)\.(\d+) \(/, 0],
[/(Chimera|SeaMonkey|Camino|Waterfox)\/(\d+)\.(\d+)\.?([ab]?\d+[a-z]*|)/, 0],
[/(SailfishBrowser)\/(\d+)\.(\d+)(?:\.(\d+)|)/, "Sailfish Browser"],
[/\[(Pinterest)\/[^\]]{1,50}\]/, 0],
[/(Pinterest)(?: for Android(?: Tablet|)|)\/(\d+)(?:\.(\d+)|)(?:\.(\d+)|)/, 0],
[/Mozilla.{1,200}Mobile.{1,100}(Instagram).(\d+)\.(\d+)\.(\d+)/, 0],
[/Mozilla.{1,200}Mobile.{1,100}(Flipboard).(\d+)\.(\d+)\.(\d+)/, 0],
[/Mozilla.{1,200}Mobile.{1,100}(Flipboard-Briefing).(\d+)\.(\d+)\.(\d+)/, 0],
[/Mozilla.{1,200}Mobile.{1,100}(Onefootball)\/Android.(\d+)\.(\d+)\.(\d+)/, 0],
[/(Snapchat)\/(\d+)\.(\d+)\.(\d+)\.(\d+)/, 0],
[/(Twitter for (?:iPhone|iPad)|TwitterAndroid)(?:\/(\d+)\.(\d+)|)/, "Twitter"],
[/Mozilla.{1,200}Mobile.{1,100}(Phantom\/ios|android).(\d+)\.(\d+)\.(\d+)/, "Phantom"],
[/Mozilla.{1,100}Mobile.{1,100}AspiegelBot/, "Spider"],
[/AspiegelBot/, "Spider"],
[/(Firefox)\/(\d+)\.(\d+) Basilisk\/(\d+)/, "Basilisk"],
[/(PaleMoon)\/(\d+)\.(\d+)(?:\.(\d+)|)/, "Pale Moon"],
[/(Fennec)\/(\d+)\.(\d+)\.?([ab]?\d+[a-z]*)/, "Firefox Mobile"],
[/(Fennec)\/(\d+)\.(\d+)(pre)/, "Firefox Mobile"],
[/(Fennec)\/(\d+)\.(\d+)/, "Firefox Mobile"],
[/(?:Mobile|Tablet);.{0,200}(Firefox)\/(\d+)\.(\d+)/, "Firefox Mobile"],
[/(Namoroka|Shiretoko|Minefield)\/(\d+)\.(\d+)\.(\d+(?:pre|))/, "Firefox ($1)"],
[/(Firefox)\/(\d+)\.(\d+)(a\d+[a-z]*)/, "Firefox Alpha"],
[/(Firefox)\/(\d+)\.(\d+)(b\d+[a-z]*)/, "Firefox Beta"],
[/(Firefox)-(?:\d+\.\d+|)\/(\d+)\.(\d+)(a\d+[a-z]*)/, "Firefox Alpha"],
[/(Firefox)-(?:\d+\.\d+|)\/(\d+)\.(\d+)(b\d+[a-z]*)/, "Firefox Beta"],
[/(Namoroka|Shiretoko|Minefield)\/(\d+)\.(\d+)([ab]\d+[a-z]*|)/, "Firefox ($1)"],
[/(Firefox).{0,200}Tablet browser (\d+)\.(\d+)\.(\d+)/, "MicroB"],
[/(MozillaDeveloperPreview)\/(\d+)\.(\d+)([ab]\d+[a-z]*|)/, 0],
[/(FxiOS)\/(\d+)\.(\d+)(\.(\d+)|)(\.(\d+)|)/, "Firefox iOS"],
[/(Flock)\/(\d+)\.(\d+)(b\d+?)/, 0],
[/(RockMelt)\/(\d+)\.(\d+)\.(\d+)/, 0],
[/(Navigator)\/(\d+)\.(\d+)\.(\d+)/, "Netscape"],
[/(Navigator)\/(\d+)\.(\d+)([ab]\d+)/, "Netscape"],
[/(Netscape6)\/(\d+)\.(\d+)\.?([ab]?\d+|)/, "Netscape"],
[/(MyIBrow)\/(\d+)\.(\d+)/, "My Internet Browser"],
[/(UC? ?Browser|UCWEB|U3)[ /]?(\d+)\.(\d+)\.(\d+)/, "UC Browser"],
[/(Opera Tablet).{0,200}Version\/(\d+)\.(\d+)(?:\.(\d+)|)/, 0],
[/(Opera Mini)(?:\/att|)\/?(\d+|)(?:\.(\d+)|)(?:\.(\d+)|)/, 0],
[/(Opera)\/.{1,100}Opera Mobi.{1,100}Version\/(\d+)\.(\d+)/, "Opera Mobile"],
[/(Opera)\/(\d+)\.(\d+).{1,100}Opera Mobi/, "Opera Mobile"],
[/Opera Mobi.{1,100}(Opera)(?:\/|\s+)(\d+)\.(\d+)/, "Opera Mobile"],
[/Opera Mobi/, "Opera Mobile"],
[/(Opera)\/9.80.{0,200}Version\/(\d+)\.(\d+)(?:\.(\d+)|)/, 0],
[/(?:Mobile Safari).{1,300}(OPR)\/(\d+)\.(\d+)\.(\d+)/, "Opera Mobile"],
[/(?:Chrome).{1,300}(OPR)\/(\d+)\.(\d+)\.(\d+)/, "Opera"],
[/(Coast)\/(\d+).(\d+).(\d+)/, "Opera Coast"],
[/(OPiOS)\/(\d+).(\d+).(\d+)/, "Opera Mini"],
[/Chrome\/.{1,200}( MMS)\/(\d+).(\d+).(\d+)/, "Opera Neon"],
[/(hpw|web)OS\/(\d+)\.(\d+)(?:\.(\d+)|)/, "webOS Browser"],
[/(luakit)/, "LuaKit"],
[/(Snowshoe)\/(\d+)\.(\d+).(\d+)/, 0],
[/Gecko\/\d+ (Lightning)\/(\d+)\.(\d+)\.?((?:[ab]?\d+[a-z]*)|(?:\d*))/, 0],
[/(Firefox)\/(\d+)\.(\d+)\.(\d+(?:pre|)) \(Swiftfox\)/, "Swiftfox"],
[/(Firefox)\/(\d+)\.(\d+)([ab]\d+[a-z]*|) \(Swiftfox\)/, "Swiftfox"],
[/(rekonq)\/(\d+)\.(\d+)(?:\.(\d+)|) Safari/, "Rekonq"],
[/rekonq/, "Rekonq"],
[/(conkeror|Conkeror)\/(\d+)\.(\d+)(?:\.(\d+)|)/, "Conkeror"],
[/(konqueror)\/(\d+)\.(\d+)\.(\d+)/, "Konqueror"],
[/(WeTab)-Browser/, 0],
[/(Comodo_Dragon)\/(\d+)\.(\d+)\.(\d+)/, "Comodo Dragon"],
[/(Symphony) (\d+).(\d+)/, 0],
[/PLAYSTATION 3.{1,200}WebKit/, "NetFront NX"],
[/PLAYSTATION 3/, "NetFront"],
[/(PlayStation Portable)/, "NetFront"],
[/(PlayStation Vita)/, "NetFront NX"],
[/AppleWebKit.{1,200} (NX)\/(\d+)\.(\d+)\.(\d+)/, "NetFront NX"],
[/(Nintendo 3DS)/, "NetFront NX"],
[/(Silk)\/(\d+)\.(\d+)(?:\.([0-9\-]+)|)/, "Amazon Silk"],
[/(Puffin)\/(\d+)\.(\d+)(?:\.(\d+)|)/, 0],
[/Windows Phone .{0,200}(Edge)\/(\d+)\.(\d+)/, "Edge Mobile"],
[/(EdgiOS|EdgA)\/(\d+)\.(\d+)\.(\d+)\.(\d+)/, "Edge Mobile"],
[/(SamsungBrowser)\/(\d+)\.(\d+)/, "Samsung Internet"],
[/(SznProhlizec)\/(\d+)\.(\d+)(?:\.(\d+)|)/, "Seznam prohlížeč"],
[/(coc_coc_browser)\/(\d+)\.(\d+)(?:\.(\d+)|)/, "Coc Coc"],
[/(baidubrowser)[/\s](\d+)(?:\.(\d+)|)(?:\.(\d+)|)/, "Baidu Browser"],
[/(FlyFlow)\/(\d+)\.(\d+)/, "Baidu Explorer"],
[/(MxBrowser)\/(\d+)\.(\d+)(?:\.(\d+)|)/, "Maxthon"],
[/(Crosswalk)\/(\d+)\.(\d+)\.(\d+)\.(\d+)/, 0],
[/(Line)\/(\d+)\.(\d+)\.(\d+)/, "LINE"],
[/(MiuiBrowser)\/(\d+)\.(\d+)\.(\d+)/, "MiuiBrowser"],
[/(Mint Browser)\/(\d+)\.(\d+)\.(\d+)/, "Mint Browser"],
[/(TopBuzz)\/(\d+).(\d+).(\d+)/, "TopBuzz"],
[/Mozilla.{1,200}Android.{1,200}(GSA)\/(\d+)\.(\d+)\.(\d+)/, "Google"],
[/(MQQBrowser\/Mini)(?:(\d+)(?:\.(\d+)|)(?:\.(\d+)|)|)/, "QQ Browser Mini"],
[/(MQQBrowser)(?:\/(\d+)(?:\.(\d+)|)(?:\.(\d+)|)|)/, "QQ Browser Mobile"],
[/(QQBrowser)(?:\/(\d+)(?:\.(\d+)\.(\d+)(?:\.(\d+)|)|)|)/, "QQ Browser"],
[/Mobile.{0,200}(DuckDuckGo)\/(\d+)/, "DuckDuckGo Mobile"],
[/(Tenta\/)(\d+)\.(\d+)\.(\d+)/, "Tenta Browser"],
[/Version\/.{1,300}(Chrome)\/(\d+)\.(\d+)\.(\d+)\.(\d+)/, "Chrome Mobile WebView"],
[/; wv\).{1,300}(Chrome)\/(\d+)\.(\d+)\.(\d+)\.(\d+)/, "Chrome Mobile WebView"],
[/(CrMo)\/(\d+)\.(\d+)\.(\d+)\.(\d+)/, "Chrome Mobile"],
[/(CriOS)\/(\d+)\.(\d+)\.(\d+)\.(\d+)/, "Chrome Mobile iOS"],
[/(Chrome)\/(\d+)\.(\d+)\.(\d+)\.(\d+) Mobile(?:[ /]|$)/, "Chrome Mobile"],
[/ Mobile .{1,300}(Chrome)\/(\d+)\.(\d+)\.(\d+)\.(\d+)/, "Chrome Mobile"],
[/(chromeframe)\/(\d+)\.(\d+)\.(\d+)/, "Chrome Frame"],
[/(SLP Browser)\/(\d+)\.(\d+)/, "Tizen Browser"],
[/(SE 2\.X) MetaSr (\d+)\.(\d+)/, "Sogou Explorer"],
[/(Rackspace Monitoring)\/(\d+)\.(\d+)/, "RackspaceBot"],
[/(PRTG Network Monitor)/, 0],
[/(PyAMF)\/(\d+)\.(\d+)\.(\d+)/, 0],
[/(YaBrowser)\/(\d+)\.(\d+)\.(\d+)/, "Yandex Browser"],
[/(Chrome)\/(\d+)\.(\d+)\.(\d+).{0,100} MRCHROME/, "Mail.ru Chromium Browser"],
[/(AOL) (\d+)\.(\d+); AOLBuild (\d+)/, 0],
[/(PodCruncher|Downcast)[ /]?(\d+)(?:\.(\d+)|)(?:\.(\d+)|)(?:\.(\d+)|)/, 0],
[/ (BoxNotes)\/(\d+)\.(\d+)\.(\d+)/, 0],
[/(Whale)\/(\d+)\.(\d+)\.(\d+)\.(\d+) Mobile(?:[ /]|$)/, "Whale"],
[/(Whale)\/(\d+)\.(\d+)\.(\d+)/, "Whale"],
[/(1Password)\/(\d+)\.(\d+)\.(\d+)/, 0],
[/(Ghost)\/(\d+)\.(\d+)\.(\d+)/, 0],
[/PAN (GlobalProtect)\/(\d+)\.(\d+)\.(\d+) .{1,100} \(X11; Linux x86_64\)/, 0],
[/^(surveyon)\/(\d+)\.(\d+)\.(\d+)/, "Surveyon"],
[/(Slack_SSB)\/(\d+)\.(\d+)\.(\d+)/, "Slack Desktop Client"],
[/(HipChat)\/?(\d+|)/, "HipChat Desktop Client"],
[/\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+)/, 0],
[/Microsoft Office Outlook 12\.\d+\.\d+|MSOffice 12/, "Outlook", "2007"],
[/Microsoft Outlook 14\.\d+\.\d+|MSOffice 14/, "Outlook", "2010"],
[/Microsoft Outlook 15\.\d+\.\d+/, "Outlook", "2013"],
[/Microsoft Outlook (?:Mail )?16\.\d+\.\d+|MSOffice 16/, "Outlook", "2016"],
[/Microsoft Office (Word) 2014/, 0],
[/Outlook-Express\/7\.0/, "Windows Live Mail"],
[/(Airmail) (\d+)\.(\d+)(?:\.(\d+)|)/, 0],
[/(Thunderbird)\/(\d+)\.(\d+)(?:\.(\d+(?:pre|))|)/, "Thunderbird"],
[/(Postbox)\/(\d+)\.(\d+)\.(\d+)/, "Postbox"],
[/(Barca(?:Pro)?)\/(\d+)\.(\d+)(?:\.(\d+)|)/, "Barca"],
[/(Lotus-Notes)\/(\d+)\.(\d+)(?:\.(\d+)|)/, "Lotus Notes"],
[/Superhuman/, "Superhuman"],
[/(Vivaldi)\/(\d+)\.(\d+)\.(\d+)/, 0],
[/(Edge?)\/(\d+)(?:\.(\d+)|)(?:\.(\d+)|)(?:\.(\d+)|)/, "Edge"],
[/(brave)\/(\d+)\.(\d+)\.(\d+) Chrome/, "Brave"],
[/(Chrome)\/(\d+)\.(\d+)\.(\d+)[\d.]{0,100} Iron[^/]/, "Iron"],
[/\b(Dolphin)(?: |HDCN\/|\/INT\-)(\d+)\.(\d+)(?:\.(\d+)|)/, 0],
[/(HeadlessChrome)(?:\/(\d+)\.(\d+)\.(\d+)|)/, 0],
[/(Evolution)\/(\d+)\.(\d+)\.(\d+\.\d+)/, 0],
[/(RCM CardDAV plugin)\/(\d+)\.(\d+)\.(\d+(?:-dev|))/, 0],
[/(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+)|)/, 0],
[/(Chromium|Chrome)\/(\d+)\.(\d+)(?:\.(\d+)|)(?:\.(\d+)|)/, 0],
[/(IEMobile)[ /](\d+)\.(\d+)/, "IE Mobile"],
[/(BacaBerita App)\/(\d+)\.(\d+)\.(\d+)/, 0],
[/^(bPod|Pocket Casts|Player FM)$/, 0],
[/^(AlexaMediaPlayer|VLC)\/(\d+)\.(\d+)\.([^.\s]+)/, 0],
[/^(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+)|)/, 0],
[/^(Peapod|Liferea)\/([^.\s]+)\.([^.\s]+|)\.?([^.\s]+|)/, 0],
[/^(bPod|Player FM) BMID\/(\S+)/, 0],
[/^(Podcast ?Addict)\/v(\d+) /, 0],
[/^(Podcast ?Addict) /, "PodcastAddict"],
[/(Replay) AV/, 0],
[/(VOX) Music Player/, 0],
[/(CITA) RSS Aggregator\/(\d+)\.(\d+)/, 0],
[/(Pocket Casts)$/, 0],
[/(Player FM)$/, 0],
[/(LG Player|Doppler|FancyMusic|MediaMonkey|Clementine) (\d+)\.(\d+)\.?([^.\s]+|)\.?([^.\s]+|)/, 0],
[/(philpodder)\/(\d+)\.(\d+)\.?([^.\s]+|)\.?([^.\s]+|)/, 0],
[/(Player FM|Pocket Casts|DoggCatcher|Spotify|MediaMonkey|MediaGo|BashPodder)/, 0],
[/(QuickTime)\.(\d+)\.(\d+)\.(\d+)/, 0],
[/(Kinoma)(\d+)/, 0],
[/(Fancy) Cloud Music (\d+)\.(\d+)/, "FancyMusic"],
[/EspnDownloadManager/, "ESPN"],
[/(ESPN) Radio (\d+)\.(\d+)(?:\.(\d+)|) ?(?:rv:(\d+)|) /, 0],
[/(podracer|jPodder) v ?(\d+)\.(\d+)(?:\.(\d+)|)/, 0],
[/(ZDM)\/(\d+)\.(\d+)[; ]?/, 0],
[/(Zune|BeyondPod) (\d+)(?:\.(\d+)|)[\);]/, 0],
[/(WMPlayer)\/(\d+)\.(\d+)\.(\d+)\.(\d+)/, 0],
[/^(Lavf)/, "WMPlayer"],
[/^(RSSRadio)[ /]?(\d+|)/, 0],
[/(RSS_Radio) (\d+)\.(\d+)/, "RSSRadio"],
[/(Podkicker) \S+\/(\d+)\.(\d+)\.(\d+)/, "Podkicker"],
[/^(HTC) Streaming Player \S+ \/ \S+ \/ \S+ \/ (\d+)\.(\d+)(?:\.(\d+)|)/, 0],
[/^(Stitcher)\/iOS/, 0],
[/^(Stitcher)\/Android/, 0],
[/^(VLC) .{0,200}version (\d+)\.(\d+)\.(\d+)/, 0],
[/ (VLC) for/, 0],
[/(vlc)\/(\d+)\.(\d+)\.(\d+)/, "VLC"],
[/^(foobar)\S{1,10}\/(\d+)\.(\d+|)\.?([\da-z]+|)/, 0],
[/^(Clementine)\S{1,10} (\d+)\.(\d+|)\.?(\d+|)/, 0],
[/(amarok)\/(\d+)\.(\d+|)\.?(\d+|)/, "Amarok"],
[/(Custom)-Feed Reader/, 0],
[/(iRider|Crazy Browser|SkipStone|iCab|Lunascape|Sleipnir|Maemo Browser) (\d+)\.(\d+)\.(\d+)/, 0],
[/(iCab|Lunascape|Opera|Android|Jasmine|Polaris|Microsoft SkyDriveSync|The Bat!) (\d+)(?:\.(\d+)|)(?:\.(\d+)|)/, 0],
[/(Kindle)\/(\d+)\.(\d+)/, 0],
[/(Android) Donut/, 0, "1", "2"],
[/(Android) Eclair/, 0, "2", "1"],
[/(Android) Froyo/, 0, "2", "2"],
[/(Android) Gingerbread/, 0, "2", "3"],
[/(Android) Honeycomb/, 0, "3"],
[/(MSIE) (\d+)\.(\d+).{0,100}XBLWP7/, "IE Large Screen"],
[/(Nextcloud)/, 0],
[/(mirall)\/(\d+)\.(\d+)\.(\d+)/, 0],
[/(ownCloud-android)\/(\d+)\.(\d+)\.(\d+)/, "Owncloud"],
[/(OC)\/(\d+)\.(\d+)\.(\d+)\.(\d+) \(Skype for Business\)/, "Skype"],
[/(OpenVAS)(?:-VT)?(?:[ \/](\d+)(?:\.(\d+)|)(?:\.(\d+)|)|)/, "OpenVAS Scanner"],
[/(AnyConnect)\/(\d+)(?:\.(\d+)(?:\.(\d+)|)|)/, 0],
[/compatible; monitis/, "Monitis"],
[/(Obigo)InternetBrowser/, 0],
[/(Obigo)\-Browser/, 0],
[/(Obigo|OBIGO)[^\d]*(\d+)(?:.(\d+)|)/, "Obigo"],
[/(MAXTHON|Maxthon) (\d+)\.(\d+)/, "Maxthon"],
[/(Maxthon|MyIE2|Uzbl|Shiira)/, 0, "0"],
[/(BrowseX) \((\d+)\.(\d+)\.(\d+)/, 0],
[/(NCSA_Mosaic)\/(\d+)\.(\d+)/, "NCSA Mosaic"],
[/(POLARIS)\/(\d+)\.(\d+)/, "Polaris"],
[/(Embider)\/(\d+)\.(\d+)/, "Polaris"],
[/(BonEcho)\/(\d+)\.(\d+)\.?([ab]?\d+|)/, "Bon Echo"],
[/(TopBuzz) com.alex.NewsMaster\/(\d+).(\d+).(\d+)/, "TopBuzz"],
[/(TopBuzz) com.mobilesrepublic.newsrepublic\/(\d+).(\d+).(\d+)/, "TopBuzz"],
[/(TopBuzz) com.topbuzz.videoen\/(\d+).(\d+).(\d+)/, "TopBuzz"],
[/(iPod|iPhone|iPad).{1,200}GSA\/(\d+)\.(\d+)\.(\d+)(?:\.(\d+)|) Mobile/, "Google"],
[/(iPod|iPhone|iPad).{1,200}Version\/(\d+)\.(\d+)(?:\.(\d+)|).{1,200}[ +]Safari/, "Mobile Safari"],
[/(iPod|iPod touch|iPhone|iPad);.{0,30}CPU.{0,30}OS[ +](\d+)_(\d+)(?:_(\d+)|).{0,30} AppleNews\/\d+\.\d+(?:\.\d+|)/, "Mobile Safari UI/WKWebView"],
[/(iPod|iPhone|iPad).{1,200}Version\/(\d+)\.(\d+)(?:\.(\d+)|)/, "Mobile Safari UI/WKWebView"],
[/(iPod|iPod touch|iPhone|iPad).{0,200} Safari/, "Mobile Safari"],
[/(iPod|iPod touch|iPhone|iPad)/, "Mobile Safari UI/WKWebView"],
[/(Watch)(\d+),(\d+)/, "Apple $1 App"],
[/(Outlook-iOS)\/\d+\.\d+\.prod\.iphone \((\d+)\.(\d+)\.(\d+)\)/, 0],
[/(AvantGo) (\d+).(\d+)/, 0],
[/(OneBrowser)\/(\d+).(\d+)/, "ONE Browser"],
[/(Avant)/, 0, "1"],
[/(QtCarBrowser)/, 0, "1"],
[/^(iBrowser\/Mini)(\d+).(\d+)/, "iBrowser Mini"],
[/^(iBrowser|iRAPP)\/(\d+).(\d+)/, 0],
[/^(Nokia)/, "Nokia Services (WAP) Browser"],
[/(NokiaBrowser)\/(\d+)\.(\d+).(\d+)\.(\d+)/, "Nokia Browser"],
[/(NokiaBrowser)\/(\d+)\.(\d+).(\d+)/, "Nokia Browser"],
[/(NokiaBrowser)\/(\d+)\.(\d+)/, "Nokia Browser"],
[/(BrowserNG)\/(\d+)\.(\d+).(\d+)/, "Nokia Browser"],
[/(Series60)\/5\.0/, "Nokia Browser", "7", "0"],
[/(Series60)\/(\d+)\.(\d+)/, "Nokia OSS Browser"],
[/(S40OviBrowser)\/(\d+)\.(\d+)\.(\d+)\.(\d+)/, "Ovi Browser"],
[/(Nokia)[EN]?(\d+)/, 0],
[/(PlayBook).{1,200}RIM Tablet OS (\d+)\.(\d+)\.(\d+)/, "BlackBerry WebKit"],
[/(Black[bB]erry|BB10).{1,200}Version\/(\d+)\.(\d+)\.(\d+)/, "BlackBerry WebKit"],
[/(Black[bB]erry)\s?(\d+)/, "BlackBerry"],
[/(OmniWeb)\/v(\d+)\.(\d+)/, 0],
[/(Blazer)\/(\d+)\.(\d+)/, "Palm Blazer"],
[/(Pre)\/(\d+)\.(\d+)/, "Palm Pre"],
[/(ELinks)\/(\d+)\.(\d+)/, 0],
[/(ELinks) \((\d+)\.(\d+)/, 0],
[/(Links) \((\d+)\.(\d+)/, 0],
[/(QtWeb) Internet Browser\/(\d+)\.(\d+)/, 0],
[/(PhantomJS)\/(\d+)\.(\d+)\.(\d+)/, 0],
[/(AppleWebKit)\/(\d+)(?:\.(\d+)|)\+ .{0,200} Safari/, "WebKit Nightly"],
[/(Version)\/(\d+)\.(\d+)(?:\.(\d+)|).{0,100}Safari\//, "Safari"],
[/(Safari)\/\d+/, 0],
[/(OLPC)\/Update(\d+)\.(\d+)/, 0],
[/(OLPC)\/Update()\.(\d+)/, 0, "0"],
[/(SEMC\-Browser)\/(\d+)\.(\d+)/, 0],
[/(Teleca)/, "Teleca Browser"],
[/(Phantom)\/V(\d+)\.(\d+)/, "Phantom Browser"],
[/(Trident)\/(7|8)\.(0)/, "IE", "11"],
[/(Trident)\/(6)\.(0)/, "IE", "10"],
[/(Trident)\/(5)\.(0)/, "IE", "9"],
[/(Trident)\/(4)\.(0)/, "IE", "8"],
[/(Espial)\/(\d+)(?:\.(\d+)|)(?:\.(\d+)|)/, 0],
[/(AppleWebKit)\/(\d+)\.(\d+)\.(\d+)/, "Apple Mail"],
[/(Firefox)\/(\d+)\.(\d+)\.(\d+)/, 0],
[/(Firefox)\/(\d+)\.(\d+)(pre|[ab]\d+[a-z]*|)/, 0],
[/([MS]?IE) (\d+)\.(\d+)/, "IE"],
[/(python-requests)\/(\d+)\.(\d+)/, "Python Requests"],
[/\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|CloudCockpitBackend|ReactorNetty|axios|Jersey|Vert.x-WebClient|Apache-CXF|Go-CF-client|go-resty|AHC)(?:[ /](\d+)(?:\.(\d+)|)(?:\.(\d+)|)|)/, 0],
[/^(cf)\/(\d+)\.(\d+)\.(\S+)/, "CloudFoundry"],
[/^(sap-leonardo-iot-sdk-nodejs) \/ (\d+)\.(\d+)\.(\d+)/, 0],
[/^(SAP NetWeaver Application Server) \(1.0;(\d{1})(\d{2})\)/, 0],
[/^(\w+-HTTPClient)\/(\d+)\.(\d+)-(\S+)/, "HTTPClient"],
[/^(go-cli)\s(\d+)\.(\d+).(\S+)/, 0],
[/^(Java-EurekaClient|Java-EurekaClient-Replication|HTTPClient|lua-resty-http)\/v?(\d+)\.(\d+)\.?(\d*)/, 0],
[/^(ping-service|sap xsuaa|Node-oauth|Site24x7|SAP CPI|JAEGER_SECURITY)/, 0],
[/(Python\/3\.\d{1,3} aiohttp)\/(\d+)\.(\d+)\.(\d+)/, "Python aiohttp"],
[/(Java)[/ ]?\d+\.(\d+)\.(\d+)[_-]*([a-zA-Z0-9]+|)/, 0],
[/(minio-go)\/v(\d+)\.(\d+)\.(\d+)/, 0],
[/^(ureq)[/ ](\d+)\.(\d+).(\d+)/, 0],
[/^(http\.rb)\/(\d+)\.(\d+).(\d+)/, 0],
[/^(GuzzleHttp)\/(\d+)\.(\d+).(\d+)/, 0],
[/^(grab)\b/, 0],
[/^(Cyberduck)\/(\d+)\.(\d+)\.(\d+)(?:\.\d+|)/, 0],
[/^(S3 Browser) (\d+)[.-](\d+)[.-](\d+)(?:\s*https?:\/\/s3browser\.com|)/, 0],
[/(S3Gof3r)/, 0],
[/\b(ibm-cos-sdk-(?:core|java|js|python))\/(\d+)\.(\d+)(?:\.(\d+)|)/, 0],
[/^(rusoto)\/(\d+)\.(\d+)\.(\d+)/, 0],
[/^(rclone)\/v(\d+)\.(\d+)/, 0],
[/^(Roku)\/DVP-(\d+)\.(\d+)/, 0],
[/(Kurio)\/(\d+)\.(\d+)\.(\d+)/, "Kurio App"],
[/^(Box(?: Sync)?)\/(\d+)\.(\d+)\.(\d+)/, 0],
[/^(ViaFree|Viafree)-(?:tvOS-)?[A-Z]{2}\/(\d+)\.(\d+)\.(\d+)/, "ViaFree"],
[/(Transmit)\/(\d+)\.(\d+)\.(\d+)/, 0],
[/(Download Master)/, 0],
[/\b(HTTrack) (\d+)\.(\d+)(?:[\.\-](\d+)|)/, 0],
[/SerenityOS/, "SerenityOS Browser"],
[/(Wget)\/(\d+)\.(\d+)\.?([ab]?\d+[a-z]*)/, 0],
[/(curl)\/(\d+)\.(\d+)\.(\d+)/, "cURL"]
];
exports.device = [
[/(Rival IQ, rivaliq.com)/, "Spider"],
[/^.{0,100}?(?:(?:iPhone|Windows CE|Windows Phone|Android).{0,300}(?:(?:Bot|Yeti)-Mobile|YRSpider|BingPreview|bots?\/\d|(?:bot|spider)\.html)|AdsBot-Google-Mobile.{0,200}iPhone)/i, "Spider", "Spider", "Smartphone"],
[/^.{0,100}?(?:DoCoMo|\bMOT\b|\bLG\b|Nokia|Samsung|SonyEricsson).{0,200}(?:(?:Bot|Yeti)-Mobile|bots?\/\d|(?:bot|crawler)\.html|(?:jump|google|Wukong)bot|ichiro\/mobile|\/spider|YahooSeeker)/i, "Spider", "Spider", "Feature Phone"],
[/ PTST\/\d+(?:\.\d+|)$/, "Spider", "Spider"],
[/X11; Datanyze; Linux/, "Spider", "Spider"],
[/Mozilla.{1,100}Mobile.{1,100}AspiegelBot/, "Spider", "Spider", "Smartphone"],
[/Mozilla.{0,200}AspiegelBot/, "Spider", "Spider", "Desktop"],
[/\bSmartWatch {0,2}\( {0,2}([^;]{1,200}) {0,2}; {0,2}([^;]{1,200}) {0,2};/, "$1 $2", "$1", "$2"],
[/Android Application[^\-]{1,300} - (Sony) ?(Ericsson|) (.{1,200}) \w{1,20} - /, "$1 $2", "$1$2", "$3"],
[/Android Application[^\-]{1,300} - (?:HTC|HUAWEI|LGE|LENOVO|MEDION|TCT) (HTC|HUAWEI|LG|LENOVO|MEDION|ALCATEL)[ _\-](.{1,200}) \w{1,20} - /i, "$1 $2", "$1", "$2"],
[/Android Application[^\-]{1,300} - ([^ ]+) (.{1,200}) \w{1,20} - /, "$1 $2", "$1", "$2"],
[/; {0,2}([BLRQ]C\d{4}[A-Z]{1,100}?)(?: Build|\) AppleWebKit)/, "3Q $1", "3Q", "$1"],
[/; {0,2}(?:3Q_)([^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "3Q $1", "3Q", "$1"],
[/Android [34].{0,200}; {0,2}(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[^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "$1", "Acer", "$1"],
[/; {0,2}Acer Iconia Tab ([^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "$1", "Acer", "$1"],
[/; {0,2}(Z1[1235]0|E320[^/]{0,10}|S500|S510|Liquid[^;/]{0,30}|Iconia A\d+)(?: Build|\) AppleWebKit)/, "$1", "Acer", "$1"],
[/; {0,2}(Acer |ACER )([^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "$1$2", "Acer", "$2"],
[/; {0,2}(Advent |)(Vega(?:Bean|Comb|)).{0,200}?(?: Build|\) AppleWebKit)/, "$1$2", "Advent", "$2"],
[/; {0,2}(Ainol |)((?:NOVO|[Nn]ovo)[^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "$1$2", "Ainol", "$2"],
[/; {0,2}AIRIS[ _\-]?([^/;\)]+) {0,2}(?:;|\)|Build)/i, "$1", "Airis", "$1"],
[/; {0,2}(OnePAD[^;/]{1,100}?)(?: Build|\) AppleWebKit)/i, "$1", "Airis", "$1"],
[/; {0,2}Airpad[ \-]([^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "Airpad $1", "Airpad", "$1"],
[/; {0,2}(one ?touch) (EVO7|T10|T20)(?: Build|\) AppleWebKit)/, "Alcatel One Touch $2", "Alcatel", "One Touch $2"],
[/; {0,2}(?:alcatel[ _]|)(?:(?:one[ _]?touch[ _])|ot[ \-])([^;/]{1,100}?)(?: Build|\) AppleWebKit)/i, "Alcatel One Touch $1", "Alcatel", "One Touch $1"],
[/; {0,2}(TCL)[ _]([^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "$1 $2", "$1", "$2"],
[/; {0,2}(Vodafone Smart II|Optimus_Madrid)(?: Build|\) AppleWebKit)/, "Alcatel $1", "Alcatel", "$1"],
[/; {0,2}BASE_Lutea_3(?: Build|\) AppleWebKit)/, "Alcatel One Touch 998", "Alcatel", "One Touch 998"],
[/; {0,2}BASE_Varia(?: Build|\) AppleWebKit)/, "Alcatel One Touch 918D", "Alcatel", "One Touch 918D"],
[/; {0,2}((?:FINE|Fine)\d[^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "$1", "Allfine", "$1"],
[/; {0,2}(ALLVIEW[ _]?|Allview[ _]?)((?:Speed|SPEED).{0,200}?)(?: Build|\) AppleWebKit)/, "$1$2", "Allview", "$2"],
[/; {0,2}(ALLVIEW[ _]?|Allview[ _]?|)(AX1_Shine|AX2_Frenzy)(?: Build|\) AppleWebKit)/, "$1$2", "Allview", "$2"],
[/; {0,2}(ALLVIEW[ _]?|Allview[ _]?)([^;/]*?)(?: Build|\) AppleWebKit)/, "$1$2", "Allview", "$2"],
[/; {0,2}(A13-MID)(?: Build|\) AppleWebKit)/, "$1", "Allwinner", "$1"],
[/; {0,2}(Allwinner)[ _\-]?([^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "$1 $2", "Allwinner", "$1"],
[/; {0,2}(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)/, "$1", "Amaway", "$1"],
[/; {0,2}(?:AMOI|Amoi)[ _]([^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "Amoi $1", "Amoi", "$1"],
[/^(?:AMOI|Amoi)[ _]([^;/]{1,100}?) Linux/, "Amoi $1", "Amoi", "$1"],
[/; {0,2}(MW(?:0[789]|10)[^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "$1", "Aoc", "$1"],
[/; {0,2}(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)/, "Aoson $1", "Aoson", "$1"],
[/; {0,2}Aoson ([^;/]{1,100}?)(?: Build|\) AppleWebKit)/i, "Aoson $1", "Aoson", "$1"],
[/; {0,2}[Aa]panda[ _\-]([^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "Apanda $1", "Apanda", "$1"],
[/; {0,2}(?:ARCHOS|Archos) ?(GAMEPAD.{0,200}?)(?: Build|\) AppleWebKit)/, "Archos $1", "Archos", "$1"],
[/ARCHOS; GOGI; ([^;]{1,200});/, "Archos $1", "Archos", "$1"],
[/(?:ARCHOS|Archos)[ _]?(.{0,200}?)(?: Build|[;/\(\)\-]|$)/, "Archos $1", "Archos", "$1"],
[/; {0,2}(AN(?:7|8|9|10|13)[A-Z0-9]{1,4})(?: Build|\) AppleWebKit)/, "Archos $1", "Archos", "$1"],
[/; {0,2}(A28|A32|A43|A70(?:BHT|CHT|HB|S|X)|A101(?:B|C|IT)|A7EB|A7EB-WK|101G9|80G9)(?: Build|\) AppleWebKit)/, "Archos $1", "Archos", "$1"],
[/; {0,2}(PAD-FMD[^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "$1", "Arival", "$1"],
[/; {0,2}(BioniQ) ?([^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "$1 $2", "Arival", "$1 $2"],
[/; {0,2}(AN\d[^;/]{1,100}|ARCHM\d+)(?: Build|\) AppleWebKit)/, "Arnova $1", "Arnova", "$1"],
[/; {0,2}(?:ARNOVA|Arnova) ?([^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "Arnova $1", "Arnova", "$1"],
[/; {0,2}(?:ASSISTANT |)(AP)-?([1789]\d{2}[A-Z]{0,2}|80104)(?: Build|\) AppleWebKit)/, "Assistant $1-$2", "Assistant", "$1-$2"],
[/; {0,2}(ME17\d[^;/]*|ME3\d{2}[^;/]{1,100}|K00[A-Z]|Nexus 10|Nexus 7(?: 2013|)|PadFone[^;/]*|Transformer[^;/]*|TF\d{3}[^;/]*|eeepc)(?: Build|\) AppleWebKit)/, "Asus $1", "Asus", "$1"],
[/; {0,2}ASUS[ _]{0,10}([^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "Asus $1", "Asus", "$1"],
[/; {0,2}Garmin-Asus ([^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "Garmin-Asus $1", "Garmin-Asus", "$1"],
[/; {0,2}(Garminfone)(?: Build|\) AppleWebKit)/, "Garmin $1", "Garmin-Asus", "$1"],
[/; (@TAB-[^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "$1", "Attab", "$1"],
[/; {0,2}(T-(?:07|[^0]\d)[^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "$1", "Audiosonic", "$1"],
[/; {0,2}(?:Axioo[ _\-]([^;/]{1,100}?)|(picopad)[ _\-]([^;/]{1,100}?))(?: Build|\) AppleWebKit)/i, "Axioo $1$2 $3", "Axioo", "$1$2 $3"],
[/; {0,2}(V(?:100|700|800)[^;/]*)(?: Build|\) AppleWebKit)/, "$1", "Azend", "$1"],
[/; {0,2}(IBAK\-[^;/]*)(?: Build|\) AppleWebKit)/i, "$1", "Bak", "$1"],
[/; {0,2}(HY5001|HY6501|X12|X21|I5)(?: Build|\) AppleWebKit)/, "Bedove $1", "Bedove", "$1"],
[/; {0,2}(JC-[^;/]*)(?: Build|\) AppleWebKit)/, "Benss $1", "Benss", "$1"],
[/; {0,2}(BB) ([^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "$1 $2", "Blackberry", "$2"],
[/; {0,2}(BlackBird)[ _](I8.{0,200}?)(?: Build|\) AppleWebKit)/, "$1 $2", "$1", "$2"],
[/; {0,2}(BlackBird)[ _](.{0,200}?)(?: Build|\) AppleWebKit)/, "$1 $2", "$1", "$2"],
[/; {0,2}([0-9]+BP[EM][^;/]*|Endeavour[^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "Blaupunkt $1", "Blaupunkt", "$1"],
[/; {0,2}((?:BLU|Blu)[ _\-])([^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "$1$2", "Blu", "$2"],
[/; {0,2}(?:BMOBILE )?(Blu|BLU|DASH [^;/]{1,100}|VIVO 4\.3|TANK 4\.5)(?: Build|\) AppleWebKit)/, "$1", "Blu", "$1"],
[/; {0,2}(TOUCH\d[^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "$1", "Blusens", "$1"],
[/; {0,2}(AX5\d+)(?: Build|\) AppleWebKit)/, "$1", "Bmobile", "$1"],
[/; {0,2}([Bb]q) ([^;/]{1,100}?);?(?: Build|\) AppleWebKit)/, "$1 $2", "bq", "$2"],
[/; {0,2}(Maxwell [^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "$1", "bq", "$1"],
[/; {0,2}((?:B-Tab|B-TAB) ?\d[^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "$1", "Braun", "$1"],
[/; {0,2}(Broncho) ([^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "$1 $2", "$1", "$2"],
[/; {0,2}CAPTIVA ([^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "Captiva $1", "Captiva", "$1"],
[/; {0,2}(C771|CAL21|IS11CA)(?: Build|\) AppleWebKit)/, "$1", "Casio", "$1"],
[/; {0,2}(?:Cat|CAT) ([^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "Cat $1", "Cat", "$1"],
[/; {0,2}(?:Cat)(Nova.{0,200}?)(?: Build|\) AppleWebKit)/, "Cat $1", "Cat", "$1"],
[/; {0,2}(INM8002KP|ADM8000KP_[AB])(?: Build|\) AppleWebKit)/, "$1", "Cat", "Tablet PHOENIX 8.1J0"],
[/; {0,2}(?:[Cc]elkon[ _\*]|CELKON[ _\*])([^;/\)]+) ?(?:Build|;|\))/, "$1", "Celkon", "$1"],
[/Build\/(?:[Cc]elkon)+_?([^;/_\)]+)/, "$1", "Celkon", "$1"],
[/; {0,2}(CT)-?(\d+)(?: Build|\) AppleWebKit)/, "$1$2", "Celkon", "$1$2"],
[/; {0,2}(A19|A19Q|A105|A107[^;/\)]*) ?(?:Build|;|\))/, "$1", "Celkon", "$1"],
[/; {0,2}(TPC[0-9]{4,5})(?: Build|\) AppleWebKit)/, "$1", "ChangJia", "$1"],
[/; {0,2}(Cloudfone)[ _](Excite)([^ ][^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "$1 $2 $3", "Cloudfone", "$1 $2 $3"],
[/; {0,2}(Excite|ICE)[ _](\d+[^;/]{0,100}?)(?: Build|\) AppleWebKit)/, "Cloudfone $1 $2", "Cloudfone", "Cloudfone $1 $2"],
[/; {0,2}(Cloudfone|CloudPad)[ _]([^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "$1 $2", "Cloudfone", "$1 $2"],
[/; {0,2}((?:Aquila|Clanga|Rapax)[^;/]{1,100}?)(?: Build|\) AppleWebKit)/i, "$1", "Cmx", "$1"],
[/; {0,2}(?:CFW-|Kyros )?(MID[0-9]{4}(?:[ABC]|SR|TV)?)(\(3G\)-4G| GB 8K| 3G| 8K| GB)? {0,2}(?:Build|[;\)])/, "CobyKyros $1$2", "CobyKyros", "$1$2"],
[/; {0,2}([^;/]{0,50})Coolpad[ _]([^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "$1$2", "Coolpad", "$1$2"],
[/; {0,2}(CUBE[ _])?([KU][0-9]+ ?GT.{0,200}?|A5300)(?: Build|\) AppleWebKit)/i, "$1$2", "Cube", "$2"],
[/; {0,2}CUBOT ([^;/]{1,100}?)(?: Build|\) AppleWebKit)/i, "$1", "Cubot", "$1"],
[/; {0,2}(BOBBY)(?: Build|\) AppleWebKit)/i, "$1", "Cubot", "$1"],
[/; {0,2}(Dslide [^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "$1", "Danew", "$1"],
[/; {0,2}(XCD)[ _]?(28|35)(?: Build|\) AppleWebKit)/, "Dell $1$2", "Dell", "$1$2"],
[/; {0,2}(001DL)(?: Build|\) AppleWebKit)/, "Dell $1", "Dell", "Streak"],
[/; {0,2}(?:Dell|DELL) (Streak)(?: Build|\) AppleWebKit)/, "Dell $1", "Dell", "Streak"],
[/; {0,2}(101DL|GS01|Streak Pro[^;/]{0,100})(?: Build|\) AppleWebKit)/, "Dell $1", "Dell", "Streak Pro"],
[/; {0,2}([Ss]treak ?7)(?: Build|\) AppleWebKit)/, "Dell $1", "Dell", "Streak 7"],
[/; {0,2}(Mini-3iX)(?: Build|\) AppleWebKit)/, "Dell $1", "Dell", "$1"],
[/; {0,2}(?:Dell|DELL)[ _](Aero|Venue|Thunder|Mini.{0,200}?|Streak[ _]Pro)(?: Build|\) AppleWebKit)/, "Dell $1", "Dell", "$1"],
[/; {0,2}Dell[ _]([^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "Dell $1", "Dell", "$1"],
[/; {0,2}(TA[CD]-\d+[^;/]{0,100})(?: Build|\) AppleWebKit)/, "$1", "Denver", "$1"],
[/; {0,2}(iP[789]\d{2}(?:-3G)?|IP10\d{2}(?:-8GB)?)(?: Build|\) AppleWebKit)/, "$1", "Dex", "$1"],
[/; {0,2}(AirTab)[ _\-]([^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "$1 $2", "DNS", "$1 $2"],
[/; {0,2}(F\-\d[^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "$1", "Fujitsu", "$1"],
[/; {0,2}(HT-03A)(?: Build|\) AppleWebKit)/, "$1", "HTC", "Magic"],
[/; {0,2}(HT\-\d[^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "$1", "HTC", "$1"],
[/; {0,2}(L\-\d[^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "$1", "LG", "$1"],
[/; {0,2}(N\-\d[^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "$1", "Nec", "$1"],
[/; {0,2}(P\-\d[^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "$1", "Panasonic", "$1"],
[/; {0,2}(SC\-\d[^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "$1", "Samsung", "$1"],
[/; {0,2}(SH\-\d[^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "$1", "Sharp", "$1"],
[/; {0,2}(SO\-\d[^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "$1", "SonyEricsson", "$1"],
[/; {0,2}(T\-0[12][^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "$1", "Toshiba", "$1"],
[/; {0,2}(DOOV)[ _]([^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "$1 $2", "DOOV", "$2"],
[/; {0,2}(Enot|ENOT)[ -]?([^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "$1 $2", "Enot", "$2"],
[/; {0,2}[^;/]{1,100} Build\/(?:CROSS|Cross)+[ _\-]([^\)]+)/, "CROSS $1", "Evercoss", "Cross $1"],
[/; {0,2}(CROSS|Cross)[ _\-]([^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "$1 $2", "Evercoss", "Cross $2"],
[/; {0,2}Explay[_ ](.{1,200}?)(?:[\)]| Build)/, "$1", "Explay", "$1"],
[/; {0,2}(IQ.{0,200}?)(?: Build|\) AppleWebKit)/, "$1", "Fly", "$1"],
[/; {0,2}(Fly|FLY)[ _](IQ[^;]{1,100}?|F[34]\d+[^;]{0,100}?);?(?: Build|\) AppleWebKit)/, "$1 $2", "Fly", "$2"],
[/; {0,2}(M532|Q572|FJL21)(?: Build|\) AppleWebKit)/, "$1", "Fujitsu", "$1"],
[/; {0,2}(G1)(?: Build|\) AppleWebKit)/, "$1", "Galapad", "$1"],
[/; {0,2}(Geeksphone) ([^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "$1 $2", "$1", "$2"],
[/; {0,2}(G[^F]?FIVE) ([^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "$1 $2", "Gfive", "$2"],
[/; {0,2}(Gionee)[ _\-]([^;/]{1,100}?)(?:\/[^;/]{1,100}|)(?: Build|\) AppleWebKit)/i, "$1 $2", "Gionee", "$2"],
[/; {0,2}(GN\d+[A-Z]?|INFINITY_PASSION|Ctrl_V1)(?: Build|\) AppleWebKit)/, "Gionee $1", "Gionee", "$1"],
[/; {0,2}(E3) Build\/JOP40D/, "Gionee $1", "Gionee", "$1"],
[/\sGIONEE[-\s_](\w*)/i, "Gionee $1", "Gionee", "$1"],
[/; {0,2}((?:FONE|QUANTUM|INSIGNIA) \d+[^;/]{0,100}|PLAYTAB)(?: Build|\) AppleWebKit)/, "GoClever $1", "GoClever", "$1"],
[/; {0,2}GOCLEVER ([^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "GoClever $1", "GoClever", "$1"],
[/; {0,2}(Glass \d+)(?: Build|\) AppleWebKit)/, "$1", "Google", "$1"],
[/; {0,2}([g|G]oogle)? (Pixel[ a-zA-z0-9]{1,100});(?: Build|.{0,50}\) AppleWebKit)/, "$2", "Google", "$2"],
[/; {0,2}([g|G]oogle)? (Pixel.{0,200}?)(?: Build|\) AppleWebKit)/, "$2", "Google", "$2"],
[/; {0,2}(GSmart)[ -]([^/]{1,50})(?: Build|\) AppleWebKit)/, "$1 $2", "Gigabyte", "$1 $2"],
[/; {0,2}(imx5[13]_[^/]{1,50})(?: Build|\) AppleWebKit)/, "Freescale $1", "Freescale", "$1"],
[/; {0,2}Haier[ _\-]([^/]{1,50})(?: Build|\) AppleWebKit)/, "Haier $1", "Haier", "$1"],
[/; {0,2}(PAD1016)(?: Build|\) AppleWebKit)/, "Haipad $1", "Haipad", "$1"],
[/; {0,2}(M701|M7|M8|M9)(?: Build|\) AppleWebKit)/, "Haipad $1", "Haipad", "$1"],
[/; {0,2}(SN\d+T[^;\)/]*)(?: Build|[;\)])/, "Hannspree $1", "Hannspree", "$1"],
[/Build\/HCL ME Tablet ([^;\)]{1,3})[\);]/, "HCLme $1", "HCLme", "$1"],
[/; {0,2}([^;\/]+) Build\/HCL/, "HCLme $1", "HCLme", "$1"],
[/; {0,2}(MID-?\d{4}C[EM])(?: Build|\) AppleWebKit)/, "Hena $1", "Hena", "$1"],
[/; {0,2}(EG\d{2,}|HS-[^;/]{1,100}|MIRA[^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "Hisense $1", "Hisense", "$1"],
[/; {0,2}(andromax[^;/]{1,100}?)(?: Build|\) AppleWebKit)/i, "Hisense $1", "Hisense", "$1"],
[/; {0,2}(?:AMAZE[ _](S\d+)|(S\d+)[ _]AMAZE)(?: Build|\) AppleWebKit)/, "AMAZE $1$2", "hitech", "AMAZE $1$2"],
[/; {0,2}(PlayBook)(?: Build|\) AppleWebKit)/, "HP $1", "HP", "$1"],
[/; {0,2}HP ([^/]{1,50})(?: Build|\) AppleWebKit)/, "HP $1", "HP", "$1"],
[/; {0,2}([^/]{1,30}_tenderloin)(?: Build|\) AppleWebKit)/, "HP TouchPad", "HP", "TouchPad"],
[/; {0,2}(HUAWEI |Huawei-|)([UY][^;/]{1,100}) Build\/(?:Huawei|HUAWEI)([UY][^\);]+)\)/, "$1$2", "Huawei", "$2"],
[/; {0,2}([^;/]{1,100}) Build[/ ]Huawei(MT1-U06|[A-Z]{1,50}\d+[^\);]{1,50})\)/, "$1", "Huawei", "$2"],
[/; {0,2}(S7|M860) Build/, "$1", "Huawei", "$1"],
[/; {0,2}((?:HUAWEI|Huawei)[ \-]?)(MediaPad) Build/, "$1$2", "Huawei", "$2"],
[/; {0,2}((?:HUAWEI[ _]?|Huawei[ _]|)Ascend[ _])([^;/]{1,100}) Build/, "$1$2", "Huawei", "$2"],
[/; {0,2}((?:HUAWEI|Huawei)[ _\-]?)((?:G700-|MT-)[^;/]{1,100}) Build/, "$1$2", "Huawei", "$2"],
[/; {0,2}((?:HUAWEI|Huawei)[ _\-]?)([^;/]{1,100}) Build/, "$1$2", "Huawei", "$2"],
[/; {0,2}(MediaPad[^;]{1,200}|SpringBoard) Build\/Huawei/, "$1", "Huawei", "$1"],
[/; {0,2}([^;]{1,200}) Build\/(?:Huawei|HUAWEI)/, "$1", "Huawei", "$1"],
[/; {0,2}([Uu])([89]\d{3}) Build/, "$1$2", "Huawei", "U$2"],
[/; {0,2}(?:Ideos |IDEOS )(S7) Build/, "Huawei Ideos$1", "Huawei", "Ideos$1"],
[/; {0,2}(?:Ideos |IDEOS )([^;/]{1,50}\s{0,5}|\s{0,5})Build/, "Huawei Ideos$1", "Huawei", "Ideos$1"],
[/; {0,2}(Orange Daytona|Pulse|Pulse Mini|Vodafone 858|C8500|C8600|C8650|C8660|Nexus 6P|ATH-.{1,200}?) Build[/ ]/, "Huawei $1", "Huawei", "$1"],
[/; {0,2}((?:[A-Z]{3})\-L[A-Za0-9]{2})[\)]/, "Huawei $1", "Huawei", "$1"],
[/; {0,2}([^;]{1,200}) Build\/(HONOR|Honor)/, "Huawei Honor $1", "Huawei", "Honor $1"],
[/; {0,2}HTC[ _]([^;]{1,200}); Windows Phone/, "HTC $1", "HTC", "$1"],
[/; {0,2}(?:HTC[ _/])+([^ _/]+)(?:[/\\]1\.0 | V|\/| +)\d+\.\d[\d\.]*(?: {0,2}Build|\))/, "HTC $1", "HTC", "$1"],
[/; {0,2}(?:HTC[ _/])+([^ _/]+)(?:[ _/]([^ _/]+)|)(?:[/\\]1\.0 | V|\/| +)\d+\.\d[\d\.]*(?: {0,2}Build|\))/, "HTC $1 $2", "HTC", "$1 $2"],
[/; {0,2}(?:HTC[ _/])+([^ _/]+)(?:[ _/]([^ _/]+)(?:[ _/]([^ _/]+)|)|)(?:[/\\]1\.0 | V|\/| +)\d+\.\d[\d\.]*(?: {0,2}Build|\))/, "HTC $1 $2 $3", "HTC", "$1 $2 $3"],
[/; {0,2}(?:HTC[ _/])+([^ _/]+)(?:[ _/]([^ _/]+)(?:[ _/]([^ _/]+)(?:[ _/]([^ _/]+)|)|)|)(?:[/\\]1\.0 | V|\/| +)\d+\.\d[\d\.]*(?: {0,2}Build|\))/, "HTC $1 $2 $3 $4", "HTC", "$1 $2 $3 $4"],
[/; {0,2}(?:(?:HTC|htc)(?:_blocked|)[ _/])+([^ _/;]+)(?: {0,2}Build|[;\)]| - )/, "HTC $1", "HTC", "$1"],
[/; {0,2}(?:(?:HTC|htc)(?:_blocked|)[ _/])+([^ _/]+)(?:[ _/]([^ _/;\)]+)|)(?: {0,2}Build|[;\)]| - )/, "HTC $1 $2", "HTC", "$1 $2"],
[/; {0,2}(?:(?:HTC|htc)(?:_blocked|)[ _/])+([^ _/]+)(?:[ _/]([^ _/]+)(?:[ _/]([^ _/;\)]+)|)|)(?: {0,2}Build|[;\)]| - )/, "HTC $1 $2 $3", "HTC", "$1 $2 $3"],
[/; {0,2}(?:(?:HTC|htc)(?:_blocked|)[ _/])+([^ _/]+)(?:[ _/]([^ _/]+)(?:[ _/]([^ _/]+)(?:[ _/]([^ /;]+)|)|)|)(?: {0,2}Build|[;\)]| - )/, "HTC $1 $2 $3 $4", "HTC", "$1 $2 $3 $4"],
[/HTC Streaming Player [^\/]{0,30}\/[^\/]{0,10}\/ htc_([^/]{1,10}) \//, "HTC $1", "HTC", "$1"],
[/(?:[;,] {0,2}|^)(?:htccn_chs-|)HTC[ _-]?([^;]{1,200}?)(?: {0,2}Build|clay|Android|-?Mozilla| Opera| Profile| UNTRUSTED|[;/\(\)]|$)/i, "HTC $1", "HTC", "$1"],
[/; {0,2}(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|[/;\(\)])/i, "HTC $1", "HTC", "$1"],
[/; {0,2}(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)[ _-](.{1,200}?)(?:[/;\)]|Build|MIUI|1\.0)/i, "HTC $1 $2", "HTC", "$1 $2"],
[/; {0,2}HYUNDAI (T\d[^/]{0,10})(?: Build|\) AppleWebKit)/, "Hyundai $1", "Hyundai", "$1"],
[/; {0,2}HYUNDAI ([^;/]{1,10}?)(?: Build|\) AppleWebKit)/, "Hyundai $1", "Hyundai", "$1"],
[/; {0,2}(X700|Hold X|MB-6900)(?: Build|\) AppleWebKit)/, "Hyundai $1", "Hyundai", "$1"],
[/; {0,2}(?:iBall[ _\-]|)(Andi)[ _]?(\d[^;/]*)(?: Build|\) AppleWebKit)/i, "$1 $2", "iBall", "$1 $2"],
[/; {0,2}(IBall)(?:[ _]([^;/]{1,100}?)|)(?: Build|\) AppleWebKit)/i, "$1 $2", "iBall", "$2"],
[/; {0,2}(NT-\d+[^ ;/]{0,50}|Net[Tt]AB [^;/]{1,50}|Mercury [A-Z]{1,50}|iconBIT)(?: S\/N:[^;/]{1,50}|)(?: Build|\) AppleWebKit)/, "$1", "IconBIT", "$1"],
[/; {0,2}(IMO)[ _]([^;/]{1,100}?)(?: Build|\) AppleWebKit)/i, "$1 $2", "IMO", "$2"],
[/; {0,2}i-?mobile[ _]([^/]{1,50})(?: Build|\) AppleWebKit)/i, "i-mobile $1", "imobile", "$1"],
[/; {0,2}(i-(?:style|note)[^/]{0,10})(?: Build|\) AppleWebKit)/i, "i-mobile $1", "imobile", "$1"],
[/; {0,2}(ImPAD) ?(\d+(?:.){0,100}?)(?: Build|\) AppleWebKit)/, "$1 $2", "Impression", "$1 $2"],
[/; {0,2}(Infinix)[ _]([^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "$1 $2", "Infinix", "$2"],
[/; {0,2}(Informer)[ \-]([^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "$1 $2", "Informer", "$2"],
[/; {0,2}(TAB) ?([78][12]4)(?: Build|\) AppleWebKit)/, "Intenso $1", "Intenso", "$1 $2"],
[/; {0,2}(?:Intex[ _]|)(AQUA|Aqua)([ _\.\-])([^;/]{1,100}?) {0,2}(?:Build|;)/, "$1$2$3", "Intex", "$1 $3"],
[/; {0,2}(?:INTEX|Intex)(?:[_ ]([^\ _;/]+))(?:[_ ]([^\ _;/]+)|) {0,2}(?:Build|;)/, "$1 $2", "Intex", "$1 $2"],
[/; {0,2}([iI]Buddy)[ _]?(Connect)(?:_|\?_| |)([^;/]{0,50}) {0,2}(?:Build|;)/, "$1 $2 $3", "Intex", "iBuddy $2 $3"],
[/; {0,2}(I-Buddy)[ _]([^;/]{1,100}?) {0,2}(?:Build|;)/, "$1 $2", "Intex", "iBuddy $2"],
[/; {0,2}(iOCEAN) ([^/]{1,50})(?: Build|\) AppleWebKit)/i, "$1 $2", "iOCEAN", "$2"],
[/; {0,2}(TP\d+(?:\.\d+|)\-\d[^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "ionik $1", "ionik", "$1"],
[/; {0,2}(M702pro)(?: Build|\) AppleWebKit)/, "$1", "Iru", "$1"],
[/; {0,2}itel ([^;/]*)(?: Build|\) AppleWebKit)/, "Itel $1", "Itel", "$1"],
[/; {0,2}(DE88Plus|MD70)(?: Build|\) AppleWebKit)/, "$1", "Ivio", "$1"],
[/; {0,2}IVIO[_\-]([^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "$1", "Ivio", "$1"],
[/; {0,2}(TPC-\d+|JAY-TECH)(?: Build|\) AppleWebKit)/, "$1", "Jaytech", "$1"],
[/; {0,2}(JY-[^;/]{1,100}|G[234]S?)(?: Build|\) AppleWebKit)/, "$1", "Jiayu", "$1"],
[/; {0,2}(JXD)[ _\-]([^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "$1 $2", "JXD", "$2"],
[/; {0,2}Karbonn[ _]?([^;/]{1,100}) {0,2}(?:Build|;)/i, "$1", "Karbonn", "$1"],
[/; {0,2}([^;]{1,200}) Build\/Karbonn/, "$1", "Karbonn", "$1"],
[/; {0,2}(A11|A39|A37|A34|ST8|ST10|ST7|Smart Tab3|Smart Tab2|Titanium S\d) +Build/, "$1", "Karbonn", "$1"],
[/; {0,2}(IS01|IS03|IS05|IS\d{2}SH)(?: Build|\) AppleWebKit)/, "$1", "Sharp", "$1"],
[/; {0,2}(IS04)(?: Build|\) AppleWebKit)/, "$1", "Regza", "$1"],
[/; {0,2}(IS06|IS\d{2}PT)(?: Build|\) AppleWebKit)/, "$1", "Pantech", "$1"],
[/; {0,2}(IS11S)(?: Build|\) AppleWebKit)/, "$1", "SonyEricsson", "Xperia Acro"],
[/; {0,2}(IS11CA)(?: Build|\) AppleWebKit)/, "$1", "Casio", "GzOne $1"],
[/; {0,2}(IS11LG)(?: Build|\) AppleWebKit)/, "$1", "LG", "Optimus X"],
[/; {0,2}(IS11N)(?: Build|\) AppleWebKit)/, "$1", "Medias", "$1"],
[/; {0,2}(IS11PT)(?: Build|\) AppleWebKit)/, "$1", "Pantech", "MIRACH"],
[/; {0,2}(IS12F)(?: Build|\) AppleWebKit)/, "$1", "Fujitsu", "Arrows ES"],
[/; {0,2}(IS12M)(?: Build|\) AppleWebKit)/, "$1", "Motorola", "XT909"],
[/; {0,2}(IS12S)(?: Build|\) AppleWebKit)/, "$1", "SonyEricsson", "Xperia Acro HD"],
[/; {0,2}(ISW11F)(?: Build|\) AppleWebKit)/, "$1", "Fujitsu", "Arrowz Z"],
[/; {0,2}(ISW11HT)(?: Build|\) AppleWebKit)/, "$1", "HTC", "EVO"],
[/; {0,2}(ISW11K)(?: Build|\) AppleWebKit)/, "$1", "Kyocera", "DIGNO"],
[/; {0,2}(ISW11M)(?: Build|\) AppleWebKit)/, "$1", "Motorola", "Photon"],
[/; {0,2}(ISW11SC)(?: Build|\) AppleWebKit)/, "$1", "Samsung", "GALAXY S II WiMAX"],
[/; {0,2}(ISW12HT)(?: Build|\) AppleWebKit)/, "$1", "HTC", "EVO 3D"],
[/; {0,2}(ISW13HT)(?: Build|\) AppleWebKit)/, "$1", "HTC", "J"],
[/; {0,2}(ISW?[0-9]{2}[A-Z]{0,2})(?: Build|\) AppleWebKit)/, "$1", "KDDI", "$1"],
[/; {0,2}(INFOBAR [^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "$1", "KDDI", "$1"],
[/; {0,2}(JOYPAD|Joypad)[ _]([^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "$1 $2", "Kingcom", "$1 $2"],
[/; {0,2}(Vox|VOX|Arc|K080)(?: Build|\) AppleWebKit)/i, "$1", "Kobo", "$1"],
[/\b(Kobo Touch)\b/, "$1", "Kobo", "$1"],
[/; {0,2}(K-Touch)[ _]([^;/]{1,100}?)(?: Build|\) AppleWebKit)/i, "$1 $2", "Ktouch", "$2"],
[/; {0,2}((?:EV|KM)-S\d+[A-Z]?)(?: Build|\) AppleWebKit)/i, "$1", "KTtech", "$1"],
[/; {0,2}(Zio|Hydro|Torque|Event|EVENT|Echo|Milano|Rise|URBANO PROGRESSO|WX04K|WX06K|WX10K|KYL21|101K|C5[12]\d{2})(?: Build|\) AppleWebKit)/, "$1", "Kyocera", "$1"],
[/; {0,2}(?:LAVA[ _]|)IRIS[ _\-]?([^/;\)]+) {0,2}(?:;|\)|Build)/i, "Iris $1", "Lava", "Iris $1"],
[/; {0,2}LAVA[ _]([^;/]{1,100}) Build/, "$1", "Lava", "$1"],
[/; {0,2}(?:(Aspire A1)|(?:LEMON|Lemon)[ _]([^;/]{1,100}))_?(?: Build|\) AppleWebKit)/, "Lemon $1$2", "Lemon", "$1$2"],
[/; {0,2}(TAB-1012)(?: Build|\) AppleWebKit)/, "Lenco $1", "Lenco", "$1"],
[/; Lenco ([^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "Lenco $1", "Lenco", "$1"],
[/; {0,2}(A1_07|A2107A-H|S2005A-H|S1-37AH0) Build/, "$1", "Lenovo", "$1"],
[/; {0,2}(Idea[Tp]ab)[ _]([^;/]{1,100});? Build/, "Lenovo $1 $2", "Lenovo", "$1 $2"],
[/; {0,2}(Idea(?:Tab|pad)) ?([^;/]{1,100}) Build/, "Lenovo $1 $2", "Lenovo", "$1 $2"],
[/; {0,2}(ThinkPad) ?(Tablet) Build\//, "Lenovo $1 $2", "Lenovo", "$1 $2"],
[/; {0,2}(?:LNV-|)(?:=?[Ll]enovo[ _\-]?|LENOVO[ _])(.{1,200}?)(?:Build|[;/\)])/, "Lenovo $1", "Lenovo", "$1"],
[/[;,] (?:Vodafone |)(SmartTab) ?(II) ?(\d+) Build\//, "Lenovo $1 $2 $3", "Lenovo", "$1 $2 $3"],
[/; {0,2}(?:Ideapad |)K1 Build\//, "Lenovo Ideapad K1", "Lenovo", "Ideapad K1"],
[/; {0,2}(3GC101|3GW10[01]|A390) Build\//, "$1", "Lenovo", "$1"],
[/\b(?:Lenovo|LENOVO)+[ _\-]?([^,;:/ ]+)/, "Lenovo $1", "Lenovo", "$1"],
[/; {0,2}(MFC\d+)[A-Z]{2}([^;,/]*),?(?: Build|\) AppleWebKit)/, "$1$2", "Lexibook", "$1$2"],
[/; {0,2}(E[34][0-9]{2}|LS[6-8][0-9]{2}|VS[6-9][0-9]+[^;/]{1,30}|Nexus 4|Nexus 5X?|GT540f?|Optimus (?:2X|G|4X HD)|OptimusX4HD) {0,2}(?:Build|;)/, "$1", "LG", "$1"],
[/[;:] {0,2}(L-\d+[A-Z]|LGL\d+[A-Z]?)(?:\/V\d+|) {0,2}(?:Build|[;\)])/, "$1", "LG", "$1"],
[/; {0,2}(LG-)([A-Z]{1,2}\d{2,}[^,;/\)\(]*?)(?:Build| V\d+|[,;/\)\(]|$)/, "$1$2", "LG", "$2"],
[/; {0,2}(LG[ \-]|LG)([^;/]{1,100})[;/]? Build/, "$1$2", "LG", "$2"],
[/^(LG)-([^;/]{1,100})\/ Mozilla\/.{0,200}; Android/, "$1 $2", "LG", "$2"],
[/(Web0S); Linux\/(SmartTV)/, "LG $1 $2", "LG", "$1 $2"],
[/; {0,2}((?:SMB|smb)[^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "$1", "Malata", "$1"],
[/; {0,2}(?:Malata