Changeset e29cc2e for trip-planner-front/node_modules/ua-parser-js
- Timestamp:
- 11/25/21 22:08:24 (3 years ago)
- Branches:
- master
- Children:
- 8d391a1
- Parents:
- 59329aa
- Location:
- trip-planner-front/node_modules/ua-parser-js
- Files:
-
- 2 added
- 12 edited
Legend:
- Unmodified
- Added
- Removed
-
trip-planner-front/node_modules/ua-parser-js/bower.json
r59329aa re29cc2e 1 1 { 2 2 "name": "ua-parser-js", 3 "version": "0.7. 28",3 "version": "0.7.31", 4 4 "authors": [ 5 5 "Faisal Salman <f@faisalman.com>" -
trip-planner-front/node_modules/ua-parser-js/dist/ua-parser.min.js
r59329aa re29cc2e 1 /*!@license 2 * UAParser.js v0.7.28 3 * Lightweight JavaScript-based User-Agent string parser 4 * https://github.com/faisalman/ua-parser-js 5 * 6 * Copyright © 2012-2021 Faisal Salman <f@faisalman.com> 7 * Licensed under MIT License 8 */ 9 (function(window,undefined){"use strict";var LIBVERSION="0.7.28",EMPTY="",UNKNOWN="?",FUNC_TYPE="function",UNDEF_TYPE="undefined",OBJ_TYPE="object",STR_TYPE="string",MAJOR="major",MODEL="model",NAME="name",TYPE="type",VENDOR="vendor",VERSION="version",ARCHITECTURE="architecture",CONSOLE="console",MOBILE="mobile",TABLET="tablet",SMARTTV="smarttv",WEARABLE="wearable",EMBEDDED="embedded",UA_MAX_LENGTH=255;var util={extend:function(regexes,extensions){var mergedRegexes={};for(var i in regexes){if(extensions[i]&&extensions[i].length%2===0){mergedRegexes[i]=extensions[i].concat(regexes[i])}else{mergedRegexes[i]=regexes[i]}}return mergedRegexes},has:function(str1,str2){return typeof str1===STR_TYPE?str2.toLowerCase().indexOf(str1.toLowerCase())!==-1:false},lowerize:function(str){return str.toLowerCase()},major:function(version){return typeof version===STR_TYPE?version.replace(/[^\d\.]/g,"").split(".")[0]:undefined},trim:function(str,len){str=str.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"");return typeof len===UNDEF_TYPE?str:str.substring(0,UA_MAX_LENGTH)}};var mapper={rgx:function(ua,arrays){var i=0,j,k,p,q,matches,match;while(i<arrays.length&&!matches){var regex=arrays[i],props=arrays[i+1];j=k=0;while(j<regex.length&&!matches){matches=regex[j++].exec(ua);if(!!matches){for(p=0;p<props.length;p++){match=matches[++k];q=props[p];if(typeof q===OBJ_TYPE&&q.length>0){if(q.length==2){if(typeof q[1]==FUNC_TYPE){this[q[0]]=q[1].call(this,match)}else{this[q[0]]=q[1]}}else if(q.length==3){if(typeof q[1]===FUNC_TYPE&&!(q[1].exec&&q[1].test)){this[q[0]]=match?q[1].call(this,match,q[2]):undefined}else{this[q[0]]=match?match.replace(q[1],q[2]):undefined}}else if(q.length==4){this[q[0]]=match?q[3].call(this,match.replace(q[1],q[2])):undefined}}else{this[q]=match?match:undefined}}}}i+=2}},str:function(str,map){for(var i in map){if(typeof map[i]===OBJ_TYPE&&map[i].length>0){for(var j=0;j<map[i].length;j++){if(util.has(map[i][j],str)){return i===UNKNOWN?undefined:i}}}else if(util.has(map[i],str)){return i===UNKNOWN?undefined:i}}return str}};var maps={browser:{oldSafari:{version:{"1.0":"/8",1.2:"/1",1.3:"/3","2.0":"/412","2.0.2":"/416","2.0.3":"/417","2.0.4":"/419","?":"/"}},oldEdge:{version:{.1:"12.",21:"13.",31:"14.",39:"15.",41:"16.",42:"17.",44:"18."}}},os:{windows:{version:{ME:"4.90","NT 3.11":"NT3.51","NT 4.0":"NT4.0",2e3:"NT 5.0",XP:["NT 5.1","NT 5.2"],Vista:"NT 6.0",7:"NT 6.1",8:"NT 6.2",8.1:"NT 6.3",10:["NT 6.4","NT 10.0"],RT:"ARM"}}}};var regexes={browser:[[/\b(?:crmo|crios)\/([\w\.]+)/i],[VERSION,[NAME,"Chrome"]],[/(?:edge|edgios|edga|edg)\/([\w\.]+)/i],[VERSION,[NAME,"Edge"]],[/(opera\smini)\/([\w\.-]+)/i,/(opera\s[mobiletab]{3,6})\b.+version\/([\w\.-]+)/i,/(opera)(?:.+version\/|[\/\s]+)([\w\.]+)/i],[NAME,VERSION],[/opios[\/\s]+([\w\.]+)/i],[VERSION,[NAME,"Opera Mini"]],[/\sopr\/([\w\.]+)/i],[VERSION,[NAME,"Opera"]],[/(kindle)\/([\w\.]+)/i,/(lunascape|maxthon|netfront|jasmine|blazer)[\/\s]?([\w\.]*)/i,/(avant\s|iemobile|slim)(?:browser)?[\/\s]?([\w\.]*)/i,/(ba?idubrowser)[\/\s]?([\w\.]+)/i,/(?:ms|\()(ie)\s([\w\.]+)/i,/(flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark|qupzilla|falkon)\/([\w\.-]+)/i,/(rekonq|puffin|brave|whale|qqbrowserlite|qq)\/([\w\.]+)/i,/(weibo)__([\d\.]+)/i],[NAME,VERSION],[/(?:[\s\/]uc?\s?browser|(?:juc.+)ucweb)[\/\s]?([\w\.]+)/i],[VERSION,[NAME,"UCBrowser"]],[/(?:windowswechat)?\sqbcore\/([\w\.]+)\b.*(?:windowswechat)?/i],[VERSION,[NAME,"WeChat(Win) Desktop"]],[/micromessenger\/([\w\.]+)/i],[VERSION,[NAME,"WeChat"]],[/konqueror\/([\w\.]+)/i],[VERSION,[NAME,"Konqueror"]],[/trident.+rv[:\s]([\w\.]{1,9})\b.+like\sgecko/i],[VERSION,[NAME,"IE"]],[/yabrowser\/([\w\.]+)/i],[VERSION,[NAME,"Yandex"]],[/(avast|avg)\/([\w\.]+)/i],[[NAME,/(.+)/,"$1 Secure Browser"],VERSION],[/focus\/([\w\.]+)/i],[VERSION,[NAME,"Firefox Focus"]],[/opt\/([\w\.]+)/i],[VERSION,[NAME,"Opera Touch"]],[/coc_coc_browser\/([\w\.]+)/i],[VERSION,[NAME,"Coc Coc"]],[/dolfin\/([\w\.]+)/i],[VERSION,[NAME,"Dolphin"]],[/coast\/([\w\.]+)/i],[VERSION,[NAME,"Opera Coast"]],[/xiaomi\/miuibrowser\/([\w\.]+)/i],[VERSION,[NAME,"MIUI Browser"]],[/fxios\/([\w\.-]+)/i],[VERSION,[NAME,"Firefox"]],[/(qihu|qhbrowser|qihoobrowser|360browser)/i],[[NAME,"360 Browser"]],[/(oculus|samsung|sailfish)browser\/([\w\.]+)/i],[[NAME,/(.+)/,"$1 Browser"],VERSION],[/(comodo_dragon)\/([\w\.]+)/i],[[NAME,/_/g," "],VERSION],[/\s(electron)\/([\w\.]+)\ssafari/i,/(tesla)(?:\sqtcarbrowser|\/(20[12]\d\.[\w\.-]+))/i,/m?(qqbrowser|baiduboxapp|2345Explorer)[\/\s]?([\w\.]+)/i],[NAME,VERSION],[/(MetaSr)[\/\s]?([\w\.]+)/i,/(LBBROWSER)/i],[NAME],[/;fbav\/([\w\.]+);/i],[VERSION,[NAME,"Facebook"]],[/FBAN\/FBIOS|FB_IAB\/FB4A/i],[[NAME,"Facebook"]],[/safari\s(line)\/([\w\.]+)/i,/\b(line)\/([\w\.]+)\/iab/i,/(chromium|instagram)[\/\s]([\w\.-]+)/i],[NAME,VERSION],[/\bgsa\/([\w\.]+)\s.*safari\//i],[VERSION,[NAME,"GSA"]],[/headlesschrome(?:\/([\w\.]+)|\s)/i],[VERSION,[NAME,"Chrome Headless"]],[/\swv\).+(chrome)\/([\w\.]+)/i],[[NAME,"Chrome WebView"],VERSION],[/droid.+\sversion\/([\w\.]+)\b.+(?:mobile\ssafari|safari)/i],[VERSION,[NAME,"Android Browser"]],[/(chrome|omniweb|arora|[tizenoka]{5}\s?browser)\/v?([\w\.]+)/i],[NAME,VERSION],[/version\/([\w\.]+)\s.*mobile\/\w+\s(safari)/i],[VERSION,[NAME,"Mobile Safari"]],[/version\/([\w\.]+)\s.*(mobile\s?safari|safari)/i],[VERSION,NAME],[/webkit.+?(mobile\s?safari|safari)(\/[\w\.]+)/i],[NAME,[VERSION,mapper.str,maps.browser.oldSafari.version]],[/(webkit|khtml)\/([\w\.]+)/i],[NAME,VERSION],[/(navigator|netscape)\/([\w\.-]+)/i],[[NAME,"Netscape"],VERSION],[/ile\svr;\srv:([\w\.]+)\).+firefox/i],[VERSION,[NAME,"Firefox Reality"]],[/ekiohf.+(flow)\/([\w\.]+)/i,/(swiftfox)/i,/(icedragon|iceweasel|camino|chimera|fennec|maemo\sbrowser|minimo|conkeror)[\/\s]?([\w\.\+]+)/i,/(firefox|seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\/([\w\.-]+)$/i,/(firefox)\/([\w\.]+)\s[\w\s\-]+\/[\w\.]+$/i,/(mozilla)\/([\w\.]+)\s.+rv\:.+gecko\/\d+/i,/(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir)[\/\s]?([\w\.]+)/i,/(links)\s\(([\w\.]+)/i,/(gobrowser)\/?([\w\.]*)/i,/(ice\s?browser)\/v?([\w\._]+)/i,/(mosaic)[\/\s]([\w\.]+)/i],[NAME,VERSION]],cpu:[[/(?:(amd|x(?:(?:86|64)[_-])?|wow|win)64)[;\)]/i],[[ARCHITECTURE,"amd64"]],[/(ia32(?=;))/i],[[ARCHITECTURE,util.lowerize]],[/((?:i[346]|x)86)[;\)]/i],[[ARCHITECTURE,"ia32"]],[/\b(aarch64|armv?8e?l?)\b/i],[[ARCHITECTURE,"arm64"]],[/\b(arm(?:v[67])?ht?n?[fl]p?)\b/i],[[ARCHITECTURE,"armhf"]],[/windows\s(ce|mobile);\sppc;/i],[[ARCHITECTURE,"arm"]],[/((?:ppc|powerpc)(?:64)?)(?:\smac|;|\))/i],[[ARCHITECTURE,/ower/,"",util.lowerize]],[/(sun4\w)[;\)]/i],[[ARCHITECTURE,"sparc"]],[/((?:avr32|ia64(?=;))|68k(?=\))|\barm(?:64|(?=v(?:[1-7]|[5-7]1)l?|;|eabi))|(?=atmel\s)avr|(?:irix|mips|sparc)(?:64)?\b|pa-risc)/i],[[ARCHITECTURE,util.lowerize]]],device:[[/\b(sch-i[89]0\d|shw-m380s|sm-[pt]\w{2,4}|gt-[pn]\d{2,4}|sgh-t8[56]9|nexus\s10)/i],[MODEL,[VENDOR,"Samsung"],[TYPE,TABLET]],[/\b((?:s[cgp]h|gt|sm)-\w+|galaxy\snexus)/i,/\ssamsung[\s-]([\w-]+)/i,/sec-(sgh\w+)/i],[MODEL,[VENDOR,"Samsung"],[TYPE,MOBILE]],[/\((ip(?:hone|od)[\s\w]*);/i],[MODEL,[VENDOR,"Apple"],[TYPE,MOBILE]],[/\((ipad);[\w\s\),;-]+apple/i,/applecoremedia\/[\w\.]+\s\((ipad)/i,/\b(ipad)\d\d?,\d\d?[;\]].+ios/i],[MODEL,[VENDOR,"Apple"],[TYPE,TABLET]],[/\b((?:agr|ags[23]|bah2?|sht?)-a?[lw]\d{2})/i],[MODEL,[VENDOR,"Huawei"],[TYPE,TABLET]],[/d\/huawei([\w\s-]+)[;\)]/i,/\b(nexus\s6p|vog-[at]?l\d\d|ane-[at]?l[x\d]\d|eml-a?l\d\da?|lya-[at]?l\d[\dc]|clt-a?l\d\di?|ele-l\d\d)/i,/\b(\w{2,4}-[atu][ln][01259][019])[;\)\s]/i],[MODEL,[VENDOR,"Huawei"],[TYPE,MOBILE]],[/\b(poco[\s\w]+)(?:\sbuild|\))/i,/\b;\s(\w+)\sbuild\/hm\1/i,/\b(hm[\s\-_]?note?[\s_]?(?:\d\w)?)\sbuild/i,/\b(redmi[\s\-_]?(?:note|k)?[\w\s_]+)(?:\sbuild|\))/i,/\b(mi[\s\-_]?(?:a\d|one|one[\s_]plus|note lte)?[\s_]?(?:\d?\w?)[\s_]?(?:plus)?)\sbuild/i],[[MODEL,/_/g," "],[VENDOR,"Xiaomi"],[TYPE,MOBILE]],[/\b(mi[\s\-_]?(?:pad)(?:[\w\s_]+))(?:\sbuild|\))/i],[[MODEL,/_/g," "],[VENDOR,"Xiaomi"],[TYPE,TABLET]],[/;\s(\w+)\sbuild.+\soppo/i,/\s(cph[12]\d{3}|p(?:af|c[al]|d\w|e[ar])[mt]\d0|x9007)\b/i],[MODEL,[VENDOR,"OPPO"],[TYPE,MOBILE]],[/\svivo\s(\w+)(?:\sbuild|\))/i,/\s(v[12]\d{3}\w?[at])(?:\sbuild|;)/i],[MODEL,[VENDOR,"Vivo"],[TYPE,MOBILE]],[/\s(rmx[12]\d{3})(?:\sbuild|;)/i],[MODEL,[VENDOR,"Realme"],[TYPE,MOBILE]],[/\s(milestone|droid(?:[2-4x]|\s(?:bionic|x2|pro|razr))?:?(\s4g)?)\b[\w\s]+build\//i,/\smot(?:orola)?[\s-](\w*)/i,/((?:moto[\s\w\(\)]+|xt\d{3,4}|nexus\s6)(?=\sbuild|\)))/i],[MODEL,[VENDOR,"Motorola"],[TYPE,MOBILE]],[/\s(mz60\d|xoom[\s2]{0,2})\sbuild\//i],[MODEL,[VENDOR,"Motorola"],[TYPE,TABLET]],[/((?=lg)?[vl]k\-?\d{3})\sbuild|\s3\.[\s\w;-]{10}lg?-([06cv9]{3,4})/i],[MODEL,[VENDOR,"LG"],[TYPE,TABLET]],[/(lm-?f100[nv]?|nexus\s[45])/i,/lg[e;\s\/-]+((?!browser|netcast)\w+)/i,/\blg(\-?[\d\w]+)\sbuild/i],[MODEL,[VENDOR,"LG"],[TYPE,MOBILE]],[/(ideatab[\w\-\s]+)/i,/lenovo\s?(s(?:5000|6000)(?:[\w-]+)|tab(?:[\s\w]+)|yt[\d\w-]{6}|tb[\d\w-]{6})/i],[MODEL,[VENDOR,"Lenovo"],[TYPE,TABLET]],[/(?:maemo|nokia).*(n900|lumia\s\d+)/i,/nokia[\s_-]?([\w\.-]*)/i],[[MODEL,/_/g," "],[VENDOR,"Nokia"],[TYPE,MOBILE]],[/droid.+;\s(pixel\sc)[\s)]/i],[MODEL,[VENDOR,"Google"],[TYPE,TABLET]],[/droid.+;\s(pixel[\s\daxl]{0,6})(?:\sbuild|\))/i],[MODEL,[VENDOR,"Google"],[TYPE,MOBILE]],[/droid.+\s([c-g]\d{4}|so[-l]\w+|xq-a\w[4-7][12])(?=\sbuild\/|\).+chrome\/(?![1-6]{0,1}\d\.))/i],[MODEL,[VENDOR,"Sony"],[TYPE,MOBILE]],[/sony\stablet\s[ps]\sbuild\//i,/(?:sony)?sgp\w+(?:\sbuild\/|\))/i],[[MODEL,"Xperia Tablet"],[VENDOR,"Sony"],[TYPE,TABLET]],[/\s(kb2005|in20[12]5|be20[12][59])\b/i,/\ba000(1)\sbuild/i,/\boneplus\s(a\d{4})[\s)]/i],[MODEL,[VENDOR,"OnePlus"],[TYPE,MOBILE]],[/(alexa)webm/i,/(kf[a-z]{2}wi)(\sbuild\/|\))/i,/(kf[a-z]+)(\sbuild\/|\)).+silk\//i],[MODEL,[VENDOR,"Amazon"],[TYPE,TABLET]],[/(sd|kf)[0349hijorstuw]+(\sbuild\/|\)).+silk\//i],[[MODEL,"Fire Phone"],[VENDOR,"Amazon"],[TYPE,MOBILE]],[/\((playbook);[\w\s\),;-]+(rim)/i],[MODEL,VENDOR,[TYPE,TABLET]],[/((?:bb[a-f]|st[hv])100-\d)/i,/\(bb10;\s(\w+)/i],[MODEL,[VENDOR,"BlackBerry"],[TYPE,MOBILE]],[/(?:\b|asus_)(transfo[prime\s]{4,10}\s\w+|eeepc|slider\s\w+|nexus\s7|padfone|p00[cj])/i],[MODEL,[VENDOR,"ASUS"],[TYPE,TABLET]],[/\s(z[es]6[027][01][km][ls]|zenfone\s\d\w?)\b/i],[MODEL,[VENDOR,"ASUS"],[TYPE,MOBILE]],[/(nexus\s9)/i],[MODEL,[VENDOR,"HTC"],[TYPE,TABLET]],[/(htc)[;_\s-]{1,2}([\w\s]+(?=\)|\sbuild)|\w+)/i,/(zte)-(\w*)/i,/(alcatel|geeksphone|nexian|panasonic|(?=;\s)sony)[_\s-]?([\w-]*)/i],[VENDOR,[MODEL,/_/g," "],[TYPE,MOBILE]],[/droid[x\d\.\s;]+\s([ab][1-7]\-?[0178a]\d\d?)/i],[MODEL,[VENDOR,"Acer"],[TYPE,TABLET]],[/droid.+;\s(m[1-5]\snote)\sbuild/i,/\bmz-([\w-]{2,})/i],[MODEL,[VENDOR,"Meizu"],[TYPE,MOBILE]],[/(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron)[\s_-]?([\w-]*)/i,/(hp)\s([\w\s]+\w)/i,/(asus)-?(\w+)/i,/(microsoft);\s(lumia[\s\w]+)/i,/(lenovo)[_\s-]?([\w-]+)/i,/linux;.+(jolla);/i,/droid.+;\s(oppo)\s?([\w\s]+)\sbuild/i],[VENDOR,MODEL,[TYPE,MOBILE]],[/(archos)\s(gamepad2?)/i,/(hp).+(touchpad(?!.+tablet)|tablet)/i,/(kindle)\/([\w\.]+)/i,/\s(nook)[\w\s]+build\/(\w+)/i,/(dell)\s(strea[kpr\s\d]*[\dko])/i,/[;\/]\s?(le[\s\-]+pan)[\s\-]+(\w{1,9})\sbuild/i,/[;\/]\s?(trinity)[\-\s]*(t\d{3})\sbuild/i,/\b(gigaset)[\s\-]+(q\w{1,9})\sbuild/i,/\b(vodafone)\s([\w\s]+)(?:\)|\sbuild)/i],[VENDOR,MODEL,[TYPE,TABLET]],[/\s(surface\sduo)\s/i],[MODEL,[VENDOR,"Microsoft"],[TYPE,TABLET]],[/droid\s[\d\.]+;\s(fp\du?)\sbuild/i],[MODEL,[VENDOR,"Fairphone"],[TYPE,MOBILE]],[/\s(u304aa)\sbuild/i],[MODEL,[VENDOR,"AT&T"],[TYPE,MOBILE]],[/sie-(\w*)/i],[MODEL,[VENDOR,"Siemens"],[TYPE,MOBILE]],[/[;\/]\s?(rct\w+)\sbuild/i],[MODEL,[VENDOR,"RCA"],[TYPE,TABLET]],[/[;\/\s](venue[\d\s]{2,7})\sbuild/i],[MODEL,[VENDOR,"Dell"],[TYPE,TABLET]],[/[;\/]\s?(q(?:mv|ta)\w+)\sbuild/i],[MODEL,[VENDOR,"Verizon"],[TYPE,TABLET]],[/[;\/]\s(?:barnes[&\s]+noble\s|bn[rt])([\w\s\+]*)\sbuild/i],[MODEL,[VENDOR,"Barnes & Noble"],[TYPE,TABLET]],[/[;\/]\s(tm\d{3}\w+)\sbuild/i],[MODEL,[VENDOR,"NuVision"],[TYPE,TABLET]],[/;\s(k88)\sbuild/i],[MODEL,[VENDOR,"ZTE"],[TYPE,TABLET]],[/;\s(nx\d{3}j)\sbuild/i],[MODEL,[VENDOR,"ZTE"],[TYPE,MOBILE]],[/[;\/]\s?(gen\d{3})\sbuild.*49h/i],[MODEL,[VENDOR,"Swiss"],[TYPE,MOBILE]],[/[;\/]\s?(zur\d{3})\sbuild/i],[MODEL,[VENDOR,"Swiss"],[TYPE,TABLET]],[/[;\/]\s?((zeki)?tb.*\b)\sbuild/i],[MODEL,[VENDOR,"Zeki"],[TYPE,TABLET]],[/[;\/]\s([yr]\d{2})\sbuild/i,/[;\/]\s(dragon[\-\s]+touch\s|dt)(\w{5})\sbuild/i],[[VENDOR,"Dragon Touch"],MODEL,[TYPE,TABLET]],[/[;\/]\s?(ns-?\w{0,9})\sbuild/i],[MODEL,[VENDOR,"Insignia"],[TYPE,TABLET]],[/[;\/]\s?((nxa|Next)-?\w{0,9})\sbuild/i],[MODEL,[VENDOR,"NextBook"],[TYPE,TABLET]],[/[;\/]\s?(xtreme\_)?(v(1[045]|2[015]|[3469]0|7[05]))\sbuild/i],[[VENDOR,"Voice"],MODEL,[TYPE,MOBILE]],[/[;\/]\s?(lvtel\-)?(v1[12])\sbuild/i],[[VENDOR,"LvTel"],MODEL,[TYPE,MOBILE]],[/;\s(ph-1)\s/i],[MODEL,[VENDOR,"Essential"],[TYPE,MOBILE]],[/[;\/]\s?(v(100md|700na|7011|917g).*\b)\sbuild/i],[MODEL,[VENDOR,"Envizen"],[TYPE,TABLET]],[/[;\/]\s?(trio[\s\w\-\.]+)\sbuild/i],[MODEL,[VENDOR,"MachSpeed"],[TYPE,TABLET]],[/[;\/]\s?tu_(1491)\sbuild/i],[MODEL,[VENDOR,"Rotor"],[TYPE,TABLET]],[/(shield[\w\s]+)\sbuild/i],[MODEL,[VENDOR,"Nvidia"],[TYPE,TABLET]],[/(sprint)\s(\w+)/i],[VENDOR,MODEL,[TYPE,MOBILE]],[/(kin\.[onetw]{3})/i],[[MODEL,/\./g," "],[VENDOR,"Microsoft"],[TYPE,MOBILE]],[/droid\s[\d\.]+;\s(cc6666?|et5[16]|mc[239][23]x?|vc8[03]x?)\)/i],[MODEL,[VENDOR,"Zebra"],[TYPE,TABLET]],[/droid\s[\d\.]+;\s(ec30|ps20|tc[2-8]\d[kx])\)/i],[MODEL,[VENDOR,"Zebra"],[TYPE,MOBILE]],[/\s(ouya)\s/i,/(nintendo)\s([wids3utch]+)/i],[VENDOR,MODEL,[TYPE,CONSOLE]],[/droid.+;\s(shield)\sbuild/i],[MODEL,[VENDOR,"Nvidia"],[TYPE,CONSOLE]],[/(playstation\s[345portablevi]+)/i],[MODEL,[VENDOR,"Sony"],[TYPE,CONSOLE]],[/[\s\(;](xbox(?:\sone)?(?!;\sxbox))[\s\);]/i],[MODEL,[VENDOR,"Microsoft"],[TYPE,CONSOLE]],[/smart-tv.+(samsung)/i],[VENDOR,[TYPE,SMARTTV]],[/hbbtv.+maple;(\d+)/i],[[MODEL,/^/,"SmartTV"],[VENDOR,"Samsung"],[TYPE,SMARTTV]],[/(?:linux;\snetcast.+smarttv|lg\snetcast\.tv-201\d)/i],[[VENDOR,"LG"],[TYPE,SMARTTV]],[/(apple)\s?tv/i],[VENDOR,[MODEL,"Apple TV"],[TYPE,SMARTTV]],[/crkey/i],[[MODEL,"Chromecast"],[VENDOR,"Google"],[TYPE,SMARTTV]],[/droid.+aft([\w])(\sbuild\/|\))/i],[MODEL,[VENDOR,"Amazon"],[TYPE,SMARTTV]],[/\(dtv[\);].+(aquos)/i],[MODEL,[VENDOR,"Sharp"],[TYPE,SMARTTV]],[/hbbtv\/\d+\.\d+\.\d+\s+\([\w\s]*;\s*(\w[^;]*);([^;]*)/i],[[VENDOR,util.trim],[MODEL,util.trim],[TYPE,SMARTTV]],[/[\s\/\(](android\s|smart[-\s]?|opera\s)tv[;\)\s]/i],[[TYPE,SMARTTV]],[/((pebble))app\/[\d\.]+\s/i],[VENDOR,MODEL,[TYPE,WEARABLE]],[/droid.+;\s(glass)\s\d/i],[MODEL,[VENDOR,"Google"],[TYPE,WEARABLE]],[/droid\s[\d\.]+;\s(wt63?0{2,3})\)/i],[MODEL,[VENDOR,"Zebra"],[TYPE,WEARABLE]],[/(tesla)(?:\sqtcarbrowser|\/20[12]\d\.[\w\.-]+)/i],[VENDOR,[TYPE,EMBEDDED]],[/droid .+?; ([^;]+?)(?: build|\) applewebkit).+? mobile safari/i],[MODEL,[TYPE,MOBILE]],[/droid .+?;\s([^;]+?)(?: build|\) applewebkit).+?(?! mobile) safari/i],[MODEL,[TYPE,TABLET]],[/\s(tablet|tab)[;\/]/i,/\s(mobile)(?:[;\/]|\ssafari)/i],[[TYPE,util.lowerize]],[/(android[\w\.\s\-]{0,9});.+build/i],[MODEL,[VENDOR,"Generic"]],[/(phone)/i],[[TYPE,MOBILE]]],engine:[[/windows.+\sedge\/([\w\.]+)/i],[VERSION,[NAME,"EdgeHTML"]],[/webkit\/537\.36.+chrome\/(?!27)([\w\.]+)/i],[VERSION,[NAME,"Blink"]],[/(presto)\/([\w\.]+)/i,/(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna)\/([\w\.]+)/i,/ekioh(flow)\/([\w\.]+)/i,/(khtml|tasman|links)[\/\s]\(?([\w\.]+)/i,/(icab)[\/\s]([23]\.[\d\.]+)/i],[NAME,VERSION],[/rv\:([\w\.]{1,9})\b.+(gecko)/i],[VERSION,NAME]],os:[[/microsoft\s(windows)\s(vista|xp)/i],[NAME,VERSION],[/(windows)\snt\s6\.2;\s(arm)/i,/(windows\sphone(?:\sos)*)[\s\/]?([\d\.\s\w]*)/i,/(windows\smobile|windows)[\s\/]?([ntce\d\.\s]+\w)(?!.+xbox)/i],[NAME,[VERSION,mapper.str,maps.os.windows.version]],[/(win(?=3|9|n)|win\s9x\s)([nt\d\.]+)/i],[[NAME,"Windows"],[VERSION,mapper.str,maps.os.windows.version]],[/ip[honead]{2,4}\b(?:.*os\s([\w]+)\slike\smac|;\sopera)/i,/cfnetwork\/.+darwin/i],[[VERSION,/_/g,"."],[NAME,"iOS"]],[/(mac\sos\sx)\s?([\w\s\.]*)/i,/(macintosh|mac(?=_powerpc)\s)(?!.+haiku)/i],[[NAME,"Mac OS"],[VERSION,/_/g,"."]],[/(android|webos|palm\sos|qnx|bada|rim\stablet\sos|meego|sailfish|contiki)[\/\s-]?([\w\.]*)/i,/(blackberry)\w*\/([\w\.]*)/i,/(tizen|kaios)[\/\s]([\w\.]+)/i,/\((series40);/i],[NAME,VERSION],[/\(bb(10);/i],[VERSION,[NAME,"BlackBerry"]],[/(?:symbian\s?os|symbos|s60(?=;)|series60)[\/\s-]?([\w\.]*)/i],[VERSION,[NAME,"Symbian"]],[/mozilla.+\(mobile;.+gecko.+firefox/i],[[NAME,"Firefox OS"]],[/web0s;.+rt(tv)/i,/\b(?:hp)?wos(?:browser)?\/([\w\.]+)/i],[VERSION,[NAME,"webOS"]],[/crkey\/([\d\.]+)/i],[VERSION,[NAME,"Chromecast"]],[/(cros)\s[\w]+\s([\w\.]+\w)/i],[[NAME,"Chromium OS"],VERSION],[/(nintendo|playstation)\s([wids345portablevuch]+)/i,/(xbox);\s+xbox\s([^\);]+)/i,/(mint)[\/\s\(\)]?(\w*)/i,/(mageia|vectorlinux)[;\s]/i,/(joli|[kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?=\slinux)|slackware|fedora|mandriva|centos|pclinuxos|redhat|zenwalk|linpus|raspbian)(?:\sgnu\/linux)?(?:\slinux)?[\/\s-]?(?!chrom|package)([\w\.-]*)/i,/(hurd|linux)\s?([\w\.]*)/i,/(gnu)\s?([\w\.]*)/i,/\s([frentopc-]{0,4}bsd|dragonfly)\s?(?!amd|[ix346]{1,2}86)([\w\.]*)/i,/(haiku)\s(\w+)/i],[NAME,VERSION],[/(sunos)\s?([\w\.\d]*)/i],[[NAME,"Solaris"],VERSION],[/((?:open)?solaris)[\/\s-]?([\w\.]*)/i,/(aix)\s((\d)(?=\.|\)|\s)[\w\.])*/i,/(plan\s9|minix|beos|os\/2|amigaos|morphos|risc\sos|openvms|fuchsia)/i,/(unix)\s?([\w\.]*)/i],[NAME,VERSION]]};var UAParser=function(ua,extensions){if(typeof ua==="object"){extensions=ua;ua=undefined}if(!(this instanceof UAParser)){return new UAParser(ua,extensions).getResult()}var _ua=ua||(typeof window!=="undefined"&&window.navigator&&window.navigator.userAgent?window.navigator.userAgent:EMPTY);var _rgxmap=extensions?util.extend(regexes,extensions):regexes;this.getBrowser=function(){var _browser={name:undefined,version:undefined};mapper.rgx.call(_browser,_ua,_rgxmap.browser);_browser.major=util.major(_browser.version);return _browser};this.getCPU=function(){var _cpu={architecture:undefined};mapper.rgx.call(_cpu,_ua,_rgxmap.cpu);return _cpu};this.getDevice=function(){var _device={vendor:undefined,model:undefined,type:undefined};mapper.rgx.call(_device,_ua,_rgxmap.device);return _device};this.getEngine=function(){var _engine={name:undefined,version:undefined};mapper.rgx.call(_engine,_ua,_rgxmap.engine);return _engine};this.getOS=function(){var _os={name:undefined,version:undefined};mapper.rgx.call(_os,_ua,_rgxmap.os);return _os};this.getResult=function(){return{ua:this.getUA(),browser:this.getBrowser(),engine:this.getEngine(),os:this.getOS(),device:this.getDevice(),cpu:this.getCPU()}};this.getUA=function(){return _ua};this.setUA=function(ua){_ua=typeof ua===STR_TYPE&&ua.length>UA_MAX_LENGTH?util.trim(ua,UA_MAX_LENGTH):ua;return this};this.setUA(_ua);return this};UAParser.VERSION=LIBVERSION;UAParser.BROWSER={NAME:NAME,MAJOR:MAJOR,VERSION:VERSION};UAParser.CPU={ARCHITECTURE:ARCHITECTURE};UAParser.DEVICE={MODEL:MODEL,VENDOR:VENDOR,TYPE:TYPE,CONSOLE:CONSOLE,MOBILE:MOBILE,SMARTTV:SMARTTV,TABLET:TABLET,WEARABLE:WEARABLE,EMBEDDED:EMBEDDED};UAParser.ENGINE={NAME:NAME,VERSION:VERSION};UAParser.OS={NAME:NAME,VERSION:VERSION};if(typeof exports!==UNDEF_TYPE){if(typeof module!==UNDEF_TYPE&&module.exports){exports=module.exports=UAParser}exports.UAParser=UAParser}else{if(typeof define==="function"&&define.amd){define(function(){return UAParser})}else if(typeof window!=="undefined"){window.UAParser=UAParser}}var $=typeof window!=="undefined"&&(window.jQuery||window.Zepto);if($&&!$.ua){var parser=new UAParser;$.ua=parser.getResult();$.ua.get=function(){return parser.getUA()};$.ua.set=function(uastring){parser.setUA(uastring);var result=parser.getResult();for(var prop in result){$.ua[prop]=result[prop]}}}})(typeof window==="object"?window:this); 1 /* UAParser.js v0.7.31 2 Copyright © 2012-2021 Faisal Salman <f@faisalman.com> 3 MIT License */ 4 (function(window,undefined){"use strict";var LIBVERSION="0.7.31",EMPTY="",UNKNOWN="?",FUNC_TYPE="function",UNDEF_TYPE="undefined",OBJ_TYPE="object",STR_TYPE="string",MAJOR="major",MODEL="model",NAME="name",TYPE="type",VENDOR="vendor",VERSION="version",ARCHITECTURE="architecture",CONSOLE="console",MOBILE="mobile",TABLET="tablet",SMARTTV="smarttv",WEARABLE="wearable",EMBEDDED="embedded",UA_MAX_LENGTH=255;var AMAZON="Amazon",APPLE="Apple",ASUS="ASUS",BLACKBERRY="BlackBerry",BROWSER="Browser",CHROME="Chrome",EDGE="Edge",FIREFOX="Firefox",GOOGLE="Google",HUAWEI="Huawei",LG="LG",MICROSOFT="Microsoft",MOTOROLA="Motorola",OPERA="Opera",SAMSUNG="Samsung",SONY="Sony",XIAOMI="Xiaomi",ZEBRA="Zebra",FACEBOOK="Facebook";var extend=function(regexes,extensions){var mergedRegexes={};for(var i in regexes){if(extensions[i]&&extensions[i].length%2===0){mergedRegexes[i]=extensions[i].concat(regexes[i])}else{mergedRegexes[i]=regexes[i]}}return mergedRegexes},enumerize=function(arr){var enums={};for(var i=0;i<arr.length;i++){enums[arr[i].toUpperCase()]=arr[i]}return enums},has=function(str1,str2){return typeof str1===STR_TYPE?lowerize(str2).indexOf(lowerize(str1))!==-1:false},lowerize=function(str){return str.toLowerCase()},majorize=function(version){return typeof version===STR_TYPE?version.replace(/[^\d\.]/g,EMPTY).split(".")[0]:undefined},trim=function(str,len){if(typeof str===STR_TYPE){str=str.replace(/^\s\s*/,EMPTY).replace(/\s\s*$/,EMPTY);return typeof len===UNDEF_TYPE?str:str.substring(0,UA_MAX_LENGTH)}};var rgxMapper=function(ua,arrays){var i=0,j,k,p,q,matches,match;while(i<arrays.length&&!matches){var regex=arrays[i],props=arrays[i+1];j=k=0;while(j<regex.length&&!matches){matches=regex[j++].exec(ua);if(!!matches){for(p=0;p<props.length;p++){match=matches[++k];q=props[p];if(typeof q===OBJ_TYPE&&q.length>0){if(q.length===2){if(typeof q[1]==FUNC_TYPE){this[q[0]]=q[1].call(this,match)}else{this[q[0]]=q[1]}}else if(q.length===3){if(typeof q[1]===FUNC_TYPE&&!(q[1].exec&&q[1].test)){this[q[0]]=match?q[1].call(this,match,q[2]):undefined}else{this[q[0]]=match?match.replace(q[1],q[2]):undefined}}else if(q.length===4){this[q[0]]=match?q[3].call(this,match.replace(q[1],q[2])):undefined}}else{this[q]=match?match:undefined}}}}i+=2}},strMapper=function(str,map){for(var i in map){if(typeof map[i]===OBJ_TYPE&&map[i].length>0){for(var j=0;j<map[i].length;j++){if(has(map[i][j],str)){return i===UNKNOWN?undefined:i}}}else if(has(map[i],str)){return i===UNKNOWN?undefined:i}}return str};var oldSafariMap={"1.0":"/8",1.2:"/1",1.3:"/3","2.0":"/412","2.0.2":"/416","2.0.3":"/417","2.0.4":"/419","?":"/"},windowsVersionMap={ME:"4.90","NT 3.11":"NT3.51","NT 4.0":"NT4.0",2e3:"NT 5.0",XP:["NT 5.1","NT 5.2"],Vista:"NT 6.0",7:"NT 6.1",8:"NT 6.2",8.1:"NT 6.3",10:["NT 6.4","NT 10.0"],RT:"ARM"};var regexes={browser:[[/\b(?:crmo|crios)\/([\w\.]+)/i],[VERSION,[NAME,"Chrome"]],[/edg(?:e|ios|a)?\/([\w\.]+)/i],[VERSION,[NAME,"Edge"]],[/(opera mini)\/([-\w\.]+)/i,/(opera [mobiletab]{3,6})\b.+version\/([-\w\.]+)/i,/(opera)(?:.+version\/|[\/ ]+)([\w\.]+)/i],[NAME,VERSION],[/opios[\/ ]+([\w\.]+)/i],[VERSION,[NAME,OPERA+" Mini"]],[/\bopr\/([\w\.]+)/i],[VERSION,[NAME,OPERA]],[/(kindle)\/([\w\.]+)/i,/(lunascape|maxthon|netfront|jasmine|blazer)[\/ ]?([\w\.]*)/i,/(avant |iemobile|slim)(?:browser)?[\/ ]?([\w\.]*)/i,/(ba?idubrowser)[\/ ]?([\w\.]+)/i,/(?:ms|\()(ie) ([\w\.]+)/i,/(flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark|qupzilla|falkon|rekonq|puffin|brave|whale|qqbrowserlite|qq)\/([-\w\.]+)/i,/(weibo)__([\d\.]+)/i],[NAME,VERSION],[/(?:\buc? ?browser|(?:juc.+)ucweb)[\/ ]?([\w\.]+)/i],[VERSION,[NAME,"UC"+BROWSER]],[/\bqbcore\/([\w\.]+)/i],[VERSION,[NAME,"WeChat(Win) Desktop"]],[/micromessenger\/([\w\.]+)/i],[VERSION,[NAME,"WeChat"]],[/konqueror\/([\w\.]+)/i],[VERSION,[NAME,"Konqueror"]],[/trident.+rv[: ]([\w\.]{1,9})\b.+like gecko/i],[VERSION,[NAME,"IE"]],[/yabrowser\/([\w\.]+)/i],[VERSION,[NAME,"Yandex"]],[/(avast|avg)\/([\w\.]+)/i],[[NAME,/(.+)/,"$1 Secure "+BROWSER],VERSION],[/\bfocus\/([\w\.]+)/i],[VERSION,[NAME,FIREFOX+" Focus"]],[/\bopt\/([\w\.]+)/i],[VERSION,[NAME,OPERA+" Touch"]],[/coc_coc\w+\/([\w\.]+)/i],[VERSION,[NAME,"Coc Coc"]],[/dolfin\/([\w\.]+)/i],[VERSION,[NAME,"Dolphin"]],[/coast\/([\w\.]+)/i],[VERSION,[NAME,OPERA+" Coast"]],[/miuibrowser\/([\w\.]+)/i],[VERSION,[NAME,"MIUI "+BROWSER]],[/fxios\/([-\w\.]+)/i],[VERSION,[NAME,FIREFOX]],[/\bqihu|(qi?ho?o?|360)browser/i],[[NAME,"360 "+BROWSER]],[/(oculus|samsung|sailfish)browser\/([\w\.]+)/i],[[NAME,/(.+)/,"$1 "+BROWSER],VERSION],[/(comodo_dragon)\/([\w\.]+)/i],[[NAME,/_/g," "],VERSION],[/(electron)\/([\w\.]+) safari/i,/(tesla)(?: qtcarbrowser|\/(20\d\d\.[-\w\.]+))/i,/m?(qqbrowser|baiduboxapp|2345Explorer)[\/ ]?([\w\.]+)/i],[NAME,VERSION],[/(metasr)[\/ ]?([\w\.]+)/i,/(lbbrowser)/i],[NAME],[/((?:fban\/fbios|fb_iab\/fb4a)(?!.+fbav)|;fbav\/([\w\.]+);)/i],[[NAME,FACEBOOK],VERSION],[/safari (line)\/([\w\.]+)/i,/\b(line)\/([\w\.]+)\/iab/i,/(chromium|instagram)[\/ ]([-\w\.]+)/i],[NAME,VERSION],[/\bgsa\/([\w\.]+) .*safari\//i],[VERSION,[NAME,"GSA"]],[/headlesschrome(?:\/([\w\.]+)| )/i],[VERSION,[NAME,CHROME+" Headless"]],[/ wv\).+(chrome)\/([\w\.]+)/i],[[NAME,CHROME+" WebView"],VERSION],[/droid.+ version\/([\w\.]+)\b.+(?:mobile safari|safari)/i],[VERSION,[NAME,"Android "+BROWSER]],[/(chrome|omniweb|arora|[tizenoka]{5} ?browser)\/v?([\w\.]+)/i],[NAME,VERSION],[/version\/([\w\.]+) .*mobile\/\w+ (safari)/i],[VERSION,[NAME,"Mobile Safari"]],[/version\/([\w\.]+) .*(mobile ?safari|safari)/i],[VERSION,NAME],[/webkit.+?(mobile ?safari|safari)(\/[\w\.]+)/i],[NAME,[VERSION,strMapper,oldSafariMap]],[/(webkit|khtml)\/([\w\.]+)/i],[NAME,VERSION],[/(navigator|netscape\d?)\/([-\w\.]+)/i],[[NAME,"Netscape"],VERSION],[/mobile vr; rv:([\w\.]+)\).+firefox/i],[VERSION,[NAME,FIREFOX+" Reality"]],[/ekiohf.+(flow)\/([\w\.]+)/i,/(swiftfox)/i,/(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror|klar)[\/ ]?([\w\.\+]+)/i,/(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\/([-\w\.]+)$/i,/(firefox)\/([\w\.]+)/i,/(mozilla)\/([\w\.]+) .+rv\:.+gecko\/\d+/i,/(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir|obigo|mosaic|(?:go|ice|up)[\. ]?browser)[-\/ ]?v?([\w\.]+)/i,/(links) \(([\w\.]+)/i],[NAME,VERSION]],cpu:[[/(?:(amd|x(?:(?:86|64)[-_])?|wow|win)64)[;\)]/i],[[ARCHITECTURE,"amd64"]],[/(ia32(?=;))/i],[[ARCHITECTURE,lowerize]],[/((?:i[346]|x)86)[;\)]/i],[[ARCHITECTURE,"ia32"]],[/\b(aarch64|arm(v?8e?l?|_?64))\b/i],[[ARCHITECTURE,"arm64"]],[/\b(arm(?:v[67])?ht?n?[fl]p?)\b/i],[[ARCHITECTURE,"armhf"]],[/windows (ce|mobile); ppc;/i],[[ARCHITECTURE,"arm"]],[/((?:ppc|powerpc)(?:64)?)(?: mac|;|\))/i],[[ARCHITECTURE,/ower/,EMPTY,lowerize]],[/(sun4\w)[;\)]/i],[[ARCHITECTURE,"sparc"]],[/((?:avr32|ia64(?=;))|68k(?=\))|\barm(?=v(?:[1-7]|[5-7]1)l?|;|eabi)|(?=atmel )avr|(?:irix|mips|sparc)(?:64)?\b|pa-risc)/i],[[ARCHITECTURE,lowerize]]],device:[[/\b(sch-i[89]0\d|shw-m380s|sm-[pt]\w{2,4}|gt-[pn]\d{2,4}|sgh-t8[56]9|nexus 10)/i],[MODEL,[VENDOR,SAMSUNG],[TYPE,TABLET]],[/\b((?:s[cgp]h|gt|sm)-\w+|galaxy nexus)/i,/samsung[- ]([-\w]+)/i,/sec-(sgh\w+)/i],[MODEL,[VENDOR,SAMSUNG],[TYPE,MOBILE]],[/\((ip(?:hone|od)[\w ]*);/i],[MODEL,[VENDOR,APPLE],[TYPE,MOBILE]],[/\((ipad);[-\w\),; ]+apple/i,/applecoremedia\/[\w\.]+ \((ipad)/i,/\b(ipad)\d\d?,\d\d?[;\]].+ios/i],[MODEL,[VENDOR,APPLE],[TYPE,TABLET]],[/\b((?:ag[rs][23]?|bah2?|sht?|btv)-a?[lw]\d{2})\b(?!.+d\/s)/i],[MODEL,[VENDOR,HUAWEI],[TYPE,TABLET]],[/(?:huawei|honor)([-\w ]+)[;\)]/i,/\b(nexus 6p|\w{2,4}-[atu]?[ln][01259x][012359][an]?)\b(?!.+d\/s)/i],[MODEL,[VENDOR,HUAWEI],[TYPE,MOBILE]],[/\b(poco[\w ]+)(?: bui|\))/i,/\b; (\w+) build\/hm\1/i,/\b(hm[-_ ]?note?[_ ]?(?:\d\w)?) bui/i,/\b(redmi[\-_ ]?(?:note|k)?[\w_ ]+)(?: bui|\))/i,/\b(mi[-_ ]?(?:a\d|one|one[_ ]plus|note lte|max)?[_ ]?(?:\d?\w?)[_ ]?(?:plus|se|lite)?)(?: bui|\))/i],[[MODEL,/_/g," "],[VENDOR,XIAOMI],[TYPE,MOBILE]],[/\b(mi[-_ ]?(?:pad)(?:[\w_ ]+))(?: bui|\))/i],[[MODEL,/_/g," "],[VENDOR,XIAOMI],[TYPE,TABLET]],[/; (\w+) bui.+ oppo/i,/\b(cph[12]\d{3}|p(?:af|c[al]|d\w|e[ar])[mt]\d0|x9007|a101op)\b/i],[MODEL,[VENDOR,"OPPO"],[TYPE,MOBILE]],[/vivo (\w+)(?: bui|\))/i,/\b(v[12]\d{3}\w?[at])(?: bui|;)/i],[MODEL,[VENDOR,"Vivo"],[TYPE,MOBILE]],[/\b(rmx[12]\d{3})(?: bui|;|\))/i],[MODEL,[VENDOR,"Realme"],[TYPE,MOBILE]],[/\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\b[\w ]+build\//i,/\bmot(?:orola)?[- ](\w*)/i,/((?:moto[\w\(\) ]+|xt\d{3,4}|nexus 6)(?= bui|\)))/i],[MODEL,[VENDOR,MOTOROLA],[TYPE,MOBILE]],[/\b(mz60\d|xoom[2 ]{0,2}) build\//i],[MODEL,[VENDOR,MOTOROLA],[TYPE,TABLET]],[/((?=lg)?[vl]k\-?\d{3}) bui| 3\.[-\w; ]{10}lg?-([06cv9]{3,4})/i],[MODEL,[VENDOR,LG],[TYPE,TABLET]],[/(lm(?:-?f100[nv]?|-[\w\.]+)(?= bui|\))|nexus [45])/i,/\blg[-e;\/ ]+((?!browser|netcast|android tv)\w+)/i,/\blg-?([\d\w]+) bui/i],[MODEL,[VENDOR,LG],[TYPE,MOBILE]],[/(ideatab[-\w ]+)/i,/lenovo ?(s[56]000[-\w]+|tab(?:[\w ]+)|yt[-\d\w]{6}|tb[-\d\w]{6})/i],[MODEL,[VENDOR,"Lenovo"],[TYPE,TABLET]],[/(?:maemo|nokia).*(n900|lumia \d+)/i,/nokia[-_ ]?([-\w\.]*)/i],[[MODEL,/_/g," "],[VENDOR,"Nokia"],[TYPE,MOBILE]],[/(pixel c)\b/i],[MODEL,[VENDOR,GOOGLE],[TYPE,TABLET]],[/droid.+; (pixel[\daxl ]{0,6})(?: bui|\))/i],[MODEL,[VENDOR,GOOGLE],[TYPE,MOBILE]],[/droid.+ ([c-g]\d{4}|so[-gl]\w+|xq-a\w[4-7][12])(?= bui|\).+chrome\/(?![1-6]{0,1}\d\.))/i],[MODEL,[VENDOR,SONY],[TYPE,MOBILE]],[/sony tablet [ps]/i,/\b(?:sony)?sgp\w+(?: bui|\))/i],[[MODEL,"Xperia Tablet"],[VENDOR,SONY],[TYPE,TABLET]],[/ (kb2005|in20[12]5|be20[12][59])\b/i,/(?:one)?(?:plus)? (a\d0\d\d)(?: b|\))/i],[MODEL,[VENDOR,"OnePlus"],[TYPE,MOBILE]],[/(alexa)webm/i,/(kf[a-z]{2}wi)( bui|\))/i,/(kf[a-z]+)( bui|\)).+silk\//i],[MODEL,[VENDOR,AMAZON],[TYPE,TABLET]],[/((?:sd|kf)[0349hijorstuw]+)( bui|\)).+silk\//i],[[MODEL,/(.+)/g,"Fire Phone $1"],[VENDOR,AMAZON],[TYPE,MOBILE]],[/(playbook);[-\w\),; ]+(rim)/i],[MODEL,VENDOR,[TYPE,TABLET]],[/\b((?:bb[a-f]|st[hv])100-\d)/i,/\(bb10; (\w+)/i],[MODEL,[VENDOR,BLACKBERRY],[TYPE,MOBILE]],[/(?:\b|asus_)(transfo[prime ]{4,10} \w+|eeepc|slider \w+|nexus 7|padfone|p00[cj])/i],[MODEL,[VENDOR,ASUS],[TYPE,TABLET]],[/ (z[bes]6[027][012][km][ls]|zenfone \d\w?)\b/i],[MODEL,[VENDOR,ASUS],[TYPE,MOBILE]],[/(nexus 9)/i],[MODEL,[VENDOR,"HTC"],[TYPE,TABLET]],[/(htc)[-;_ ]{1,2}([\w ]+(?=\)| bui)|\w+)/i,/(zte)[- ]([\w ]+?)(?: bui|\/|\))/i,/(alcatel|geeksphone|nexian|panasonic|sony)[-_ ]?([-\w]*)/i],[VENDOR,[MODEL,/_/g," "],[TYPE,MOBILE]],[/droid.+; ([ab][1-7]-?[0178a]\d\d?)/i],[MODEL,[VENDOR,"Acer"],[TYPE,TABLET]],[/droid.+; (m[1-5] note) bui/i,/\bmz-([-\w]{2,})/i],[MODEL,[VENDOR,"Meizu"],[TYPE,MOBILE]],[/\b(sh-?[altvz]?\d\d[a-ekm]?)/i],[MODEL,[VENDOR,"Sharp"],[TYPE,MOBILE]],[/(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron)[-_ ]?([-\w]*)/i,/(hp) ([\w ]+\w)/i,/(asus)-?(\w+)/i,/(microsoft); (lumia[\w ]+)/i,/(lenovo)[-_ ]?([-\w]+)/i,/(jolla)/i,/(oppo) ?([\w ]+) bui/i],[VENDOR,MODEL,[TYPE,MOBILE]],[/(archos) (gamepad2?)/i,/(hp).+(touchpad(?!.+tablet)|tablet)/i,/(kindle)\/([\w\.]+)/i,/(nook)[\w ]+build\/(\w+)/i,/(dell) (strea[kpr\d ]*[\dko])/i,/(le[- ]+pan)[- ]+(\w{1,9}) bui/i,/(trinity)[- ]*(t\d{3}) bui/i,/(gigaset)[- ]+(q\w{1,9}) bui/i,/(vodafone) ([\w ]+)(?:\)| bui)/i],[VENDOR,MODEL,[TYPE,TABLET]],[/(surface duo)/i],[MODEL,[VENDOR,MICROSOFT],[TYPE,TABLET]],[/droid [\d\.]+; (fp\du?)(?: b|\))/i],[MODEL,[VENDOR,"Fairphone"],[TYPE,MOBILE]],[/(u304aa)/i],[MODEL,[VENDOR,"AT&T"],[TYPE,MOBILE]],[/\bsie-(\w*)/i],[MODEL,[VENDOR,"Siemens"],[TYPE,MOBILE]],[/\b(rct\w+) b/i],[MODEL,[VENDOR,"RCA"],[TYPE,TABLET]],[/\b(venue[\d ]{2,7}) b/i],[MODEL,[VENDOR,"Dell"],[TYPE,TABLET]],[/\b(q(?:mv|ta)\w+) b/i],[MODEL,[VENDOR,"Verizon"],[TYPE,TABLET]],[/\b(?:barnes[& ]+noble |bn[rt])([\w\+ ]*) b/i],[MODEL,[VENDOR,"Barnes & Noble"],[TYPE,TABLET]],[/\b(tm\d{3}\w+) b/i],[MODEL,[VENDOR,"NuVision"],[TYPE,TABLET]],[/\b(k88) b/i],[MODEL,[VENDOR,"ZTE"],[TYPE,TABLET]],[/\b(nx\d{3}j) b/i],[MODEL,[VENDOR,"ZTE"],[TYPE,MOBILE]],[/\b(gen\d{3}) b.+49h/i],[MODEL,[VENDOR,"Swiss"],[TYPE,MOBILE]],[/\b(zur\d{3}) b/i],[MODEL,[VENDOR,"Swiss"],[TYPE,TABLET]],[/\b((zeki)?tb.*\b) b/i],[MODEL,[VENDOR,"Zeki"],[TYPE,TABLET]],[/\b([yr]\d{2}) b/i,/\b(dragon[- ]+touch |dt)(\w{5}) b/i],[[VENDOR,"Dragon Touch"],MODEL,[TYPE,TABLET]],[/\b(ns-?\w{0,9}) b/i],[MODEL,[VENDOR,"Insignia"],[TYPE,TABLET]],[/\b((nxa|next)-?\w{0,9}) b/i],[MODEL,[VENDOR,"NextBook"],[TYPE,TABLET]],[/\b(xtreme\_)?(v(1[045]|2[015]|[3469]0|7[05])) b/i],[[VENDOR,"Voice"],MODEL,[TYPE,MOBILE]],[/\b(lvtel\-)?(v1[12]) b/i],[[VENDOR,"LvTel"],MODEL,[TYPE,MOBILE]],[/\b(ph-1) /i],[MODEL,[VENDOR,"Essential"],[TYPE,MOBILE]],[/\b(v(100md|700na|7011|917g).*\b) b/i],[MODEL,[VENDOR,"Envizen"],[TYPE,TABLET]],[/\b(trio[-\w\. ]+) b/i],[MODEL,[VENDOR,"MachSpeed"],[TYPE,TABLET]],[/\btu_(1491) b/i],[MODEL,[VENDOR,"Rotor"],[TYPE,TABLET]],[/(shield[\w ]+) b/i],[MODEL,[VENDOR,"Nvidia"],[TYPE,TABLET]],[/(sprint) (\w+)/i],[VENDOR,MODEL,[TYPE,MOBILE]],[/(kin\.[onetw]{3})/i],[[MODEL,/\./g," "],[VENDOR,MICROSOFT],[TYPE,MOBILE]],[/droid.+; (cc6666?|et5[16]|mc[239][23]x?|vc8[03]x?)\)/i],[MODEL,[VENDOR,ZEBRA],[TYPE,TABLET]],[/droid.+; (ec30|ps20|tc[2-8]\d[kx])\)/i],[MODEL,[VENDOR,ZEBRA],[TYPE,MOBILE]],[/(ouya)/i,/(nintendo) ([wids3utch]+)/i],[VENDOR,MODEL,[TYPE,CONSOLE]],[/droid.+; (shield) bui/i],[MODEL,[VENDOR,"Nvidia"],[TYPE,CONSOLE]],[/(playstation [345portablevi]+)/i],[MODEL,[VENDOR,SONY],[TYPE,CONSOLE]],[/\b(xbox(?: one)?(?!; xbox))[\); ]/i],[MODEL,[VENDOR,MICROSOFT],[TYPE,CONSOLE]],[/smart-tv.+(samsung)/i],[VENDOR,[TYPE,SMARTTV]],[/hbbtv.+maple;(\d+)/i],[[MODEL,/^/,"SmartTV"],[VENDOR,SAMSUNG],[TYPE,SMARTTV]],[/(nux; netcast.+smarttv|lg (netcast\.tv-201\d|android tv))/i],[[VENDOR,LG],[TYPE,SMARTTV]],[/(apple) ?tv/i],[VENDOR,[MODEL,APPLE+" TV"],[TYPE,SMARTTV]],[/crkey/i],[[MODEL,CHROME+"cast"],[VENDOR,GOOGLE],[TYPE,SMARTTV]],[/droid.+aft(\w)( bui|\))/i],[MODEL,[VENDOR,AMAZON],[TYPE,SMARTTV]],[/\(dtv[\);].+(aquos)/i],[MODEL,[VENDOR,"Sharp"],[TYPE,SMARTTV]],[/\b(roku)[\dx]*[\)\/]((?:dvp-)?[\d\.]*)/i,/hbbtv\/\d+\.\d+\.\d+ +\([\w ]*; *(\w[^;]*);([^;]*)/i],[[VENDOR,trim],[MODEL,trim],[TYPE,SMARTTV]],[/\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\b/i],[[TYPE,SMARTTV]],[/((pebble))app/i],[VENDOR,MODEL,[TYPE,WEARABLE]],[/droid.+; (glass) \d/i],[MODEL,[VENDOR,GOOGLE],[TYPE,WEARABLE]],[/droid.+; (wt63?0{2,3})\)/i],[MODEL,[VENDOR,ZEBRA],[TYPE,WEARABLE]],[/(quest( 2)?)/i],[MODEL,[VENDOR,FACEBOOK],[TYPE,WEARABLE]],[/(tesla)(?: qtcarbrowser|\/[-\w\.]+)/i],[VENDOR,[TYPE,EMBEDDED]],[/droid .+?; ([^;]+?)(?: bui|\) applew).+? mobile safari/i],[MODEL,[TYPE,MOBILE]],[/droid .+?; ([^;]+?)(?: bui|\) applew).+?(?! mobile) safari/i],[MODEL,[TYPE,TABLET]],[/\b((tablet|tab)[;\/]|focus\/\d(?!.+mobile))/i],[[TYPE,TABLET]],[/(phone|mobile(?:[;\/]| safari)|pda(?=.+windows ce))/i],[[TYPE,MOBILE]],[/(android[-\w\. ]{0,9});.+buil/i],[MODEL,[VENDOR,"Generic"]]],engine:[[/windows.+ edge\/([\w\.]+)/i],[VERSION,[NAME,EDGE+"HTML"]],[/webkit\/537\.36.+chrome\/(?!27)([\w\.]+)/i],[VERSION,[NAME,"Blink"]],[/(presto)\/([\w\.]+)/i,/(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna)\/([\w\.]+)/i,/ekioh(flow)\/([\w\.]+)/i,/(khtml|tasman|links)[\/ ]\(?([\w\.]+)/i,/(icab)[\/ ]([23]\.[\d\.]+)/i],[NAME,VERSION],[/rv\:([\w\.]{1,9})\b.+(gecko)/i],[VERSION,NAME]],os:[[/microsoft (windows) (vista|xp)/i],[NAME,VERSION],[/(windows) nt 6\.2; (arm)/i,/(windows (?:phone(?: os)?|mobile))[\/ ]?([\d\.\w ]*)/i,/(windows)[\/ ]?([ntce\d\. ]+\w)(?!.+xbox)/i],[NAME,[VERSION,strMapper,windowsVersionMap]],[/(win(?=3|9|n)|win 9x )([nt\d\.]+)/i],[[NAME,"Windows"],[VERSION,strMapper,windowsVersionMap]],[/ip[honead]{2,4}\b(?:.*os ([\w]+) like mac|; opera)/i,/cfnetwork\/.+darwin/i],[[VERSION,/_/g,"."],[NAME,"iOS"]],[/(mac os x) ?([\w\. ]*)/i,/(macintosh|mac_powerpc\b)(?!.+haiku)/i],[[NAME,"Mac OS"],[VERSION,/_/g,"."]],[/droid ([\w\.]+)\b.+(android[- ]x86)/i],[VERSION,NAME],[/(android|webos|qnx|bada|rim tablet os|maemo|meego|sailfish)[-\/ ]?([\w\.]*)/i,/(blackberry)\w*\/([\w\.]*)/i,/(tizen|kaios)[\/ ]([\w\.]+)/i,/\((series40);/i],[NAME,VERSION],[/\(bb(10);/i],[VERSION,[NAME,BLACKBERRY]],[/(?:symbian ?os|symbos|s60(?=;)|series60)[-\/ ]?([\w\.]*)/i],[VERSION,[NAME,"Symbian"]],[/mozilla\/[\d\.]+ \((?:mobile|tablet|tv|mobile; [\w ]+); rv:.+ gecko\/([\w\.]+)/i],[VERSION,[NAME,FIREFOX+" OS"]],[/web0s;.+rt(tv)/i,/\b(?:hp)?wos(?:browser)?\/([\w\.]+)/i],[VERSION,[NAME,"webOS"]],[/crkey\/([\d\.]+)/i],[VERSION,[NAME,CHROME+"cast"]],[/(cros) [\w]+ ([\w\.]+\w)/i],[[NAME,"Chromium OS"],VERSION],[/(nintendo|playstation) ([wids345portablevuch]+)/i,/(xbox); +xbox ([^\);]+)/i,/\b(joli|palm)\b ?(?:os)?\/?([\w\.]*)/i,/(mint)[\/\(\) ]?(\w*)/i,/(mageia|vectorlinux)[; ]/i,/([kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?= linux)|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire)(?: gnu\/linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\/ ]?(?!chrom|package)([-\w\.]*)/i,/(hurd|linux) ?([\w\.]*)/i,/(gnu) ?([\w\.]*)/i,/\b([-frentopcghs]{0,5}bsd|dragonfly)[\/ ]?(?!amd|[ix346]{1,2}86)([\w\.]*)/i,/(haiku) (\w+)/i],[NAME,VERSION],[/(sunos) ?([\w\.\d]*)/i],[[NAME,"Solaris"],VERSION],[/((?:open)?solaris)[-\/ ]?([\w\.]*)/i,/(aix) ((\d)(?=\.|\)| )[\w\.])*/i,/\b(beos|os\/2|amigaos|morphos|openvms|fuchsia|hp-ux)/i,/(unix) ?([\w\.]*)/i],[NAME,VERSION]]};var UAParser=function(ua,extensions){if(typeof ua===OBJ_TYPE){extensions=ua;ua=undefined}if(!(this instanceof UAParser)){return new UAParser(ua,extensions).getResult()}var _ua=ua||(typeof window!==UNDEF_TYPE&&window.navigator&&window.navigator.userAgent?window.navigator.userAgent:EMPTY);var _rgxmap=extensions?extend(regexes,extensions):regexes;this.getBrowser=function(){var _browser={};_browser[NAME]=undefined;_browser[VERSION]=undefined;rgxMapper.call(_browser,_ua,_rgxmap.browser);_browser.major=majorize(_browser.version);return _browser};this.getCPU=function(){var _cpu={};_cpu[ARCHITECTURE]=undefined;rgxMapper.call(_cpu,_ua,_rgxmap.cpu);return _cpu};this.getDevice=function(){var _device={};_device[VENDOR]=undefined;_device[MODEL]=undefined;_device[TYPE]=undefined;rgxMapper.call(_device,_ua,_rgxmap.device);return _device};this.getEngine=function(){var _engine={};_engine[NAME]=undefined;_engine[VERSION]=undefined;rgxMapper.call(_engine,_ua,_rgxmap.engine);return _engine};this.getOS=function(){var _os={};_os[NAME]=undefined;_os[VERSION]=undefined;rgxMapper.call(_os,_ua,_rgxmap.os);return _os};this.getResult=function(){return{ua:this.getUA(),browser:this.getBrowser(),engine:this.getEngine(),os:this.getOS(),device:this.getDevice(),cpu:this.getCPU()}};this.getUA=function(){return _ua};this.setUA=function(ua){_ua=typeof ua===STR_TYPE&&ua.length>UA_MAX_LENGTH?trim(ua,UA_MAX_LENGTH):ua;return this};this.setUA(_ua);return this};UAParser.VERSION=LIBVERSION;UAParser.BROWSER=enumerize([NAME,VERSION,MAJOR]);UAParser.CPU=enumerize([ARCHITECTURE]);UAParser.DEVICE=enumerize([MODEL,VENDOR,TYPE,CONSOLE,MOBILE,SMARTTV,TABLET,WEARABLE,EMBEDDED]);UAParser.ENGINE=UAParser.OS=enumerize([NAME,VERSION]);if(typeof exports!==UNDEF_TYPE){if(typeof module!==UNDEF_TYPE&&module.exports){exports=module.exports=UAParser}exports.UAParser=UAParser}else{if(typeof define===FUNC_TYPE&&define.amd){define(function(){return UAParser})}else if(typeof window!==UNDEF_TYPE){window.UAParser=UAParser}}var $=typeof window!==UNDEF_TYPE&&(window.jQuery||window.Zepto);if($&&!$.ua){var parser=new UAParser;$.ua=parser.getResult();$.ua.get=function(){return parser.getUA()};$.ua.set=function(ua){parser.setUA(ua);var result=parser.getResult();for(var prop in result){$.ua[prop]=result[prop]}}}})(typeof window==="object"?window:this); -
trip-planner-front/node_modules/ua-parser-js/dist/ua-parser.pack.js
r59329aa re29cc2e 1 /*!@license 2 * UAParser.js v0.7.28 3 * Lightweight JavaScript-based User-Agent string parser 4 * https://github.com/faisalman/ua-parser-js 5 * 6 * Copyright © 2012-2021 Faisal Salman <f@faisalman.com> 7 * Licensed under MIT License 8 */ 9 !function(r,b){"use strict";var u="function",e="undefined",c="object",a="string",i="model",s="name",o="type",n="vendor",t="version",l="architecture",w="console",d="mobile",m="tablet",p="smarttv",f="wearable",h="embedded",g={extend:function(i,s){var e,o={};for(e in i)s[e]&&s[e].length%2==0?o[e]=s[e].concat(i[e]):o[e]=i[e];return o},has:function(i,s){return typeof i==a&&-1!==s.toLowerCase().indexOf(i.toLowerCase())},lowerize:function(i){return i.toLowerCase()},major:function(i){return typeof i==a?i.replace(/[^\d\.]/g,"").split(".")[0]:b},trim:function(i,s){return i=i.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,""),typeof s==e?i:i.substring(0,255)}},v={rgx:function(i,s){for(var e,o,r,a,n,t=0;t<s.length&&!a;){for(var l=s[t],w=s[t+1],d=e=0;d<l.length&&!a;)if(a=l[d++].exec(i))for(o=0;o<w.length;o++)n=a[++e],typeof(r=w[o])==c&&0<r.length?2==r.length?typeof r[1]==u?this[r[0]]=r[1].call(this,n):this[r[0]]=r[1]:3==r.length?typeof r[1]!=u||r[1].exec&&r[1].test?this[r[0]]=n?n.replace(r[1],r[2]):b:this[r[0]]=n?r[1].call(this,n,r[2]):b:4==r.length&&(this[r[0]]=n?r[3].call(this,n.replace(r[1],r[2])):b):this[r]=n||b;t+=2}},str:function(i,s){for(var e in s)if(typeof s[e]==c&&0<s[e].length){for(var o=0;o<s[e].length;o++)if(g.has(s[e][o],i))return"?"===e?b:e}else if(g.has(s[e],i))return"?"===e?b:e;return i}},x={browser:{oldSafari:{version:{"1.0":"/8",1.2:"/1",1.3:"/3","2.0":"/412","2.0.2":"/416","2.0.3":"/417","2.0.4":"/419","?":"/"}},oldEdge:{version:{.1:"12.",21:"13.",31:"14.",39:"15.",41:"16.",42:"17.",44:"18."}}},os:{windows:{version:{ME:"4.90","NT 3.11":"NT3.51","NT 4.0":"NT4.0",2e3:"NT 5.0",XP:["NT 5.1","NT 5.2"],Vista:"NT 6.0",7:"NT 6.1",8:"NT 6.2",8.1:"NT 6.3",10:["NT 6.4","NT 10.0"],RT:"ARM"}}}},k={browser:[[/\b(?:crmo|crios)\/([\w\.]+)/i],[t,[s,"Chrome"]],[/(?:edge|edgios|edga|edg)\/([\w\.]+)/i],[t,[s,"Edge"]],[/(opera\smini)\/([\w\.-]+)/i,/(opera\s[mobiletab]{3,6})\b.+version\/([\w\.-]+)/i,/(opera)(?:.+version\/|[\/\s]+)([\w\.]+)/i],[s,t],[/opios[\/\s]+([\w\.]+)/i],[t,[s,"Opera Mini"]],[/\sopr\/([\w\.]+)/i],[t,[s,"Opera"]],[/(kindle)\/([\w\.]+)/i,/(lunascape|maxthon|netfront|jasmine|blazer)[\/\s]?([\w\.]*)/i,/(avant\s|iemobile|slim)(?:browser)?[\/\s]?([\w\.]*)/i,/(ba?idubrowser)[\/\s]?([\w\.]+)/i,/(?:ms|\()(ie)\s([\w\.]+)/i,/(flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark|qupzilla|falkon)\/([\w\.-]+)/i,/(rekonq|puffin|brave|whale|qqbrowserlite|qq)\/([\w\.]+)/i,/(weibo)__([\d\.]+)/i],[s,t],[/(?:[\s\/]uc?\s?browser|(?:juc.+)ucweb)[\/\s]?([\w\.]+)/i],[t,[s,"UCBrowser"]],[/(?:windowswechat)?\sqbcore\/([\w\.]+)\b.*(?:windowswechat)?/i],[t,[s,"WeChat(Win) Desktop"]],[/micromessenger\/([\w\.]+)/i],[t,[s,"WeChat"]],[/konqueror\/([\w\.]+)/i],[t,[s,"Konqueror"]],[/trident.+rv[:\s]([\w\.]{1,9})\b.+like\sgecko/i],[t,[s,"IE"]],[/yabrowser\/([\w\.]+)/i],[t,[s,"Yandex"]],[/(avast|avg)\/([\w\.]+)/i],[[s,/(.+)/,"$1 Secure Browser"],t],[/focus\/([\w\.]+)/i],[t,[s,"Firefox Focus"]],[/opt\/([\w\.]+)/i],[t,[s,"Opera Touch"]],[/coc_coc_browser\/([\w\.]+)/i],[t,[s,"Coc Coc"]],[/dolfin\/([\w\.]+)/i],[t,[s,"Dolphin"]],[/coast\/([\w\.]+)/i],[t,[s,"Opera Coast"]],[/xiaomi\/miuibrowser\/([\w\.]+)/i],[t,[s,"MIUI Browser"]],[/fxios\/([\w\.-]+)/i],[t,[s,"Firefox"]],[/(qihu|qhbrowser|qihoobrowser|360browser)/i],[[s,"360 Browser"]],[/(oculus|samsung|sailfish)browser\/([\w\.]+)/i],[[s,/(.+)/,"$1 Browser"],t],[/(comodo_dragon)\/([\w\.]+)/i],[[s,/_/g," "],t],[/\s(electron)\/([\w\.]+)\ssafari/i,/(tesla)(?:\sqtcarbrowser|\/(20[12]\d\.[\w\.-]+))/i,/m?(qqbrowser|baiduboxapp|2345Explorer)[\/\s]?([\w\.]+)/i],[s,t],[/(MetaSr)[\/\s]?([\w\.]+)/i,/(LBBROWSER)/i],[s],[/;fbav\/([\w\.]+);/i],[t,[s,"Facebook"]],[/FBAN\/FBIOS|FB_IAB\/FB4A/i],[[s,"Facebook"]],[/safari\s(line)\/([\w\.]+)/i,/\b(line)\/([\w\.]+)\/iab/i,/(chromium|instagram)[\/\s]([\w\.-]+)/i],[s,t],[/\bgsa\/([\w\.]+)\s.*safari\//i],[t,[s,"GSA"]],[/headlesschrome(?:\/([\w\.]+)|\s)/i],[t,[s,"Chrome Headless"]],[/\swv\).+(chrome)\/([\w\.]+)/i],[[s,"Chrome WebView"],t],[/droid.+\sversion\/([\w\.]+)\b.+(?:mobile\ssafari|safari)/i],[t,[s,"Android Browser"]],[/(chrome|omniweb|arora|[tizenoka]{5}\s?browser)\/v?([\w\.]+)/i],[s,t],[/version\/([\w\.]+)\s.*mobile\/\w+\s(safari)/i],[t,[s,"Mobile Safari"]],[/version\/([\w\.]+)\s.*(mobile\s?safari|safari)/i],[t,s],[/webkit.+?(mobile\s?safari|safari)(\/[\w\.]+)/i],[s,[t,v.str,x.browser.oldSafari.version]],[/(webkit|khtml)\/([\w\.]+)/i],[s,t],[/(navigator|netscape)\/([\w\.-]+)/i],[[s,"Netscape"],t],[/ile\svr;\srv:([\w\.]+)\).+firefox/i],[t,[s,"Firefox Reality"]],[/ekiohf.+(flow)\/([\w\.]+)/i,/(swiftfox)/i,/(icedragon|iceweasel|camino|chimera|fennec|maemo\sbrowser|minimo|conkeror)[\/\s]?([\w\.\+]+)/i,/(firefox|seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\/([\w\.-]+)$/i,/(firefox)\/([\w\.]+)\s[\w\s\-]+\/[\w\.]+$/i,/(mozilla)\/([\w\.]+)\s.+rv\:.+gecko\/\d+/i,/(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir)[\/\s]?([\w\.]+)/i,/(links)\s\(([\w\.]+)/i,/(gobrowser)\/?([\w\.]*)/i,/(ice\s?browser)\/v?([\w\._]+)/i,/(mosaic)[\/\s]([\w\.]+)/i],[s,t]],cpu:[[/(?:(amd|x(?:(?:86|64)[_-])?|wow|win)64)[;\)]/i],[[l,"amd64"]],[/(ia32(?=;))/i],[[l,g.lowerize]],[/((?:i[346]|x)86)[;\)]/i],[[l,"ia32"]],[/\b(aarch64|armv?8e?l?)\b/i],[[l,"arm64"]],[/\b(arm(?:v[67])?ht?n?[fl]p?)\b/i],[[l,"armhf"]],[/windows\s(ce|mobile);\sppc;/i],[[l,"arm"]],[/((?:ppc|powerpc)(?:64)?)(?:\smac|;|\))/i],[[l,/ower/,"",g.lowerize]],[/(sun4\w)[;\)]/i],[[l,"sparc"]],[/((?:avr32|ia64(?=;))|68k(?=\))|\barm(?:64|(?=v(?:[1-7]|[5-7]1)l?|;|eabi))|(?=atmel\s)avr|(?:irix|mips|sparc)(?:64)?\b|pa-risc)/i],[[l,g.lowerize]]],device:[[/\b(sch-i[89]0\d|shw-m380s|sm-[pt]\w{2,4}|gt-[pn]\d{2,4}|sgh-t8[56]9|nexus\s10)/i],[i,[n,"Samsung"],[o,m]],[/\b((?:s[cgp]h|gt|sm)-\w+|galaxy\snexus)/i,/\ssamsung[\s-]([\w-]+)/i,/sec-(sgh\w+)/i],[i,[n,"Samsung"],[o,d]],[/\((ip(?:hone|od)[\s\w]*);/i],[i,[n,"Apple"],[o,d]],[/\((ipad);[\w\s\),;-]+apple/i,/applecoremedia\/[\w\.]+\s\((ipad)/i,/\b(ipad)\d\d?,\d\d?[;\]].+ios/i],[i,[n,"Apple"],[o,m]],[/\b((?:agr|ags[23]|bah2?|sht?)-a?[lw]\d{2})/i],[i,[n,"Huawei"],[o,m]],[/d\/huawei([\w\s-]+)[;\)]/i,/\b(nexus\s6p|vog-[at]?l\d\d|ane-[at]?l[x\d]\d|eml-a?l\d\da?|lya-[at]?l\d[\dc]|clt-a?l\d\di?|ele-l\d\d)/i,/\b(\w{2,4}-[atu][ln][01259][019])[;\)\s]/i],[i,[n,"Huawei"],[o,d]],[/\b(poco[\s\w]+)(?:\sbuild|\))/i,/\b;\s(\w+)\sbuild\/hm\1/i,/\b(hm[\s\-_]?note?[\s_]?(?:\d\w)?)\sbuild/i,/\b(redmi[\s\-_]?(?:note|k)?[\w\s_]+)(?:\sbuild|\))/i,/\b(mi[\s\-_]?(?:a\d|one|one[\s_]plus|note lte)?[\s_]?(?:\d?\w?)[\s_]?(?:plus)?)\sbuild/i],[[i,/_/g," "],[n,"Xiaomi"],[o,d]],[/\b(mi[\s\-_]?(?:pad)(?:[\w\s_]+))(?:\sbuild|\))/i],[[i,/_/g," "],[n,"Xiaomi"],[o,m]],[/;\s(\w+)\sbuild.+\soppo/i,/\s(cph[12]\d{3}|p(?:af|c[al]|d\w|e[ar])[mt]\d0|x9007)\b/i],[i,[n,"OPPO"],[o,d]],[/\svivo\s(\w+)(?:\sbuild|\))/i,/\s(v[12]\d{3}\w?[at])(?:\sbuild|;)/i],[i,[n,"Vivo"],[o,d]],[/\s(rmx[12]\d{3})(?:\sbuild|;)/i],[i,[n,"Realme"],[o,d]],[/\s(milestone|droid(?:[2-4x]|\s(?:bionic|x2|pro|razr))?:?(\s4g)?)\b[\w\s]+build\//i,/\smot(?:orola)?[\s-](\w*)/i,/((?:moto[\s\w\(\)]+|xt\d{3,4}|nexus\s6)(?=\sbuild|\)))/i],[i,[n,"Motorola"],[o,d]],[/\s(mz60\d|xoom[\s2]{0,2})\sbuild\//i],[i,[n,"Motorola"],[o,m]],[/((?=lg)?[vl]k\-?\d{3})\sbuild|\s3\.[\s\w;-]{10}lg?-([06cv9]{3,4})/i],[i,[n,"LG"],[o,m]],[/(lm-?f100[nv]?|nexus\s[45])/i,/lg[e;\s\/-]+((?!browser|netcast)\w+)/i,/\blg(\-?[\d\w]+)\sbuild/i],[i,[n,"LG"],[o,d]],[/(ideatab[\w\-\s]+)/i,/lenovo\s?(s(?:5000|6000)(?:[\w-]+)|tab(?:[\s\w]+)|yt[\d\w-]{6}|tb[\d\w-]{6})/i],[i,[n,"Lenovo"],[o,m]],[/(?:maemo|nokia).*(n900|lumia\s\d+)/i,/nokia[\s_-]?([\w\.-]*)/i],[[i,/_/g," "],[n,"Nokia"],[o,d]],[/droid.+;\s(pixel\sc)[\s)]/i],[i,[n,"Google"],[o,m]],[/droid.+;\s(pixel[\s\daxl]{0,6})(?:\sbuild|\))/i],[i,[n,"Google"],[o,d]],[/droid.+\s([c-g]\d{4}|so[-l]\w+|xq-a\w[4-7][12])(?=\sbuild\/|\).+chrome\/(?![1-6]{0,1}\d\.))/i],[i,[n,"Sony"],[o,d]],[/sony\stablet\s[ps]\sbuild\//i,/(?:sony)?sgp\w+(?:\sbuild\/|\))/i],[[i,"Xperia Tablet"],[n,"Sony"],[o,m]],[/\s(kb2005|in20[12]5|be20[12][59])\b/i,/\ba000(1)\sbuild/i,/\boneplus\s(a\d{4})[\s)]/i],[i,[n,"OnePlus"],[o,d]],[/(alexa)webm/i,/(kf[a-z]{2}wi)(\sbuild\/|\))/i,/(kf[a-z]+)(\sbuild\/|\)).+silk\//i],[i,[n,"Amazon"],[o,m]],[/(sd|kf)[0349hijorstuw]+(\sbuild\/|\)).+silk\//i],[[i,"Fire Phone"],[n,"Amazon"],[o,d]],[/\((playbook);[\w\s\),;-]+(rim)/i],[i,n,[o,m]],[/((?:bb[a-f]|st[hv])100-\d)/i,/\(bb10;\s(\w+)/i],[i,[n,"BlackBerry"],[o,d]],[/(?:\b|asus_)(transfo[prime\s]{4,10}\s\w+|eeepc|slider\s\w+|nexus\s7|padfone|p00[cj])/i],[i,[n,"ASUS"],[o,m]],[/\s(z[es]6[027][01][km][ls]|zenfone\s\d\w?)\b/i],[i,[n,"ASUS"],[o,d]],[/(nexus\s9)/i],[i,[n,"HTC"],[o,m]],[/(htc)[;_\s-]{1,2}([\w\s]+(?=\)|\sbuild)|\w+)/i,/(zte)-(\w*)/i,/(alcatel|geeksphone|nexian|panasonic|(?=;\s)sony)[_\s-]?([\w-]*)/i],[n,[i,/_/g," "],[o,d]],[/droid[x\d\.\s;]+\s([ab][1-7]\-?[0178a]\d\d?)/i],[i,[n,"Acer"],[o,m]],[/droid.+;\s(m[1-5]\snote)\sbuild/i,/\bmz-([\w-]{2,})/i],[i,[n,"Meizu"],[o,d]],[/(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron)[\s_-]?([\w-]*)/i,/(hp)\s([\w\s]+\w)/i,/(asus)-?(\w+)/i,/(microsoft);\s(lumia[\s\w]+)/i,/(lenovo)[_\s-]?([\w-]+)/i,/linux;.+(jolla);/i,/droid.+;\s(oppo)\s?([\w\s]+)\sbuild/i],[n,i,[o,d]],[/(archos)\s(gamepad2?)/i,/(hp).+(touchpad(?!.+tablet)|tablet)/i,/(kindle)\/([\w\.]+)/i,/\s(nook)[\w\s]+build\/(\w+)/i,/(dell)\s(strea[kpr\s\d]*[\dko])/i,/[;\/]\s?(le[\s\-]+pan)[\s\-]+(\w{1,9})\sbuild/i,/[;\/]\s?(trinity)[\-\s]*(t\d{3})\sbuild/i,/\b(gigaset)[\s\-]+(q\w{1,9})\sbuild/i,/\b(vodafone)\s([\w\s]+)(?:\)|\sbuild)/i],[n,i,[o,m]],[/\s(surface\sduo)\s/i],[i,[n,"Microsoft"],[o,m]],[/droid\s[\d\.]+;\s(fp\du?)\sbuild/i],[i,[n,"Fairphone"],[o,d]],[/\s(u304aa)\sbuild/i],[i,[n,"AT&T"],[o,d]],[/sie-(\w*)/i],[i,[n,"Siemens"],[o,d]],[/[;\/]\s?(rct\w+)\sbuild/i],[i,[n,"RCA"],[o,m]],[/[;\/\s](venue[\d\s]{2,7})\sbuild/i],[i,[n,"Dell"],[o,m]],[/[;\/]\s?(q(?:mv|ta)\w+)\sbuild/i],[i,[n,"Verizon"],[o,m]],[/[;\/]\s(?:barnes[&\s]+noble\s|bn[rt])([\w\s\+]*)\sbuild/i],[i,[n,"Barnes & Noble"],[o,m]],[/[;\/]\s(tm\d{3}\w+)\sbuild/i],[i,[n,"NuVision"],[o,m]],[/;\s(k88)\sbuild/i],[i,[n,"ZTE"],[o,m]],[/;\s(nx\d{3}j)\sbuild/i],[i,[n,"ZTE"],[o,d]],[/[;\/]\s?(gen\d{3})\sbuild.*49h/i],[i,[n,"Swiss"],[o,d]],[/[;\/]\s?(zur\d{3})\sbuild/i],[i,[n,"Swiss"],[o,m]],[/[;\/]\s?((zeki)?tb.*\b)\sbuild/i],[i,[n,"Zeki"],[o,m]],[/[;\/]\s([yr]\d{2})\sbuild/i,/[;\/]\s(dragon[\-\s]+touch\s|dt)(\w{5})\sbuild/i],[[n,"Dragon Touch"],i,[o,m]],[/[;\/]\s?(ns-?\w{0,9})\sbuild/i],[i,[n,"Insignia"],[o,m]],[/[;\/]\s?((nxa|Next)-?\w{0,9})\sbuild/i],[i,[n,"NextBook"],[o,m]],[/[;\/]\s?(xtreme\_)?(v(1[045]|2[015]|[3469]0|7[05]))\sbuild/i],[[n,"Voice"],i,[o,d]],[/[;\/]\s?(lvtel\-)?(v1[12])\sbuild/i],[[n,"LvTel"],i,[o,d]],[/;\s(ph-1)\s/i],[i,[n,"Essential"],[o,d]],[/[;\/]\s?(v(100md|700na|7011|917g).*\b)\sbuild/i],[i,[n,"Envizen"],[o,m]],[/[;\/]\s?(trio[\s\w\-\.]+)\sbuild/i],[i,[n,"MachSpeed"],[o,m]],[/[;\/]\s?tu_(1491)\sbuild/i],[i,[n,"Rotor"],[o,m]],[/(shield[\w\s]+)\sbuild/i],[i,[n,"Nvidia"],[o,m]],[/(sprint)\s(\w+)/i],[n,i,[o,d]],[/(kin\.[onetw]{3})/i],[[i,/\./g," "],[n,"Microsoft"],[o,d]],[/droid\s[\d\.]+;\s(cc6666?|et5[16]|mc[239][23]x?|vc8[03]x?)\)/i],[i,[n,"Zebra"],[o,m]],[/droid\s[\d\.]+;\s(ec30|ps20|tc[2-8]\d[kx])\)/i],[i,[n,"Zebra"],[o,d]],[/\s(ouya)\s/i,/(nintendo)\s([wids3utch]+)/i],[n,i,[o,w]],[/droid.+;\s(shield)\sbuild/i],[i,[n,"Nvidia"],[o,w]],[/(playstation\s[345portablevi]+)/i],[i,[n,"Sony"],[o,w]],[/[\s\(;](xbox(?:\sone)?(?!;\sxbox))[\s\);]/i],[i,[n,"Microsoft"],[o,w]],[/smart-tv.+(samsung)/i],[n,[o,p]],[/hbbtv.+maple;(\d+)/i],[[i,/^/,"SmartTV"],[n,"Samsung"],[o,p]],[/(?:linux;\snetcast.+smarttv|lg\snetcast\.tv-201\d)/i],[[n,"LG"],[o,p]],[/(apple)\s?tv/i],[n,[i,"Apple TV"],[o,p]],[/crkey/i],[[i,"Chromecast"],[n,"Google"],[o,p]],[/droid.+aft([\w])(\sbuild\/|\))/i],[i,[n,"Amazon"],[o,p]],[/\(dtv[\);].+(aquos)/i],[i,[n,"Sharp"],[o,p]],[/hbbtv\/\d+\.\d+\.\d+\s+\([\w\s]*;\s*(\w[^;]*);([^;]*)/i],[[n,g.trim],[i,g.trim],[o,p]],[/[\s\/\(](android\s|smart[-\s]?|opera\s)tv[;\)\s]/i],[[o,p]],[/((pebble))app\/[\d\.]+\s/i],[n,i,[o,f]],[/droid.+;\s(glass)\s\d/i],[i,[n,"Google"],[o,f]],[/droid\s[\d\.]+;\s(wt63?0{2,3})\)/i],[i,[n,"Zebra"],[o,f]],[/(tesla)(?:\sqtcarbrowser|\/20[12]\d\.[\w\.-]+)/i],[n,[o,h]],[/droid .+?; ([^;]+?)(?: build|\) applewebkit).+? mobile safari/i],[i,[o,d]],[/droid .+?;\s([^;]+?)(?: build|\) applewebkit).+?(?! mobile) safari/i],[i,[o,m]],[/\s(tablet|tab)[;\/]/i,/\s(mobile)(?:[;\/]|\ssafari)/i],[[o,g.lowerize]],[/(android[\w\.\s\-]{0,9});.+build/i],[i,[n,"Generic"]],[/(phone)/i],[[o,d]]],engine:[[/windows.+\sedge\/([\w\.]+)/i],[t,[s,"EdgeHTML"]],[/webkit\/537\.36.+chrome\/(?!27)([\w\.]+)/i],[t,[s,"Blink"]],[/(presto)\/([\w\.]+)/i,/(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna)\/([\w\.]+)/i,/ekioh(flow)\/([\w\.]+)/i,/(khtml|tasman|links)[\/\s]\(?([\w\.]+)/i,/(icab)[\/\s]([23]\.[\d\.]+)/i],[s,t],[/rv\:([\w\.]{1,9})\b.+(gecko)/i],[t,s]],os:[[/microsoft\s(windows)\s(vista|xp)/i],[s,t],[/(windows)\snt\s6\.2;\s(arm)/i,/(windows\sphone(?:\sos)*)[\s\/]?([\d\.\s\w]*)/i,/(windows\smobile|windows)[\s\/]?([ntce\d\.\s]+\w)(?!.+xbox)/i],[s,[t,v.str,x.os.windows.version]],[/(win(?=3|9|n)|win\s9x\s)([nt\d\.]+)/i],[[s,"Windows"],[t,v.str,x.os.windows.version]],[/ip[honead]{2,4}\b(?:.*os\s([\w]+)\slike\smac|;\sopera)/i,/cfnetwork\/.+darwin/i],[[t,/_/g,"."],[s,"iOS"]],[/(mac\sos\sx)\s?([\w\s\.]*)/i,/(macintosh|mac(?=_powerpc)\s)(?!.+haiku)/i],[[s,"Mac OS"],[t,/_/g,"."]],[/(android|webos|palm\sos|qnx|bada|rim\stablet\sos|meego|sailfish|contiki)[\/\s-]?([\w\.]*)/i,/(blackberry)\w*\/([\w\.]*)/i,/(tizen|kaios)[\/\s]([\w\.]+)/i,/\((series40);/i],[s,t],[/\(bb(10);/i],[t,[s,"BlackBerry"]],[/(?:symbian\s?os|symbos|s60(?=;)|series60)[\/\s-]?([\w\.]*)/i],[t,[s,"Symbian"]],[/mozilla.+\(mobile;.+gecko.+firefox/i],[[s,"Firefox OS"]],[/web0s;.+rt(tv)/i,/\b(?:hp)?wos(?:browser)?\/([\w\.]+)/i],[t,[s,"webOS"]],[/crkey\/([\d\.]+)/i],[t,[s,"Chromecast"]],[/(cros)\s[\w]+\s([\w\.]+\w)/i],[[s,"Chromium OS"],t],[/(nintendo|playstation)\s([wids345portablevuch]+)/i,/(xbox);\s+xbox\s([^\);]+)/i,/(mint)[\/\s\(\)]?(\w*)/i,/(mageia|vectorlinux)[;\s]/i,/(joli|[kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?=\slinux)|slackware|fedora|mandriva|centos|pclinuxos|redhat|zenwalk|linpus|raspbian)(?:\sgnu\/linux)?(?:\slinux)?[\/\s-]?(?!chrom|package)([\w\.-]*)/i,/(hurd|linux)\s?([\w\.]*)/i,/(gnu)\s?([\w\.]*)/i,/\s([frentopc-]{0,4}bsd|dragonfly)\s?(?!amd|[ix346]{1,2}86)([\w\.]*)/i,/(haiku)\s(\w+)/i],[s,t],[/(sunos)\s?([\w\.\d]*)/i],[[s,"Solaris"],t],[/((?:open)?solaris)[\/\s-]?([\w\.]*)/i,/(aix)\s((\d)(?=\.|\)|\s)[\w\.])*/i,/(plan\s9|minix|beos|os\/2|amigaos|morphos|risc\sos|openvms|fuchsia)/i,/(unix)\s?([\w\.]*)/i],[s,t]]},y=function(i,s){if("object"==typeof i&&(s=i,i=b),!(this instanceof y))return new y(i,s).getResult();var e=i||(void 0!==r&&r.navigator&&r.navigator.userAgent?r.navigator.userAgent:""),o=s?g.extend(k,s):k;return this.getBrowser=function(){var i={name:b,version:b};return v.rgx.call(i,e,o.browser),i.major=g.major(i.version),i},this.getCPU=function(){var i={architecture:b};return v.rgx.call(i,e,o.cpu),i},this.getDevice=function(){var i={vendor:b,model:b,type:b};return v.rgx.call(i,e,o.device),i},this.getEngine=function(){var i={name:b,version:b};return v.rgx.call(i,e,o.engine),i},this.getOS=function(){var i={name:b,version:b};return v.rgx.call(i,e,o.os),i},this.getResult=function(){return{ua:this.getUA(),browser:this.getBrowser(),engine:this.getEngine(),os:this.getOS(),device:this.getDevice(),cpu:this.getCPU()}},this.getUA=function(){return e},this.setUA=function(i){return e=typeof i==a&&255<i.length?g.trim(i,255):i,this},this.setUA(e),this};y.VERSION="0.7.28",y.BROWSER={NAME:s,MAJOR:"major",VERSION:t},y.CPU={ARCHITECTURE:l},y.DEVICE={MODEL:i,VENDOR:n,TYPE:o,CONSOLE:w,MOBILE:d,SMARTTV:p,TABLET:m,WEARABLE:f,EMBEDDED:h},y.ENGINE={NAME:s,VERSION:t},y.OS={NAME:s,VERSION:t},typeof exports!=e?(typeof module!=e&&module.exports&&(exports=module.exports=y),exports.UAParser=y):"function"==typeof define&&define.amd?define(function(){return y}):void 0!==r&&(r.UAParser=y);var S,E=void 0!==r&&(r.jQuery||r.Zepto);E&&!E.ua&&(S=new y,E.ua=S.getResult(),E.ua.get=function(){return S.getUA()},E.ua.set=function(i){S.setUA(i);var s,e=S.getResult();for(s in e)E.ua[s]=e[s]})}("object"==typeof window?window:this); 1 /* UAParser.js v0.7.31 2 Copyright © 2012-2021 Faisal Salman <f@faisalman.com> 3 MIT License */ 4 !function(r,d){"use strict";function i(i){for(var e={},o=0;o<i.length;o++)e[i[o].toUpperCase()]=i[o];return e}function n(i,e){return typeof i==w&&-1!==I(e).indexOf(I(i))}function t(i,e){if(typeof i==w)return i=i.replace(/^\s\s*/,"").replace(/\s\s*$/,""),typeof e==b?i:i.substring(0,255)}function s(i,e){for(var o,a,r,n,t,s=0;s<e.length&&!n;){for(var b=e[s],w=e[s+1],l=o=0;l<b.length&&!n;)if(n=b[l++].exec(i))for(a=0;a<w.length;a++)t=n[++o],typeof(r=w[a])==c&&0<r.length?2===r.length?typeof r[1]==u?this[r[0]]=r[1].call(this,t):this[r[0]]=r[1]:3===r.length?typeof r[1]!=u||r[1].exec&&r[1].test?this[r[0]]=t?t.replace(r[1],r[2]):d:this[r[0]]=t?r[1].call(this,t,r[2]):d:4===r.length&&(this[r[0]]=t?r[3].call(this,t.replace(r[1],r[2])):d):this[r]=t||d;s+=2}}function e(i,e){for(var o in e)if(typeof e[o]==c&&0<e[o].length){for(var a=0;a<e[o].length;a++)if(n(e[o][a],i))return"?"===o?d:o}else if(n(e[o],i))return"?"===o?d:o;return i}var u="function",b="undefined",c="object",w="string",l="model",p="name",m="type",f="vendor",h="version",g="architecture",o="console",a="mobile",v="tablet",x="smarttv",k="wearable",y="embedded",_="Amazon",S="Apple",T="ASUS",q="BlackBerry",z="Browser",N="Chrome",A="Firefox",C="Google",E="Huawei",O="LG",U="Microsoft",j="Motorola",R="Opera",M="Samsung",P="Sony",V="Xiaomi",B="Zebra",D="Facebook",I=function(i){return i.toLowerCase()},W={ME:"4.90","NT 3.11":"NT3.51","NT 4.0":"NT4.0",2e3:"NT 5.0",XP:["NT 5.1","NT 5.2"],Vista:"NT 6.0",7:"NT 6.1",8:"NT 6.2",8.1:"NT 6.3",10:["NT 6.4","NT 10.0"],RT:"ARM"},F={browser:[[/\b(?:crmo|crios)\/([\w\.]+)/i],[h,[p,"Chrome"]],[/edg(?:e|ios|a)?\/([\w\.]+)/i],[h,[p,"Edge"]],[/(opera mini)\/([-\w\.]+)/i,/(opera [mobiletab]{3,6})\b.+version\/([-\w\.]+)/i,/(opera)(?:.+version\/|[\/ ]+)([\w\.]+)/i],[p,h],[/opios[\/ ]+([\w\.]+)/i],[h,[p,R+" Mini"]],[/\bopr\/([\w\.]+)/i],[h,[p,R]],[/(kindle)\/([\w\.]+)/i,/(lunascape|maxthon|netfront|jasmine|blazer)[\/ ]?([\w\.]*)/i,/(avant |iemobile|slim)(?:browser)?[\/ ]?([\w\.]*)/i,/(ba?idubrowser)[\/ ]?([\w\.]+)/i,/(?:ms|\()(ie) ([\w\.]+)/i,/(flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark|qupzilla|falkon|rekonq|puffin|brave|whale|qqbrowserlite|qq)\/([-\w\.]+)/i,/(weibo)__([\d\.]+)/i],[p,h],[/(?:\buc? ?browser|(?:juc.+)ucweb)[\/ ]?([\w\.]+)/i],[h,[p,"UC"+z]],[/\bqbcore\/([\w\.]+)/i],[h,[p,"WeChat(Win) Desktop"]],[/micromessenger\/([\w\.]+)/i],[h,[p,"WeChat"]],[/konqueror\/([\w\.]+)/i],[h,[p,"Konqueror"]],[/trident.+rv[: ]([\w\.]{1,9})\b.+like gecko/i],[h,[p,"IE"]],[/yabrowser\/([\w\.]+)/i],[h,[p,"Yandex"]],[/(avast|avg)\/([\w\.]+)/i],[[p,/(.+)/,"$1 Secure "+z],h],[/\bfocus\/([\w\.]+)/i],[h,[p,A+" Focus"]],[/\bopt\/([\w\.]+)/i],[h,[p,R+" Touch"]],[/coc_coc\w+\/([\w\.]+)/i],[h,[p,"Coc Coc"]],[/dolfin\/([\w\.]+)/i],[h,[p,"Dolphin"]],[/coast\/([\w\.]+)/i],[h,[p,R+" Coast"]],[/miuibrowser\/([\w\.]+)/i],[h,[p,"MIUI "+z]],[/fxios\/([-\w\.]+)/i],[h,[p,A]],[/\bqihu|(qi?ho?o?|360)browser/i],[[p,"360 "+z]],[/(oculus|samsung|sailfish)browser\/([\w\.]+)/i],[[p,/(.+)/,"$1 "+z],h],[/(comodo_dragon)\/([\w\.]+)/i],[[p,/_/g," "],h],[/(electron)\/([\w\.]+) safari/i,/(tesla)(?: qtcarbrowser|\/(20\d\d\.[-\w\.]+))/i,/m?(qqbrowser|baiduboxapp|2345Explorer)[\/ ]?([\w\.]+)/i],[p,h],[/(metasr)[\/ ]?([\w\.]+)/i,/(lbbrowser)/i],[p],[/((?:fban\/fbios|fb_iab\/fb4a)(?!.+fbav)|;fbav\/([\w\.]+);)/i],[[p,D],h],[/safari (line)\/([\w\.]+)/i,/\b(line)\/([\w\.]+)\/iab/i,/(chromium|instagram)[\/ ]([-\w\.]+)/i],[p,h],[/\bgsa\/([\w\.]+) .*safari\//i],[h,[p,"GSA"]],[/headlesschrome(?:\/([\w\.]+)| )/i],[h,[p,N+" Headless"]],[/ wv\).+(chrome)\/([\w\.]+)/i],[[p,N+" WebView"],h],[/droid.+ version\/([\w\.]+)\b.+(?:mobile safari|safari)/i],[h,[p,"Android "+z]],[/(chrome|omniweb|arora|[tizenoka]{5} ?browser)\/v?([\w\.]+)/i],[p,h],[/version\/([\w\.]+) .*mobile\/\w+ (safari)/i],[h,[p,"Mobile Safari"]],[/version\/([\w\.]+) .*(mobile ?safari|safari)/i],[h,p],[/webkit.+?(mobile ?safari|safari)(\/[\w\.]+)/i],[p,[h,e,{"1.0":"/8",1.2:"/1",1.3:"/3","2.0":"/412","2.0.2":"/416","2.0.3":"/417","2.0.4":"/419","?":"/"}]],[/(webkit|khtml)\/([\w\.]+)/i],[p,h],[/(navigator|netscape\d?)\/([-\w\.]+)/i],[[p,"Netscape"],h],[/mobile vr; rv:([\w\.]+)\).+firefox/i],[h,[p,A+" Reality"]],[/ekiohf.+(flow)\/([\w\.]+)/i,/(swiftfox)/i,/(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror|klar)[\/ ]?([\w\.\+]+)/i,/(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\/([-\w\.]+)$/i,/(firefox)\/([\w\.]+)/i,/(mozilla)\/([\w\.]+) .+rv\:.+gecko\/\d+/i,/(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir|obigo|mosaic|(?:go|ice|up)[\. ]?browser)[-\/ ]?v?([\w\.]+)/i,/(links) \(([\w\.]+)/i],[p,h]],cpu:[[/(?:(amd|x(?:(?:86|64)[-_])?|wow|win)64)[;\)]/i],[[g,"amd64"]],[/(ia32(?=;))/i],[[g,I]],[/((?:i[346]|x)86)[;\)]/i],[[g,"ia32"]],[/\b(aarch64|arm(v?8e?l?|_?64))\b/i],[[g,"arm64"]],[/\b(arm(?:v[67])?ht?n?[fl]p?)\b/i],[[g,"armhf"]],[/windows (ce|mobile); ppc;/i],[[g,"arm"]],[/((?:ppc|powerpc)(?:64)?)(?: mac|;|\))/i],[[g,/ower/,"",I]],[/(sun4\w)[;\)]/i],[[g,"sparc"]],[/((?:avr32|ia64(?=;))|68k(?=\))|\barm(?=v(?:[1-7]|[5-7]1)l?|;|eabi)|(?=atmel )avr|(?:irix|mips|sparc)(?:64)?\b|pa-risc)/i],[[g,I]]],device:[[/\b(sch-i[89]0\d|shw-m380s|sm-[pt]\w{2,4}|gt-[pn]\d{2,4}|sgh-t8[56]9|nexus 10)/i],[l,[f,M],[m,v]],[/\b((?:s[cgp]h|gt|sm)-\w+|galaxy nexus)/i,/samsung[- ]([-\w]+)/i,/sec-(sgh\w+)/i],[l,[f,M],[m,a]],[/\((ip(?:hone|od)[\w ]*);/i],[l,[f,S],[m,a]],[/\((ipad);[-\w\),; ]+apple/i,/applecoremedia\/[\w\.]+ \((ipad)/i,/\b(ipad)\d\d?,\d\d?[;\]].+ios/i],[l,[f,S],[m,v]],[/\b((?:ag[rs][23]?|bah2?|sht?|btv)-a?[lw]\d{2})\b(?!.+d\/s)/i],[l,[f,E],[m,v]],[/(?:huawei|honor)([-\w ]+)[;\)]/i,/\b(nexus 6p|\w{2,4}-[atu]?[ln][01259x][012359][an]?)\b(?!.+d\/s)/i],[l,[f,E],[m,a]],[/\b(poco[\w ]+)(?: bui|\))/i,/\b; (\w+) build\/hm\1/i,/\b(hm[-_ ]?note?[_ ]?(?:\d\w)?) bui/i,/\b(redmi[\-_ ]?(?:note|k)?[\w_ ]+)(?: bui|\))/i,/\b(mi[-_ ]?(?:a\d|one|one[_ ]plus|note lte|max)?[_ ]?(?:\d?\w?)[_ ]?(?:plus|se|lite)?)(?: bui|\))/i],[[l,/_/g," "],[f,V],[m,a]],[/\b(mi[-_ ]?(?:pad)(?:[\w_ ]+))(?: bui|\))/i],[[l,/_/g," "],[f,V],[m,v]],[/; (\w+) bui.+ oppo/i,/\b(cph[12]\d{3}|p(?:af|c[al]|d\w|e[ar])[mt]\d0|x9007|a101op)\b/i],[l,[f,"OPPO"],[m,a]],[/vivo (\w+)(?: bui|\))/i,/\b(v[12]\d{3}\w?[at])(?: bui|;)/i],[l,[f,"Vivo"],[m,a]],[/\b(rmx[12]\d{3})(?: bui|;|\))/i],[l,[f,"Realme"],[m,a]],[/\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\b[\w ]+build\//i,/\bmot(?:orola)?[- ](\w*)/i,/((?:moto[\w\(\) ]+|xt\d{3,4}|nexus 6)(?= bui|\)))/i],[l,[f,j],[m,a]],[/\b(mz60\d|xoom[2 ]{0,2}) build\//i],[l,[f,j],[m,v]],[/((?=lg)?[vl]k\-?\d{3}) bui| 3\.[-\w; ]{10}lg?-([06cv9]{3,4})/i],[l,[f,O],[m,v]],[/(lm(?:-?f100[nv]?|-[\w\.]+)(?= bui|\))|nexus [45])/i,/\blg[-e;\/ ]+((?!browser|netcast|android tv)\w+)/i,/\blg-?([\d\w]+) bui/i],[l,[f,O],[m,a]],[/(ideatab[-\w ]+)/i,/lenovo ?(s[56]000[-\w]+|tab(?:[\w ]+)|yt[-\d\w]{6}|tb[-\d\w]{6})/i],[l,[f,"Lenovo"],[m,v]],[/(?:maemo|nokia).*(n900|lumia \d+)/i,/nokia[-_ ]?([-\w\.]*)/i],[[l,/_/g," "],[f,"Nokia"],[m,a]],[/(pixel c)\b/i],[l,[f,C],[m,v]],[/droid.+; (pixel[\daxl ]{0,6})(?: bui|\))/i],[l,[f,C],[m,a]],[/droid.+ ([c-g]\d{4}|so[-gl]\w+|xq-a\w[4-7][12])(?= bui|\).+chrome\/(?![1-6]{0,1}\d\.))/i],[l,[f,P],[m,a]],[/sony tablet [ps]/i,/\b(?:sony)?sgp\w+(?: bui|\))/i],[[l,"Xperia Tablet"],[f,P],[m,v]],[/ (kb2005|in20[12]5|be20[12][59])\b/i,/(?:one)?(?:plus)? (a\d0\d\d)(?: b|\))/i],[l,[f,"OnePlus"],[m,a]],[/(alexa)webm/i,/(kf[a-z]{2}wi)( bui|\))/i,/(kf[a-z]+)( bui|\)).+silk\//i],[l,[f,_],[m,v]],[/((?:sd|kf)[0349hijorstuw]+)( bui|\)).+silk\//i],[[l,/(.+)/g,"Fire Phone $1"],[f,_],[m,a]],[/(playbook);[-\w\),; ]+(rim)/i],[l,f,[m,v]],[/\b((?:bb[a-f]|st[hv])100-\d)/i,/\(bb10; (\w+)/i],[l,[f,q],[m,a]],[/(?:\b|asus_)(transfo[prime ]{4,10} \w+|eeepc|slider \w+|nexus 7|padfone|p00[cj])/i],[l,[f,T],[m,v]],[/ (z[bes]6[027][012][km][ls]|zenfone \d\w?)\b/i],[l,[f,T],[m,a]],[/(nexus 9)/i],[l,[f,"HTC"],[m,v]],[/(htc)[-;_ ]{1,2}([\w ]+(?=\)| bui)|\w+)/i,/(zte)[- ]([\w ]+?)(?: bui|\/|\))/i,/(alcatel|geeksphone|nexian|panasonic|sony)[-_ ]?([-\w]*)/i],[f,[l,/_/g," "],[m,a]],[/droid.+; ([ab][1-7]-?[0178a]\d\d?)/i],[l,[f,"Acer"],[m,v]],[/droid.+; (m[1-5] note) bui/i,/\bmz-([-\w]{2,})/i],[l,[f,"Meizu"],[m,a]],[/\b(sh-?[altvz]?\d\d[a-ekm]?)/i],[l,[f,"Sharp"],[m,a]],[/(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron)[-_ ]?([-\w]*)/i,/(hp) ([\w ]+\w)/i,/(asus)-?(\w+)/i,/(microsoft); (lumia[\w ]+)/i,/(lenovo)[-_ ]?([-\w]+)/i,/(jolla)/i,/(oppo) ?([\w ]+) bui/i],[f,l,[m,a]],[/(archos) (gamepad2?)/i,/(hp).+(touchpad(?!.+tablet)|tablet)/i,/(kindle)\/([\w\.]+)/i,/(nook)[\w ]+build\/(\w+)/i,/(dell) (strea[kpr\d ]*[\dko])/i,/(le[- ]+pan)[- ]+(\w{1,9}) bui/i,/(trinity)[- ]*(t\d{3}) bui/i,/(gigaset)[- ]+(q\w{1,9}) bui/i,/(vodafone) ([\w ]+)(?:\)| bui)/i],[f,l,[m,v]],[/(surface duo)/i],[l,[f,U],[m,v]],[/droid [\d\.]+; (fp\du?)(?: b|\))/i],[l,[f,"Fairphone"],[m,a]],[/(u304aa)/i],[l,[f,"AT&T"],[m,a]],[/\bsie-(\w*)/i],[l,[f,"Siemens"],[m,a]],[/\b(rct\w+) b/i],[l,[f,"RCA"],[m,v]],[/\b(venue[\d ]{2,7}) b/i],[l,[f,"Dell"],[m,v]],[/\b(q(?:mv|ta)\w+) b/i],[l,[f,"Verizon"],[m,v]],[/\b(?:barnes[& ]+noble |bn[rt])([\w\+ ]*) b/i],[l,[f,"Barnes & Noble"],[m,v]],[/\b(tm\d{3}\w+) b/i],[l,[f,"NuVision"],[m,v]],[/\b(k88) b/i],[l,[f,"ZTE"],[m,v]],[/\b(nx\d{3}j) b/i],[l,[f,"ZTE"],[m,a]],[/\b(gen\d{3}) b.+49h/i],[l,[f,"Swiss"],[m,a]],[/\b(zur\d{3}) b/i],[l,[f,"Swiss"],[m,v]],[/\b((zeki)?tb.*\b) b/i],[l,[f,"Zeki"],[m,v]],[/\b([yr]\d{2}) b/i,/\b(dragon[- ]+touch |dt)(\w{5}) b/i],[[f,"Dragon Touch"],l,[m,v]],[/\b(ns-?\w{0,9}) b/i],[l,[f,"Insignia"],[m,v]],[/\b((nxa|next)-?\w{0,9}) b/i],[l,[f,"NextBook"],[m,v]],[/\b(xtreme\_)?(v(1[045]|2[015]|[3469]0|7[05])) b/i],[[f,"Voice"],l,[m,a]],[/\b(lvtel\-)?(v1[12]) b/i],[[f,"LvTel"],l,[m,a]],[/\b(ph-1) /i],[l,[f,"Essential"],[m,a]],[/\b(v(100md|700na|7011|917g).*\b) b/i],[l,[f,"Envizen"],[m,v]],[/\b(trio[-\w\. ]+) b/i],[l,[f,"MachSpeed"],[m,v]],[/\btu_(1491) b/i],[l,[f,"Rotor"],[m,v]],[/(shield[\w ]+) b/i],[l,[f,"Nvidia"],[m,v]],[/(sprint) (\w+)/i],[f,l,[m,a]],[/(kin\.[onetw]{3})/i],[[l,/\./g," "],[f,U],[m,a]],[/droid.+; (cc6666?|et5[16]|mc[239][23]x?|vc8[03]x?)\)/i],[l,[f,B],[m,v]],[/droid.+; (ec30|ps20|tc[2-8]\d[kx])\)/i],[l,[f,B],[m,a]],[/(ouya)/i,/(nintendo) ([wids3utch]+)/i],[f,l,[m,o]],[/droid.+; (shield) bui/i],[l,[f,"Nvidia"],[m,o]],[/(playstation [345portablevi]+)/i],[l,[f,P],[m,o]],[/\b(xbox(?: one)?(?!; xbox))[\); ]/i],[l,[f,U],[m,o]],[/smart-tv.+(samsung)/i],[f,[m,x]],[/hbbtv.+maple;(\d+)/i],[[l,/^/,"SmartTV"],[f,M],[m,x]],[/(nux; netcast.+smarttv|lg (netcast\.tv-201\d|android tv))/i],[[f,O],[m,x]],[/(apple) ?tv/i],[f,[l,S+" TV"],[m,x]],[/crkey/i],[[l,N+"cast"],[f,C],[m,x]],[/droid.+aft(\w)( bui|\))/i],[l,[f,_],[m,x]],[/\(dtv[\);].+(aquos)/i],[l,[f,"Sharp"],[m,x]],[/\b(roku)[\dx]*[\)\/]((?:dvp-)?[\d\.]*)/i,/hbbtv\/\d+\.\d+\.\d+ +\([\w ]*; *(\w[^;]*);([^;]*)/i],[[f,t],[l,t],[m,x]],[/\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\b/i],[[m,x]],[/((pebble))app/i],[f,l,[m,k]],[/droid.+; (glass) \d/i],[l,[f,C],[m,k]],[/droid.+; (wt63?0{2,3})\)/i],[l,[f,B],[m,k]],[/(quest( 2)?)/i],[l,[f,D],[m,k]],[/(tesla)(?: qtcarbrowser|\/[-\w\.]+)/i],[f,[m,y]],[/droid .+?; ([^;]+?)(?: bui|\) applew).+? mobile safari/i],[l,[m,a]],[/droid .+?; ([^;]+?)(?: bui|\) applew).+?(?! mobile) safari/i],[l,[m,v]],[/\b((tablet|tab)[;\/]|focus\/\d(?!.+mobile))/i],[[m,v]],[/(phone|mobile(?:[;\/]| safari)|pda(?=.+windows ce))/i],[[m,a]],[/(android[-\w\. ]{0,9});.+buil/i],[l,[f,"Generic"]]],engine:[[/windows.+ edge\/([\w\.]+)/i],[h,[p,"EdgeHTML"]],[/webkit\/537\.36.+chrome\/(?!27)([\w\.]+)/i],[h,[p,"Blink"]],[/(presto)\/([\w\.]+)/i,/(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna)\/([\w\.]+)/i,/ekioh(flow)\/([\w\.]+)/i,/(khtml|tasman|links)[\/ ]\(?([\w\.]+)/i,/(icab)[\/ ]([23]\.[\d\.]+)/i],[p,h],[/rv\:([\w\.]{1,9})\b.+(gecko)/i],[h,p]],os:[[/microsoft (windows) (vista|xp)/i],[p,h],[/(windows) nt 6\.2; (arm)/i,/(windows (?:phone(?: os)?|mobile))[\/ ]?([\d\.\w ]*)/i,/(windows)[\/ ]?([ntce\d\. ]+\w)(?!.+xbox)/i],[p,[h,e,W]],[/(win(?=3|9|n)|win 9x )([nt\d\.]+)/i],[[p,"Windows"],[h,e,W]],[/ip[honead]{2,4}\b(?:.*os ([\w]+) like mac|; opera)/i,/cfnetwork\/.+darwin/i],[[h,/_/g,"."],[p,"iOS"]],[/(mac os x) ?([\w\. ]*)/i,/(macintosh|mac_powerpc\b)(?!.+haiku)/i],[[p,"Mac OS"],[h,/_/g,"."]],[/droid ([\w\.]+)\b.+(android[- ]x86)/i],[h,p],[/(android|webos|qnx|bada|rim tablet os|maemo|meego|sailfish)[-\/ ]?([\w\.]*)/i,/(blackberry)\w*\/([\w\.]*)/i,/(tizen|kaios)[\/ ]([\w\.]+)/i,/\((series40);/i],[p,h],[/\(bb(10);/i],[h,[p,q]],[/(?:symbian ?os|symbos|s60(?=;)|series60)[-\/ ]?([\w\.]*)/i],[h,[p,"Symbian"]],[/mozilla\/[\d\.]+ \((?:mobile|tablet|tv|mobile; [\w ]+); rv:.+ gecko\/([\w\.]+)/i],[h,[p,A+" OS"]],[/web0s;.+rt(tv)/i,/\b(?:hp)?wos(?:browser)?\/([\w\.]+)/i],[h,[p,"webOS"]],[/crkey\/([\d\.]+)/i],[h,[p,N+"cast"]],[/(cros) [\w]+ ([\w\.]+\w)/i],[[p,"Chromium OS"],h],[/(nintendo|playstation) ([wids345portablevuch]+)/i,/(xbox); +xbox ([^\);]+)/i,/\b(joli|palm)\b ?(?:os)?\/?([\w\.]*)/i,/(mint)[\/\(\) ]?(\w*)/i,/(mageia|vectorlinux)[; ]/i,/([kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?= linux)|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire)(?: gnu\/linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\/ ]?(?!chrom|package)([-\w\.]*)/i,/(hurd|linux) ?([\w\.]*)/i,/(gnu) ?([\w\.]*)/i,/\b([-frentopcghs]{0,5}bsd|dragonfly)[\/ ]?(?!amd|[ix346]{1,2}86)([\w\.]*)/i,/(haiku) (\w+)/i],[p,h],[/(sunos) ?([\w\.\d]*)/i],[[p,"Solaris"],h],[/((?:open)?solaris)[-\/ ]?([\w\.]*)/i,/(aix) ((\d)(?=\.|\)| )[\w\.])*/i,/\b(beos|os\/2|amigaos|morphos|openvms|fuchsia|hp-ux)/i,/(unix) ?([\w\.]*)/i],[p,h]]},G=function(i,e){if(typeof i==c&&(e=i,i=d),!(this instanceof G))return new G(i,e).getResult();var o=i||(typeof r!=b&&r.navigator&&r.navigator.userAgent?r.navigator.userAgent:""),a=e?function(i,e){var o,a={};for(o in i)e[o]&&e[o].length%2==0?a[o]=e[o].concat(i[o]):a[o]=i[o];return a}(F,e):F;return this.getBrowser=function(){var i,e={};return e[p]=d,e[h]=d,s.call(e,o,a.browser),e.major=typeof(i=e.version)==w?i.replace(/[^\d\.]/g,"").split(".")[0]:d,e},this.getCPU=function(){var i={};return i[g]=d,s.call(i,o,a.cpu),i},this.getDevice=function(){var i={};return i[f]=d,i[l]=d,i[m]=d,s.call(i,o,a.device),i},this.getEngine=function(){var i={};return i[p]=d,i[h]=d,s.call(i,o,a.engine),i},this.getOS=function(){var i={};return i[p]=d,i[h]=d,s.call(i,o,a.os),i},this.getResult=function(){return{ua:this.getUA(),browser:this.getBrowser(),engine:this.getEngine(),os:this.getOS(),device:this.getDevice(),cpu:this.getCPU()}},this.getUA=function(){return o},this.setUA=function(i){return o=typeof i==w&&255<i.length?t(i,255):i,this},this.setUA(o),this};G.VERSION="0.7.31",G.BROWSER=i([p,h,"major"]),G.CPU=i([g]),G.DEVICE=i([l,f,m,o,a,x,v,k,y]),G.ENGINE=G.OS=i([p,h]),typeof exports!=b?(typeof module!=b&&module.exports&&(exports=module.exports=G),exports.UAParser=G):typeof define==u&&define.amd?define(function(){return G}):typeof r!=b&&(r.UAParser=G);var L,Z=typeof r!=b&&(r.jQuery||r.Zepto);Z&&!Z.ua&&(L=new G,Z.ua=L.getResult(),Z.ua.get=function(){return L.getUA()},Z.ua.set=function(i){L.setUA(i);var e,o=L.getResult();for(e in o)Z.ua[e]=o[e]})}("object"==typeof window?window:this); -
trip-planner-front/node_modules/ua-parser-js/package.js
r59329aa re29cc2e 1 1 Package.describe({ 2 2 name: 'faisalman:ua-parser-js', 3 version: '0.7. 28',3 version: '0.7.31', 4 4 summary: 'Lightweight JavaScript-based user-agent string parser', 5 5 git: 'https://github.com/faisalman/ua-parser-js.git', -
trip-planner-front/node_modules/ua-parser-js/package.json
r59329aa re29cc2e 1 1 { 2 "_args": [ 3 [ 4 "ua-parser-js@0.7.28", 5 "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front" 6 ] 7 ], 8 "_development": true, 9 "_from": "ua-parser-js@0.7.28", 10 "_id": "ua-parser-js@0.7.28", 2 "_from": "ua-parser-js@^0.7.30", 3 "_id": "ua-parser-js@0.7.31", 11 4 "_inBundle": false, 12 "_integrity": "sha512- 6Gurc1n//gjp9eQNXjD9O3M/sMwVtN5S8Lv9bvOYBfKfDNiIIhqiyi01vMBO45u4zkDE420w/e0se7Vs+sIg+g==",5 "_integrity": "sha512-qLK/Xe9E2uzmYI3qLeOmI0tEOt+TBBQyUIAh4aAgU05FVYzeZrKUdkAZfBNVGRaHVgV0TDkdEngJSw/SyQchkQ==", 13 6 "_location": "/ua-parser-js", 14 7 "_phantomChildren": {}, 15 8 "_requested": { 16 "type": " version",9 "type": "range", 17 10 "registry": true, 18 "raw": "ua-parser-js@ 0.7.28",11 "raw": "ua-parser-js@^0.7.30", 19 12 "name": "ua-parser-js", 20 13 "escapedName": "ua-parser-js", 21 "rawSpec": " 0.7.28",14 "rawSpec": "^0.7.30", 22 15 "saveSpec": null, 23 "fetchSpec": " 0.7.28"16 "fetchSpec": "^0.7.30" 24 17 }, 25 18 "_requiredBy": [ 26 19 "/karma" 27 20 ], 28 "_resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.28.tgz", 29 "_spec": "0.7.28", 30 "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front", 21 "_resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.31.tgz", 22 "_shasum": "649a656b191dffab4f21d5e053e27ca17cbff5c6", 23 "_spec": "ua-parser-js@^0.7.30", 24 "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front\\node_modules\\karma", 31 25 "author": { 32 26 "name": "Faisal Salman", … … 37 31 "url": "https://github.com/faisalman/ua-parser-js/issues" 38 32 }, 33 "bundleDependencies": false, 39 34 "contributors": [ 40 35 { … … 528 523 ], 529 524 "demo": "https://faisalman.github.io/ua-parser-js", 530 "description": "Lightweight JavaScript-based user-agent string parser", 525 "deprecated": false, 526 "description": "Detect Browser, Engine, OS, CPU, and Device type/model from User-Agent data. Supports browser & node.js environment", 531 527 "devDependencies": { 528 "@babel/parser": "7.15.8", 529 "@babel/traverse": "7.15.4", 532 530 "jshint": "~2.12.0", 533 531 "mocha": "~8.2.0", … … 576 574 }, 577 575 "scripts": { 578 "build": "uglifyjs src/ua-parser.js -o dist/ua-parser.min.js --comments && uglifyjs src/ua-parser.js -o dist/ua-parser.pack.js --comments--compress --mangle",576 "build": "uglifyjs src/ua-parser.js -o dist/ua-parser.min.js --comments '/^ UA/' && uglifyjs src/ua-parser.js -o dist/ua-parser.pack.js --comments '/^ UA/' --compress --mangle", 579 577 "test": "jshint src/ua-parser.js && mocha -R nyan test/test.js", 580 578 "test-ci": "jshint src/ua-parser.js && mocha -R spec test/test.js", … … 583 581 }, 584 582 "title": "UAParser.js", 585 "version": "0.7. 28",583 "version": "0.7.31", 586 584 "verup": { 587 585 "files": [ … … 592 590 "regs": [ 593 591 "^((?:\\$|(\\s*\\*\\s*@)|(\\s*(?:var|,)?\\s+))(?:LIBVERSION|version)[\\s\\:='\"]+)([0-9]+(?:\\.[0-9]+){2,2})", 594 "^(\\ s?\\*.*v)([0-9]+(?:\\.[0-9]+){2,2})"592 "^(\\/?\\s?\\*.*v)([0-9]+(?:\\.[0-9]+){2,2})" 595 593 ] 596 594 } -
trip-planner-front/node_modules/ua-parser-js/readme.md
r59329aa re29cc2e 16 16 17 17 * Author : Faisal Salman <<f@faisalman.com>> 18 * Demo : http ://faisalman.github.io/ua-parser-js18 * Demo : https://faisalman.github.io/ua-parser-js 19 19 * Source : https://github.com/faisalman/ua-parser-js 20 20 … … 42 42 Firefox [Reality], Flock, Flow, GSA, GoBrowser, ICE Browser, IE, IEMobile, IceApe, 43 43 IceCat, IceDragon, Iceweasel, Instagram, Iridium, Iron, Jasmine, K-Meleon, 44 Kindle, K onqueror, LBBROWSER, Line, Links, Lunascape, Lynx, MIUI Browser,44 Kindle, Klar, Konqueror, LBBROWSER, Line, Links, Lunascape, Lynx, MIUI Browser, 45 45 Maemo Browser, Maemo, Maxthon, MetaSr Midori, Minimo, Mobile Safari, Mosaic, 46 Mozilla, NetFront, NetSurf, Netfront, Netscape, NokiaBrowser, O culus Browser,46 Mozilla, NetFront, NetSurf, Netfront, Netscape, NokiaBrowser, Obigo, Oculus Browser, 47 47 OmniWeb, Opera Coast, Opera [Mini/Mobi/Tablet], PaleMoon, PhantomJS, Phoenix, 48 48 Polaris, Puffin, QQ, QQBrowser, QQBrowserLite, Quark, QupZilla, RockMelt, Safari, 49 49 Sailfish Browser, Samsung Browser, SeaMonkey, Silk, Skyfire, Sleipnir, Slim, 50 SlimBrowser, Swiftfox, Tesla, Tizen Browser, UCBrowser, Vivaldi, Waterfox, WeChat,51 W eibo, Yandex, baidu, iCab, w3m, Whale Browser...50 SlimBrowser, Swiftfox, Tesla, Tizen Browser, UCBrowser, UP.Browser, Vivaldi, 51 Waterfox, WeChat, Weibo, Yandex, baidu, iCab, w3m, Whale Browser... 52 52 53 53 # 'browser.version' determined dynamically … … 65 65 Essential, Fairphone, GeeksPhone, Google, HP, HTC, Huawei, Jolla, Lenovo, LG, 66 66 Meizu, Microsoft, Motorola, Nexian, Nintendo, Nokia, Nvidia, OnePlus, OPPO, Ouya, 67 Palm, Panasonic, Pebble, Polytron, Realme, RIM, Samsung, Sharp, Siemens,67 Palm, Panasonic, Pebble, Polytron, Realme, RIM, Roku, Samsung, Sharp, Siemens, 68 68 Sony[Ericsson], Sprint, Tesla, Vivo, Vodafone, Xbox, Xiaomi, Zebra, ZTE, ... 69 69 … … 87 87 ```sh 88 88 # Possible 'os.name' 89 AIX, Amiga OS, Android , Arch, Bada, BeOS, BlackBerry, CentOS, Chromium OS,90 Contiki, Fedora, Firefox OS, FreeBSD, Debian, D ragonFly, Fuchsia, Gentoo, GNU,91 Haiku, Hurd, iOS, Joli, KaiOS, Linpus, Linux, Mac OS, Mageia, Mandriva, MeeGo,92 Minix, Mint, Morph OS, NetBSD, Nintendo, OpenBSD, OpenVMS, OS/2, Palm, PC-BSD,93 PCLinuxOS, Plan9, PlayStation, QNX, Raspbian, RedHat, RIM Tablet OS, RISC OS, 94 Sailfish, Series40, Slackware, Solaris, SUSE, Symbian, Tizen, Ubuntu, Unix,95 VectorLinux, WebOS, Windows [Phone/Mobile], Zenwalk, ...89 AIX, Amiga OS, Android[-x86], Arch, Bada, BeOS, BlackBerry, CentOS, Chromium OS, 90 Contiki, Fedora, Firefox OS, FreeBSD, Debian, Deepin, DragonFly, elementary OS, 91 Fuchsia, Gentoo, GhostBSD, GNU, Haiku, HP-UX, Hurd, iOS, Joli, KaiOS, Linpus, Linspire, 92 Linux, Mac OS, Maemo, Mageia, Mandriva, Manjaro, MeeGo, Minix, Mint, Morph OS, NetBSD, 93 Nintendo, OpenBSD, OpenVMS, OS/2, Palm, PC-BSD, PCLinuxOS, Plan9, PlayStation, QNX, 94 Raspbian, RedHat, RIM Tablet OS, RISC OS, Sabayon, Sailfish, Series40, Slackware, Solaris, 95 SUSE, Symbian, Tizen, Ubuntu, Unix, VectorLinux, WebOS, Windows [Phone/Mobile], Zenwalk, ... 96 96 97 97 # 'os.version' determined dynamically -
trip-planner-front/node_modules/ua-parser-js/src/ua-parser.js
r59329aa re29cc2e 1 /*!@license 2 * UAParser.js v0.7.28 3 * Lightweight JavaScript-based User-Agent string parser 4 * https://github.com/faisalman/ua-parser-js 5 * 6 * Copyright © 2012-2021 Faisal Salman <f@faisalman.com> 7 * Licensed under MIT License 8 */ 1 ///////////////////////////////////////////////////////////////////////////////// 2 /* UAParser.js v0.7.31 3 Copyright © 2012-2021 Faisal Salman <f@faisalman.com> 4 MIT License *//* 5 Detect Browser, Engine, OS, CPU, and Device type/model from User-Agent data. 6 Supports browser & node.js environment. 7 Demo : https://faisalman.github.io/ua-parser-js 8 Source : https://github.com/faisalman/ua-parser-js */ 9 ///////////////////////////////////////////////////////////////////////////////// 9 10 10 11 (function (window, undefined) { … … 17 18 18 19 19 var LIBVERSION = '0.7. 28',20 var LIBVERSION = '0.7.31', 20 21 EMPTY = '', 21 22 UNKNOWN = '?', … … 24 25 OBJ_TYPE = 'object', 25 26 STR_TYPE = 'string', 26 MAJOR = 'major', // deprecated27 MAJOR = 'major', 27 28 MODEL = 'model', 28 29 NAME = 'name', … … 39 40 UA_MAX_LENGTH = 255; 40 41 42 var AMAZON = 'Amazon', 43 APPLE = 'Apple', 44 ASUS = 'ASUS', 45 BLACKBERRY = 'BlackBerry', 46 BROWSER = 'Browser', 47 CHROME = 'Chrome', 48 EDGE = 'Edge', 49 FIREFOX = 'Firefox', 50 GOOGLE = 'Google', 51 HUAWEI = 'Huawei', 52 LG = 'LG', 53 MICROSOFT = 'Microsoft', 54 MOTOROLA = 'Motorola', 55 OPERA = 'Opera', 56 SAMSUNG = 'Samsung', 57 SONY = 'Sony', 58 XIAOMI = 'Xiaomi', 59 ZEBRA = 'Zebra', 60 FACEBOOK = 'Facebook'; 41 61 42 62 /////////// … … 44 64 ////////// 45 65 46 47 var util = { 48 extend : function (regexes, extensions) { 66 var extend = function (regexes, extensions) { 49 67 var mergedRegexes = {}; 50 68 for (var i in regexes) { … … 57 75 return mergedRegexes; 58 76 }, 59 has : function (str1, str2) { 60 return typeof str1 === STR_TYPE ? str2.toLowerCase().indexOf(str1.toLowerCase()) !== -1 : false; 77 enumerize = function (arr) { 78 var enums = {}; 79 for (var i=0; i<arr.length; i++) { 80 enums[arr[i].toUpperCase()] = arr[i]; 81 } 82 return enums; 61 83 }, 62 lowerize : function (str) { 84 has = function (str1, str2) { 85 return typeof str1 === STR_TYPE ? lowerize(str2).indexOf(lowerize(str1)) !== -1 : false; 86 }, 87 lowerize = function (str) { 63 88 return str.toLowerCase(); 64 89 }, 65 major :function (version) {66 return typeof(version) === STR_TYPE ? version.replace(/[^\d\.]/g, '').split(".")[0] : undefined;90 majorize = function (version) { 91 return typeof(version) === STR_TYPE ? version.replace(/[^\d\.]/g, EMPTY).split('.')[0] : undefined; 67 92 }, 68 trim : function (str, len) { 69 str = str.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, ''); 70 return typeof(len) === UNDEF_TYPE ? str : str.substring(0, UA_MAX_LENGTH); 71 } 93 trim = function (str, len) { 94 if (typeof(str) === STR_TYPE) { 95 str = str.replace(/^\s\s*/, EMPTY).replace(/\s\s*$/, EMPTY); 96 return typeof(len) === UNDEF_TYPE ? str : str.substring(0, UA_MAX_LENGTH); 97 } 72 98 }; 73 74 99 75 100 /////////////// … … 77 102 ////////////// 78 103 79 80 var mapper = { 81 82 rgx : function (ua, arrays) { 104 var rgxMapper = function (ua, arrays) { 83 105 84 106 var i = 0, j, k, p, q, matches, match; … … 102 124 // check if given property is actually array 103 125 if (typeof q === OBJ_TYPE && q.length > 0) { 104 if (q.length == 2) {126 if (q.length === 2) { 105 127 if (typeof q[1] == FUNC_TYPE) { 106 128 // assign modified match … … 110 132 this[q[0]] = q[1]; 111 133 } 112 } else if (q.length == 3) {134 } else if (q.length === 3) { 113 135 // check whether function or regex 114 136 if (typeof q[1] === FUNC_TYPE && !(q[1].exec && q[1].test)) { … … 119 141 this[q[0]] = match ? match.replace(q[1], q[2]) : undefined; 120 142 } 121 } else if (q.length == 4) {143 } else if (q.length === 4) { 122 144 this[q[0]] = match ? q[3].call(this, match.replace(q[1], q[2])) : undefined; 123 145 } … … 132 154 }, 133 155 134 str :function (str, map) {156 strMapper = function (str, map) { 135 157 136 158 for (var i in map) { 137 // check if array159 // check if current value is array 138 160 if (typeof map[i] === OBJ_TYPE && map[i].length > 0) { 139 161 for (var j = 0; j < map[i].length; j++) { 140 if ( util.has(map[i][j], str)) {162 if (has(map[i][j], str)) { 141 163 return (i === UNKNOWN) ? undefined : i; 142 164 } 143 165 } 144 } else if ( util.has(map[i], str)) {166 } else if (has(map[i], str)) { 145 167 return (i === UNKNOWN) ? undefined : i; 146 168 } 147 169 } 148 170 return str; 149 }150 171 }; 151 152 172 153 173 /////////////// … … 155 175 ////////////// 156 176 157 158 var maps = { 159 160 browser : { 161 // Safari < 3.0 162 oldSafari : { 163 version : { 164 '1.0' : '/8', 165 '1.2' : '/1', 166 '1.3' : '/3', 167 '2.0' : '/412', 168 '2.0.2' : '/416', 169 '2.0.3' : '/417', 170 '2.0.4' : '/419', 171 '?' : '/' 172 } 173 }, 174 oldEdge : { 175 version : { 176 '0.1' : '12.', 177 '21' : '13.', 178 '31' : '14.', 179 '39' : '15.', 180 '41' : '16.', 181 '42' : '17.', 182 '44' : '18.' 183 } 184 } 177 // Safari < 3.0 178 var oldSafariMap = { 179 '1.0' : '/8', 180 '1.2' : '/1', 181 '1.3' : '/3', 182 '2.0' : '/412', 183 '2.0.2' : '/416', 184 '2.0.3' : '/417', 185 '2.0.4' : '/419', 186 '?' : '/' 185 187 }, 186 187 os : { 188 windows : { 189 version : { 190 'ME' : '4.90', 191 'NT 3.11' : 'NT3.51', 192 'NT 4.0' : 'NT4.0', 193 '2000' : 'NT 5.0', 194 'XP' : ['NT 5.1', 'NT 5.2'], 195 'Vista' : 'NT 6.0', 196 '7' : 'NT 6.1', 197 '8' : 'NT 6.2', 198 '8.1' : 'NT 6.3', 199 '10' : ['NT 6.4', 'NT 10.0'], 200 'RT' : 'ARM' 201 } 202 } 203 } 188 windowsVersionMap = { 189 'ME' : '4.90', 190 'NT 3.11' : 'NT3.51', 191 'NT 4.0' : 'NT4.0', 192 '2000' : 'NT 5.0', 193 'XP' : ['NT 5.1', 'NT 5.2'], 194 'Vista' : 'NT 6.0', 195 '7' : 'NT 6.1', 196 '8' : 'NT 6.2', 197 '8.1' : 'NT 6.3', 198 '10' : ['NT 6.4', 'NT 10.0'], 199 'RT' : 'ARM' 204 200 }; 205 206 201 207 202 ////////////// 208 203 // Regex map 209 204 ///////////// 210 211 205 212 206 var regexes = { … … 218 212 /edg(?:e|ios|a)?\/([\w\.]+)/i // Microsoft Edge 219 213 ], [VERSION, [NAME, 'Edge']], [ 220 // breaking change (reserved for next major release):221 ///edge\/([\w\.]+)/i // Old Edge (Trident)222 //], [[VERSION, mapper.str, maps.browser.oldEdge.version], [NAME, 'Edge']], [223 214 224 215 // Presto based 225 /(opera \smini)\/([\w\.-]+)/i,// Opera Mini226 /(opera \s[mobiletab]{3,6})\b.+version\/([\w\.-]+)/i,// Opera Mobi/Tablet227 /(opera)(?:.+version\/|[\/ \s]+)([\w\.]+)/i,// Opera228 ], [NAME, VERSION], [ 229 /opios[\/ \s]+([\w\.]+)/i// Opera mini on iphone >= 8.0230 ], [VERSION, [NAME, 'OperaMini']], [231 /\ sopr\/([\w\.]+)/i // Opera Webkit232 ], [VERSION, [NAME, 'Opera']], [216 /(opera mini)\/([-\w\.]+)/i, // Opera Mini 217 /(opera [mobiletab]{3,6})\b.+version\/([-\w\.]+)/i, // Opera Mobi/Tablet 218 /(opera)(?:.+version\/|[\/ ]+)([\w\.]+)/i // Opera 219 ], [NAME, VERSION], [ 220 /opios[\/ ]+([\w\.]+)/i // Opera mini on iphone >= 8.0 221 ], [VERSION, [NAME, OPERA+' Mini']], [ 222 /\bopr\/([\w\.]+)/i // Opera Webkit 223 ], [VERSION, [NAME, OPERA]], [ 233 224 234 225 // Mixed 235 226 /(kindle)\/([\w\.]+)/i, // Kindle 236 /(lunascape|maxthon|netfront|jasmine|blazer)[\/ \s]?([\w\.]*)/i,// Lunascape/Maxthon/Netfront/Jasmine/Blazer227 /(lunascape|maxthon|netfront|jasmine|blazer)[\/ ]?([\w\.]*)/i, // Lunascape/Maxthon/Netfront/Jasmine/Blazer 237 228 // Trident based 238 /(avant\s|iemobile|slim)(?:browser)?[\/\s]?([\w\.]*)/i, // Avant/IEMobile/SlimBrowser 239 /(ba?idubrowser)[\/\s]?([\w\.]+)/i, // Baidu Browser 240 /(?:ms|\()(ie)\s([\w\.]+)/i, // Internet Explorer 241 242 // Webkit/KHTML based 243 /(flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark|qupzilla|falkon)\/([\w\.-]+)/i, 244 // Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron/Iridium/PhantomJS/Bowser/QupZilla/Falkon 245 /(rekonq|puffin|brave|whale|qqbrowserlite|qq)\/([\w\.]+)/i, // Rekonq/Puffin/Brave/Whale/QQBrowserLite/QQ, aka ShouQ 229 /(avant |iemobile|slim)(?:browser)?[\/ ]?([\w\.]*)/i, // Avant/IEMobile/SlimBrowser 230 /(ba?idubrowser)[\/ ]?([\w\.]+)/i, // Baidu Browser 231 /(?:ms|\()(ie) ([\w\.]+)/i, // Internet Explorer 232 233 // Webkit/KHTML based // Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron/Iridium/PhantomJS/Bowser/QupZilla/Falkon 234 /(flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark|qupzilla|falkon|rekonq|puffin|brave|whale|qqbrowserlite|qq)\/([-\w\.]+)/i, 235 // Rekonq/Puffin/Brave/Whale/QQBrowserLite/QQ, aka ShouQ 246 236 /(weibo)__([\d\.]+)/i // Weibo 247 237 ], [NAME, VERSION], [ 248 /(?: [\s\/]uc?\s?browser|(?:juc.+)ucweb)[\/\s]?([\w\.]+)/i// UCBrowser249 ], [VERSION, [NAME, 'UC Browser']], [250 / (?:windowswechat)?\sqbcore\/([\w\.]+)\b.*(?:windowswechat)?/i// WeChat Desktop for Windows Built-in Browser238 /(?:\buc? ?browser|(?:juc.+)ucweb)[\/ ]?([\w\.]+)/i // UCBrowser 239 ], [VERSION, [NAME, 'UC'+BROWSER]], [ 240 /\bqbcore\/([\w\.]+)/i // WeChat Desktop for Windows Built-in Browser 251 241 ], [VERSION, [NAME, 'WeChat(Win) Desktop']], [ 252 242 /micromessenger\/([\w\.]+)/i // WeChat … … 254 244 /konqueror\/([\w\.]+)/i // Konqueror 255 245 ], [VERSION, [NAME, 'Konqueror']], [ 256 /trident.+rv[: \s]([\w\.]{1,9})\b.+like\sgecko/i// IE11246 /trident.+rv[: ]([\w\.]{1,9})\b.+like gecko/i // IE11 257 247 ], [VERSION, [NAME, 'IE']], [ 258 248 /yabrowser\/([\w\.]+)/i // Yandex 259 249 ], [VERSION, [NAME, 'Yandex']], [ 260 250 /(avast|avg)\/([\w\.]+)/i // Avast/AVG Secure Browser 261 ], [[NAME, /(.+)/, '$1 Secure Browser'], VERSION], [262 / focus\/([\w\.]+)/i// Firefox Focus263 ], [VERSION, [NAME, 'FirefoxFocus']], [264 / opt\/([\w\.]+)/i// Opera Touch265 ], [VERSION, [NAME, 'OperaTouch']], [266 /coc_coc _browser\/([\w\.]+)/i// Coc Coc Browser251 ], [[NAME, /(.+)/, '$1 Secure '+BROWSER], VERSION], [ 252 /\bfocus\/([\w\.]+)/i // Firefox Focus 253 ], [VERSION, [NAME, FIREFOX+' Focus']], [ 254 /\bopt\/([\w\.]+)/i // Opera Touch 255 ], [VERSION, [NAME, OPERA+' Touch']], [ 256 /coc_coc\w+\/([\w\.]+)/i // Coc Coc Browser 267 257 ], [VERSION, [NAME, 'Coc Coc']], [ 268 258 /dolfin\/([\w\.]+)/i // Dolphin 269 259 ], [VERSION, [NAME, 'Dolphin']], [ 270 260 /coast\/([\w\.]+)/i // Opera Coast 271 ], [VERSION, [NAME, 'Opera Coast']],272 [/xiaomi\/miuibrowser\/([\w\.]+)/i// MIUI Browser273 ], [VERSION, [NAME, 'MIUI Browser']], [274 /fxios\/([ \w\.-]+)/i // Firefox for iOS275 ], [VERSION, [NAME, 'Firefox']], [276 / (qihu|qhbrowser|qihoobrowser|360browser)/i// 360277 ], [[NAME, '360 Browser']], [261 ], [VERSION, [NAME, OPERA+' Coast']], [ 262 /miuibrowser\/([\w\.]+)/i // MIUI Browser 263 ], [VERSION, [NAME, 'MIUI '+BROWSER]], [ 264 /fxios\/([-\w\.]+)/i // Firefox for iOS 265 ], [VERSION, [NAME, FIREFOX]], [ 266 /\bqihu|(qi?ho?o?|360)browser/i // 360 267 ], [[NAME, '360 '+BROWSER]], [ 278 268 /(oculus|samsung|sailfish)browser\/([\w\.]+)/i 279 ], [[NAME, /(.+)/, '$1 Browser'], VERSION], [// Oculus/Samsung/Sailfish Browser269 ], [[NAME, /(.+)/, '$1 '+BROWSER], VERSION], [ // Oculus/Samsung/Sailfish Browser 280 270 /(comodo_dragon)\/([\w\.]+)/i // Comodo Dragon 281 271 ], [[NAME, /_/g, ' '], VERSION], [ 282 / \s(electron)\/([\w\.]+)\ssafari/i,// Electron-based App283 /(tesla)(?: \sqtcarbrowser|\/(20[12]\d\.[\w\.-]+))/i,// Tesla284 /m?(qqbrowser|baiduboxapp|2345Explorer)[\/ \s]?([\w\.]+)/i// QQBrowser/Baidu App/2345 Browser285 ], [NAME, VERSION], [ 286 /( MetaSr)[\/\s]?([\w\.]+)/i,// SouGouBrowser287 /( LBBROWSER)/i // LieBao Browser272 /(electron)\/([\w\.]+) safari/i, // Electron-based App 273 /(tesla)(?: qtcarbrowser|\/(20\d\d\.[-\w\.]+))/i, // Tesla 274 /m?(qqbrowser|baiduboxapp|2345Explorer)[\/ ]?([\w\.]+)/i // QQBrowser/Baidu App/2345 Browser 275 ], [NAME, VERSION], [ 276 /(metasr)[\/ ]?([\w\.]+)/i, // SouGouBrowser 277 /(lbbrowser)/i // LieBao Browser 288 278 ], [NAME], [ 289 279 290 280 // WebView 291 /;fbav\/([\w\.]+);/i // Facebook App for iOS & Android with version 292 ], [VERSION, [NAME, 'Facebook']], [ 293 /FBAN\/FBIOS|FB_IAB\/FB4A/i // Facebook App for iOS & Android without version 294 ], [[NAME, 'Facebook']], [ 295 /safari\s(line)\/([\w\.]+)/i, // Line App for iOS 281 /((?:fban\/fbios|fb_iab\/fb4a)(?!.+fbav)|;fbav\/([\w\.]+);)/i // Facebook App for iOS & Android 282 ], [[NAME, FACEBOOK], VERSION], [ 283 /safari (line)\/([\w\.]+)/i, // Line App for iOS 296 284 /\b(line)\/([\w\.]+)\/iab/i, // Line App for Android 297 /(chromium|instagram)[\/ \s]([\w\.-]+)/i// Chromium/Instagram298 ], [NAME, VERSION], [ 299 /\bgsa\/([\w\.]+) \s.*safari\//i// Google Search Appliance on iOS285 /(chromium|instagram)[\/ ]([-\w\.]+)/i // Chromium/Instagram 286 ], [NAME, VERSION], [ 287 /\bgsa\/([\w\.]+) .*safari\//i // Google Search Appliance on iOS 300 288 ], [VERSION, [NAME, 'GSA']], [ 301 289 302 /headlesschrome(?:\/([\w\.]+)| \s)/i// Chrome Headless303 ], [VERSION, [NAME, 'ChromeHeadless']], [304 305 / \swv\).+(chrome)\/([\w\.]+)/i// Chrome WebView306 ], [[NAME, 'ChromeWebView'], VERSION], [307 308 /droid.+ \sversion\/([\w\.]+)\b.+(?:mobile\ssafari|safari)/i// Android Browser309 ], [VERSION, [NAME, 'Android Browser']], [310 311 /(chrome|omniweb|arora|[tizenoka]{5} \s?browser)\/v?([\w\.]+)/i// Chrome/OmniWeb/Arora/Tizen/Nokia312 ], [NAME, VERSION], [ 313 314 /version\/([\w\.]+) \s.*mobile\/\w+\s(safari)/i// Mobile Safari290 /headlesschrome(?:\/([\w\.]+)| )/i // Chrome Headless 291 ], [VERSION, [NAME, CHROME+' Headless']], [ 292 293 / wv\).+(chrome)\/([\w\.]+)/i // Chrome WebView 294 ], [[NAME, CHROME+' WebView'], VERSION], [ 295 296 /droid.+ version\/([\w\.]+)\b.+(?:mobile safari|safari)/i // Android Browser 297 ], [VERSION, [NAME, 'Android '+BROWSER]], [ 298 299 /(chrome|omniweb|arora|[tizenoka]{5} ?browser)\/v?([\w\.]+)/i // Chrome/OmniWeb/Arora/Tizen/Nokia 300 ], [NAME, VERSION], [ 301 302 /version\/([\w\.]+) .*mobile\/\w+ (safari)/i // Mobile Safari 315 303 ], [VERSION, [NAME, 'Mobile Safari']], [ 316 /version\/([\w\.]+) \s.*(mobile\s?safari|safari)/i// Safari & Safari Mobile304 /version\/([\w\.]+) .*(mobile ?safari|safari)/i // Safari & Safari Mobile 317 305 ], [VERSION, NAME], [ 318 /webkit.+?(mobile \s?safari|safari)(\/[\w\.]+)/i// Safari < 3.0319 ], [NAME, [VERSION, mapper.str, maps.browser.oldSafari.version]], [306 /webkit.+?(mobile ?safari|safari)(\/[\w\.]+)/i // Safari < 3.0 307 ], [NAME, [VERSION, strMapper, oldSafariMap]], [ 320 308 321 309 /(webkit|khtml)\/([\w\.]+)/i … … 323 311 324 312 // Gecko based 325 /(navigator|netscape )\/([\w\.-]+)/i// Netscape313 /(navigator|netscape\d?)\/([-\w\.]+)/i // Netscape 326 314 ], [[NAME, 'Netscape'], VERSION], [ 327 / ile\svr;\srv:([\w\.]+)\).+firefox/i// Firefox Reality328 ], [VERSION, [NAME, 'FirefoxReality']], [315 /mobile vr; rv:([\w\.]+)\).+firefox/i // Firefox Reality 316 ], [VERSION, [NAME, FIREFOX+' Reality']], [ 329 317 /ekiohf.+(flow)\/([\w\.]+)/i, // Flow 330 318 /(swiftfox)/i, // Swiftfox 331 /(icedragon|iceweasel|camino|chimera|fennec|maemo \sbrowser|minimo|conkeror)[\/\s]?([\w\.\+]+)/i,332 // IceDragon/Iceweasel/Camino/Chimera/Fennec/Maemo/Minimo/Conkeror 333 /( firefox|seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\/([\w\.-]+)$/i,319 /(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror|klar)[\/ ]?([\w\.\+]+)/i, 320 // IceDragon/Iceweasel/Camino/Chimera/Fennec/Maemo/Minimo/Conkeror/Klar 321 /(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\/([-\w\.]+)$/i, 334 322 // Firefox/SeaMonkey/K-Meleon/IceCat/IceApe/Firebird/Phoenix 335 /(firefox)\/([\w\.]+) \s[\w\s\-]+\/[\w\.]+$/i,// Other Firefox-based336 /(mozilla)\/([\w\.]+) \s.+rv\:.+gecko\/\d+/i,// Mozilla323 /(firefox)\/([\w\.]+)/i, // Other Firefox-based 324 /(mozilla)\/([\w\.]+) .+rv\:.+gecko\/\d+/i, // Mozilla 337 325 338 326 // Other 339 /(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir)[\/\s]?([\w\.]+)/i, 340 // Polaris/Lynx/Dillo/iCab/Doris/Amaya/w3m/NetSurf/Sleipnir 341 /(links)\s\(([\w\.]+)/i, // Links 342 /(gobrowser)\/?([\w\.]*)/i, // GoBrowser 343 /(ice\s?browser)\/v?([\w\._]+)/i, // ICE Browser 344 /(mosaic)[\/\s]([\w\.]+)/i // Mosaic 327 /(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir|obigo|mosaic|(?:go|ice|up)[\. ]?browser)[-\/ ]?v?([\w\.]+)/i, 328 // Polaris/Lynx/Dillo/iCab/Doris/Amaya/w3m/NetSurf/Sleipnir/Obigo/Mosaic/Go/ICE/UP.Browser 329 /(links) \(([\w\.]+)/i // Links 345 330 ], [NAME, VERSION] 346 331 ], … … 348 333 cpu : [[ 349 334 350 /(?:(amd|x(?:(?:86|64)[ _-])?|wow|win)64)[;\)]/i // AMD64 (x64)335 /(?:(amd|x(?:(?:86|64)[-_])?|wow|win)64)[;\)]/i // AMD64 (x64) 351 336 ], [[ARCHITECTURE, 'amd64']], [ 352 337 353 338 /(ia32(?=;))/i // IA32 (quicktime) 354 ], [[ARCHITECTURE, util.lowerize]], [339 ], [[ARCHITECTURE, lowerize]], [ 355 340 356 341 /((?:i[346]|x)86)[;\)]/i // IA32 (x86) 357 342 ], [[ARCHITECTURE, 'ia32']], [ 358 343 359 /\b(aarch64|arm v?8e?l?)\b/i// ARM64344 /\b(aarch64|arm(v?8e?l?|_?64))\b/i // ARM64 360 345 ], [[ARCHITECTURE, 'arm64']], [ 361 346 … … 364 349 365 350 // PocketPC mistakenly identified as PowerPC 366 /windows \s(ce|mobile);\sppc;/i351 /windows (ce|mobile); ppc;/i 367 352 ], [[ARCHITECTURE, 'arm']], [ 368 353 369 /((?:ppc|powerpc)(?:64)?)(?: \smac|;|\))/i// PowerPC370 ], [[ARCHITECTURE, /ower/, '', util.lowerize]], [354 /((?:ppc|powerpc)(?:64)?)(?: mac|;|\))/i // PowerPC 355 ], [[ARCHITECTURE, /ower/, EMPTY, lowerize]], [ 371 356 372 357 /(sun4\w)[;\)]/i // SPARC 373 358 ], [[ARCHITECTURE, 'sparc']], [ 374 359 375 /((?:avr32|ia64(?=;))|68k(?=\))|\barm(? :64|(?=v(?:[1-7]|[5-7]1)l?|;|eabi))|(?=atmel\s)avr|(?:irix|mips|sparc)(?:64)?\b|pa-risc)/i360 /((?:avr32|ia64(?=;))|68k(?=\))|\barm(?=v(?:[1-7]|[5-7]1)l?|;|eabi)|(?=atmel )avr|(?:irix|mips|sparc)(?:64)?\b|pa-risc)/i 376 361 // IA64, 68K, ARM/64, AVR/32, IRIX/64, MIPS/64, SPARC/64, PA-RISC 377 ], [[ARCHITECTURE, util.lowerize]]362 ], [[ARCHITECTURE, lowerize]] 378 363 ], 379 364 … … 386 371 387 372 // Samsung 388 /\b(sch-i[89]0\d|shw-m380s|sm-[pt]\w{2,4}|gt-[pn]\d{2,4}|sgh-t8[56]9|nexus \s10)/i389 ], [MODEL, [VENDOR, 'Samsung'], [TYPE, TABLET]], [390 /\b((?:s[cgp]h|gt|sm)-\w+|galaxy \snexus)/i,391 / \ssamsung[\s-]([\w-]+)/i,373 /\b(sch-i[89]0\d|shw-m380s|sm-[pt]\w{2,4}|gt-[pn]\d{2,4}|sgh-t8[56]9|nexus 10)/i 374 ], [MODEL, [VENDOR, SAMSUNG], [TYPE, TABLET]], [ 375 /\b((?:s[cgp]h|gt|sm)-\w+|galaxy nexus)/i, 376 /samsung[- ]([-\w]+)/i, 392 377 /sec-(sgh\w+)/i 393 ], [MODEL, [VENDOR, 'Samsung'], [TYPE, MOBILE]], [378 ], [MODEL, [VENDOR, SAMSUNG], [TYPE, MOBILE]], [ 394 379 395 380 // Apple 396 /\((ip(?:hone|od)[\ s\w]*);/i// iPod/iPhone397 ], [MODEL, [VENDOR, 'Apple'], [TYPE, MOBILE]], [398 /\((ipad);[ \w\s\),;-]+apple/i,// iPad399 /applecoremedia\/[\w\.]+ \s\((ipad)/i,381 /\((ip(?:hone|od)[\w ]*);/i // iPod/iPhone 382 ], [MODEL, [VENDOR, APPLE], [TYPE, MOBILE]], [ 383 /\((ipad);[-\w\),; ]+apple/i, // iPad 384 /applecoremedia\/[\w\.]+ \((ipad)/i, 400 385 /\b(ipad)\d\d?,\d\d?[;\]].+ios/i 401 ], [MODEL, [VENDOR, 'Apple'], [TYPE, TABLET]], [386 ], [MODEL, [VENDOR, APPLE], [TYPE, TABLET]], [ 402 387 403 388 // Huawei 404 /\b((?:agr|ags[23]|bah2?|sht?)-a?[lw]\d{2})/i, 405 ], [MODEL, [VENDOR, 'Huawei'], [TYPE, TABLET]], [ 406 /d\/huawei([\w\s-]+)[;\)]/i, 407 /\b(nexus\s6p|vog-[at]?l\d\d|ane-[at]?l[x\d]\d|eml-a?l\d\da?|lya-[at]?l\d[\dc]|clt-a?l\d\di?|ele-l\d\d)/i, 408 /\b(\w{2,4}-[atu][ln][01259][019])[;\)\s]/i 409 ], [MODEL, [VENDOR, 'Huawei'], [TYPE, MOBILE]], [ 389 /\b((?:ag[rs][23]?|bah2?|sht?|btv)-a?[lw]\d{2})\b(?!.+d\/s)/i 390 ], [MODEL, [VENDOR, HUAWEI], [TYPE, TABLET]], [ 391 /(?:huawei|honor)([-\w ]+)[;\)]/i, 392 /\b(nexus 6p|\w{2,4}-[atu]?[ln][01259x][012359][an]?)\b(?!.+d\/s)/i 393 ], [MODEL, [VENDOR, HUAWEI], [TYPE, MOBILE]], [ 410 394 411 395 // Xiaomi 412 /\b(poco[\ s\w]+)(?:\sbuild|\))/i,// Xiaomi POCO413 /\b; \s(\w+)\sbuild\/hm\1/i,// Xiaomi Hongmi 'numeric' models414 /\b(hm[ \s\-_]?note?[\s_]?(?:\d\w)?)\sbuild/i,// Xiaomi Hongmi415 /\b(redmi[\ s\-_]?(?:note|k)?[\w\s_]+)(?:\sbuild|\))/i,// Xiaomi Redmi416 /\b(mi[ \s\-_]?(?:a\d|one|one[\s_]plus|note lte)?[\s_]?(?:\d?\w?)[\s_]?(?:plus)?)\sbuild/i// Xiaomi Mi417 ], [[MODEL, /_/g, ' '], [VENDOR, 'Xiaomi'], [TYPE, MOBILE]], [418 /\b(mi[ \s\-_]?(?:pad)(?:[\w\s_]+))(?:\sbuild|\))/i// Mi Pad tablets419 ],[[MODEL, /_/g, ' '], [VENDOR, 'Xiaomi'], [TYPE, TABLET]], [396 /\b(poco[\w ]+)(?: bui|\))/i, // Xiaomi POCO 397 /\b; (\w+) build\/hm\1/i, // Xiaomi Hongmi 'numeric' models 398 /\b(hm[-_ ]?note?[_ ]?(?:\d\w)?) bui/i, // Xiaomi Hongmi 399 /\b(redmi[\-_ ]?(?:note|k)?[\w_ ]+)(?: bui|\))/i, // Xiaomi Redmi 400 /\b(mi[-_ ]?(?:a\d|one|one[_ ]plus|note lte|max)?[_ ]?(?:\d?\w?)[_ ]?(?:plus|se|lite)?)(?: bui|\))/i // Xiaomi Mi 401 ], [[MODEL, /_/g, ' '], [VENDOR, XIAOMI], [TYPE, MOBILE]], [ 402 /\b(mi[-_ ]?(?:pad)(?:[\w_ ]+))(?: bui|\))/i // Mi Pad tablets 403 ],[[MODEL, /_/g, ' '], [VENDOR, XIAOMI], [TYPE, TABLET]], [ 420 404 421 405 // OPPO 422 /; \s(\w+)\sbuild.+\soppo/i,423 /\ s(cph[12]\d{3}|p(?:af|c[al]|d\w|e[ar])[mt]\d0|x9007)\b/i406 /; (\w+) bui.+ oppo/i, 407 /\b(cph[12]\d{3}|p(?:af|c[al]|d\w|e[ar])[mt]\d0|x9007|a101op)\b/i 424 408 ], [MODEL, [VENDOR, 'OPPO'], [TYPE, MOBILE]], [ 425 409 426 410 // Vivo 427 / \svivo\s(\w+)(?:\sbuild|\))/i,428 /\ s(v[12]\d{3}\w?[at])(?:\sbuild|;)/i411 /vivo (\w+)(?: bui|\))/i, 412 /\b(v[12]\d{3}\w?[at])(?: bui|;)/i 429 413 ], [MODEL, [VENDOR, 'Vivo'], [TYPE, MOBILE]], [ 430 414 431 415 // Realme 432 /\ s(rmx[12]\d{3})(?:\sbuild|;)/i416 /\b(rmx[12]\d{3})(?: bui|;|\))/i 433 417 ], [MODEL, [VENDOR, 'Realme'], [TYPE, MOBILE]], [ 434 418 435 419 // Motorola 436 /\ s(milestone|droid(?:[2-4x]|\s(?:bionic|x2|pro|razr))?:?(\s4g)?)\b[\w\s]+build\//i,437 /\ smot(?:orola)?[\s-](\w*)/i,438 /((?:moto[\ s\w\(\)]+|xt\d{3,4}|nexus\s6)(?=\sbuild|\)))/i439 ], [MODEL, [VENDOR, 'Motorola'], [TYPE, MOBILE]], [440 /\ s(mz60\d|xoom[\s2]{0,2})\sbuild\//i441 ], [MODEL, [VENDOR, 'Motorola'], [TYPE, TABLET]], [420 /\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\b[\w ]+build\//i, 421 /\bmot(?:orola)?[- ](\w*)/i, 422 /((?:moto[\w\(\) ]+|xt\d{3,4}|nexus 6)(?= bui|\)))/i 423 ], [MODEL, [VENDOR, MOTOROLA], [TYPE, MOBILE]], [ 424 /\b(mz60\d|xoom[2 ]{0,2}) build\//i 425 ], [MODEL, [VENDOR, MOTOROLA], [TYPE, TABLET]], [ 442 426 443 427 // LG 444 /((?=lg)?[vl]k\-?\d{3}) \sbuild|\s3\.[\s\w;-]{10}lg?-([06cv9]{3,4})/i445 ], [MODEL, [VENDOR, 'LG'], [TYPE, TABLET]], [446 /(lm -?f100[nv]?|nexus\s[45])/i,447 / lg[e;\s\/-]+((?!browser|netcast)\w+)/i,448 /\blg (\-?[\d\w]+)\sbuild/i449 ], [MODEL, [VENDOR, 'LG'], [TYPE, MOBILE]], [428 /((?=lg)?[vl]k\-?\d{3}) bui| 3\.[-\w; ]{10}lg?-([06cv9]{3,4})/i 429 ], [MODEL, [VENDOR, LG], [TYPE, TABLET]], [ 430 /(lm(?:-?f100[nv]?|-[\w\.]+)(?= bui|\))|nexus [45])/i, 431 /\blg[-e;\/ ]+((?!browser|netcast|android tv)\w+)/i, 432 /\blg-?([\d\w]+) bui/i 433 ], [MODEL, [VENDOR, LG], [TYPE, MOBILE]], [ 450 434 451 435 // Lenovo 452 /(ideatab[ \w\-\s]+)/i,453 /lenovo \s?(s(?:5000|6000)(?:[\w-]+)|tab(?:[\s\w]+)|yt[\d\w-]{6}|tb[\d\w-]{6})/i // Lenovo tablets436 /(ideatab[-\w ]+)/i, 437 /lenovo ?(s[56]000[-\w]+|tab(?:[\w ]+)|yt[-\d\w]{6}|tb[-\d\w]{6})/i 454 438 ], [MODEL, [VENDOR, 'Lenovo'], [TYPE, TABLET]], [ 455 439 456 440 // Nokia 457 /(?:maemo|nokia).*(n900|lumia \s\d+)/i,458 /nokia[ \s_-]?([\w\.-]*)/i441 /(?:maemo|nokia).*(n900|lumia \d+)/i, 442 /nokia[-_ ]?([-\w\.]*)/i 459 443 ], [[MODEL, /_/g, ' '], [VENDOR, 'Nokia'], [TYPE, MOBILE]], [ 460 444 461 445 // Google 462 / droid.+;\s(pixel\sc)[\s)]/i// Google Pixel C463 ], [MODEL, [VENDOR, 'Google'], [TYPE, TABLET]], [464 /droid.+; \s(pixel[\s\daxl]{0,6})(?:\sbuild|\))/i// Google Pixel465 ], [MODEL, [VENDOR, 'Google'], [TYPE, MOBILE]], [446 /(pixel c)\b/i // Google Pixel C 447 ], [MODEL, [VENDOR, GOOGLE], [TYPE, TABLET]], [ 448 /droid.+; (pixel[\daxl ]{0,6})(?: bui|\))/i // Google Pixel 449 ], [MODEL, [VENDOR, GOOGLE], [TYPE, MOBILE]], [ 466 450 467 451 // Sony 468 /droid.+ \s([c-g]\d{4}|so[-l]\w+|xq-a\w[4-7][12])(?=\sbuild\/|\).+chrome\/(?![1-6]{0,1}\d\.))/i469 ], [MODEL, [VENDOR, 'Sony'], [TYPE, MOBILE]], [470 /sony \stablet\s[ps]\sbuild\//i,471 / (?:sony)?sgp\w+(?:\sbuild\/|\))/i472 ], [[MODEL, 'Xperia Tablet'], [VENDOR, 'Sony'], [TYPE, TABLET]], [452 /droid.+ ([c-g]\d{4}|so[-gl]\w+|xq-a\w[4-7][12])(?= bui|\).+chrome\/(?![1-6]{0,1}\d\.))/i 453 ], [MODEL, [VENDOR, SONY], [TYPE, MOBILE]], [ 454 /sony tablet [ps]/i, 455 /\b(?:sony)?sgp\w+(?: bui|\))/i 456 ], [[MODEL, 'Xperia Tablet'], [VENDOR, SONY], [TYPE, TABLET]], [ 473 457 474 458 // OnePlus 475 /\s(kb2005|in20[12]5|be20[12][59])\b/i, 476 /\ba000(1)\sbuild/i, // OnePlus 477 /\boneplus\s(a\d{4})[\s)]/i 459 / (kb2005|in20[12]5|be20[12][59])\b/i, 460 /(?:one)?(?:plus)? (a\d0\d\d)(?: b|\))/i 478 461 ], [MODEL, [VENDOR, 'OnePlus'], [TYPE, MOBILE]], [ 479 462 480 463 // Amazon 481 464 /(alexa)webm/i, 482 /(kf[a-z]{2}wi)( \sbuild\/|\))/i,// Kindle Fire without Silk483 /(kf[a-z]+)( \sbuild\/|\)).+silk\//i// Kindle Fire HD484 ], [MODEL, [VENDOR, 'Amazon'], [TYPE, TABLET]], [485 /( sd|kf)[0349hijorstuw]+(\sbuild\/|\)).+silk\//i// Fire Phone486 ], [[MODEL, 'Fire Phone'], [VENDOR, 'Amazon'], [TYPE, MOBILE]], [465 /(kf[a-z]{2}wi)( bui|\))/i, // Kindle Fire without Silk 466 /(kf[a-z]+)( bui|\)).+silk\//i // Kindle Fire HD 467 ], [MODEL, [VENDOR, AMAZON], [TYPE, TABLET]], [ 468 /((?:sd|kf)[0349hijorstuw]+)( bui|\)).+silk\//i // Fire Phone 469 ], [[MODEL, /(.+)/g, 'Fire Phone $1'], [VENDOR, AMAZON], [TYPE, MOBILE]], [ 487 470 488 471 // BlackBerry 489 / \((playbook);[\w\s\),;-]+(rim)/i// BlackBerry PlayBook472 /(playbook);[-\w\),; ]+(rim)/i // BlackBerry PlayBook 490 473 ], [MODEL, VENDOR, [TYPE, TABLET]], [ 491 / ((?:bb[a-f]|st[hv])100-\d)/i,492 /\(bb10; \s(\w+)/i// BlackBerry 10493 ], [MODEL, [VENDOR, 'BlackBerry'], [TYPE, MOBILE]], [474 /\b((?:bb[a-f]|st[hv])100-\d)/i, 475 /\(bb10; (\w+)/i // BlackBerry 10 476 ], [MODEL, [VENDOR, BLACKBERRY], [TYPE, MOBILE]], [ 494 477 495 478 // Asus 496 /(?:\b|asus_)(transfo[prime \s]{4,10}\s\w+|eeepc|slider\s\w+|nexus\s7|padfone|p00[cj])/i497 ], [MODEL, [VENDOR, 'ASUS'], [TYPE, TABLET]], [498 / \s(z[es]6[027][01][km][ls]|zenfone\s\d\w?)\b/i499 ], [MODEL, [VENDOR, 'ASUS'], [TYPE, MOBILE]], [479 /(?:\b|asus_)(transfo[prime ]{4,10} \w+|eeepc|slider \w+|nexus 7|padfone|p00[cj])/i 480 ], [MODEL, [VENDOR, ASUS], [TYPE, TABLET]], [ 481 / (z[bes]6[027][012][km][ls]|zenfone \d\w?)\b/i 482 ], [MODEL, [VENDOR, ASUS], [TYPE, MOBILE]], [ 500 483 501 484 // HTC 502 /(nexus \s9)/i// HTC Nexus 9485 /(nexus 9)/i // HTC Nexus 9 503 486 ], [MODEL, [VENDOR, 'HTC'], [TYPE, TABLET]], [ 504 /(htc)[ ;_\s-]{1,2}([\w\s]+(?=\)|\sbuild)|\w+)/i,// HTC487 /(htc)[-;_ ]{1,2}([\w ]+(?=\)| bui)|\w+)/i, // HTC 505 488 506 489 // ZTE 507 /(zte) -(\w*)/i,508 /(alcatel|geeksphone|nexian|panasonic| (?=;\s)sony)[_\s-]?([\w-]*)/i// Alcatel/GeeksPhone/Nexian/Panasonic/Sony490 /(zte)[- ]([\w ]+?)(?: bui|\/|\))/i, 491 /(alcatel|geeksphone|nexian|panasonic|sony)[-_ ]?([-\w]*)/i // Alcatel/GeeksPhone/Nexian/Panasonic/Sony 509 492 ], [VENDOR, [MODEL, /_/g, ' '], [TYPE, MOBILE]], [ 510 493 511 494 // Acer 512 /droid [x\d\.\s;]+\s([ab][1-7]\-?[0178a]\d\d?)/i495 /droid.+; ([ab][1-7]-?[0178a]\d\d?)/i 513 496 ], [MODEL, [VENDOR, 'Acer'], [TYPE, TABLET]], [ 514 497 515 498 // Meizu 516 /droid.+; \s(m[1-5]\snote)\sbuild/i,517 /\bmz-([ \w-]{2,})/i499 /droid.+; (m[1-5] note) bui/i, 500 /\bmz-([-\w]{2,})/i 518 501 ], [MODEL, [VENDOR, 'Meizu'], [TYPE, MOBILE]], [ 519 502 503 // Sharp 504 /\b(sh-?[altvz]?\d\d[a-ekm]?)/i 505 ], [MODEL, [VENDOR, 'Sharp'], [TYPE, MOBILE]], [ 506 520 507 // MIXED 521 /(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron)[ \s_-]?([\w-]*)/i,508 /(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron)[-_ ]?([-\w]*)/i, 522 509 // BlackBerry/BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron 523 /(hp) \s([\w\s]+\w)/i,// HP iPAQ510 /(hp) ([\w ]+\w)/i, // HP iPAQ 524 511 /(asus)-?(\w+)/i, // Asus 525 /(microsoft); \s(lumia[\s\w]+)/i,// Microsoft Lumia526 /(lenovo)[ _\s-]?([\w-]+)/i,// Lenovo527 / linux;.+(jolla);/i,// Jolla528 / droid.+;\s(oppo)\s?([\w\s]+)\sbuild/i// OPPO512 /(microsoft); (lumia[\w ]+)/i, // Microsoft Lumia 513 /(lenovo)[-_ ]?([-\w]+)/i, // Lenovo 514 /(jolla)/i, // Jolla 515 /(oppo) ?([\w ]+) bui/i // OPPO 529 516 ], [VENDOR, MODEL, [TYPE, MOBILE]], [ 530 517 531 /(archos) \s(gamepad2?)/i,// Archos518 /(archos) (gamepad2?)/i, // Archos 532 519 /(hp).+(touchpad(?!.+tablet)|tablet)/i, // HP TouchPad 533 520 /(kindle)\/([\w\.]+)/i, // Kindle 534 / \s(nook)[\w\s]+build\/(\w+)/i,// Nook535 /(dell) \s(strea[kpr\s\d]*[\dko])/i,// Dell Streak536 / [;\/]\s?(le[\s\-]+pan)[\s\-]+(\w{1,9})\sbuild/i,// Le Pan Tablets537 / [;\/]\s?(trinity)[\-\s]*(t\d{3})\sbuild/i,// Trinity Tablets538 / \b(gigaset)[\s\-]+(q\w{1,9})\sbuild/i,// Gigaset Tablets539 / \b(vodafone)\s([\w\s]+)(?:\)|\sbuild)/i// Vodafone521 /(nook)[\w ]+build\/(\w+)/i, // Nook 522 /(dell) (strea[kpr\d ]*[\dko])/i, // Dell Streak 523 /(le[- ]+pan)[- ]+(\w{1,9}) bui/i, // Le Pan Tablets 524 /(trinity)[- ]*(t\d{3}) bui/i, // Trinity Tablets 525 /(gigaset)[- ]+(q\w{1,9}) bui/i, // Gigaset Tablets 526 /(vodafone) ([\w ]+)(?:\)| bui)/i // Vodafone 540 527 ], [VENDOR, MODEL, [TYPE, TABLET]], [ 541 528 542 / \s(surface\sduo)\s/i// Surface Duo543 ], [MODEL, [VENDOR, 'Microsoft'], [TYPE, TABLET]], [544 /droid \s[\d\.]+;\s(fp\du?)\sbuild/i529 /(surface duo)/i // Surface Duo 530 ], [MODEL, [VENDOR, MICROSOFT], [TYPE, TABLET]], [ 531 /droid [\d\.]+; (fp\du?)(?: b|\))/i // Fairphone 545 532 ], [MODEL, [VENDOR, 'Fairphone'], [TYPE, MOBILE]], [ 546 / \s(u304aa)\sbuild/i// AT&T533 /(u304aa)/i // AT&T 547 534 ], [MODEL, [VENDOR, 'AT&T'], [TYPE, MOBILE]], [ 548 / sie-(\w*)/i// Siemens535 /\bsie-(\w*)/i // Siemens 549 536 ], [MODEL, [VENDOR, 'Siemens'], [TYPE, MOBILE]], [ 550 / [;\/]\s?(rct\w+)\sbuild/i// RCA Tablets537 /\b(rct\w+) b/i // RCA Tablets 551 538 ], [MODEL, [VENDOR, 'RCA'], [TYPE, TABLET]], [ 552 / [;\/\s](venue[\d\s]{2,7})\sbuild/i// Dell Venue Tablets539 /\b(venue[\d ]{2,7}) b/i // Dell Venue Tablets 553 540 ], [MODEL, [VENDOR, 'Dell'], [TYPE, TABLET]], [ 554 / [;\/]\s?(q(?:mv|ta)\w+)\sbuild/i// Verizon Tablet541 /\b(q(?:mv|ta)\w+) b/i // Verizon Tablet 555 542 ], [MODEL, [VENDOR, 'Verizon'], [TYPE, TABLET]], [ 556 / [;\/]\s(?:barnes[&\s]+noble\s|bn[rt])([\w\s\+]*)\sbuild/i// Barnes & Noble Tablet543 /\b(?:barnes[& ]+noble |bn[rt])([\w\+ ]*) b/i // Barnes & Noble Tablet 557 544 ], [MODEL, [VENDOR, 'Barnes & Noble'], [TYPE, TABLET]], [ 558 / [;\/]\s(tm\d{3}\w+)\sbuild/i545 /\b(tm\d{3}\w+) b/i 559 546 ], [MODEL, [VENDOR, 'NuVision'], [TYPE, TABLET]], [ 560 / ;\s(k88)\sbuild/i// ZTE K Series Tablet547 /\b(k88) b/i // ZTE K Series Tablet 561 548 ], [MODEL, [VENDOR, 'ZTE'], [TYPE, TABLET]], [ 562 / ;\s(nx\d{3}j)\sbuild/i// ZTE Nubia549 /\b(nx\d{3}j) b/i // ZTE Nubia 563 550 ], [MODEL, [VENDOR, 'ZTE'], [TYPE, MOBILE]], [ 564 / [;\/]\s?(gen\d{3})\sbuild.*49h/i// Swiss GEN Mobile551 /\b(gen\d{3}) b.+49h/i // Swiss GEN Mobile 565 552 ], [MODEL, [VENDOR, 'Swiss'], [TYPE, MOBILE]], [ 566 / [;\/]\s?(zur\d{3})\sbuild/i// Swiss ZUR Tablet553 /\b(zur\d{3}) b/i // Swiss ZUR Tablet 567 554 ], [MODEL, [VENDOR, 'Swiss'], [TYPE, TABLET]], [ 568 / [;\/]\s?((zeki)?tb.*\b)\sbuild/i// Zeki Tablets555 /\b((zeki)?tb.*\b) b/i // Zeki Tablets 569 556 ], [MODEL, [VENDOR, 'Zeki'], [TYPE, TABLET]], [ 570 / [;\/]\s([yr]\d{2})\sbuild/i,571 / [;\/]\s(dragon[\-\s]+touch\s|dt)(\w{5})\sbuild/i// Dragon Touch Tablet557 /\b([yr]\d{2}) b/i, 558 /\b(dragon[- ]+touch |dt)(\w{5}) b/i // Dragon Touch Tablet 572 559 ], [[VENDOR, 'Dragon Touch'], MODEL, [TYPE, TABLET]], [ 573 / [;\/]\s?(ns-?\w{0,9})\sbuild/i// Insignia Tablets560 /\b(ns-?\w{0,9}) b/i // Insignia Tablets 574 561 ], [MODEL, [VENDOR, 'Insignia'], [TYPE, TABLET]], [ 575 / [;\/]\s?((nxa|Next)-?\w{0,9})\sbuild/i// NextBook Tablets562 /\b((nxa|next)-?\w{0,9}) b/i // NextBook Tablets 576 563 ], [MODEL, [VENDOR, 'NextBook'], [TYPE, TABLET]], [ 577 / [;\/]\s?(xtreme\_)?(v(1[045]|2[015]|[3469]0|7[05]))\sbuild/i578 ], [[VENDOR, 'Voice'], MODEL, [TYPE, MOBILE]], [ // Voice Xtreme Phones579 / [;\/]\s?(lvtel\-)?(v1[12])\sbuild/i// LvTel Phones564 /\b(xtreme\_)?(v(1[045]|2[015]|[3469]0|7[05])) b/i // Voice Xtreme Phones 565 ], [[VENDOR, 'Voice'], MODEL, [TYPE, MOBILE]], [ 566 /\b(lvtel\-)?(v1[12]) b/i // LvTel Phones 580 567 ], [[VENDOR, 'LvTel'], MODEL, [TYPE, MOBILE]], [ 581 / ;\s(ph-1)\s/i582 ], [MODEL, [VENDOR, 'Essential'], [TYPE, MOBILE]], [ // Essential PH-1583 / [;\/]\s?(v(100md|700na|7011|917g).*\b)\sbuild/i// Envizen Tablets568 /\b(ph-1) /i // Essential PH-1 569 ], [MODEL, [VENDOR, 'Essential'], [TYPE, MOBILE]], [ 570 /\b(v(100md|700na|7011|917g).*\b) b/i // Envizen Tablets 584 571 ], [MODEL, [VENDOR, 'Envizen'], [TYPE, TABLET]], [ 585 / [;\/]\s?(trio[\s\w\-\.]+)\sbuild/i// MachSpeed Tablets572 /\b(trio[-\w\. ]+) b/i // MachSpeed Tablets 586 573 ], [MODEL, [VENDOR, 'MachSpeed'], [TYPE, TABLET]], [ 587 / [;\/]\s?tu_(1491)\sbuild/i// Rotor Tablets574 /\btu_(1491) b/i // Rotor Tablets 588 575 ], [MODEL, [VENDOR, 'Rotor'], [TYPE, TABLET]], [ 589 /(shield[\w \s]+)\sbuild/i// Nvidia Shield Tablets576 /(shield[\w ]+) b/i // Nvidia Shield Tablets 590 577 ], [MODEL, [VENDOR, 'Nvidia'], [TYPE, TABLET]], [ 591 /(sprint) \s(\w+)/i// Sprint Phones578 /(sprint) (\w+)/i // Sprint Phones 592 579 ], [VENDOR, MODEL, [TYPE, MOBILE]], [ 593 580 /(kin\.[onetw]{3})/i // Microsoft Kin 594 ], [[MODEL, /\./g, ' '], [VENDOR, 'Microsoft'], [TYPE, MOBILE]], [595 /droid \s[\d\.]+;\s(cc6666?|et5[16]|mc[239][23]x?|vc8[03]x?)\)/i// Zebra596 ], [MODEL, [VENDOR, 'Zebra'], [TYPE, TABLET]], [597 /droid \s[\d\.]+;\s(ec30|ps20|tc[2-8]\d[kx])\)/i598 ], [MODEL, [VENDOR, 'Zebra'], [TYPE, MOBILE]], [581 ], [[MODEL, /\./g, ' '], [VENDOR, MICROSOFT], [TYPE, MOBILE]], [ 582 /droid.+; (cc6666?|et5[16]|mc[239][23]x?|vc8[03]x?)\)/i // Zebra 583 ], [MODEL, [VENDOR, ZEBRA], [TYPE, TABLET]], [ 584 /droid.+; (ec30|ps20|tc[2-8]\d[kx])\)/i 585 ], [MODEL, [VENDOR, ZEBRA], [TYPE, MOBILE]], [ 599 586 600 587 /////////////////// … … 602 589 /////////////////// 603 590 604 / \s(ouya)\s/i,// Ouya605 /(nintendo) \s([wids3utch]+)/i// Nintendo591 /(ouya)/i, // Ouya 592 /(nintendo) ([wids3utch]+)/i // Nintendo 606 593 ], [VENDOR, MODEL, [TYPE, CONSOLE]], [ 607 /droid.+; \s(shield)\sbuild/i// Nvidia594 /droid.+; (shield) bui/i // Nvidia 608 595 ], [MODEL, [VENDOR, 'Nvidia'], [TYPE, CONSOLE]], [ 609 /(playstation \s[345portablevi]+)/i// Playstation610 ], [MODEL, [VENDOR, 'Sony'], [TYPE, CONSOLE]], [611 / [\s\(;](xbox(?:\sone)?(?!;\sxbox))[\s\);]/i// Microsoft Xbox612 ], [MODEL, [VENDOR, 'Microsoft'], [TYPE, CONSOLE]], [596 /(playstation [345portablevi]+)/i // Playstation 597 ], [MODEL, [VENDOR, SONY], [TYPE, CONSOLE]], [ 598 /\b(xbox(?: one)?(?!; xbox))[\); ]/i // Microsoft Xbox 599 ], [MODEL, [VENDOR, MICROSOFT], [TYPE, CONSOLE]], [ 613 600 614 601 /////////////////// … … 619 606 ], [VENDOR, [TYPE, SMARTTV]], [ 620 607 /hbbtv.+maple;(\d+)/i 621 ], [[MODEL, /^/, 'SmartTV'], [VENDOR, 'Samsung'], [TYPE, SMARTTV]], [622 /( ?:linux;\snetcast.+smarttv|lg\snetcast\.tv-201\d)/i,// LG SmartTV623 ], [[VENDOR, 'LG'], [TYPE, SMARTTV]], [624 /(apple) \s?tv/i// Apple TV625 ], [VENDOR, [MODEL, 'AppleTV'], [TYPE, SMARTTV]], [608 ], [[MODEL, /^/, 'SmartTV'], [VENDOR, SAMSUNG], [TYPE, SMARTTV]], [ 609 /(nux; netcast.+smarttv|lg (netcast\.tv-201\d|android tv))/i // LG SmartTV 610 ], [[VENDOR, LG], [TYPE, SMARTTV]], [ 611 /(apple) ?tv/i // Apple TV 612 ], [VENDOR, [MODEL, APPLE+' TV'], [TYPE, SMARTTV]], [ 626 613 /crkey/i // Google Chromecast 627 ], [[MODEL, 'Chromecast'], [VENDOR, 'Google'], [TYPE, SMARTTV]], [628 /droid.+aft( [\w])(\sbuild\/|\))/i// Fire TV629 ], [MODEL, [VENDOR, 'Amazon'], [TYPE, SMARTTV]], [614 ], [[MODEL, CHROME+'cast'], [VENDOR, GOOGLE], [TYPE, SMARTTV]], [ 615 /droid.+aft(\w)( bui|\))/i // Fire TV 616 ], [MODEL, [VENDOR, AMAZON], [TYPE, SMARTTV]], [ 630 617 /\(dtv[\);].+(aquos)/i // Sharp 631 618 ], [MODEL, [VENDOR, 'Sharp'], [TYPE, SMARTTV]], [ 632 /hbbtv\/\d+\.\d+\.\d+\s+\([\w\s]*;\s*(\w[^;]*);([^;]*)/i // HbbTV devices 633 ], [[VENDOR, util.trim], [MODEL, util.trim], [TYPE, SMARTTV]], [ 634 /[\s\/\(](android\s|smart[-\s]?|opera\s)tv[;\)\s]/i // SmartTV from Unidentified Vendors 619 /\b(roku)[\dx]*[\)\/]((?:dvp-)?[\d\.]*)/i, // Roku 620 /hbbtv\/\d+\.\d+\.\d+ +\([\w ]*; *(\w[^;]*);([^;]*)/i // HbbTV devices 621 ], [[VENDOR, trim], [MODEL, trim], [TYPE, SMARTTV]], [ 622 /\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\b/i // SmartTV from Unidentified Vendors 635 623 ], [[TYPE, SMARTTV]], [ 636 624 … … 639 627 /////////////////// 640 628 641 /((pebble))app \/[\d\.]+\s/i// Pebble629 /((pebble))app/i // Pebble 642 630 ], [VENDOR, MODEL, [TYPE, WEARABLE]], [ 643 /droid.+;\s(glass)\s\d/i // Google Glass 644 ], [MODEL, [VENDOR, 'Google'], [TYPE, WEARABLE]], [ 645 /droid\s[\d\.]+;\s(wt63?0{2,3})\)/i 646 ], [MODEL, [VENDOR, 'Zebra'], [TYPE, WEARABLE]], [ 631 /droid.+; (glass) \d/i // Google Glass 632 ], [MODEL, [VENDOR, GOOGLE], [TYPE, WEARABLE]], [ 633 /droid.+; (wt63?0{2,3})\)/i 634 ], [MODEL, [VENDOR, ZEBRA], [TYPE, WEARABLE]], [ 635 /(quest( 2)?)/i // Oculus Quest 636 ], [MODEL, [VENDOR, FACEBOOK], [TYPE, WEARABLE]], [ 647 637 648 638 /////////////////// … … 650 640 /////////////////// 651 641 652 /(tesla)(?: \sqtcarbrowser|\/20[12]\d\.[\w\.-]+)/i// Tesla642 /(tesla)(?: qtcarbrowser|\/[-\w\.]+)/i // Tesla 653 643 ], [VENDOR, [TYPE, EMBEDDED]], [ 654 644 … … 657 647 /////////////////// 658 648 659 /droid .+?; ([^;]+?)(?: bui ld|\) applewebkit).+? mobile safari/i// Android Phones from Unidentified Vendors649 /droid .+?; ([^;]+?)(?: bui|\) applew).+? mobile safari/i // Android Phones from Unidentified Vendors 660 650 ], [MODEL, [TYPE, MOBILE]], [ 661 /droid .+?; \s([^;]+?)(?: build|\) applewebkit).+?(?! mobile) safari/i// Android Tablets from Unidentified Vendors651 /droid .+?; ([^;]+?)(?: bui|\) applew).+?(?! mobile) safari/i // Android Tablets from Unidentified Vendors 662 652 ], [MODEL, [TYPE, TABLET]], [ 663 /\s(tablet|tab)[;\/]/i, // Unidentifiable Tablet 664 /\s(mobile)(?:[;\/]|\ssafari)/i // Unidentifiable Mobile 665 ], [[TYPE, util.lowerize]], [ 666 /(android[\w\.\s\-]{0,9});.+build/i // Generic Android Device 667 ], [MODEL, [VENDOR, 'Generic']], [ 668 /(phone)/i 669 ], [[TYPE, MOBILE]] 653 /\b((tablet|tab)[;\/]|focus\/\d(?!.+mobile))/i // Unidentifiable Tablet 654 ], [[TYPE, TABLET]], [ 655 /(phone|mobile(?:[;\/]| safari)|pda(?=.+windows ce))/i // Unidentifiable Mobile 656 ], [[TYPE, MOBILE]], [ 657 /(android[-\w\. ]{0,9});.+buil/i // Generic Android Device 658 ], [MODEL, [VENDOR, 'Generic']] 670 659 ], 671 660 672 661 engine : [[ 673 662 674 /windows.+ \sedge\/([\w\.]+)/i // EdgeHTML675 ], [VERSION, [NAME, 'EdgeHTML']], [663 /windows.+ edge\/([\w\.]+)/i // EdgeHTML 664 ], [VERSION, [NAME, EDGE+'HTML']], [ 676 665 677 666 /webkit\/537\.36.+chrome\/(?!27)([\w\.]+)/i // Blink … … 681 670 /(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna)\/([\w\.]+)/i, // WebKit/Trident/NetFront/NetSurf/Amaya/Lynx/w3m/Goanna 682 671 /ekioh(flow)\/([\w\.]+)/i, // Flow 683 /(khtml|tasman|links)[\/ \s]\(?([\w\.]+)/i,// KHTML/Tasman/Links684 /(icab)[\/ \s]([23]\.[\d\.]+)/i// iCab672 /(khtml|tasman|links)[\/ ]\(?([\w\.]+)/i, // KHTML/Tasman/Links 673 /(icab)[\/ ]([23]\.[\d\.]+)/i // iCab 685 674 ], [NAME, VERSION], [ 686 675 … … 692 681 693 682 // Windows 694 /microsoft \s(windows)\s(vista|xp)/i// Windows (iTunes)695 ], [NAME, VERSION], [ 696 /(windows) \snt\s6\.2;\s(arm)/i,// Windows RT697 /(windows \sphone(?:\sos)*)[\s\/]?([\d\.\s\w]*)/i,// Windows Phone698 /(windows \smobile|windows)[\s\/]?([ntce\d\.\s]+\w)(?!.+xbox)/i699 ], [NAME, [VERSION, mapper.str, maps.os.windows.version]], [700 /(win(?=3|9|n)|win \s9x\s)([nt\d\.]+)/i701 ], [[NAME, 'Windows'], [VERSION, mapper.str, maps.os.windows.version]], [683 /microsoft (windows) (vista|xp)/i // Windows (iTunes) 684 ], [NAME, VERSION], [ 685 /(windows) nt 6\.2; (arm)/i, // Windows RT 686 /(windows (?:phone(?: os)?|mobile))[\/ ]?([\d\.\w ]*)/i, // Windows Phone 687 /(windows)[\/ ]?([ntce\d\. ]+\w)(?!.+xbox)/i 688 ], [NAME, [VERSION, strMapper, windowsVersionMap]], [ 689 /(win(?=3|9|n)|win 9x )([nt\d\.]+)/i 690 ], [[NAME, 'Windows'], [VERSION, strMapper, windowsVersionMap]], [ 702 691 703 692 // iOS/macOS 704 /ip[honead]{2,4}\b(?:.*os \s([\w]+)\slike\smac|;\sopera)/i,// iOS693 /ip[honead]{2,4}\b(?:.*os ([\w]+) like mac|; opera)/i, // iOS 705 694 /cfnetwork\/.+darwin/i 706 695 ], [[VERSION, /_/g, '.'], [NAME, 'iOS']], [ 707 /(mac \sos\sx)\s?([\w\s\.]*)/i,708 /(macintosh|mac (?=_powerpc)\s)(?!.+haiku)/i// Mac OS696 /(mac os x) ?([\w\. ]*)/i, 697 /(macintosh|mac_powerpc\b)(?!.+haiku)/i // Mac OS 709 698 ], [[NAME, 'Mac OS'], [VERSION, /_/g, '.']], [ 710 699 711 // Mobile OSes // Android/WebOS/Palm/QNX/Bada/RIM/MeeGo/Contiki/Sailfish OS 712 /(android|webos|palm\sos|qnx|bada|rim\stablet\sos|meego|sailfish|contiki)[\/\s-]?([\w\.]*)/i, 700 // Mobile OSes 701 /droid ([\w\.]+)\b.+(android[- ]x86)/i // Android-x86 702 ], [VERSION, NAME], [ // Android/WebOS/QNX/Bada/RIM/Maemo/MeeGo/Sailfish OS 703 /(android|webos|qnx|bada|rim tablet os|maemo|meego|sailfish)[-\/ ]?([\w\.]*)/i, 713 704 /(blackberry)\w*\/([\w\.]*)/i, // Blackberry 714 /(tizen|kaios)[\/ \s]([\w\.]+)/i,// Tizen/KaiOS705 /(tizen|kaios)[\/ ]([\w\.]+)/i, // Tizen/KaiOS 715 706 /\((series40);/i // Series 40 716 707 ], [NAME, VERSION], [ 717 708 /\(bb(10);/i // BlackBerry 10 718 ], [VERSION, [NAME, 'BlackBerry']], [719 /(?:symbian \s?os|symbos|s60(?=;)|series60)[\/\s-]?([\w\.]*)/i// Symbian709 ], [VERSION, [NAME, BLACKBERRY]], [ 710 /(?:symbian ?os|symbos|s60(?=;)|series60)[-\/ ]?([\w\.]*)/i // Symbian 720 711 ], [VERSION, [NAME, 'Symbian']], [ 721 /mozilla .+\(mobile;.+gecko.+firefox/i// Firefox OS722 ], [ [NAME, 'FirefoxOS']], [712 /mozilla\/[\d\.]+ \((?:mobile|tablet|tv|mobile; [\w ]+); rv:.+ gecko\/([\w\.]+)/i // Firefox OS 713 ], [VERSION, [NAME, FIREFOX+' OS']], [ 723 714 /web0s;.+rt(tv)/i, 724 715 /\b(?:hp)?wos(?:browser)?\/([\w\.]+)/i // WebOS … … 727 718 // Google Chromecast 728 719 /crkey\/([\d\.]+)/i // Google Chromecast 729 ], [VERSION, [NAME, 'Chromecast']], [730 /(cros) \s[\w]+\s([\w\.]+\w)/i// Chromium OS720 ], [VERSION, [NAME, CHROME+'cast']], [ 721 /(cros) [\w]+ ([\w\.]+\w)/i // Chromium OS 731 722 ], [[NAME, 'Chromium OS'], VERSION],[ 732 723 733 724 // Console 734 /(nintendo|playstation)\s([wids345portablevuch]+)/i, // Nintendo/Playstation 735 /(xbox);\s+xbox\s([^\);]+)/i, // Microsoft Xbox (360, One, X, S, Series X, Series S) 736 737 // GNU/Linux based 738 /(mint)[\/\s\(\)]?(\w*)/i, // Mint 739 /(mageia|vectorlinux)[;\s]/i, // Mageia/VectorLinux 740 /(joli|[kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?=\slinux)|slackware|fedora|mandriva|centos|pclinuxos|redhat|zenwalk|linpus|raspbian)(?:\sgnu\/linux)?(?:\slinux)?[\/\s-]?(?!chrom|package)([\w\.-]*)/i, 741 // Joli/Ubuntu/Debian/SUSE/Gentoo/Arch/Slackware 742 // Fedora/Mandriva/CentOS/PCLinuxOS/RedHat/Zenwalk/Linpus 743 /(hurd|linux)\s?([\w\.]*)/i, // Hurd/Linux 744 /(gnu)\s?([\w\.]*)/i, // GNU 745 746 // BSD based 747 /\s([frentopc-]{0,4}bsd|dragonfly)\s?(?!amd|[ix346]{1,2}86)([\w\.]*)/i, // FreeBSD/NetBSD/OpenBSD/PC-BSD/DragonFly 748 /(haiku)\s(\w+)/i // Haiku 749 ], [NAME, VERSION], [ 725 /(nintendo|playstation) ([wids345portablevuch]+)/i, // Nintendo/Playstation 726 /(xbox); +xbox ([^\);]+)/i, // Microsoft Xbox (360, One, X, S, Series X, Series S) 750 727 751 728 // Other 752 /(sunos)\s?([\w\.\d]*)/i // Solaris 729 /\b(joli|palm)\b ?(?:os)?\/?([\w\.]*)/i, // Joli/Palm 730 /(mint)[\/\(\) ]?(\w*)/i, // Mint 731 /(mageia|vectorlinux)[; ]/i, // Mageia/VectorLinux 732 /([kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?= linux)|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire)(?: gnu\/linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\/ ]?(?!chrom|package)([-\w\.]*)/i, 733 // Ubuntu/Debian/SUSE/Gentoo/Arch/Slackware/Fedora/Mandriva/CentOS/PCLinuxOS/RedHat/Zenwalk/Linpus/Raspbian/Plan9/Minix/RISCOS/Contiki/Deepin/Manjaro/elementary/Sabayon/Linspire 734 /(hurd|linux) ?([\w\.]*)/i, // Hurd/Linux 735 /(gnu) ?([\w\.]*)/i, // GNU 736 /\b([-frentopcghs]{0,5}bsd|dragonfly)[\/ ]?(?!amd|[ix346]{1,2}86)([\w\.]*)/i, // FreeBSD/NetBSD/OpenBSD/PC-BSD/GhostBSD/DragonFly 737 /(haiku) (\w+)/i // Haiku 738 ], [NAME, VERSION], [ 739 /(sunos) ?([\w\.\d]*)/i // Solaris 753 740 ], [[NAME, 'Solaris'], VERSION], [ 754 /((?:open)?solaris)[ \/\s-]?([\w\.]*)/i,// Solaris755 /(aix) \s((\d)(?=\.|\)|\s)[\w\.])*/i,// AIX756 / (plan\s9|minix|beos|os\/2|amigaos|morphos|risc\sos|openvms|fuchsia)/i, // Plan9/Minix/BeOS/OS2/AmigaOS/MorphOS/RISCOS/OpenVMS/Fuchsia757 /(unix) \s?([\w\.]*)/i// UNIX741 /((?:open)?solaris)[-\/ ]?([\w\.]*)/i, // Solaris 742 /(aix) ((\d)(?=\.|\)| )[\w\.])*/i, // AIX 743 /\b(beos|os\/2|amigaos|morphos|openvms|fuchsia|hp-ux)/i, // BeOS/OS2/AmigaOS/MorphOS/OpenVMS/Fuchsia/HP-UX 744 /(unix) ?([\w\.]*)/i // UNIX 758 745 ], [NAME, VERSION] 759 746 ] 760 747 }; 761 748 762 763 749 ///////////////// 764 750 // Constructor 765 751 //////////////// 752 766 753 var UAParser = function (ua, extensions) { 767 754 768 if (typeof ua === 'object') {755 if (typeof ua === OBJ_TYPE) { 769 756 extensions = ua; 770 757 ua = undefined; … … 775 762 } 776 763 777 var _ua = ua || ((typeof window !== 'undefined'&& window.navigator && window.navigator.userAgent) ? window.navigator.userAgent : EMPTY);778 var _rgxmap = extensions ? util.extend(regexes, extensions) : regexes;764 var _ua = ua || ((typeof window !== UNDEF_TYPE && window.navigator && window.navigator.userAgent) ? window.navigator.userAgent : EMPTY); 765 var _rgxmap = extensions ? extend(regexes, extensions) : regexes; 779 766 780 767 this.getBrowser = function () { 781 var _browser = { name: undefined, version: undefined }; 782 mapper.rgx.call(_browser, _ua, _rgxmap.browser); 783 _browser.major = util.major(_browser.version); // deprecated 768 var _browser = {}; 769 _browser[NAME] = undefined; 770 _browser[VERSION] = undefined; 771 rgxMapper.call(_browser, _ua, _rgxmap.browser); 772 _browser.major = majorize(_browser.version); 784 773 return _browser; 785 774 }; 786 775 this.getCPU = function () { 787 var _cpu = { architecture: undefined }; 788 mapper.rgx.call(_cpu, _ua, _rgxmap.cpu); 776 var _cpu = {}; 777 _cpu[ARCHITECTURE] = undefined; 778 rgxMapper.call(_cpu, _ua, _rgxmap.cpu); 789 779 return _cpu; 790 780 }; 791 781 this.getDevice = function () { 792 var _device = { vendor: undefined, model: undefined, type: undefined }; 793 mapper.rgx.call(_device, _ua, _rgxmap.device); 782 var _device = {}; 783 _device[VENDOR] = undefined; 784 _device[MODEL] = undefined; 785 _device[TYPE] = undefined; 786 rgxMapper.call(_device, _ua, _rgxmap.device); 794 787 return _device; 795 788 }; 796 789 this.getEngine = function () { 797 var _engine = { name: undefined, version: undefined }; 798 mapper.rgx.call(_engine, _ua, _rgxmap.engine); 790 var _engine = {}; 791 _engine[NAME] = undefined; 792 _engine[VERSION] = undefined; 793 rgxMapper.call(_engine, _ua, _rgxmap.engine); 799 794 return _engine; 800 795 }; 801 796 this.getOS = function () { 802 var _os = { name: undefined, version: undefined }; 803 mapper.rgx.call(_os, _ua, _rgxmap.os); 797 var _os = {}; 798 _os[NAME] = undefined; 799 _os[VERSION] = undefined; 800 rgxMapper.call(_os, _ua, _rgxmap.os); 804 801 return _os; 805 802 }; … … 818 815 }; 819 816 this.setUA = function (ua) { 820 _ua = (typeof ua === STR_TYPE && ua.length > UA_MAX_LENGTH) ? util.trim(ua, UA_MAX_LENGTH) : ua;817 _ua = (typeof ua === STR_TYPE && ua.length > UA_MAX_LENGTH) ? trim(ua, UA_MAX_LENGTH) : ua; 821 818 return this; 822 819 }; … … 826 823 827 824 UAParser.VERSION = LIBVERSION; 828 UAParser.BROWSER = { 829 NAME : NAME, 830 MAJOR : MAJOR, // deprecated 831 VERSION : VERSION 832 }; 833 UAParser.CPU = { 834 ARCHITECTURE : ARCHITECTURE 835 }; 836 UAParser.DEVICE = { 837 MODEL : MODEL, 838 VENDOR : VENDOR, 839 TYPE : TYPE, 840 CONSOLE : CONSOLE, 841 MOBILE : MOBILE, 842 SMARTTV : SMARTTV, 843 TABLET : TABLET, 844 WEARABLE: WEARABLE, 845 EMBEDDED: EMBEDDED 846 }; 847 UAParser.ENGINE = { 848 NAME : NAME, 849 VERSION : VERSION 850 }; 851 UAParser.OS = { 852 NAME : NAME, 853 VERSION : VERSION 854 }; 825 UAParser.BROWSER = enumerize([NAME, VERSION, MAJOR]); 826 UAParser.CPU = enumerize([ARCHITECTURE]); 827 UAParser.DEVICE = enumerize([MODEL, VENDOR, TYPE, CONSOLE, MOBILE, SMARTTV, TABLET, WEARABLE, EMBEDDED]); 828 UAParser.ENGINE = UAParser.OS = enumerize([NAME, VERSION]); 855 829 856 830 /////////// 857 831 // Export 858 832 ////////// 859 860 833 861 834 // check js environment … … 868 841 } else { 869 842 // requirejs env (optional) 870 if (typeof(define) === 'function'&& define.amd) {843 if (typeof(define) === FUNC_TYPE && define.amd) { 871 844 define(function () { 872 845 return UAParser; 873 846 }); 874 } else if (typeof window !== 'undefined') {847 } else if (typeof window !== UNDEF_TYPE) { 875 848 // browser env 876 849 window.UAParser = UAParser; … … 883 856 // jQuery always exports to global scope, unless jQuery.noConflict(true) is used, 884 857 // and we should catch that. 885 var $ = typeof window !== 'undefined'&& (window.jQuery || window.Zepto);858 var $ = typeof window !== UNDEF_TYPE && (window.jQuery || window.Zepto); 886 859 if ($ && !$.ua) { 887 860 var parser = new UAParser(); … … 890 863 return parser.getUA(); 891 864 }; 892 $.ua.set = function (ua string) {893 parser.setUA(ua string);865 $.ua.set = function (ua) { 866 parser.setUA(ua); 894 867 var result = parser.getResult(); 895 868 for (var prop in result) { -
trip-planner-front/node_modules/ua-parser-js/test/browser-test.json
r59329aa re29cc2e 161 161 }, 162 162 { 163 "desc" : "Camino on Mac", 164 "ua" : "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.5; rv:2.0.1) Gecko/20100101 Firefox/4.0.1 Camino/2.2.1", 165 "expect" : 166 { 167 "name" : "Camino", 168 "version" : "2.2.1", 169 "major" : "2" 170 } 171 }, 172 { 163 173 "desc" : "Chimera", 164 174 "ua" : "Mozilla/5.0 (Macintosh; U; PPC Mac OS X; pl-PL; rv:1.0.1) Gecko/20021111 Chimera/0.6", … … 428 438 "version" : "1.0a1", 429 439 "major" : "1" 440 } 441 }, 442 { 443 "desc" : "Firefox for Maemo (Nokia N900)", 444 "ua" : "Mozilla/5.0 (Maemo; Linux armv7l; rv:10.0.1) Gecko/20100101 Firefox/10.0.1 Fennec/10.0.1", 445 "expect" : 446 { 447 "name" : "Fennec", 448 "version" : "10.0.1", 449 "major" : "10" 430 450 } 431 451 }, … … 730 750 }, 731 751 { 752 "desc" : "Netscape 6", 753 "ua" : "Mozilla/5.0 (Windows; U; Win95; de-DE; rv:0.9.2) Gecko/20010726 Netscape6/6.1", 754 "expect" : 755 { 756 "name" : "Netscape", 757 "version" : "6.1", 758 "major" : "6" 759 } 760 }, 761 { 732 762 "desc" : "Nokia Browser", 733 763 "ua" : "Mozilla/5.0 (Symbian/3; Series60/5.2 NokiaN8-00/025.007; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/533.4 (KHTML, like Gecko) NokiaBrowser/7.3.1.37 Mobile Safari/533.4 3gpp-gba", … … 740 770 }, 741 771 { 772 "desc" : "Obigo", 773 "ua" : "LG-GS290/V100 Obigo/WAP2.0 Profile/MIDP-2.1 Configuration/CLDC-1.1", 774 "expect" : 775 { 776 "name" : "Obigo", 777 "version" : "WAP2.0", 778 "major" : "2" 779 } 780 }, 781 { 782 "desc" : "Obigo", 783 "ua" : "LG/KU990i/v10a Browser/Obigo-Q05A/3.6 MMS/LG-MMS-V1.0/1.2 Java/ASVM/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1", 784 "expect" : 785 { 786 "name" : "Obigo", 787 "version" : "Q05A", 788 "major" : "05" 789 } 790 }, 791 { 742 792 "desc" : "Oculus Browser", 743 793 "ua" : "Mozilla/5.0 (Linux; Android 7.0; SM-G920I Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko) OculusBrowser/3.4.9 SamsungBrowser/4.0 Chrome/57.0.2987.146 Mobile VR Safari/537.36", … … 750 800 }, 751 801 { 802 "desc" : "Oculus Browser", 803 "ua" : "Mozilla/5.0 (Linux; Android 10; Quest 2) AppleWebKit/537.36 (KHTML, like Gecko) OculusBrowser/15.0.0.0.22.280317669 SamsungBrowser/4.0 Chrome/89.0.4389.90 VR Safari/537.36", 804 "expect" : 805 { 806 "name" : "Oculus Browser", 807 "version" : "15.0.0.0.22.280317669", 808 "major" : "15" 809 } 810 }, 811 { 752 812 "desc" : "OmniWeb", 753 813 "ua" : "Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-US) AppleWebKit/85 (KHTML, like Gecko) OmniWeb/v558.48", … … 960 1020 }, 961 1021 { 1022 "desc" : "SeaMonkey on Mac", 1023 "ua" : "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.5; rv:10.0.1) Gecko/20100101 Firefox/10.0.1 SeaMonkey/2.7.1", 1024 "expect" : 1025 { 1026 "name" : "SeaMonkey", 1027 "version" : "2.7.1", 1028 "major" : "2" 1029 } 1030 }, 1031 { 962 1032 "desc" : "Silk Browser", 963 1033 "ua" : "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; en-us; Silk/1.1.0-84)", … … 1090 1160 }, 1091 1161 { 1162 "desc" : "UPBrowser", 1163 "ua" : "BenQ-CF61/1.00/WAP2.0/MIDP2.0/CLDC1.0 UP.Browser/6.3.0.4.c.1.102 (GUI) MMP/2.0", 1164 "expect" : 1165 { 1166 "name" : "UP.Browser", 1167 "version" : "6.3.0.4.c.1.102", 1168 "major" : "6" 1169 } 1170 }, 1171 { 1092 1172 "desc": "WeChat on iOS", 1093 1173 "ua": "Mozilla/5.0 (iPhone; CPU iPhone OS 8_4_1 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Mobile/12H321 MicroMessenger/6.3.6 NetType/WIFI Language/zh_CN", … … 1230 1310 }, 1231 1311 { 1312 "desc" : "Firefox iOS using iPad", 1313 "ua" : "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", 1314 "expect" : 1315 { 1316 "name" : "Firefox", 1317 "version" : "1.0", 1318 "major" : "1" 1319 } 1320 }, 1321 { 1232 1322 "desc" : "QQ on iOS", 1233 1323 "ua" : "Mozilla/5.0 (iPhone; CPU iPhone OS 10_0_2 like Mac OS X) AppleWebKit/602.1.50 (KHTML, like Gecko) Mobile/14A456 QQ/6.5.3.410 V1_IPH_SQ_6.5.3_1_APP_A Pixel/1080 Core/UIWebView NetType/WIFI Mem/26", -
trip-planner-front/node_modules/ua-parser-js/test/cpu-test.json
r59329aa re29cc2e 81 81 }, 82 82 { 83 "desc" : "Nokia N900 Linux mobile", 84 "ua" : "Mozilla/5.0 (Maemo; Linux armv7l; rv:10.0) Gecko/20100101 Firefox/10.0 Fennec/10.0", 85 "expect" : 86 { 87 "architecture" : "arm" 88 } 89 }, 90 { 83 91 "desc" : "ARMEABI", 84 92 "ua" : "[FBAN/FB4A;FBAV/237.0.0.44.120;FBBV/170693408;FBDM/{density=1.75,width=720,height=1280};FBLC/en_US;FBRV/172067074;FBCR/ ;FBMF/samsung;FBBD/samsung;FBPN/com.facebook.katana;FBDV/SM-S367VL;FBSV/9;FBBK/1;FBOP/19;FBCA/armeabi-v7a:armeabi;]", … … 105 113 }, 106 114 { 115 "desc" : "ARM64", 116 "ua" : "Mozilla/5.0 (Windows NT 10.0; ARM64; RM-1096) AppleWebKit/537.36 (KHTML like Gecko) Chrome/51.0.2704.79 Safari/537.36 Edge/14.14393", 117 "expect" : 118 { 119 "architecture" : "arm64" 120 } 121 }, 122 { 123 "desc" : "ARM64", 124 "ua" : "Mozilla/5.0 (Linux; arm_64; Android 9; HRY-LX1T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 YaBrowser/19.12.1.121.00 Mobile Safari/537.36", 125 "expect" : 126 { 127 "architecture" : "arm64" 128 } 129 }, 130 { 107 131 "desc" : "Pocket PC", 108 132 "ua" : "Opera/9.7 (Windows Mobile; PPC; Opera Mobi/35166; U; en) Presto/2.2.1", … … 131 155 "desc" : "Mac PowerPC", 132 156 "ua" : "iCab/2.9.5 (Macintosh; U; PPC; Mac OS X)", 157 "expect" : 158 { 159 "architecture" : "ppc" 160 } 161 }, 162 { 163 "desc" : "Mac OS X on PowerPC using Firefox", 164 "ua" : "Mozilla/5.0 (Macintosh; PPC Mac OS X x.y; rv:10.0) Gecko/20100101 Firefox/10.0", 133 165 "expect" : 134 166 { -
trip-planner-front/node_modules/ua-parser-js/test/device-test.json
r59329aa re29cc2e 99 99 }, 100 100 { 101 "desc": "ASUS Zenfone Max Pro", 102 "ua": "Mozilla/5.0 (Linux; Android 9; ZB602KL) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.116 Mobile Safari/537.36", 103 "expect": { 104 "vendor": "ASUS", 105 "model": "ZB602KL", 106 "type": "mobile" 107 } 108 }, 109 { 101 110 "desc": "ASUS Zenfone Max Pro (M1)", 102 111 "ua": "Mozilla/5.0 (Linux; Android 8.1; ASUS_X00TD Build/OPM1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.137 Mobile Safari/537.36", … … 207 216 }, 208 217 { 218 "desc": "Fairphone 2", 219 "ua": "Mozilla/5.0 (Linux; Android 7.1.2; FP2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.136 Mobile Safari/537.36", 220 "expect": { 221 "vendor": "Fairphone", 222 "model": "FP2", 223 "type": "mobile" 224 } 225 }, 226 { 227 "desc": "Fairphone 3", 228 "ua": "Mozilla/5.0 (Linux; Android 9; FP3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.93 Mobile Safari/537.36", 229 "expect": { 230 "vendor": "Fairphone", 231 "model": "FP3", 232 "type": "mobile" 233 } 234 }, 235 { 209 236 "desc": "HTC Desire 820", 210 237 "ua": "Mozilla/5.0 (Linux; Android 6.0.1; HTC Desire 820 Build/MMB29M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.76 Mobile Safari/537.36", … … 266 293 "vendor": "Huawei", 267 294 "model": "LUA-L03", 295 "type": "mobile" 296 } 297 }, 298 { 299 "desc": "HUAWEI MediaPad M3 Lite 10", 300 "ua": "Mozilla/5.0 (Linux; Android 7.0; BAH-L09) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.80 Safari/537.36", 301 "expect": { 302 "vendor": "Huawei", 303 "model": "BAH-L09", 304 "type": "tablet" 305 } 306 }, 307 { 308 "desc": "HUAWEI MediaPad M5 Lite", 309 "ua": "Mozilla/5.0 (Linux; Android 8.0.0; BAH2-W19 Build/HUAWEIBAH2-W19; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/83.0.4103.106 Safari/537.36", 310 "expect": { 311 "vendor": "Huawei", 312 "model": "BAH2-W19", 313 "type": "tablet" 314 } 315 }, 316 { 317 "desc": "HUAWEI MediaPad M5", 318 "ua": "Mozilla/5.0 (Linux; Android 9; SHT-AL09 Build/HUAWEISHT-AL09; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.90 Mobile Safari/537.36", 319 "expect": { 320 "vendor": "Huawei", 321 "model": "SHT-AL09", 322 "type": "tablet" 323 } 324 }, 325 { 326 "desc": "HUAWEI MediaPad T5", 327 "ua": "Mozilla/5.0 (Linux; Android 8.0.0; AGS2-L09 Build/HUAWEIAGS2-L09; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/84.0.4147.125 Safari/537.36", 328 "expect": { 329 "vendor": "Huawei", 330 "model": "AGS2-L09", 331 "type": "tablet" 332 } 333 }, 334 { 335 "desc": "HUAWEI MediaPad T10", 336 "ua": "Mozilla/5.0 (Linux; Android 10; AGR-W09 Build/HUAWEIAGR-W09; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/78.0.3904.108 Safari/537.36", 337 "expect": { 338 "vendor": "Huawei", 339 "model": "AGR-W09", 340 "type": "tablet" 341 } 342 }, 343 { 344 "desc": "HUAWEI MediaPad T10s", 345 "ua": "Mozilla/5.0 (Linux; Android 10; AGS3-W09 Build/HUAWEIAGS3-W09; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/78.0.3904.108 Safari/537.36", 346 "expect": { 347 "vendor": "Huawei", 348 "model": "AGS3-W09", 349 "type": "tablet" 350 } 351 }, 352 { 353 "desc": "Huawei MatePad T 10", 354 "ua": "Mozilla/5.0 (Linux; Android 10; AGR-L09; HMSCore 5.0.4.301) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 HuaweiBrowser/11.0.3.304 Safari/537.36", 355 "expect": { 356 "vendor": "Huawei", 357 "model": "AGR-L09", 358 "type": "tablet" 359 } 360 }, 361 { 362 "desc": "Huawei M3", 363 "ua": "Mozilla/5.0 (Linux; Android 7.0; BTV-W09) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.116 Mobile Safari/537.36", 364 "expect": { 365 "vendor": "Huawei", 366 "model": "BTV-W09", 367 "type": "tablet" 368 } 369 }, 370 { 371 "desc": "Huawei Mate 10 Pro", 372 "ua": "Mozilla/5.0 (Linux; Android 8.0; BLA-L29 Build/HUAWEIBLA-L29) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3236.6 Mobile Safari/537.36", 373 "expect": { 374 "vendor": "Huawei", 375 "model": "BLA-L29", 376 "type": "mobile" 377 } 378 }, 379 { 380 "desc": "Huawei Mate X", 381 "ua": "Mozilla/5.0 (Linux; Android 9; TAH-AN00) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.111 Safari/537.36", 382 "expect": { 383 "vendor": "Huawei", 384 "model": "TAH-AN00", 385 "type": "mobile" 386 } 387 }, 388 { 389 "desc": "Huawei Mate X2", 390 "ua": "Mozilla/5.0 (Linux; Android 10; TET-AN00) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.96 Mobile Safari/537.36", 391 "expect": { 392 "vendor": "Huawei", 393 "model": "TET-AN00", 394 "type": "mobile" 395 } 396 }, 397 { 398 "desc": "Huawei Mate 20 X", 399 "ua": "Mozilla/5.0 (Linux; Android 9; EVR-L29 Build/HUAWEIEVR-L29; xx-xx) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/70.0.3538.110 Mobile Safari/537.36", 400 "expect": { 401 "vendor": "Huawei", 402 "model": "EVR-L29", 403 "type": "mobile" 404 } 405 }, 406 { 407 "desc": "Huawei Mate 20 Pro", 408 "ua": "Mozilla/5.0 (Linux; Android 9; LYA-L09) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.90 Mobile Safari/537.36", 409 "expect": { 410 "vendor": "Huawei", 411 "model": "LYA-L09", 412 "type": "mobile" 413 } 414 }, 415 { 416 "desc": "Huawei Mate 20 Pro", 417 "ua": "Mozilla/5.0 (Linux; Android 9; LYA-AL00) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.90 Mobile Safari/537.36", 418 "expect": { 419 "vendor": "Huawei", 420 "model": "LYA-AL00", 421 "type": "mobile" 422 } 423 }, 424 { 425 "desc": "Huawei P20 Lite", 426 "ua": "Mozilla/5.0 (Linux; Android 8.0.0; ANE-LX1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.143 Mobile Safari/537.36", 427 "expect": { 428 "vendor": "Huawei", 429 "model": "ANE-LX1", 430 "type": "mobile" 431 } 432 }, 433 { 434 "desc": "Huawei P20", 435 "ua": "Mozilla/5.0 (Linux; Android 8.1.0; EML-L29) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.157 Mobile Safari/537.36", 436 "expect": { 437 "vendor": "Huawei", 438 "model": "EML-L29", 439 "type": "mobile" 440 } 441 }, 442 { 443 "desc": "Huawei P20 Pro", 444 "ua": "Mozilla/5.0 (Linux; Android 9; CLT-L29) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.90 Mobile Safari/537.36", 445 "expect": { 446 "vendor": "Huawei", 447 "model": "CLT-L29", 448 "type": "mobile" 449 } 450 }, 451 { 452 "desc": "Huawei P30", 453 "ua": "Mozilla/5.0 (Linux; Android 9; ELE-L29) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.90 Mobile Safari/537.36", 454 "expect": { 455 "vendor": "Huawei", 456 "model": "ELE-L29", 457 "type": "mobile" 458 } 459 }, 460 { 461 "desc": "Huawei P30 Pro", 462 "ua": "Mozilla/5.0 (Linux; Android 9; VOG-L29) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.143 Mobile Safari/537.36", 463 "expect": { 464 "vendor": "Huawei", 465 "model": "VOG-L29", 466 "type": "mobile" 467 } 468 }, 469 { 470 "desc": "Huawei P40", 471 "ua": "Mozilla/5.0 (Linux; Android 10; ANA-AN00 Build/HUAWEIANA-AN00; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/76.0.3809.89 Mobile Safari/537.36 T7/11.26 SP-engine/2.22.0 baiduboxapp/11.26.0.10 (Baidu; P1 10) NABar/1.0", 472 "expect": { 473 "vendor": "Huawei", 474 "model": "ANA-AN00", 475 "type": "mobile" 476 } 477 }, 478 { 479 "desc": "Huawei P40 Pro", 480 "ua": "Mozilla/5.0 (Linux; Android 10; ELS-AN00 Build/HUAWEIELS-AN00; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/78.0.3904.108 Mobile Safari/537.36 mailapp/6.0.0", 481 "expect": { 482 "vendor": "Huawei", 483 "model": "ELS-AN00", 484 "type": "mobile" 485 } 486 }, 487 { 488 "desc": "Huawei 30 Pro+", 489 "ua": "Mozilla/5.0 (Linux; Android 10; EBG-AN10 Build/HUAWEIEBG-AN10) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.86 Mobile Safari/537.36 EdgA/42.0.0.2741", 490 "expect": { 491 "vendor": "Huawei", 492 "model": "EBG-AN10", 493 "type": "mobile" 494 } 495 }, 496 { 497 "desc": "Huawei 30S", 498 "ua": "Mozilla/5.0 (Linux; Android 10; CDY-AN90 Build/HUAWEICDY-AN90; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/78.0.3904.108 Mobile Safari/537.36 mailapp/5.8.0", 499 "expect": { 500 "vendor": "Huawei", 501 "model": "CDY-AN90", 502 "type": "mobile" 503 } 504 }, 505 { 506 "desc": "Huawei Enjoy10e", 507 "ua": "Dalvik/2.1.0 (Linux; U; Android 10; MED-AL00 Build/HUAWEIMED-AL00)", 508 "expect": { 509 "vendor": "Huawei", 510 "model": "MED-AL00", 511 "type": "mobile" 512 } 513 }, 514 { 515 "desc": "Huawei Honor 6A", 516 "ua": "Mozilla/5.0 (Linux; Android 7.0; DLI-L22 Build/HONORDLI-L22; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/79.0.3945.116 Mobile Safari/537.36 [FB_IAB/FB4A;FBAV/252.0.0.22.355;]", 517 "expect": { 518 "vendor": "Huawei", 519 "model": "DLI-L22", 520 "type": "mobile" 521 } 522 }, 523 { 524 "desc": "Huawei Honor 7", 525 "ua": "Mozilla/5.0 (Linux; Android 6.0; PLK-L01 Build/HONORPLK-L01; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/79.0.3945.116 Mobile Safari/537.36", 526 "expect": { 527 "vendor": "Huawei", 528 "model": "PLK-L01", 529 "type": "mobile" 530 } 531 }, 532 { 533 "desc": "Huawei 10 Lite", 534 "ua": "Mozilla/5.0 (Linux; Android 9; HRY-LX1 Build/HONORHRY-LX1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.91 Mobile Safari/537.36", 535 "expect": { 536 "vendor": "Huawei", 537 "model": "HRY-LX1", 538 "type": "mobile" 539 } 540 }, 541 { 542 "desc": "Huawei Y7 2018", 543 "ua": "Mozilla/5.0 (Linux; Android 8.0.0; LDN-L01) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.62 Mobile Safari/537.36", 544 "expect": { 545 "vendor": "Huawei", 546 "model": "LDN-L01", 547 "type": "mobile" 548 } 549 }, 550 { 551 "desc": "Huawei Honor 8X", 552 "ua": "Mozilla/5.0 (Linux; Android 9; JSN-L21) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Mobile Safari/537.36", 553 "expect": { 554 "vendor": "Huawei", 555 "model": "JSN-L21", 556 "type": "mobile" 557 } 558 }, 559 { 560 "desc": "Huawei Y6 2019", 561 "ua": "Mozilla/5.0 (Linux; Android 9; MRD-LX1N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Mobile Safari/537.36", 562 "expect": { 563 "vendor": "Huawei", 564 "model": "MRD-LX1N", 565 "type": "mobile" 566 } 567 }, 568 { 569 "desc": "Huawei Y9 2019", 570 "ua": "Mozilla/5.0 (Linux; Android 9; JKM-LX2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.136 Mobile Safari/537.36", 571 "expect": { 572 "vendor": "Huawei", 573 "model": "JKM-LX2", 574 "type": "mobile" 575 } 576 }, 577 { 578 "desc": "Huawei Y5", 579 "ua": "Mozilla/5.0 (Linux; Android 9; AMN-LX3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.116 Mobile Safari/537.36", 580 "expect": { 581 "vendor": "Huawei", 582 "model": "AMN-LX3", 583 "type": "mobile" 584 } 585 }, 586 { 587 "desc": "Huawei Y7p", 588 "ua": "Mozilla/5.0 (Linux; Android 9; ART-L29) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.92 Mobile Safari/537.36", 589 "expect": { 590 "vendor": "Huawei", 591 "model": "ART-L29", 592 "type": "mobile" 593 } 594 }, 595 { 596 "desc": "Huawei Mate 20 Lite", 597 "ua": "Mozilla/5.0 (Linux; Android 8.1.0; SNE-LX1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.116 Mobile Safari/537.36", 598 "expect": { 599 "vendor": "Huawei", 600 "model": "SNE-LX1", 601 "type": "mobile" 602 } 603 }, 604 { 605 "desc": "Huawei P10 Lite", 606 "ua": "Mozilla/5.0 (Linux; Android 8.0.0; WAS-LX1A) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.90 Mobile Safari/537.36", 607 "expect": { 608 "vendor": "Huawei", 609 "model": "WAS-LX1A", 610 "type": "mobile" 611 } 612 }, 613 { 614 "desc": "Huawei Y5 Lite 2018", 615 "ua": "Mozilla/5.0 (Linux; Android 8.1.0; DRA-LX5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Mobile Safari/537.36", 616 "expect": { 617 "vendor": "Huawei", 618 "model": "DRA-LX5", 619 "type": "mobile" 620 } 621 }, 622 { 623 "desc": "Huawei Honor 8C", 624 "ua": "Mozilla/5.0 (Linux; Android 8.1.0; BKK-LX2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.136 Mobile Safari/537.36", 625 "expect": { 626 "vendor": "Huawei", 627 "model": "BKK-LX2", 268 628 "type": "mobile" 269 629 } … … 369 729 }, 370 730 { 731 "desc": "LG V40 ThinQ", 732 "ua": "Mozilla/5.0 (Linux; Android 9; LM-V405) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.136 Mobile Safari/537.36", 733 "expect": { 734 "vendor": "LG", 735 "model": "LM-V405", 736 "type": "mobile" 737 } 738 }, 739 { 740 "desc": "LG K30", 741 "ua": "Mozilla/5.0 (Linux; Android 8.1.0; LM-X410.F) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.116 Mobile Safari/537.36", 742 "expect": { 743 "vendor": "LG", 744 "model": "LM-X410.F", 745 "type": "mobile" 746 } 747 }, 748 { 749 "desc": "LG K30", 750 "ua": "Mozilla/5.0 (Linux; Android 9; LM-X410.FGN) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.93 Mobile Safari/537.36", 751 "expect": { 752 "vendor": "LG", 753 "model": "LM-X410.FGN", 754 "type": "mobile" 755 } 756 }, 757 { 758 "desc": "LG Stylo 5", 759 "ua": "Mozilla/5.0 (Linux; Android 9; LM-Q720) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.96 Mobile Safari/537.36", 760 "expect": { 761 "vendor": "LG", 762 "model": "LM-Q720", 763 "type": "mobile" 764 } 765 }, 766 { 767 "desc": "LG G7 ThinQ", 768 "ua": "Mozilla/5.0 (Linux; Android 9; LM-G710VM Build/PKQ1.181105.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/79.0.3945.136 Mobile Safari/537.36", 769 "expect": { 770 "vendor": "LG", 771 "model": "LM-G710VM", 772 "type": "mobile" 773 } 774 }, 775 { 371 776 "desc": "LG K500", 372 777 "ua": "Mozilla/5.0 (Linux; Android 6.0.1; LG-K500 Build/MMB29M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.111 Mobile Safari/537.36", … … 425 830 "desc": "LG Smart TV", 426 831 "ua": "Mozilla/5.0 (Linux; NetCast; U) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/53.0.2785 34 Safari/537.31 SmartTV/8.5", 832 "expect": { 833 "vendor": "LG", 834 "model": "undefined", 835 "type": "smarttv" 836 } 837 }, 838 { 839 "desc": "LG Android TV", 840 "ua": "Mozilla/5.0 (Linux; U; Android 4.2.2; zh-cn; LG Android TV Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30", 427 841 "expect": { 428 842 "vendor": "LG", … … 641 1055 }, 642 1056 { 1057 "desc": "Oculus Quest", 1058 "ua": "Mozilla/5.0 (Linux; Android 10; Quest) AppleWebKit/537.36 (KHTML, like Gecko) OculusBrowser/15.0.0.0.22.280317669 SamsungBrowser/4.0 Chrome/89.0.4389.90 VR Safari/537.36", 1059 "expect": { 1060 "vendor": "Facebook", 1061 "model": "Quest", 1062 "type": "wearable" 1063 } 1064 }, 1065 { 1066 "desc": "Oculus Quest 2", 1067 "ua": "Mozilla/5.0 (Linux; Android 10; Quest 2) AppleWebKit/537.36 (KHTML, like Gecko) OculusBrowser/15.0.0.0.22.280317669 SamsungBrowser/4.0 Chrome/89.0.4389.90 VR Safari/537.36", 1068 "expect": { 1069 "vendor": "Facebook", 1070 "model": "Quest 2", 1071 "type": "wearable" 1072 } 1073 }, 1074 { 643 1075 "desc": "OnePlus One", 644 1076 "ua": "Mozilla/5.0 (Linux; Android 4.4.4; A0001 Build/KTU84Q) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.59 Mobile Safari/537.36", 645 1077 "expect": { 646 1078 "vendor": "OnePlus", 647 "model": " 1",1079 "model": "A0001", 648 1080 "type": "mobile" 649 1081 } … … 654 1086 "expect": { 655 1087 "vendor": "OnePlus", 656 "model": "1", 1088 "model": "A0001", 1089 "type": "mobile" 1090 } 1091 }, 1092 { 1093 "desc": "OnePlus 2", 1094 "ua": "Mozilla/5.0 (Linux; Android 6.0.1; ONE A2003) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.93 Mobile Safari/537.36", 1095 "expect": { 1096 "vendor": "OnePlus", 1097 "model": "A2003", 657 1098 "type": "mobile" 658 1099 } … … 803 1244 }, 804 1245 { 1246 "desc": "OPPO Reno5 A", 1247 "ua": "Mozilla/5.0 (Linux; Android 11; A101OP) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Mobile Safari/537.36", 1248 "expect": { 1249 "vendor": "OPPO", 1250 "model": "A101OP", 1251 "type": "mobile" 1252 } 1253 }, 1254 { 805 1255 "desc": "OPPO Find X", 806 1256 "ua": "Mozilla/5.0 (Linux; Android 8.1; PAFM00 Build/OPM1.171019.026) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Mobile Safari/537.36", … … 830 1280 }, 831 1281 { 1282 "desc": "Realme C2", 1283 "ua": "Mozilla/5.0 (Linux; Android 9; RMX1941) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Mobile Safari/537.36", 1284 "expect": { 1285 "vendor": "Realme", 1286 "model": "RMX1941", 1287 "type": "mobile" 1288 } 1289 }, 1290 { 832 1291 "desc": "Realme Narzo 20", 833 1292 "ua": "Mozilla/5.0 (Linux; U; Android 10; xx-xx; RMX2193 Build/QP1A.190711.020) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/70.0.3538.80 Mobile Safari/537.36", … … 835 1294 "vendor": "Realme", 836 1295 "model": "RMX2193", 1296 "type": "mobile" 1297 } 1298 }, 1299 { 1300 "desc": "Realme 2 Pro", 1301 "ua": "Mozilla/5.0 (Linux; Android 9; RMX1801) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.136 Mobile Safari/537.36", 1302 "expect": { 1303 "vendor": "Realme", 1304 "model": "RMX1801", 837 1305 "type": "mobile" 838 1306 } … … 848 1316 }, 849 1317 { 1318 "desc": "Roku", 1319 "ua": "Mozilla/5.0 (Roku) AppleWebKit/537.36 (KHTML, like Gecko) Web/1.1 Safari/537.36", 1320 "expect": { 1321 "vendor": "Roku", 1322 "model": "", 1323 "type": "smarttv" 1324 } 1325 }, 1326 { 1327 "desc": "Roku", 1328 "ua": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36 Roku/DVP-8.10 (468.10E04145A)", 1329 "expect": { 1330 "vendor": "Roku", 1331 "model": "DVP-8.10", 1332 "type": "smarttv" 1333 } 1334 }, 1335 { 1336 "desc": "Roku", 1337 "ua": "Roku4640X/DVP-7.70 (297.70E04154A)", 1338 "expect": { 1339 "vendor": "Roku", 1340 "model": "DVP-7.70", 1341 "type": "smarttv" 1342 } 1343 }, 1344 { 850 1345 "desc": "Kindle Fire HD", 851 1346 "ua": "Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; KFTT Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Silk/3.4 Mobile Safari/535.19 Silk-Accelerated=true", … … 1082 1577 }, 1083 1578 { 1579 "desc": "Sharp Aquos B10", 1580 "ua": "Mozilla/5.0 (Linux; Android 7.0; SH-A01) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Mobile Safari/537.36", 1581 "expect": { 1582 "vendor": "Sharp", 1583 "model": "SH-A01", 1584 "type": "mobile" 1585 } 1586 }, 1587 { 1588 "desc": "Sharp Aquos L2", 1589 "ua": "Mozilla/5.0 (Linux; Android 7.0; SH-L02 Build/S4045) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Mobile Safari/537.36", 1590 "expect": { 1591 "vendor": "Sharp", 1592 "model": "SH-L02", 1593 "type": "mobile" 1594 } 1595 }, 1596 { 1597 "desc": "Sharp Aquos R2", 1598 "ua": "Mozilla/5.0 (Linux; Android 8.0; SHV42) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.92 Mobile Safari/537.36", 1599 "expect": { 1600 "vendor": "Sharp", 1601 "model": "SHV42", 1602 "type": "mobile" 1603 } 1604 }, 1605 { 1084 1606 "desc": "Sony G8141 (Xperia XZ Premium)", 1085 1607 "ua": "Mozilla/5.0 (Linux; Android 8.0.0; G8141) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.80 Mobile Safari/537.36", … … 1150 1672 "vendor": "Sony", 1151 1673 "model": "XQ-AT51", 1674 "type": "mobile" 1675 } 1676 }, 1677 { 1678 "desc": "Sony Xperia 1ii", 1679 "ua": "Mozilla/5.0 (Linux; Android 10; SOG01) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.127 Mobile Safari/537.36", 1680 "expect": { 1681 "vendor": "Sony", 1682 "model": "SOG01", 1152 1683 "type": "mobile" 1153 1684 } … … 1309 1840 }, 1310 1841 { 1842 "desc": "Xiaomi Mi Max 3", 1843 "ua": "Mozilla/5.0 (Linux; Android 9; MI MAX 3 Build/PKQ1.181007.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/79.0.3945.116 Mobile Safari/537.36", 1844 "expect": { 1845 "vendor": "Xiaomi", 1846 "model": "MI MAX 3", 1847 "type": "mobile" 1848 } 1849 }, 1850 { 1851 "desc": "Xiaomi Mi A1", 1852 "ua": "Mozilla/5.0 (Linux; Android 9; Mi A1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.101 Mobile Safari/537.36", 1853 "expect": { 1854 "vendor": "Xiaomi", 1855 "model": "Mi A1", 1856 "type": "mobile" 1857 } 1858 }, 1859 { 1860 "desc": "Xiaomi Mi A2 Lite", 1861 "ua": "Mozilla/5.0 (Linux; Android 9; Mi A2 Lite) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.62 Mobile Safari/537.36", 1862 "expect": { 1863 "vendor": "Xiaomi", 1864 "model": "Mi A2 Lite", 1865 "type": "mobile" 1866 } 1867 }, 1868 { 1869 "desc": "Xiaomi Mi 9 SE", 1870 "ua": "Mozilla/5.0 (Linux; Android 9; Mi 9 SE) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.136 Mobile Safari/537.36", 1871 "expect": { 1872 "vendor": "Xiaomi", 1873 "model": "Mi 9 SE", 1874 "type": "mobile" 1875 } 1876 }, 1877 { 1878 "desc": "Xiaomi Mi A2", 1879 "ua": "Mozilla/5.0 (Linux; Android 9; Mi A2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Mobile Safari/537.36", 1880 "expect": { 1881 "vendor": "Xiaomi", 1882 "model": "Mi A2", 1883 "type": "mobile" 1884 } 1885 }, 1886 { 1311 1887 "desc": "Xiaomi MI PAD 2", 1312 1888 "ua": "Mozilla/5.0 (Linux; Android 5.1; MI PAD 2 Build/LMY47I; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/60.0.3112.107 Safari/537.36 [FB_IAB/FB4A;FBAV/137.0.0.24.91;]", … … 1694 2270 }, 1695 2271 { 1696 "desc": " Android Phone Unidentified Vendor (docomo SH-02M)",2272 "desc": "docomo SH-02M", 1697 2273 "ua": "Mozilla/5.0 (Linux; Android 9; SH-02M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.136 Mobile Safari/537.36", 1698 2274 "expect": { 2275 "vendor": "Sharp", 1699 2276 "model": "SH-02M", 1700 2277 "type": "mobile" … … 1858 2435 "vendor": "ZTE", 1859 2436 "model": "NX629J", 2437 "type": "mobile" 2438 } 2439 }, 2440 { 2441 "desc": "ZTE Blade A5", 2442 "ua": "Mozilla/5.0 (Linux; Android 9; ZTE Blade A5 2019) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.116 Mobile Safari/537.36", 2443 "expect": { 2444 "vendor": "ZTE", 2445 "model": "Blade A5 2019", 2446 "type": "mobile" 2447 } 2448 }, 2449 { 2450 "desc": "ZTE BLADE V0730", 2451 "ua": "Mozilla/5.0 (Linux; Android 6.0; ZTE BLADE V0730) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.116 Mobile Safari/537.36", 2452 "expect": { 2453 "vendor": "ZTE", 2454 "model": "BLADE V0730", 2455 "type": "mobile" 2456 } 2457 }, 2458 { 2459 "desc": "ZTE B2017G", 2460 "ua": "Mozilla/5.0 (Linux; Android 7.1.1; ZTE B2017G) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.93 Mobile Safari/537.36", 2461 "expect": { 2462 "vendor": "ZTE", 2463 "model": "B2017G", 1860 2464 "type": "mobile" 1861 2465 } … … 2069 2673 }, 2070 2674 { 2071 "desc": "HUAWEI MediaPad M3 Lite 10", 2072 "ua": "Mozilla/5.0 (Linux; Android 7.0; BAH-L09) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.80 Safari/537.36", 2073 "expect": { 2074 "vendor": "Huawei", 2075 "model": "BAH-L09", 2076 "type": "tablet" 2077 } 2078 }, 2079 { 2080 "desc": "HUAWEI MediaPad M5 Lite", 2081 "ua": "Mozilla/5.0 (Linux; Android 8.0.0; BAH2-W19 Build/HUAWEIBAH2-W19; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/83.0.4103.106 Safari/537.36", 2082 "expect": { 2083 "vendor": "Huawei", 2084 "model": "BAH2-W19", 2085 "type": "tablet" 2086 } 2087 }, 2088 { 2089 "desc": "HUAWEI MediaPad M5", 2090 "ua": "Mozilla/5.0 (Linux; Android 9; SHT-AL09 Build/HUAWEISHT-AL09; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.90 Mobile Safari/537.36", 2091 "expect": { 2092 "vendor": "Huawei", 2093 "model": "SHT-AL09", 2094 "type": "tablet" 2095 } 2096 }, 2097 { 2098 "desc": "HUAWEI MediaPad T5", 2099 "ua": "Mozilla/5.0 (Linux; Android 8.0.0; AGS2-L09 Build/HUAWEIAGS2-L09; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/84.0.4147.125 Safari/537.36", 2100 "expect": { 2101 "vendor": "Huawei", 2102 "model": "AGS2-L09", 2103 "type": "tablet" 2104 } 2105 }, 2106 { 2107 "desc": "HUAWEI MediaPad T10", 2108 "ua": "Mozilla/5.0 (Linux; Android 10; AGR-W09 Build/HUAWEIAGR-W09; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/78.0.3904.108 Safari/537.36", 2109 "expect": { 2110 "vendor": "Huawei", 2111 "model": "AGR-W09", 2112 "type": "tablet" 2113 } 2114 }, 2115 { 2116 "desc": "HUAWEI MediaPad T10s", 2117 "ua": "Mozilla/5.0 (Linux; Android 10; AGS3-W09 Build/HUAWEIAGS3-W09; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/78.0.3904.108 Safari/537.36", 2118 "expect": { 2119 "vendor": "Huawei", 2120 "model": "AGS3-W09", 2121 "type": "tablet" 2122 } 2123 }, 2124 { 2125 "desc": "Huawei MatePad T 10", 2126 "ua": "Mozilla/5.0 (Linux; Android 10; AGR-L09; HMSCore 5.0.4.301) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 HuaweiBrowser/11.0.3.304 Safari/537.36", 2127 "expect": { 2128 "vendor": "Huawei", 2129 "model": "AGR-L09", 2130 "type": "tablet" 2131 } 2132 }, 2133 { 2134 "desc": "Huawei Mate 10 Pro", 2135 "ua": "Mozilla/5.0 (Linux; Android 8.0; BLA-L29 Build/HUAWEIBLA-L29) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3236.6 Mobile Safari/537.36", 2136 "expect": { 2137 "vendor": "Huawei", 2138 "model": "BLA-L29", 2139 "type": "mobile" 2140 } 2141 }, 2142 { 2143 "desc": "Huawei Mate X", 2144 "ua": "Mozilla/5.0 (Linux; Android 9; TAH-AN00) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.111 Safari/537.36", 2145 "expect": { 2146 "vendor": "Huawei", 2147 "model": "TAH-AN00", 2148 "type": "mobile" 2149 } 2150 }, 2151 { 2152 "desc": "Huawei Mate X2", 2153 "ua": "Mozilla/5.0 (Linux; Android 10; TET-AN00) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.96 Mobile Safari/537.36", 2154 "expect": { 2155 "vendor": "Huawei", 2156 "model": "TET-AN00", 2157 "type": "mobile" 2158 } 2159 }, 2160 { 2161 "desc": "Huawei Mate 20 X", 2162 "ua": "Mozilla/5.0 (Linux; Android 9; EVR-L29 Build/HUAWEIEVR-L29; xx-xx) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/70.0.3538.110 Mobile Safari/537.36", 2163 "expect": { 2164 "vendor": "Huawei", 2165 "model": "EVR-L29", 2166 "type": "mobile" 2167 } 2168 }, 2169 { 2170 "desc": "Huawei Mate 20 Pro", 2171 "ua": "Mozilla/5.0 (Linux; Android 9; LYA-L09) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.90 Mobile Safari/537.36", 2172 "expect": { 2173 "vendor": "Huawei", 2174 "model": "LYA-L09", 2175 "type": "mobile" 2176 } 2177 }, 2178 { 2179 "desc": "Huawei Mate 20 Pro", 2180 "ua": "Mozilla/5.0 (Linux; Android 9; LYA-AL00) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.90 Mobile Safari/537.36", 2181 "expect": { 2182 "vendor": "Huawei", 2183 "model": "LYA-AL00", 2184 "type": "mobile" 2185 } 2186 }, 2187 { 2188 "desc": "Huawei P20 Lite", 2189 "ua": "Mozilla/5.0 (Linux; Android 8.0.0; ANE-LX1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.143 Mobile Safari/537.36", 2190 "expect": { 2191 "vendor": "Huawei", 2192 "model": "ANE-LX1", 2193 "type": "mobile" 2194 } 2195 }, 2196 { 2197 "desc": "Huawei P20", 2198 "ua": "Mozilla/5.0 (Linux; Android 8.1.0; EML-L29) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.157 Mobile Safari/537.36", 2199 "expect": { 2200 "vendor": "Huawei", 2201 "model": "EML-L29", 2202 "type": "mobile" 2203 } 2204 }, 2205 { 2206 "desc": "Huawei P20 Pro", 2207 "ua": "Mozilla/5.0 (Linux; Android 9; CLT-L29) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.90 Mobile Safari/537.36", 2208 "expect": { 2209 "vendor": "Huawei", 2210 "model": "CLT-L29", 2211 "type": "mobile" 2675 "desc": "Amazon Fire 7", 2676 "ua": "Mozilla/5.0 (Linux; Android 5.1.1; KFAUWI) AppleWebKit/537.36 (KHTML, like Gecko) Silk/80.5.3 like Chrome/80.0.3987.162 Safari/537.36", 2677 "expect": { 2678 "vendor": "Amazon", 2679 "model": "KFAUWI", 2680 "type": "tablet" 2681 } 2682 }, 2683 { 2684 "desc": "AT&T Radiant Core U304AA", 2685 "ua": "Dalvik/2.1.0 (Linux; U; Android 9; U304AA Build/P00610)", 2686 "expect": { 2687 "vendor": "AT&T", 2688 "model": "U304AA", 2689 "type": "mobile" 2690 } 2691 }, 2692 { 2693 "desc": "Vodafone Smart Tab 4G", 2694 "ua": "Mozilla/5.0 (Linux; Android 4.4.4; Vodafone Smart Tab 4G) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36", 2695 "expect": { 2696 "vendor": "Vodafone", 2697 "model": "Smart Tab 4G", 2698 "type": "tablet" 2699 } 2700 }, 2701 { 2702 "desc": "Vodafone Smart ultra 6", 2703 "ua": "Mozilla/5.0 (Linux; Android 5.0.2; Vodafone Smart ultra 6 Build/LRX22G) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.133 Mobile Safari/537.36", 2704 "expect": { 2705 "vendor": "Vodafone", 2706 "model": "Smart ultra 6", 2707 "type": "tablet" 2708 } 2709 }, 2710 { 2711 "desc": "4ife 4K Smart TV Box", 2712 "ua": "Mozilla/5.0 (Linux; Android 4.4.2; 4ife 4K Smart TV Box Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Safari/537.36 Vinebre", 2713 "expect": { 2714 "vendor": "undefined", 2715 "model": "undefined", 2716 "type": "smarttv" 2717 } 2718 }, 2719 { 2720 "desc": "FaceBook Mobile App", 2721 "ua": "[FBAN/FBIOS;FBAV/283.0.0.44.117;FBBV/238386386;FBDV/iPhone12,1;FBMD/iPhone;FBSN/iOS;FBSV/13.6.1;FBSS/2;FBID/phone;FBLC/en_US;FBOP/5;FBRV/240127608]", 2722 "expect": { 2723 "type": "mobile" 2724 } 2725 }, 2726 { 2727 "desc": "Issue #454", 2728 "ua": "Mosamzilla/5.0 (Windows; U; Win98; en-US; rv:1.7.5) Gecko/20050603 Netscape/8.0.2", 2729 "expect": { 2730 "vendor": "undefined", 2731 "model": "undefined", 2732 "type": "undefined" 2733 } 2734 }, 2735 { 2736 "desc": "Alcatel", 2737 "ua": "Mozilla/5.0 (Linux; Android 4.4.2; ALCATEL A564C Build/KVT49L) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.133 Mobile Safari/537.36", 2738 "expect": { 2739 "vendor": "ALCATEL", 2740 "model": "A564C", 2741 "type": "mobile" 2742 } 2743 }, 2744 { 2745 "desc": "Alcatel Go Flip", 2746 "ua": "Mozilla/5.0 (Mobile; ALCATEL4044T; rv:37.0) Gecko/37.0 Firefox/37.0 KaiOS/1.0", 2747 "expect": { 2748 "vendor": "ALCATEL", 2749 "model": "4044T", 2750 "type": "mobile" 2751 } 2752 }, 2753 { 2754 "desc": "Jolla", 2755 "ua": "Mozilla/5.0 (Maemo; Linux; U; Jolla; Sailfish; Mobile; rv:31.0) Gecko/31.0 Firefox/31.0 SailfishBrowser/1.0", 2756 "expect": { 2757 "vendor": "Jolla", 2758 "model": "undefined", 2759 "type": "mobile" 2760 } 2761 }, 2762 { 2763 "desc": "Xbox One", 2764 "ua": "Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; Xbox; Xbox One)", 2765 "expect": { 2766 "vendor": "Microsoft", 2767 "model": "Xbox One", 2768 "type": "console" 2769 } 2770 }, 2771 { 2772 "desc": "Xbox", 2773 "ua": "Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; Xbox)", 2774 "expect": { 2775 "vendor": "Microsoft", 2776 "model": "Xbox", 2777 "type": "console" 2778 } 2779 }, 2780 { 2781 "desc": "Nvidia Shield Tablet", 2782 "ua": "Mozilla/5.0 (Linux; Android 5.1.1; SHIELD Tablet Build/LVY48E; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/45.0.2454.19 Safari/537.36", 2783 "expect": { 2784 "vendor": "Nvidia", 2785 "model": "SHIELD Tablet", 2786 "type": "tablet" 2787 } 2788 }, 2789 { 2790 "desc": "Ouya", 2791 "ua": "Mozilla/5.0 (Linux; Android 4.1.2; OUYA Console Build/JZO54L-OUYA) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.84 Safari/537.36", 2792 "expect": { 2793 "vendor": "OUYA", 2794 "model": "undefined", 2795 "type": "console" 2796 } 2797 }, 2798 { 2799 "desc": "Vivo Y52s", 2800 "ua": "Mozilla/5.0 (Linux; Android 10; V2057A Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/76.0.3809.89 Mobile Safari/537.36 T7/12.10 SP-engine/2.28.0 baiduboxapp/12.10.0.10 (Baidu; P1 10) NABar/1.0", 2801 "expect": { 2802 "vendor": "Vivo", 2803 "model": "V2057A", 2804 "type": "mobile" 2805 } 2806 }, 2807 { 2808 "desc": "Vivo X60", 2809 "ua": "Mozilla/5.0 (Linux; Android 11; V2046A; wv) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.84 Mobile Safari/537.36 VivoBrowser/8.8.71.0", 2810 "expect": { 2811 "vendor": "Vivo", 2812 "model": "V2046A", 2813 "type": "mobile" 2814 } 2815 }, 2816 { 2817 "desc": "Vivo Y79A", 2818 "ua": "Mozilla/5.0 (Linux; Android 7.1.2; vivo Y79A Build/N2G47H; wv) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.84 Mobile Safari/537.36 VivoBrowser/9.0.14.0", 2819 "expect": { 2820 "vendor": "Vivo", 2821 "model": "Y79A", 2822 "type": "mobile" 2823 } 2824 }, 2825 { 2826 "desc": "Vivo Y97", 2827 "ua": "Mozilla/5.0 (Linux; Android 8.1.0; V1813T Build/O11019; wv) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.84 Mobile Safari/537.36 VivoBrowser/9.0.14.0", 2828 "expect": { 2829 "vendor": "Vivo", 2830 "model": "V1813T", 2831 "type": "mobile" 2832 } 2833 }, 2834 { 2835 "desc": "Vivo iQOO Pro", 2836 "ua": "Mozilla/5.0 (Linux; Android 11; V1916A; wv) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.84 Mobile Safari/537.36 VivoBrowser/9.1.10.6", 2837 "expect": { 2838 "vendor": "Vivo", 2839 "model": "V1916A", 2840 "type": "mobile" 2841 } 2842 }, 2843 { 2844 "desc": "Unknown Mobile using Firefox", 2845 "ua": "Mozilla/5.0 (Android 4.4; Mobile; rv:41.0) Gecko/41.0 Firefox/41.0", 2846 "expect": { 2847 "vendor": "undefined", 2848 "model": "undefined", 2849 "type": "mobile" 2850 } 2851 }, 2852 { 2853 "desc": "Unknown Tablet using Firefox", 2854 "ua": "Mozilla/5.0 (Android 4.4; Tablet; rv:41.0) Gecko/41.0 Firefox/41.0", 2855 "expect": { 2856 "vendor": "undefined", 2857 "model": "undefined", 2858 "type": "tablet" 2859 } 2860 }, 2861 { 2862 "desc": "Unknown Mobile using Focus for Android", 2863 "ua": "Mozilla/5.0 (Linux; Android 7.0) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Focus/1.0 Chrome/59.0.3029.83 Mobile Safari/537.36", 2864 "expect": { 2865 "vendor": "undefined", 2866 "model": "undefined", 2867 "type": "mobile" 2868 } 2869 }, 2870 { 2871 "desc": "Unknown Tablet using Focus for Android", 2872 "ua": "Mozilla/5.0 (Linux; Android 7.0) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Focus/1.0 Chrome/59.0.3029.83 Safari/537.36", 2873 "expect": { 2874 "vendor": "undefined", 2875 "model": "undefined", 2876 "type": "tablet" 2877 } 2878 }, 2879 { 2880 "desc": "Unknown Device using Focus for Android with GeckoView", 2881 "ua": "Mozilla/5.0 (Android 7.0; Mobile; rv:62.0) Gecko/62.0 Firefox/62.0", 2882 "expect": { 2883 "vendor": "undefined", 2884 "model": "undefined", 2885 "type": "mobile" 2886 } 2887 }, 2888 { 2889 "desc": "Unknown Mobile using Firefox OS", 2890 "ua": "Mozilla/5.0 (Mobile; rv:26.0) Gecko/26.0 Firefox/26.0", 2891 "expect": { 2892 "vendor": "undefined", 2893 "model": "undefined", 2894 "type": "mobile" 2895 } 2896 }, 2897 { 2898 "desc": "Unknown Tablet using Firefox OS", 2899 "ua": "Mozilla/5.0 (Tablet; rv:26.0) Gecko/26.0 Firefox/26.0", 2900 "expect": { 2901 "vendor": "undefined", 2902 "model": "undefined", 2903 "type": "tablet" 2904 } 2905 }, 2906 { 2907 "desc": "Unknown TV using Firefox OS", 2908 "ua": "Mozilla/5.0 (TV; rv:44.0) Gecko/44.0 Firefox/44.0", 2909 "expect": { 2910 "vendor": "undefined", 2911 "model": "undefined", 2912 "type": "smarttv" 2913 } 2914 }, 2915 { 2916 "desc": "PDA with Windows CE", 2917 "ua": "Mozilla/4.0 (PDA; Windows CE/1.0.1) NetFront/3.0", 2918 "expect": { 2919 "vendor": "undefined", 2920 "model": "undefined", 2921 "type": "mobile" 2922 } 2212 2923 } 2213 },2214 {2215 "desc": "Huawei P30",2216 "ua": "Mozilla/5.0 (Linux; Android 9; ELE-L29) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.90 Mobile Safari/537.36",2217 "expect": {2218 "vendor": "Huawei",2219 "model": "ELE-L29",2220 "type": "mobile"2221 }2222 },2223 {2224 "desc": "Huawei P30 Pro",2225 "ua": "Mozilla/5.0 (Linux; Android 9; VOG-L29) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.143 Mobile Safari/537.36",2226 "expect": {2227 "vendor": "Huawei",2228 "model": "VOG-L29",2229 "type": "mobile"2230 }2231 },2232 {2233 "desc": "Huawei P40",2234 "ua": "Mozilla/5.0 (Linux; Android 10; ANA-AN00 Build/HUAWEIANA-AN00; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/76.0.3809.89 Mobile Safari/537.36 T7/11.26 SP-engine/2.22.0 baiduboxapp/11.26.0.10 (Baidu; P1 10) NABar/1.0",2235 "expect": {2236 "vendor": "Huawei",2237 "model": "ANA-AN00",2238 "type": "mobile"2239 }2240 },2241 {2242 "desc": "Huawei P40 Pro",2243 "ua": "Mozilla/5.0 (Linux; Android 10; ELS-AN00 Build/HUAWEIELS-AN00; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/78.0.3904.108 Mobile Safari/537.36 mailapp/6.0.0",2244 "expect": {2245 "vendor": "Huawei",2246 "model": "ELS-AN00",2247 "type": "mobile"2248 }2249 },2250 {2251 "desc": "Huawei 30 Pro+",2252 "ua": "Mozilla/5.0 (Linux; Android 10; EBG-AN10 Build/HUAWEIEBG-AN10) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.86 Mobile Safari/537.36 EdgA/42.0.0.2741",2253 "expect": {2254 "vendor": "Huawei",2255 "model": "EBG-AN10",2256 "type": "mobile"2257 }2258 },2259 {2260 "desc": "Huawei 30S",2261 "ua": "Mozilla/5.0 (Linux; Android 10; CDY-AN90 Build/HUAWEICDY-AN90; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/78.0.3904.108 Mobile Safari/537.36 mailapp/5.8.0",2262 "expect": {2263 "vendor": "Huawei",2264 "model": "CDY-AN90",2265 "type": "mobile"2266 }2267 },2268 {2269 "desc": "Huawei Enjoy10e",2270 "ua": "Dalvik/2.1.0 (Linux; U; Android 10; MED-AL00 Build/HUAWEIMED-AL00)",2271 "expect": {2272 "vendor": "Huawei",2273 "model": "MED-AL00",2274 "type": "mobile"2275 }2276 },2277 {2278 "desc": "Amazon Fire 7",2279 "ua": "Mozilla/5.0 (Linux; Android 5.1.1; KFAUWI) AppleWebKit/537.36 (KHTML, like Gecko) Silk/80.5.3 like Chrome/80.0.3987.162 Safari/537.36",2280 "expect": {2281 "vendor": "Amazon",2282 "model": "KFAUWI",2283 "type": "tablet"2284 }2285 },2286 {2287 "desc": "AT&T Radiant Core U304AA",2288 "ua": "Dalvik/2.1.0 (Linux; U; Android 9; U304AA Build/P00610)",2289 "expect": {2290 "vendor": "AT&T",2291 "model": "U304AA",2292 "type": "mobile"2293 }2294 },2295 {2296 "desc": "Vodafone Smart Tab 4G",2297 "ua": "Mozilla/5.0 (Linux; Android 4.4.4; Vodafone Smart Tab 4G) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36",2298 "expect": {2299 "vendor": "Vodafone",2300 "model": "Smart Tab 4G",2301 "type": "tablet"2302 }2303 },2304 {2305 "desc": "Vodafone Smart ultra 6",2306 "ua": "Mozilla/5.0 (Linux; Android 5.0.2; Vodafone Smart ultra 6 Build/LRX22G) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.133 Mobile Safari/537.36",2307 "expect": {2308 "vendor": "Vodafone",2309 "model": "Smart ultra 6",2310 "type": "tablet"2311 }2312 },2313 {2314 "desc": "4ife 4K Smart TV Box",2315 "ua": "Mozilla/5.0 (Linux; Android 4.4.2; 4ife 4K Smart TV Box Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Safari/537.36 Vinebre",2316 "expect": {2317 "vendor": "undefined",2318 "model": "undefined",2319 "type": "smarttv"2320 }2321 },2322 {2323 "desc": "FaceBook Mobile App",2324 "ua": "[FBAN/FBIOS;FBAV/283.0.0.44.117;FBBV/238386386;FBDV/iPhone12,1;FBMD/iPhone;FBSN/iOS;FBSV/13.6.1;FBSS/2;FBID/phone;FBLC/en_US;FBOP/5;FBRV/240127608]",2325 "expect": {2326 "type": "mobile"2327 }2328 },2329 {2330 "desc": "Issue #454",2331 "ua": "Mosamzilla/5.0 (Windows; U; Win98; en-US; rv:1.7.5) Gecko/20050603 Netscape/8.0.2",2332 "expect": {2333 "vendor": "undefined",2334 "model": "undefined",2335 "type": "undefined"2336 }2337 },2338 {2339 "desc": "Alcatel",2340 "ua": "Mozilla/5.0 (Linux; Android 4.4.2; ALCATEL A564C Build/KVT49L) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.133 Mobile Safari/537.36",2341 "expect": {2342 "vendor": "ALCATEL",2343 "model": "A564C",2344 "type": "mobile"2345 }2346 },2347 {2348 "desc": "Alcatel Go Flip",2349 "ua": "Mozilla/5.0 (Mobile; ALCATEL4044T; rv:37.0) Gecko/37.0 Firefox/37.0 KaiOS/1.0",2350 "expect": {2351 "vendor": "ALCATEL",2352 "model": "4044T",2353 "type": "mobile"2354 }2355 },2356 {2357 "desc": "Jolla",2358 "ua": "Mozilla/5.0 (Maemo; Linux; U; Jolla; Sailfish; Mobile; rv:31.0) Gecko/31.0 Firefox/31.0 SailfishBrowser/1.0",2359 "expect": {2360 "vendor": "Jolla",2361 "model": "undefined",2362 "type": "mobile"2363 }2364 },2365 {2366 "desc": "Xbox One",2367 "ua": "Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; Xbox; Xbox One)",2368 "expect": {2369 "vendor": "Microsoft",2370 "model": "Xbox One",2371 "type": "console"2372 }2373 },2374 {2375 "desc": "Xbox",2376 "ua": "Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; Xbox)",2377 "expect": {2378 "vendor": "Microsoft",2379 "model": "Xbox",2380 "type": "console"2381 }2382 },2383 {2384 "desc": "Nvidia Shield Tablet",2385 "ua": "Mozilla/5.0 (Linux; Android 5.1.1; SHIELD Tablet Build/LVY48E; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/45.0.2454.19 Safari/537.36",2386 "expect": {2387 "vendor": "Nvidia",2388 "model": "SHIELD Tablet",2389 "type": "tablet"2390 }2391 },2392 {2393 "desc": "Ouya",2394 "ua": "Mozilla/5.0 (Linux; Android 4.1.2; OUYA Console Build/JZO54L-OUYA) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.84 Safari/537.36",2395 "expect": {2396 "vendor": "OUYA",2397 "model": "undefined",2398 "type": "console"2399 }2400 },2401 {2402 "desc": "Vivo Y52s",2403 "ua": "Mozilla/5.0 (Linux; Android 10; V2057A Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/76.0.3809.89 Mobile Safari/537.36 T7/12.10 SP-engine/2.28.0 baiduboxapp/12.10.0.10 (Baidu; P1 10) NABar/1.0",2404 "expect": {2405 "vendor": "Vivo",2406 "model": "V2057A",2407 "type": "mobile"2408 }2409 },2410 {2411 "desc": "Vivo X60",2412 "ua": "Mozilla/5.0 (Linux; Android 11; V2046A; wv) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.84 Mobile Safari/537.36 VivoBrowser/8.8.71.0",2413 "expect": {2414 "vendor": "Vivo",2415 "model": "V2046A",2416 "type": "mobile"2417 }2418 },2419 {2420 "desc": "Vivo Y79A",2421 "ua": "Mozilla/5.0 (Linux; Android 7.1.2; vivo Y79A Build/N2G47H; wv) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.84 Mobile Safari/537.36 VivoBrowser/9.0.14.0",2422 "expect": {2423 "vendor": "Vivo",2424 "model": "Y79A",2425 "type": "mobile"2426 }2427 },2428 {2429 "desc": "Vivo Y97",2430 "ua": "Mozilla/5.0 (Linux; Android 8.1.0; V1813T Build/O11019; wv) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.84 Mobile Safari/537.36 VivoBrowser/9.0.14.0",2431 "expect": {2432 "vendor": "Vivo",2433 "model": "V1813T",2434 "type": "mobile"2435 }2436 },2437 {2438 "desc": "Vivo iQOO Pro",2439 "ua": "Mozilla/5.0 (Linux; Android 11; V1916A; wv) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.84 Mobile Safari/537.36 VivoBrowser/9.1.10.6",2440 "expect": {2441 "vendor": "Vivo",2442 "model": "V1916A",2443 "type": "mobile"2444 }2445 }2446 2924 ] -
trip-planner-front/node_modules/ua-parser-js/test/os-test.json
r59329aa re29cc2e 109 109 }, 110 110 { 111 "desc" : "Windows Mobile", 112 "ua" : "Opera/9.80 (Windows Mobile; WCE; Opera Mobi/WMD-50433; U; en) Presto/2.4.13 Version/10.00", 113 "expect" : 114 { 115 "name" : "Windows Mobile", 116 "version" : "undefined" 117 } 118 }, 119 { 111 120 "desc" : "Windows Phone", 112 121 "ua" : "Opera/9.80 (Windows Phone; Opera Mini/7.6.8/35.7518; U; ru) Presto/2.8.119 Version/11.10", … … 136 145 }, 137 146 { 147 "desc" : "Windows NT on x86 or aarch64 CPU using Firefox", 148 "ua" : "Mozilla/5.0 (Windows NT x.y; rv:10.0) Gecko/20100101 Firefox/10.0", 149 "expect" : 150 { 151 "name" : "Windows", 152 "version" : "NT x" 153 } 154 }, 155 { 156 "desc" : "Windows NT on x64 CPU using Firefox", 157 "ua" : "Mozilla/5.0 (Windows NT x.y; Win64; x64; rv:10.0) Gecko/20100101 Firefox/10.0", 158 "expect" : 159 { 160 "name" : "Windows", 161 "version" : "NT x" 162 } 163 }, 164 { 138 165 "desc" : "BlackBerry", 139 166 "ua" : "BlackBerry9300/5.0.0.912 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/378", … … 280 307 }, 281 308 { 309 "desc" : "Nokia N900 Linux mobile, on the Fennec browser", 310 "ua" : "Mozilla/5.0 (Maemo; Linux armv7l; rv:10.0) Gecko/20100101 Firefox/10.0 Fennec/10.0", 311 "expect" : 312 { 313 "name" : "Maemo", 314 "version" : "undefined" 315 } 316 }, 317 { 282 318 "desc" : "MeeGo", 283 319 "ua" : "Mozilla/5.0 (MeeGo; NokiaN9) AppleWebKit/534.13 (KHTML, like Gecko) NokiaBrowser/8.5.0 Mobile Safari/534.13", … … 321 357 { 322 358 "name" : "Firefox OS", 323 "version" : "undefined" 359 "version" : "14.0" 360 } 361 }, 362 { 363 "desc" : "Firefox OS on Tablet", 364 "ua" : "Mozilla/5.0 (Tablet; rv:26.0) Gecko/26.0 Firefox/26.0", 365 "expect" : 366 { 367 "name" : "Firefox OS", 368 "version" : "26.0" 369 } 370 }, 371 { 372 "desc" : "Firefox OS on TV", 373 "ua" : "Mozilla/5.0 (TV; rv:44.0) Gecko/44.0 Firefox/44.0", 374 "expect" : 375 { 376 "name" : "Firefox OS", 377 "version" : "44.0" 324 378 } 325 379 }, … … 551 605 { 552 606 "desc" : "Slackware", 553 "ua" : " ",554 "expect" : 555 { 556 "name" : " ",557 "version" : " "607 "ua" : "Mozilla/5.0 Slackware/13.37 (X11; U; Linux x86_64; en-US) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.41", 608 "expect" : 609 { 610 "name" : "Slackware", 611 "version" : "13.37" 558 612 } 559 613 }, … … 614 668 { 615 669 "desc" : "Solaris", 616 "ua" : " ",617 "expect" : 618 { 619 "name" : " ",620 "version" : " "670 "ua" : "Mozilla/5.0 (X11; U; SunOS sun4u; en-US; rv:1.7) Gecko/20070606", 671 "expect" : 672 { 673 "name" : "Solaris", 674 "version" : "sun4u" 621 675 } 622 676 }, … … 650 704 { 651 705 "desc" : "DragonFly", 652 "ua" : " ",653 "expect" : 654 { 655 "name" : " ",656 "version" : " "706 "ua" : "Mozilla/5.0 (X11; U; DragonFly i386; de; rv:1.9.1) Gecko/20090720 Firefox/3.5.1", 707 "expect" : 708 { 709 "name" : "DragonFly", 710 "version" : "undefined" 657 711 } 658 712 }, … … 685 739 }, 686 740 { 741 "desc" : "Mac OS on PowerPC", 742 "ua" : "Mozilla/4.0 (compatible; MSIE 5.0b1; Mac_PowerPC)", 743 "expect" : 744 { 745 "name" : "Mac OS", 746 "version" : "undefined" 747 } 748 }, 749 { 750 "desc" : "Mac OS X on x86, x86_64, or aarch64 using Firefox", 751 "ua" : "Mozilla/5.0 (Macintosh; Intel Mac OS X x.y; rv:10.0) Gecko/20100101 Firefox/10.0", 752 "expect" : 753 { 754 "name" : "Mac OS", 755 "version" : "x.y" 756 } 757 }, 758 { 759 "desc" : "Mac OS X on PowerPC using Firefox", 760 "ua" : "Mozilla/5.0 (Macintosh; PPC Mac OS X x.y; rv:10.0) Gecko/20100101 Firefox/10.0", 761 "expect" : 762 { 763 "name" : "Mac OS", 764 "version" : "x.y" 765 } 766 }, 767 { 687 768 "desc" : "Mac OS", 688 769 "ua" : "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.95 Safari/537.36", … … 767 848 { 768 849 "desc" : "AIX", 769 "ua" : " ",770 "expect" : 771 { 772 "name" : " ",773 "version" : " "850 "ua" : "Mozilla/5.0 (X11; U; AIX 000138384C00; en-US; rv:1.0.1) Gecko/20030213 Netscape/7.0", 851 "expect" : 852 { 853 "name" : "AIX", 854 "version" : "undefined" 774 855 } 775 856 }, 776 857 { 777 858 "desc" : "Plan9", 778 "ua" : " ",779 "expect" : 780 { 781 "name" : " ",782 "version" : " "859 "ua" : "NCSA_Mosaic/5.0 (X11;Plan 9 4.0)", 860 "expect" : 861 { 862 "name" : "Plan 9", 863 "version" : "4.0" 783 864 } 784 865 }, 785 866 { 786 867 "desc" : "Minix", 787 "ua" : " ",788 "expect" : 789 { 790 "name" : " ",791 "version" : " "868 "ua" : "Mozilla/5.0 (X11; Original ; Minix 3.3 ; rv:3.0)", 869 "expect" : 870 { 871 "name" : "Minix", 872 "version" : "3.3" 792 873 } 793 874 }, 794 875 { 795 876 "desc" : "BeOS", 796 "ua" : " ",797 "expect" : 798 { 799 "name" : " ",800 "version" : " "877 "ua" : "Mozilla/5.0 (BeOS; U; BeOS BePC; en-US; rv:1.8.1.8pre) Gecko/20070926 SeaMonkey/1.1.5pre", 878 "expect" : 879 { 880 "name" : "BeOS", 881 "version" : "undefined" 801 882 } 802 883 }, 803 884 { 804 885 "desc" : "OS/2", 805 "ua" : " ",806 "expect" : 807 { 808 "name" : " ",809 "version" : " "886 "ua" : "Links (2.1pre14; OS/2 1 i386; 80x33)", 887 "expect" : 888 { 889 "name" : "OS/2", 890 "version" : "undefined" 810 891 } 811 892 }, 812 893 { 813 894 "desc" : "AmigaOS", 814 "ua" : " ",815 "expect" : 816 { 817 "name" : " ",818 "version" : " "895 "ua" : "Mozilla/4.0 (compatible; AWEB 3.4 SE; AmigaOS)", 896 "expect" : 897 { 898 "name" : "AmigaOS", 899 "version" : "undefined" 819 900 } 820 901 }, 821 902 { 822 903 "desc" : "MorphOS", 823 "ua" : " ",824 "expect" : 825 { 826 "name" : " ",827 "version" : " "904 "ua" : "AmigaVoyager/3.4.4 (MorphOS/PPC native)", 905 "expect" : 906 { 907 "name" : "MorphOS", 908 "version" : "undefined" 828 909 } 829 910 }, 830 911 { 831 912 "desc" : "UNIX", 832 "ua" : " ",833 "expect" : 834 { 835 "name" : " ",836 "version" : " "913 "ua" : "Surf/0.4.1 (X11; U; Unix; en-US) AppleWebKit/531.2+ Compatible (Safari)", 914 "expect" : 915 { 916 "name" : "Unix", 917 "version" : "undefined" 837 918 } 838 919 }, 839 920 { 840 921 "desc" : "Joli", 841 "ua" : " ",842 "expect" : 843 { 844 "name" : " ",845 "version" : " "922 "ua" : "Mozilla/5.0 (X11; Jolicloud Linux i686) AppleWebKit/537.6 (KHTML, like Gecko) Joli OS/1.2 Chromium/23.0.1240.0 Chrome/23.0.1240.0 Safari/537.6", 923 "expect" : 924 { 925 "name" : "Joli", 926 "version" : "1.2" 846 927 } 847 928 }, 848 929 { 849 930 "desc" : "CentOS", 850 "ua" : " ",851 "expect" : 852 { 853 "name" : " ",854 "version" : " "931 "ua" : "Konqueror/15.13 (CentOS Linux 7.4; cs-CZ;)", 932 "expect" : 933 { 934 "name" : "CentOS", 935 "version" : "7.4" 855 936 } 856 937 }, 857 938 { 858 939 "desc" : "PCLinuxOS", 859 "ua" : " ",860 "expect" : 861 { 862 "name" : " ",863 "version" : " "940 "ua" : "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.13) Gecko/20101209 PCLinuxOS/1.9.2.13-1pclos2010 (2010) Firefox/3.6.13", 941 "expect" : 942 { 943 "name" : "PCLinuxOS", 944 "version" : "1.9.2.13-1pclos2010" 864 945 } 865 946 }, 866 947 { 867 948 "desc" : "RedHat", 868 "ua" : "", 869 "expect" : 870 { 871 "name" : "", 872 "version" : "" 949 "ua" : "Mozilla/5.0 (compatible; Konqueror/4.3; Linux) KHTML/4.3.4 (like Gecko) Red Hat Enterprise Linux/4.3.4-11.el6_1.4", 950 "expect" : 951 { 952 "name" : "Red Hat", 953 "version" : "4.3.4-11.el6_1.4" 954 } 955 }, 956 { 957 "desc" : "RedHat", 958 "ua" : "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.13pre) Gecko/20070717 Red Hat/1.0.9-4.el4 SeaMonkey/1.0.9", 959 "expect" : 960 { 961 "name" : "Red Hat", 962 "version" : "1.0.9-4.el4" 963 } 964 }, 965 { 966 "desc" : "RedHat", 967 "ua" : "iTunes/4.7.1 (Linux; N; Red Hat; x86_64-linux; EN; utf8) SqueezeCenter, Squeezebox Server, Logitech Media Server/7.9.1/1522157629", 968 "expect" : 969 { 970 "name" : "Red Hat", 971 "version" : "undefined" 972 } 973 }, 974 { 975 "desc" : "RedHat", 976 "ua" : "curl/7.20.0 (x86_64-redhat-linux-gnu) libcurl/7.20.0 OpenSSL/0.9.8b zlib/1.2.3 libidn/0.6.5", 977 "expect" : 978 { 979 "name" : "redhat", 980 "version" : "undefined" 981 } 982 }, 983 { 984 "desc" : "RISC OS", 985 "ua" : "Mozilla/1.10 [en] (Compatible; RISC OS 3.70; Oregano 1.10)", 986 "expect" : 987 { 988 "name" : "RISC OS", 989 "version" : "3.70" 873 990 } 874 991 }, 875 992 { 876 993 "desc" : "Zenwalk", 877 "ua" : " ",878 "expect" : 879 { 880 "name" : " ",881 "version" : " "994 "ua" : "Flock/2.16 (Zenwalk 7.3; es_PR;)", 995 "expect" : 996 { 997 "name" : "Zenwalk", 998 "version" : "7.3" 882 999 } 883 1000 }, 884 1001 { 885 1002 "desc" : "Hurd", 886 "ua" : " ",887 "expect" : 888 { 889 "name" : " ",890 "version" : " "1003 "ua" : "Mozilla/5.0 (X11; Hurd 0.9 i386; en-US) libwww-FM/2.14 SSL-MM/1.4.1 GNUTLS/3.7.0 Safari/696.96", 1004 "expect" : 1005 { 1006 "name" : "Hurd", 1007 "version" : "0.9" 891 1008 } 892 1009 }, 893 1010 { 894 1011 "desc" : "Linux", 895 "ua" : " ",896 "expect" : 897 { 898 "name" : " ",899 "version" : " "900 } 901 }, 902 { 903 "desc" : " GNU",904 "ua" : " ",905 "expect" : 906 { 907 "name" : " ",908 "version" : " "1012 "ua" : "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.157 Safari/537.36", 1013 "expect" : 1014 { 1015 "name" : "Linux", 1016 "version" : "x86_64" 1017 } 1018 }, 1019 { 1020 "desc" : "Deepin", 1021 "ua" : "Mozilla/5.0 (X11; Linux x86_64; Deepin 15.5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.75 Safari/537.36 NFSBrowser/5.0.0.1886", 1022 "expect" : 1023 { 1024 "name" : "Deepin", 1025 "version" : "15.5" 909 1026 } 910 1027 }, 911 1028 { 912 1029 "desc" : "Palm OS", 913 "ua" : "", 914 "expect" : 915 { 916 "name" : "", 917 "version" : "" 1030 "ua" : "Mozilla/4.76 [en] (PalmOS; U; WebPro3.0; Palm-Arz1)", 1031 "expect" : 1032 { 1033 "name" : "Palm", 1034 "version" : "undefined" 1035 } 1036 }, 1037 { 1038 "desc" : "HP-UX", 1039 "ua" : "Mozilla/5.0 (X11; U; HP-UX 9000/785; es-ES; rv:1.0.1) Gecko/20020827 Netscape/7.0", 1040 "expect" : 1041 { 1042 "name" : "HP-UX", 1043 "version" : "undefined" 1044 } 1045 }, 1046 { 1047 "desc" : "Contiki", 1048 "ua" : "Contiki/1.0 (Commodore 64; http://dunkels.com/adam/contiki/)", 1049 "expect" : 1050 { 1051 "name" : "Contiki", 1052 "version" : "1.0" 1053 } 1054 }, 1055 { 1056 "desc" : "Linpus", 1057 "ua" : "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9b5pre) Gecko/2008032619 Linpus/3.0-0.49", 1058 "expect" : 1059 { 1060 "name" : "Linpus", 1061 "version" : "3.0-0.49" 1062 } 1063 }, 1064 { 1065 "desc" : "Manjaro", 1066 "ua" : "Mozilla/5.0 (X11; Manjaro 19.0.2; Arch; x64; rv:84.0) Gecko/20100101 Firefox/84.0", 1067 "expect" : 1068 { 1069 "name" : "Manjaro", 1070 "version" : "19.0.2" 1071 } 1072 }, 1073 { 1074 "desc" : "elementary OS", 1075 "ua" : "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/604.1 (KHTML, like Gecko) Version/11.0 Safari/604.1 elementary OS/0.4 (Loki) Epiphany/3.18.11", 1076 "expect" : 1077 { 1078 "name" : "elementary OS", 1079 "version" : "0.4" 1080 } 1081 }, 1082 { 1083 "desc" : "GhostBSD", 1084 "ua" : "Mozilla/5.0 (X11; GhostBSD/10.3; x86_64; rv:50.0.1) Gecko/20100101 Firefox/50.0.1", 1085 "expect" : 1086 { 1087 "name" : "GhostBSD", 1088 "version" : "10.3" 1089 } 1090 }, 1091 { 1092 "desc" : "Android-x86", 1093 "ua" : "Mozilla/5.0 (Linux; Android 7.1.2; Generic Android-x86) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36 OPR/61.2.3076.56749", 1094 "expect" : 1095 { 1096 "name" : "Android-x86", 1097 "version" : "7.1.2" 1098 } 1099 }, 1100 { 1101 "desc" : "Sabayon", 1102 "ua" : "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/536.5 (KHTML, like Gecko) Sabayon Chrome/19.0.1084.46 Safari/536.5", 1103 "expect" : 1104 { 1105 "name" : "Sabayon", 1106 "version" : "undefined" 1107 } 1108 }, 1109 { 1110 "desc" : "Linspire", 1111 "ua" : "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.4) Gecko/20060803 Firefox/1.5.0.4 Linspire/1.5.0.4", 1112 "expect" : 1113 { 1114 "name" : "Linspire", 1115 "version" : "1.5.0.4" 918 1116 } 919 1117 } -
trip-planner-front/node_modules/ua-parser-js/test/test.js
r59329aa re29cc2e 3 3 var assert = require('assert'); 4 4 var requirejs = require('requirejs'); 5 var parseJS = require('@babel/parser').parse; 6 var traverse = require('@babel/traverse').default; 5 7 var UAParser = require('./../src/ua-parser'); 6 8 var browsers = require('./browser-test.json'); … … 138 140 var regexes; 139 141 140 // todo: use AST-based instead of grep 141 before('Read main js file', function (done) { 142 fs.readFile('src/ua-parser.js', 'utf8', function (err, data) { 143 regexes = data.match(/(\/.+\/[ig]+)(?=[,\s\n])/g); 144 done(); 142 before('Read main js file', function () { 143 var code = fs.readFileSync('src/ua-parser.js', 'utf8').toString(); 144 var ast = parseJS(code, { sourceType: "script" }); 145 regexes = []; 146 traverse(ast, { 147 RegExpLiteral: (path) => { 148 regexes.push(path.node.pattern); 149 } 145 150 }); 151 152 if (regexes.length === 0) { 153 throw new Error("Regexes cannot be empty!"); 154 } 146 155 }); 147 156 … … 157 166 }); 158 167 }); 159 }) 168 });
Note:
See TracChangeset
for help on using the changeset viewer.