ua-parser-js 2.0.8 → 2.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (208) hide show
  1. package/dist/icons/color/LICENSE.md +3 -0
  2. package/dist/icons/color/browser/android-browser.svg +1 -0
  3. package/dist/icons/color/browser/avant.png +0 -0
  4. package/dist/icons/color/browser/basilisk.png +0 -0
  5. package/dist/icons/color/browser/basilisk.svg +1 -0
  6. package/dist/icons/color/browser/brave.png +0 -0
  7. package/dist/icons/color/browser/brave.svg +1 -0
  8. package/dist/icons/color/browser/chrome.png +0 -0
  9. package/dist/icons/color/browser/chrome.svg +1 -0
  10. package/dist/icons/color/browser/chromium.png +0 -0
  11. package/dist/icons/color/browser/chromium.svg +1 -0
  12. package/dist/icons/color/browser/coc-coc.png +0 -0
  13. package/dist/icons/color/browser/default.png +0 -0
  14. package/dist/icons/color/browser/default.svg +1 -0
  15. package/dist/icons/color/browser/dolphin.png +0 -0
  16. package/dist/icons/color/browser/edge.png +0 -0
  17. package/dist/icons/color/browser/edge.svg +1 -0
  18. package/dist/icons/color/browser/electron.png +0 -0
  19. package/dist/icons/color/browser/electron.svg +1 -0
  20. package/dist/icons/color/browser/falkon.png +0 -0
  21. package/dist/icons/color/browser/falkon.svg +1 -0
  22. package/dist/icons/color/browser/firefox-reality.png +0 -0
  23. package/dist/icons/color/browser/firefox-reality.svg +1 -0
  24. package/dist/icons/color/browser/firefox.png +0 -0
  25. package/dist/icons/color/browser/firefox.svg +1 -0
  26. package/dist/icons/color/browser/gsa.svg +9 -0
  27. package/dist/icons/color/browser/icecat.png +0 -0
  28. package/dist/icons/color/browser/ie.svg +6 -0
  29. package/dist/icons/color/browser/konqueror.png +0 -0
  30. package/dist/icons/color/browser/konqueror.svg +1 -0
  31. package/dist/icons/color/browser/maxthon.png +0 -0
  32. package/dist/icons/color/browser/midori.png +0 -0
  33. package/dist/icons/color/browser/midori.svg +1 -0
  34. package/dist/icons/color/browser/netsurf.png +0 -0
  35. package/dist/icons/color/browser/netsurf.svg +1 -0
  36. package/dist/icons/color/browser/opera-gx.png +0 -0
  37. package/dist/icons/color/browser/opera-gx.svg +1 -0
  38. package/dist/icons/color/browser/opera-mini.png +0 -0
  39. package/dist/icons/color/browser/opera-touch.png +0 -0
  40. package/dist/icons/color/browser/opera.png +0 -0
  41. package/dist/icons/color/browser/opera.svg +1 -0
  42. package/dist/icons/color/browser/palemoon.png +0 -0
  43. package/dist/icons/color/browser/puffin.png +0 -0
  44. package/dist/icons/color/browser/safari.png +0 -0
  45. package/dist/icons/color/browser/safari.svg +1 -0
  46. package/dist/icons/color/browser/samsung-internet.png +0 -0
  47. package/dist/icons/color/browser/samsung-internet.svg +1 -0
  48. package/dist/icons/color/browser/seamonkey.png +0 -0
  49. package/dist/icons/color/browser/silk.png +0 -0
  50. package/dist/icons/color/browser/sogou-mobile.png +0 -0
  51. package/dist/icons/color/browser/ucbrowser.png +0 -0
  52. package/dist/icons/color/browser/ucbrowser.svg +1 -0
  53. package/dist/icons/color/browser/vivaldi.png +0 -0
  54. package/dist/icons/color/browser/vivaldi.svg +1 -0
  55. package/dist/icons/color/browser/webkit.png +0 -0
  56. package/dist/icons/color/browser/webkit.svg +1 -0
  57. package/dist/icons/color/browser/yandex.png +0 -0
  58. package/dist/icons/color/os/centos.svg +1 -0
  59. package/dist/icons/mono/LICENSE.md +3 -0
  60. package/dist/icons/mono/browser/alipay.svg +1 -0
  61. package/dist/icons/mono/browser/android-browser.svg +1 -0
  62. package/dist/icons/mono/browser/avast-secure-browser.svg +1 -0
  63. package/dist/icons/mono/browser/baidu-browser.svg +1 -0
  64. package/dist/icons/mono/browser/brave.svg +1 -0
  65. package/dist/icons/mono/browser/chrome-headless.svg +1 -0
  66. package/dist/icons/mono/browser/chrome-webview.svg +1 -0
  67. package/dist/icons/mono/browser/chrome.svg +1 -0
  68. package/dist/icons/mono/browser/chromium.svg +1 -0
  69. package/dist/icons/mono/browser/duckduckgo.svg +1 -0
  70. package/dist/icons/mono/browser/edge.svg +1 -0
  71. package/dist/icons/mono/browser/electron.svg +1 -0
  72. package/dist/icons/mono/browser/facebook.svg +1 -0
  73. package/dist/icons/mono/browser/firefox-focus.svg +1 -0
  74. package/dist/icons/mono/browser/firefox-reality.svg +1 -0
  75. package/dist/icons/mono/browser/firefox.svg +1 -0
  76. package/dist/icons/mono/browser/gsa.svg +1 -0
  77. package/dist/icons/mono/browser/huawei-browser.svg +1 -0
  78. package/dist/icons/mono/browser/icecat.svg +1 -0
  79. package/dist/icons/mono/browser/ie.svg +1 -0
  80. package/dist/icons/mono/browser/instagram.svg +1 -0
  81. package/dist/icons/mono/browser/jasmine.svg +1 -0
  82. package/dist/icons/mono/browser/kakaotalk.svg +1 -0
  83. package/dist/icons/mono/browser/klarna.svg +1 -0
  84. package/dist/icons/mono/browser/line.svg +1 -0
  85. package/dist/icons/mono/browser/linkedin.svg +1 -0
  86. package/dist/icons/mono/browser/miui-browser.svg +1 -0
  87. package/dist/icons/mono/browser/mobile-chrome.svg +1 -0
  88. package/dist/icons/mono/browser/mobile-firefox.svg +1 -0
  89. package/dist/icons/mono/browser/mobile-safari.svg +1 -0
  90. package/dist/icons/mono/browser/mozilla.svg +1 -0
  91. package/dist/icons/mono/browser/naver.svg +1 -0
  92. package/dist/icons/mono/browser/nokia-browser.svg +1 -0
  93. package/dist/icons/mono/browser/oculus-browser.svg +1 -0
  94. package/dist/icons/mono/browser/opera-coast.svg +1 -0
  95. package/dist/icons/mono/browser/opera-gx.svg +1 -0
  96. package/dist/icons/mono/browser/opera-mini.svg +1 -0
  97. package/dist/icons/mono/browser/opera-mobi.svg +1 -0
  98. package/dist/icons/mono/browser/opera-tablet.svg +1 -0
  99. package/dist/icons/mono/browser/opera-touch.svg +1 -0
  100. package/dist/icons/mono/browser/opera.svg +1 -0
  101. package/dist/icons/mono/browser/qqbrowser.svg +1 -0
  102. package/dist/icons/mono/browser/qqbrowserlite.svg +1 -0
  103. package/dist/icons/mono/browser/safari.svg +1 -0
  104. package/dist/icons/mono/browser/sailfish-browser.svg +1 -0
  105. package/dist/icons/mono/browser/samsung-internet.svg +1 -0
  106. package/dist/icons/mono/browser/smart-lenovo-browser.svg +1 -0
  107. package/dist/icons/mono/browser/snapchat.svg +1 -0
  108. package/dist/icons/mono/browser/sogou-explorer.svg +1 -0
  109. package/dist/icons/mono/browser/sogou-mobile.svg +1 -0
  110. package/dist/icons/mono/browser/tesla.svg +1 -0
  111. package/dist/icons/mono/browser/tiktok.svg +1 -0
  112. package/dist/icons/mono/browser/twitter.svg +1 -0
  113. package/dist/icons/mono/browser/vivaldi.svg +1 -0
  114. package/dist/icons/mono/browser/vivo-browser.svg +1 -0
  115. package/dist/icons/mono/browser/wechat.svg +1 -0
  116. package/dist/icons/mono/browser/weibo.svg +1 -0
  117. package/dist/icons/mono/browser/yandex.svg +1 -0
  118. package/dist/icons/mono/device/acer.svg +1 -0
  119. package/dist/icons/mono/device/amazon.svg +1 -0
  120. package/dist/icons/mono/device/apple.svg +1 -0
  121. package/dist/icons/mono/device/asus.svg +1 -0
  122. package/dist/icons/mono/device/att.svg +1 -0
  123. package/dist/icons/mono/device/blackberry.svg +1 -0
  124. package/dist/icons/mono/device/dell.svg +1 -0
  125. package/dist/icons/mono/device/facebook.svg +1 -0
  126. package/dist/icons/mono/device/fairphone.svg +1 -0
  127. package/dist/icons/mono/device/google.svg +1 -0
  128. package/dist/icons/mono/device/hp.svg +1 -0
  129. package/dist/icons/mono/device/huawei.svg +1 -0
  130. package/dist/icons/mono/device/lenovo.svg +1 -0
  131. package/dist/icons/mono/device/lg.svg +1 -0
  132. package/dist/icons/mono/device/meizu.svg +1 -0
  133. package/dist/icons/mono/device/microsoft.svg +1 -0
  134. package/dist/icons/mono/device/motorola.svg +1 -0
  135. package/dist/icons/mono/device/nintendo.svg +1 -0
  136. package/dist/icons/mono/device/nokia.svg +1 -0
  137. package/dist/icons/mono/device/nvidia.svg +1 -0
  138. package/dist/icons/mono/device/oneplus.svg +1 -0
  139. package/dist/icons/mono/device/oppo.svg +1 -0
  140. package/dist/icons/mono/device/panasonic.svg +1 -0
  141. package/dist/icons/mono/device/roku.svg +1 -0
  142. package/dist/icons/mono/device/samsung.svg +1 -0
  143. package/dist/icons/mono/device/siemens.svg +1 -0
  144. package/dist/icons/mono/device/sony.svg +1 -0
  145. package/dist/icons/mono/device/tesla.svg +1 -0
  146. package/dist/icons/mono/device/vivo.svg +1 -0
  147. package/dist/icons/mono/device/vodafone.svg +1 -0
  148. package/dist/icons/mono/device/xiaomi.svg +1 -0
  149. package/dist/icons/mono/device/zebra.svg +1 -0
  150. package/dist/icons/mono/os/android.svg +1 -0
  151. package/dist/icons/mono/os/arch.svg +1 -0
  152. package/dist/icons/mono/os/blackberry.svg +1 -0
  153. package/dist/icons/mono/os/centos.svg +1 -0
  154. package/dist/icons/mono/os/chrome-os.svg +1 -0
  155. package/dist/icons/mono/os/chromecast.svg +1 -0
  156. package/dist/icons/mono/os/debian.svg +1 -0
  157. package/dist/icons/mono/os/deepin.svg +1 -0
  158. package/dist/icons/mono/os/elementary-os.svg +1 -0
  159. package/dist/icons/mono/os/fedora.svg +1 -0
  160. package/dist/icons/mono/os/firefox.svg +1 -0
  161. package/dist/icons/mono/os/freebsd.svg +1 -0
  162. package/dist/icons/mono/os/gentoo.svg +1 -0
  163. package/dist/icons/mono/os/gnu.svg +1 -0
  164. package/dist/icons/mono/os/harmonyos.svg +1 -0
  165. package/dist/icons/mono/os/ios.svg +1 -0
  166. package/dist/icons/mono/os/kaios.svg +1 -0
  167. package/dist/icons/mono/os/linux.svg +1 -0
  168. package/dist/icons/mono/os/macos.svg +1 -0
  169. package/dist/icons/mono/os/manjaro.svg +1 -0
  170. package/dist/icons/mono/os/mint.svg +1 -0
  171. package/dist/icons/mono/os/netbsd.svg +1 -0
  172. package/dist/icons/mono/os/nintendo.svg +1 -0
  173. package/dist/icons/mono/os/openbsd.svg +1 -0
  174. package/dist/icons/mono/os/playstation.svg +1 -0
  175. package/dist/icons/mono/os/raspbian.svg +1 -0
  176. package/dist/icons/mono/os/redhat.svg +1 -0
  177. package/dist/icons/mono/os/sailfish.svg +1 -0
  178. package/dist/icons/mono/os/slackware.svg +1 -0
  179. package/dist/icons/mono/os/suse.svg +1 -0
  180. package/dist/icons/mono/os/ubuntu.svg +1 -0
  181. package/dist/icons/mono/os/windows.svg +1 -0
  182. package/dist/icons/mono/os/xbox.svg +1 -0
  183. package/dist/ua-parser.min.js +3 -3
  184. package/dist/ua-parser.min.mjs +3 -3
  185. package/dist/ua-parser.pack.js +3 -3
  186. package/dist/ua-parser.pack.mjs +3 -3
  187. package/package.json +2 -1
  188. package/src/bot-detection/bot-detection.d.ts +1 -1
  189. package/src/bot-detection/bot-detection.js +9 -1
  190. package/src/bot-detection/bot-detection.mjs +9 -1
  191. package/src/browser-detection/browser-detection.d.ts +1 -1
  192. package/src/browser-detection/browser-detection.js +1 -1
  193. package/src/browser-detection/browser-detection.mjs +1 -1
  194. package/src/device-detection/device-detection.d.ts +1 -1
  195. package/src/device-detection/device-detection.js +1 -1
  196. package/src/device-detection/device-detection.mjs +1 -1
  197. package/src/enums/ua-parser-enums.d.ts +13 -2
  198. package/src/enums/ua-parser-enums.js +13 -2
  199. package/src/enums/ua-parser-enums.mjs +13 -2
  200. package/src/extensions/ua-parser-extensions.d.ts +1 -1
  201. package/src/extensions/ua-parser-extensions.js +8 -7
  202. package/src/extensions/ua-parser-extensions.mjs +8 -7
  203. package/src/helpers/ua-parser-helpers.d.ts +1 -1
  204. package/src/helpers/ua-parser-helpers.js +1 -1
  205. package/src/helpers/ua-parser-helpers.mjs +1 -1
  206. package/src/main/ua-parser.d.ts +1 -1
  207. package/src/main/ua-parser.js +18 -11
  208. package/src/main/ua-parser.mjs +18 -11
@@ -1,4 +1,4 @@
1
- /* UAParser.js v2.0.8
2
- Copyright © 2012-2025 Faisal Salman <f@faisalman.com>
1
+ /* UAParser.js v2.0.9
2
+ Copyright © 2012-2026 Faisal Salman <f@faisalman.com>
3
3
  AGPLv3 License */
4
- function B(i){for(var e={},o=0;o<i.length;o++)e[i[o].toUpperCase()]=i[o];return e}function H(i){return Si(i)?z(/[^\d\.]/g,i).split(".")[0]:void 0}function A(i,e){if(i&&e)for(var o,t,r,a,s,n=0;n<e.length&&!a;){for(var w=e[n],d=e[n+1],b=o=0;b<w.length&&!a&&w[b];)if(a=w[b++].exec(i))for(t=0;t<d.length;t++)s=a[++o],typeof(r=d[t])===l.OBJECT&&0<r.length?2===r.length?typeof r[1]==l.FUNCTION?this[r[0]]=r[1].call(this,s):this[r[0]]=r[1]:3<=r.length&&(typeof r[1]!==l.FUNCTION||r[1].exec&&r[1].test?3==r.length?this[r[0]]=s?s.replace(r[1],r[2]):void 0:4==r.length?this[r[0]]=s?r[3].call(this,s.replace(r[1],r[2])):void 0:4<r.length&&(this[r[0]]=s?r[3].apply(this,[s.replace(r[1],r[2])].concat(r.slice(4))):void 0):3<r.length?this[r[0]]=s?r[1].apply(this,r.slice(2)):void 0:this[r[0]]=s?r[1].call(this,s,r[2]):void 0):this[r]=s||void 0;n+=2}}function c(i,e){for(var o in e)if(typeof e[o]===l.OBJECT&&0<e[o].length){for(var t=0;t<e[o].length;t++)if(Ei(e[o][t],i))return"?"===o?void 0:o}else if(Ei(e[o],i))return"?"===o?void 0:o;return e.hasOwnProperty("*")?e["*"]:i}function M(e,i){var o=Di.init[i],t=Di.isIgnore[i]||0,r=Di.isIgnoreRgx[i]||0,a=Di.toString[i]||0;function s(){U.call(this,o)}return s.prototype.getItem=function(){return e},s.prototype.withClientHints=function(){return _?_.getHighEntropyValues(oi).then(function(i){return e.setCH(new Fi(i,!1)).parseCH().get()}):e.parseCH().get()},s.prototype.withFeatureCheck=function(){return e.detectFeature().get()},i!=f&&(s.prototype.is=function(i){var e,o=!1;for(e in this)if(this.hasOwnProperty(e)&&!Ei(t,e)&&q(r?z(r,this[e]):this[e])==q(r?z(r,i):i)){if(o=!0,i!=l.UNDEFINED)break}else if(i==l.UNDEFINED&&o){o=!o;break}return o},s.prototype.toString=function(){var i,e=b;for(i in a)typeof this[a[i]]!==l.UNDEFINED&&(e+=(e?" ":b)+this[a[i]]);return e||l.UNDEFINED}),s.prototype.then=function(i){function e(){for(var i in o)o.hasOwnProperty(i)&&(this[i]=o[i])}var o=this,t=(e.prototype={is:s.prototype.is,toString:s.prototype.toString,withClientHints:s.prototype.withClientHints,withFeatureCheck:s.prototype.withFeatureCheck},new e);return i(t),t},new s}var V="user-agent",b="",l={FUNCTION:"function",OBJECT:"object",STRING:"string",UNDEFINED:"undefined"},h="browser",p="cpu",u="device",m="engine",g="os",f="result",v="name",k="type",x="vendor",y="version",C="architecture",E="major",N="model",j="console",S="mobile",o="tablet",i="smarttv",e="wearable",P="xr",R="embedded",t="inapp",G="brands",T="formFactors",L="fullVersionList",O="platform",W="platformVersion",$="bitness",r="sec-ch-ua",J=r+"-full-version-list",X=r+"-arch",Y=r+"-"+$,Z=r+"-form-factors",K=r+"-"+S,Q=r+"-"+N,ii=r+"-"+O,ei=ii+"-version",oi=[G,L,S,N,O,W,C,T,$],ti="Amazon",a="Apple",ri="ASUS",ai="BlackBerry",s="Google",si="Huawei",ni="Lenovo",wi="Honor",di="LG",bi="Microsoft",li="Motorola",ci="OnePlus",hi="OPPO",pi="Samsung",ui="Sony",mi="Xiaomi",gi="Zebra",fi="Chromium",n="Chromecast",vi="Edge",ki="Firefox",w="Opera",xi="Facebook",d="Mobile ",yi=" Browser",Ci="Windows",I=typeof window!==l.UNDEFINED&&window.navigator?window.navigator:void 0,_=I&&I.userAgentData?I.userAgentData:void 0,Ei=function(i,e){if(typeof i===l.OBJECT&&0<i.length){for(var o in i)if(q(e)==q(i[o]))return!0;return!1}return!!Si(i)&&q(e)==q(i)},Ni=function(i,e){for(var o in i)return/^(browser|cpu|device|engine|os)$/.test(o)||!!e&&Ni(i[o])},Si=function(i){return typeof i===l.STRING},Ti=function(i){if(i){for(var e,o=[],t=z(/\\?\"/g,i).split(","),r=0;r<t.length;r++)-1<t[r].indexOf(";")?(e=Ii(t[r]).split(";v="),o[r]={brand:e[0],version:e[1]}):o[r]=Ii(t[r]);return o}},q=function(i){return Si(i)?i.toLowerCase():i},U=function(i){for(var e in i)i.hasOwnProperty(e)&&(typeof(e=i[e])==l.OBJECT&&2==e.length?this[e[0]]=e[1]:this[e]=void 0);return this},z=function(i,e){return Si(e)?e.replace(i,b):e},Oi=function(i){return z(/\\?\"/g,i)},Ii=function(i,e){return i=z(/^\s\s*/,String(i)),typeof e===l.UNDEFINED?i:i.substring(0,e)},_i={ME:"4.90","NT 3.51":"3.51","NT 4.0":"4.0",2e3:["5.0","5.01"],XP:["5.1","5.2"],Vista:"6.0",7:"6.1",8:"6.2",8.1:"6.3",10:["6.4","10.0"],NT:""},qi={embedded:"Automotive",mobile:"Mobile",tablet:["Tablet","EInk"],smarttv:"TV",wearable:"Watch",xr:["VR","XR"],"?":["Desktop","Unknown"],"*":void 0},Ui={Chrome:"Google Chrome",Edge:"Microsoft Edge","Edge WebView2":"Microsoft Edge WebView2","Chrome WebView":"Android WebView","Chrome Headless":"HeadlessChrome","Huawei Browser":"HuaweiBrowser","MIUI Browser":"Miui Browser","Opera Mobi":"OperaMobile",Yandex:"YaBrowser"},zi={browser:[[/\b(?:crmo|crios)\/([\w\.]+)/i],[y,[v,d+"Chrome"]],[/webview.+edge\/([\w\.]+)/i],[y,[v,vi+" WebView"]],[/edg(?:e|ios|a)?\/([\w\.]+)/i],[y,[v,"Edge"]],[/(opera mini)\/([-\w\.]+)/i,/(opera [mobiletab]{3,6})\b.+version\/([-\w\.]+)/i,/(opera)(?:.+version\/|[\/ ]+)([\w\.]+)/i],[v,y],[/opios[\/ ]+([\w\.]+)/i],[y,[v,w+" Mini"]],[/\bop(?:rg)?x\/([\w\.]+)/i],[y,[v,w+" GX"]],[/\bopr\/([\w\.]+)/i],[y,[v,w]],[/\bb[ai]*d(?:uhd|[ub]*[aekoprswx]{5,6})[\/ ]?([\w\.]+)/i],[y,[v,"Baidu"]],[/\b(?:mxbrowser|mxios|myie2)\/?([-\w\.]*)\b/i],[y,[v,"Maxthon"]],[/(kindle)\/([\w\.]+)/i,/(lunascape|maxthon|netfront|jasmine|blazer|sleipnir)[\/ ]?([\w\.]*)/i,/(avant|iemobile|slim(?:browser|boat|jet))[\/ ]?([\d\.]*)/i,/(?:ms|\()(ie) ([\w\.]+)/i,/(atlas|flock|rockmelt|midori|epiphany|silk|skyfire|bolt|iron|vivaldi|iridium|phantomjs|bowser|qupzilla|falkon|rekonq|puffin|whale(?!.+naver)|qqbrowserlite|duckduckgo|klar|helio|(?=comodo_)?dragon|otter|dooble|(?:hi|lg |ovi|qute)browser|palemoon)\/v?([-\w\.]+)/i,/(brave)(?: chrome)?\/([\d\.]+)/i,/(heytap|ovi|115|surf|qwant)browser\/([\d\.]+)/i,/(qwant)(?:ios|mobile)\/([\d\.]+)/i,/(ecosia|weibo)(?:__| \w+@)([\d\.]+)/i],[v,y],[/quark(?:pc)?\/([-\w\.]+)/i],[y,[v,"Quark"]],[/\bddg\/([\w\.]+)/i],[y,[v,"DuckDuckGo"]],[/(?:\buc? ?browser|(?:juc.+)ucweb)[\/ ]?([\w\.]+)/i],[y,[v,"UCBrowser"]],[/microm.+\bqbcore\/([\w\.]+)/i,/\bqbcore\/([\w\.]+).+microm/i,/micromessenger\/([\w\.]+)/i],[y,[v,"WeChat"]],[/konqueror\/([\w\.]+)/i],[y,[v,"Konqueror"]],[/trident.+rv[: ]([\w\.]{1,9})\b.+like gecko/i],[y,[v,"IE"]],[/ya(?:search)?browser\/([\w\.]+)/i],[y,[v,"Yandex"]],[/slbrowser\/([\w\.]+)/i],[y,[v,"Smart "+ni+yi]],[/(avast|avg)\/([\w\.]+)/i],[[v,/(.+)/,"$1 Secure"+yi],y],[/\bfocus\/([\w\.]+)/i],[y,[v,ki+" Focus"]],[/ mms\/([\w\.]+)$/i],[y,[v,w+" Neon"]],[/ opt\/([\w\.]+)$/i],[y,[v,w+" Touch"]],[/coc_coc\w+\/([\w\.]+)/i],[y,[v,"Coc Coc"]],[/dolfin\/([\w\.]+)/i],[y,[v,"Dolphin"]],[/coast\/([\w\.]+)/i],[y,[v,w+" Coast"]],[/miuibrowser\/([\w\.]+)/i],[y,[v,"MIUI"+yi]],[/fxios\/([\w\.-]+)/i],[y,[v,d+ki]],[/\bqihoobrowser\/?([\w\.]*)/i],[y,[v,"360"]],[/\b(qq)\/([\w\.]+)/i],[[v,/(.+)/,"$1Browser"],y],[/(oculus|sailfish|huawei|vivo|pico)browser\/([\w\.]+)/i],[[v,/(.+)/,"$1"+yi],y],[/samsungbrowser\/([\w\.]+)/i],[y,[v,pi+" Internet"]],[/metasr[\/ ]?([\d\.]+)/i],[y,[v,"Sogou Explorer"]],[/(sogou)mo\w+\/([\d\.]+)/i],[[v,"Sogou Mobile"],y],[/(electron)\/([\w\.]+) safari/i,/(tesla)(?: qtcarbrowser|\/(20\d\d\.[-\w\.]+))/i,/m?(qqbrowser|2345(?=browser|chrome|explorer))\w*[\/ ]?v?([\w\.]+)/i],[v,y],[/(lbbrowser|rekonq|steam(?= (clie|tenf|gameo)))/i],[v],[/ome\/([\w\.]+) \w* ?(iron) saf/i,/ome\/([\w\.]+).+qihu (360)[es]e/i],[y,v],[/((?:fban\/fbios|fb_iab\/fb4a)(?!.+fbav)|;fbav\/([\w\.]+);)/i],[[v,xi],y,[k,t]],[/(kakao(?:talk|story))[\/ ]([\w\.]+)/i,/(naver)\(.*?(\d+\.[\w\.]+).*\)/i,/(daum)apps[\/ ]([\w\.]+)/i,/safari (line)\/([\w\.]+)/i,/\b(line)\/([\w\.]+)\/iab/i,/(alipay)client\/([\w\.]+)/i,/(twitter)(?:and| f.+e\/([\w\.]+))/i,/(bing)(?:web|sapphire)\/([\w\.]+)/i,/(instagram|snapchat|klarna)[\/ ]([-\w\.]+)/i],[v,y,[k,t]],[/\bgsa\/([\w\.]+) .*safari\//i],[y,[v,"GSA"],[k,t]],[/(?:musical_ly|trill)(?:.+app_?version\/|_)([\w\.]+)/i],[y,[v,"TikTok"],[k,t]],[/\[(linkedin)app\]/i],[v,[k,t]],[/(zalo(?:app)?)[\/\sa-z]*([\w\.-]+)/i],[[v,/(.+)/,"Zalo"],y,[k,t]],[/(chromium)[\/ ]([-\w\.]+)/i],[v,y],[/headlesschrome(?:\/([\w\.]+)| )/i],[y,[v,"Chrome Headless"]],[/wv\).+chrome\/([\w\.]+).+edgw\//i],[y,[v,vi+" WebView2"]],[/ wv\).+(chrome)\/([\w\.]+)/i],[[v,"Chrome WebView"],y],[/droid.+ version\/([\w\.]+)\b.+(?:mobile safari|safari)/i],[y,[v,"Android"+yi]],[/chrome\/([\w\.]+) mobile/i],[y,[v,d+"Chrome"]],[/(chrome|omniweb|arora|[tizenoka]{5} ?browser)\/v?([\w\.]+)/i],[v,y],[/version\/([\w\.\,]+) .*mobile(?:\/\w+ | ?)safari/i],[y,[v,d+"Safari"]],[/iphone .*mobile(?:\/\w+ | ?)safari/i],[[v,d+"Safari"]],[/version\/([\w\.\,]+) .*(safari)/i],[y,v],[/webkit.+?(mobile ?safari|safari)(\/[\w\.]+)/i],[v,[y,"1"]],[/(webkit|khtml)\/([\w\.]+)/i],[v,y],[/(?:mobile|tablet);.*(firefox)\/([\w\.-]+)/i],[[v,d+ki],y],[/(navigator|netscape\d?)\/([-\w\.]+)/i],[[v,"Netscape"],y],[/(wolvic|librewolf)\/([\w\.]+)/i],[v,y],[/mobile vr; rv:([\w\.]+)\).+firefox/i],[y,[v,ki+" Reality"]],[/ekiohf.+(flow)\/([\w\.]+)/i,/(swiftfox)/i,/(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror)[\/ ]?([\w\.\+]+)/i,/(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|basilisk|waterfox)\/([-\w\.]+)$/i,/(firefox)\/([\w\.]+)/i,/(mozilla)\/([\w\.]+(?= .+rv\:.+gecko\/\d+)|[0-4][\w\.]+(?!.+compatible))/i,/(amaya|dillo|doris|icab|ladybird|lynx|mosaic|netsurf|obigo|polaris|w3m|(?:go|ice|up)[\. ]?browser)[-\/ ]?v?([\w\.]+)/i,/\b(links) \(([\w\.]+)/i],[v,[y,/_/g,"."]],[/(cobalt)\/([\w\.]+)/i],[v,[y,/[^\d\.]+./,b]]],cpu:[[/\b((amd|x|x86[-_]?|wow|win)64)\b/i],[[C,"amd64"]],[/(ia32(?=;))/i,/\b((i[346]|x)86)(pc)?\b/i],[[C,"ia32"]],[/\b(aarch64|arm(v?[89]e?l?|_?64))\b/i],[[C,"arm64"]],[/\b(arm(v[67])?ht?n?[fl]p?)\b/i],[[C,"armhf"]],[/( (ce|mobile); ppc;|\/[\w\.]+arm\b)/i],[[C,"arm"]],[/ sun4\w[;\)]/i],[[C,"sparc"]],[/\b(avr32|ia64(?=;)|68k(?=\))|\barm(?=v([1-7]|[5-7]1)l?|;|eabi)|(irix|mips|sparc)(64)?\b|pa-risc)/i,/((ppc|powerpc)(64)?)( mac|;|\))/i,/(?:osf1|[freopnt]{3,4}bsd) (alpha)/i],[[C,/ower/,b,q]],[/mc680.0/i],[[C,"68k"]],[/winnt.+\[axp/i],[[C,"alpha"]]],device:[[/\b(sch-i[89]0\d|shw-m380s|sm-[ptx]\w{2,4}|gt-[pn]\d{2,4}|sgh-t8[56]9|nexus 10)/i],[N,[x,pi],[k,o]],[/\b((?:s[cgp]h|gt|sm)-(?![lr])\w+|sc[g-]?[\d]+a?|galaxy nexus)/i,/samsung[- ]((?!sm-[lr]|browser)[-\w]+)/i,/sec-(sgh\w+)/i],[N,[x,pi],[k,S]],[/(?:\/|\()(ip(?:hone|od)[\w, ]*)[\/\);]/i],[N,[x,a],[k,S]],[/\b(?:ios|apple\w+)\/.+[\(\/](ipad)/i,/\b(ipad)[\d,]*[;\] ].+(mac |i(pad)?)os/i],[N,[x,a],[k,o]],[/(macintosh);/i],[N,[x,a]],[/\b(sh-?[altvz]?\d\d[a-ekm]?)/i],[N,[x,"Sharp"],[k,S]],[/\b((?:brt|eln|hey2?|gdi|jdn)-a?[lnw]09|(?:ag[rm]3?|jdn2|kob2)-a?[lw]0[09]hn)(?: bui|\)|;)/i],[N,[x,wi],[k,o]],[/honor([-\w ]+)[;\)]/i],[N,[x,wi],[k,S]],[/\b((?:ag[rs][2356]?k?|bah[234]?|bg[2o]|bt[kv]|cmr|cpn|db[ry]2?|jdn2|got|kob2?k?|mon|pce|scm|sht?|[tw]gr|vrd)-[ad]?[lw][0125][09]b?|605hw|bg2-u03|(?:gem|fdr|m2|ple|t1)-[7a]0[1-4][lu]|t1-a2[13][lw]|mediapad[\w\. ]*(?= bui|\)))\b(?!.+d\/s)/i],[N,[x,si],[k,o]],[/(?:huawei) ?([-\w ]+)[;\)]/i,/\b(nexus 6p|\w{2,4}e?-[atu]?[ln][\dx][\dc][adnt]?)\b(?!.+d\/s)/i],[N,[x,si],[k,S]],[/oid[^\)]+; (2[\dbc]{4}(182|283|rp\w{2})[cgl]|m2105k81a?c)(?: bui|\))/i,/\b(?:xiao)?((?:red)?mi[-_ ]?pad[\w- ]*)(?: bui|\))/i],[[N,/_/g," "],[x,mi],[k,o]],[/\b; (\w+) build\/hm\1/i,/\b(hm[-_ ]?note?[_ ]?(?:\d\w)?) bui/i,/oid[^\)]+; (redmi[\-_ ]?(?:note|k)?[\w_ ]+|m?[12]\d[01]\d\w{3,6}|poco[\w ]+|(shark )?\w{3}-[ah]0|qin ?[1-3](s\+|ultra| pro)?)( bui|; wv|\))/i,/\b(mi[-_ ]?(?:a\d|one|one[_ ]plus|note|max|cc)?[_ ]?(?:\d{0,2}\w?)[_ ]?(?:plus|se|lite|pro)?( 5g|lte)?)(?: bui|\))/i,/ ([\w ]+) miui\/v?\d/i],[[N,/_/g," "],[x,mi],[k,S]],[/droid.+; (cph2[3-6]\d[13579]|((gm|hd)19|(ac|be|in|kb)20|(d[en]|eb|le|mt)21|ne22)[0-2]\d|p[g-l]\w[1m]10)\b/i,/(?:one)?(?:plus)? (a\d0\d\d)(?: b|\))/i],[N,[x,ci],[k,S]],[/; (\w+) bui.+ oppo/i,/\b(cph[12]\d{3}|p(?:af|c[al]|d\w|e[ar])[mt]\d0|x9007|a101op)\b/i],[N,[x,hi],[k,S]],[/\b(opd2(\d{3}a?))(?: bui|\))/i],[N,[x,c,{OnePlus:["203","304","403","404","413","415"],"*":hi}],[k,o]],[/(vivo (5r?|6|8l?|go|one|s|x[il]?[2-4]?)[\w\+ ]*)(?: bui|\))/i],[N,[x,"BLU"],[k,S]],[/; vivo (\w+)(?: bui|\))/i,/\b(v[12]\d{3}\w?[at])(?: bui|;)/i],[N,[x,"Vivo"],[k,S]],[/\b(rmx[1-3]\d{3})(?: bui|;|\))/i],[N,[x,"Realme"],[k,S]],[/(ideatab[-\w ]+|602lv|d-42a|a101lv|a2109a|a3500-hv|s[56]000|pb-6505[my]|tb-?x?\d{3,4}(?:f[cu]|xu|[av])|yt\d?-[jx]?\d+[lfmx])( bui|;|\)|\/)/i,/lenovo ?(b[68]0[08]0-?[hf]?|tab(?:[\w- ]+?)|tb[\w-]{6,7})( bui|;|\)|\/)/i],[N,[x,ni],[k,o]],[/lenovo[-_ ]?([-\w ]+?)(?: bui|\)|\/)/i],[N,[x,ni],[k,S]],[/\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\b[\w ]+build\//i,/\bmot(?:orola)?[- ]([\w\s]+)(\)| bui)/i,/((?:moto(?! 360)[-\w\(\) ]+|xt\d{3,4}[cgkosw\+]?[-\d]*|nexus 6)(?= bui|\)))/i],[N,[x,li],[k,S]],[/\b(mz60\d|xoom[2 ]{0,2}) build\//i],[N,[x,li],[k,o]],[/\b(?:lg)?([vl]k\-?\d{3}) bui| 3\.[-\w; ]{10}lg?-([06cv9]{3,4})/i],[N,[x,di],[k,o]],[/(lm(?:-?f100[nv]?|-[\w\.]+)(?= bui|\))|nexus [45])/i,/\blg[-e;\/ ]+(?!.*(?:browser|netcast|android tv|watch|webos))(\w+)/i,/\blg-?([\d\w]+) bui/i],[N,[x,di],[k,S]],[/(nokia) (t[12][01])/i],[x,N,[k,o]],[/(?:maemo|nokia).*(n900|lumia \d+|rm-\d+)/i,/nokia[-_ ]?(([-\w\. ]*?))( bui|\)|;|\/)/i],[[N,/_/g," "],[k,S],[x,"Nokia"]],[/(pixel (c|tablet))\b/i],[N,[x,s],[k,o]],[/droid.+;(?: google)? (g(01[13]a|020[aem]|025[jn]|1b60|1f8f|2ybb|4s1m|576d|5nz6|8hhn|8vou|a02099|c15s|d1yq|e2ae|ec77|gh2x|kv4x|p4bc|pj41|r83y|tt9q|ur25|wvk6)|pixel[\d ]*a?( pro)?( xl)?( fold)?( \(5g\))?)( bui|\))/i],[N,[x,s],[k,S]],[/(google) (pixelbook( go)?)/i],[x,N],[/droid.+; (a?\d[0-2]{2}so|[c-g]\d{4}|so[-gl]\w+|xq-\w\w\d\d)(?= bui|\).+chrome\/(?![1-6]{0,1}\d\.))/i],[N,[x,ui],[k,S]],[/sony tablet [ps]/i,/\b(?:sony)?sgp\w+(?: bui|\))/i],[[N,"Xperia Tablet"],[x,ui],[k,o]],[/(alexa)webm/i,/(kf[a-z]{2}wi|aeo(?!bc)\w\w)( bui|\))/i,/(kf[a-z]+)( bui|\)).+silk\//i],[N,[x,ti],[k,o]],[/((?:sd|kf)[0349hijorstuw]+)( bui|\)).+silk\//i],[[N,/(.+)/g,"Fire Phone $1"],[x,ti],[k,S]],[/(playbook);[-\w\),; ]+(rim)/i],[N,x,[k,o]],[/\b((?:bb[a-f]|st[hv])100-\d)/i,/(?:blackberry|\(bb10;) (\w+)/i],[N,[x,ai],[k,S]],[/(?:\b|asus_)(transfo[prime ]{4,10} \w+|eeepc|slider \w+|nexus 7|padfone|p00[cj])/i],[N,[x,ri],[k,o]],[/ (z[bes]6[027][012][km][ls]|zenfone \d\w?)\b/i],[N,[x,ri],[k,S]],[/(nexus 9)/i],[N,[x,"HTC"],[k,o]],[/(htc)[-;_ ]{1,2}([\w ]+(?=\)| bui)|\w+)/i,/(zte)[- ]([\w ]+?)(?: bui|\/|\))/i,/(alcatel|geeksphone|nexian|panasonic(?!(?:;|\.))|sony(?!-bra))[-_ ]?([-\w]*)/i],[x,[N,/_/g," "],[k,S]],[/tcl (xess p17aa)/i,/droid [\w\.]+; ((?:8[14]9[16]|9(?:0(?:48|60|8[01])|1(?:3[27]|66)|2(?:6[69]|9[56])|466))[gqswx])(_\w(\w|\w\w))?(\)| bui)/i],[N,[x,"TCL"],[k,o]],[/droid [\w\.]+; (418(?:7d|8v)|5087z|5102l|61(?:02[dh]|25[adfh]|27[ai]|56[dh]|59k|65[ah])|a509dl|t(?:43(?:0w|1[adepqu])|50(?:6d|7[adju])|6(?:09dl|10k|12b|71[efho]|76[hjk])|7(?:66[ahju]|67[hw]|7[045][bh]|71[hk]|73o|76[ho]|79w|81[hks]?|82h|90[bhsy]|99b)|810[hs]))(_\w(\w|\w\w))?(\)| bui)/i],[N,[x,"TCL"],[k,S]],[/(itel) ((\w+))/i],[[x,q],N,[k,c,{tablet:["p10001l","w7001"],"*":"mobile"}]],[/droid.+; ([ab][1-7]-?[0178a]\d\d?)/i],[N,[x,"Acer"],[k,o]],[/droid.+; (m[1-5] note) bui/i,/\bmz-([-\w]{2,})/i],[N,[x,"Meizu"],[k,S]],[/; ((?:power )?armor(?:[\w ]{0,8}))(?: bui|\))/i],[N,[x,"Ulefone"],[k,S]],[/; (energy ?\w+)(?: bui|\))/i,/; energizer ([\w ]+)(?: bui|\))/i],[N,[x,"Energizer"],[k,S]],[/; cat (b35);/i,/; (b15q?|s22 flip|s48c|s62 pro)(?: bui|\))/i],[N,[x,"Cat"],[k,S]],[/((?:new )?andromax[\w- ]+)(?: bui|\))/i],[N,[x,"Smartfren"],[k,S]],[/droid.+; (a(in)?(0(15|59|6[35])|142)p?)/i],[N,[x,"Nothing"],[k,S]],[/; (x67 5g|tikeasy \w+|ac[1789]\d\w+)( b|\))/i,/archos ?(5|gamepad2?|([\w ]*[t1789]|hello) ?\d+[\w ]*)( b|\))/i],[N,[x,"Archos"],[k,o]],[/archos ([\w ]+)( b|\))/i,/; (ac[3-6]\d\w{2,8})( b|\))/i],[N,[x,"Archos"],[k,S]],[/; (n159v)/i],[N,[x,"HMD"],[k,S]],[/(imo) (tab \w+)/i,/(infinix|tecno) (x1101b?|p904|dp(7c|8d|10a)( pro)?|p70[1-3]a?|p904|t1101)/i],[x,N,[k,o]],[/(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus(?! zenw)|dell|jolla|meizu|motorola|polytron|tecno|micromax|advan)[-_ ]?([-\w]*)/i,/; (blu|hmd|imo|infinix|lava|oneplus|tcl|wiko)[_ ]([\w\+ ]+?)(?: bui|\)|; r)/i,/(hp) ([\w ]+\w)/i,/(microsoft); (lumia[\w ]+)/i,/(oppo) ?([\w ]+) bui/i,/(hisense) ([ehv][\w ]+)\)/i,/droid[^;]+; (philips)[_ ]([sv-x][\d]{3,4}[xz]?)/i],[x,N,[k,S]],[/(kobo)\s(ereader|touch)/i,/(hp).+(touchpad(?!.+tablet)|tablet)/i,/(kindle)\/([\w\.]+)/i],[x,N,[k,o]],[/(surface duo)/i],[N,[x,bi],[k,o]],[/droid [\d\.]+; (fp\du?)(?: b|\))/i],[N,[x,"Fairphone"],[k,S]],[/((?:tegranote|shield t(?!.+d tv))[\w- ]*?)(?: b|\))/i],[N,[x,"Nvidia"],[k,o]],[/(sprint) (\w+)/i],[x,N,[k,S]],[/(kin\.[onetw]{3})/i],[[N,/\./g," "],[x,bi],[k,S]],[/droid.+; ([c6]+|et5[16]|mc[239][23]x?|vc8[03]x?)\)/i],[N,[x,gi],[k,o]],[/droid.+; (ec30|ps20|tc[2-8]\d[kx])\)/i],[N,[x,gi],[k,S]],[/(philips)[\w ]+tv/i,/smart-tv.+(samsung)/i],[x,[k,i]],[/hbbtv.+maple;(\d+)/i],[[N,/^/,"SmartTV"],[x,pi],[k,i]],[/(vizio)(?: |.+model\/)(\w+-\w+)/i,/tcast.+(lg)e?. ([-\w]+)/i],[x,N,[k,i]],[/(nux; netcast.+smarttv|lg (netcast\.tv-201\d|android tv))/i],[[x,di],[k,i]],[/(apple) ?tv/i],[x,[N,a+" TV"],[k,i]],[/crkey.*devicetype\/chromecast/i],[[N,n+" Third Generation"],[x,s],[k,i]],[/crkey.*devicetype\/([^/]*)/i],[[N,/^/,"Chromecast "],[x,s],[k,i]],[/fuchsia.*crkey/i],[[N,n+" Nest Hub"],[x,s],[k,i]],[/crkey/i],[[N,n],[x,s],[k,i]],[/(portaltv)/i],[N,[x,xi],[k,i]],[/droid.+aft(\w+)( bui|\))/i],[N,[x,ti],[k,i]],[/(shield \w+ tv)/i],[N,[x,"Nvidia"],[k,i]],[/\(dtv[\);].+(aquos)/i,/(aquos-tv[\w ]+)\)/i],[N,[x,"Sharp"],[k,i]],[/(bravia[\w ]+)( bui|\))/i],[N,[x,ui],[k,i]],[/(mi(tv|box)-?\w+) bui/i],[N,[x,mi],[k,i]],[/Hbbtv.*(technisat) (.*);/i],[x,N,[k,i]],[/\b(roku)[\dx]*[\)\/]((?:dvp-)?[\d\.]*)/i,/hbbtv\/\d+\.\d+\.\d+ +\([\w\+ ]*; *([\w\d][^;]*);([^;]*)/i],[[x,/.+\/(\w+)/,"$1",c,{LG:"lge"}],[N,Ii],[k,i]],[/(playstation \w+)/i],[N,[x,ui],[k,j]],[/\b(xbox(?: one)?(?!; xbox))[\); ]/i],[N,[x,bi],[k,j]],[/(ouya)/i,/(nintendo) (\w+)/i,/(retroid) (pocket ([^\)]+))/i,/(valve).+(steam deck)/i,/droid.+; ((shield|rgcube|gr0006))( bui|\))/i],[[x,c,{Nvidia:"Shield",Anbernic:"RGCUBE",Logitech:"GR0006"}],N,[k,j]],[/\b(sm-[lr]\d\d[0156][fnuw]?s?|gear live)\b/i],[N,[x,pi],[k,e]],[/((pebble))app/i,/(asus|google|lg|oppo|xiaomi) ((pixel |zen)?watch[\w ]*)( bui|\))/i],[x,N,[k,e]],[/(ow(?:19|20)?we?[1-3]{1,3})/i],[N,[x,hi],[k,e]],[/(watch)(?: ?os[,\/]|\d,\d\/)[\d\.]+/i],[N,[x,a],[k,e]],[/(opwwe\d{3})/i],[N,[x,ci],[k,e]],[/(moto 360)/i],[N,[x,li],[k,e]],[/(smartwatch 3)/i],[N,[x,ui],[k,e]],[/(g watch r)/i],[N,[x,di],[k,e]],[/droid.+; (wt63?0{2,3})\)/i],[N,[x,gi],[k,e]],[/droid.+; (glass) \d/i],[N,[x,s],[k,P]],[/(pico) ([\w ]+) os\d/i],[x,N,[k,P]],[/(quest( \d| pro)?s?).+vr/i],[N,[x,xi],[k,P]],[/mobile vr; rv.+firefox/i],[[k,P]],[/(tesla)(?: qtcarbrowser|\/[-\w\.]+)/i],[x,[k,R]],[/(aeobc)\b/i],[N,[x,ti],[k,R]],[/(homepod).+mac os/i],[N,[x,a],[k,R]],[/windows iot/i],[[k,R]],[/droid.+; ([\w- ]+) (4k|android|smart|google)[- ]?tv/i],[N,[k,i]],[/\b((4k|android|smart|opera)[- ]?tv|tv; rv:|large screen[\w ]+safari)\b/i],[[k,i]],[/droid .+?; ([^;]+?)(?: bui|; wv\)|\) applew|; hmsc).+?(mobile|vr|\d) safari/i],[N,[k,c,{mobile:"Mobile",xr:"VR","*":o}]],[/\b((tablet|tab)[;\/]|focus\/\d(?!.+mobile))/i],[[k,o]],[/(phone|mobile(?:[;\/]| [ \w\/\.]*safari)|pda(?=.+windows ce))/i],[[k,S]],[/droid .+?; ([\w\. -]+)( bui|\))/i],[N,[x,"Generic"]]],engine:[[/windows.+ edge\/([\w\.]+)/i],[y,[v,vi+"HTML"]],[/(arkweb)\/([\w\.]+)/i],[v,y],[/webkit\/537\.36.+chrome\/(?!27)([\w\.]+)/i],[y,[v,"Blink"]],[/(presto)\/([\w\.]+)/i,/(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna|servo)\/([\w\.]+)/i,/ekioh(flow)\/([\w\.]+)/i,/(khtml|tasman|links|dillo)[\/ ]\(?([\w\.]+)/i,/(icab)[\/ ]([23]\.[\d\.]+)/i,/\b(libweb)/i],[v,y],[/ladybird\//i],[[v,"LibWeb"]],[/rv\:([\w\.]{1,9})\b.+(gecko)/i],[y,v]],os:[[/(windows nt) (6\.[23]); arm/i],[[v,/N/,"R"],[y,c,_i]],[/(windows (?:phone|mobile|iot))(?: os)?[\/ ]?([\d\.]*( se)?)/i,/(windows)[\/ ](1[01]|2000|3\.1|7|8(\.1)?|9[58]|me|server 20\d\d( r2)?|vista|xp)/i],[v,y],[/windows nt ?([\d\.\)]*)(?!.+xbox)/i,/\bwin(?=3| ?9|n)(?:nt| 9x )?([\d\.;]*)/i],[[y,/(;|\))/g,"",c,_i],[v,Ci]],[/(windows ce)\/?([\d\.]*)/i],[v,y],[/[adehimnop]{4,7}\b(?:.*os ([\w]+) like mac|; opera)/i,/(?:ios;fbsv|ios(?=.+ip(?:ad|hone)|.+apple ?tv)|ip(?:ad|hone)(?: |.+i(?:pad)?)os|apple ?tv.+ios)[\/ ]([\w\.]+)/i,/\btvos ?([\w\.]+)/i,/cfnetwork\/.+darwin/i],[[y,/_/g,"."],[v,"iOS"]],[/(mac os x) ?([\w\. ]*)/i,/(macintosh|mac_powerpc\b)(?!.+(haiku|morphos))/i],[[v,"macOS"],[y,/_/g,"."]],[/android ([\d\.]+).*crkey/i],[y,[v,n+" Android"]],[/fuchsia.*crkey\/([\d\.]+)/i],[y,[v,n+" Fuchsia"]],[/crkey\/([\d\.]+).*devicetype\/smartspeaker/i],[y,[v,n+" SmartSpeaker"]],[/linux.*crkey\/([\d\.]+)/i],[y,[v,n+" Linux"]],[/crkey\/([\d\.]+)/i],[y,[v,n]],[/droid ([\w\.]+)\b.+(android[- ]x86)/i],[y,v],[/(ubuntu) ([\w\.]+) like android/i],[[v,/(.+)/,"$1 Touch"],y],[/(harmonyos)[\/ ]?([\d\.]*)/i,/(android|bada|blackberry|kaios|maemo|meego|openharmony|qnx|rim tablet os|sailfish|series40|symbian|tizen)\w*[-\/\.; ]?([\d\.]*)/i],[v,y],[/\(bb(10);/i],[y,[v,ai]],[/(?:symbian ?os|symbos|s60(?=;)|series ?60)[-\/ ]?([\w\.]*)/i],[y,[v,"Symbian"]],[/mozilla\/[\d\.]+ \((?:mobile[;\w ]*|tablet|tv|[^\)]*(?:viera|lg(?:l25|-d300)|alcatel ?o.+|y300-f1)); rv:([\w\.]+)\).+gecko\//i],[y,[v,ki+" OS"]],[/\b(?:hp)?wos(?:browser)?\/([\w\.]+)/i,/webos(?:[ \/]?|\.tv-20(?=2[2-9]))(\d[\d\.]*)/i],[y,[v,"webOS"]],[/web0s;.+?(?:chr[o0]me|safari)\/(\d+)/i],[[y,c,{25:"120",24:"108",23:"94",22:"87",6:"79",5:"68",4:"53",3:"38",2:"538",1:"537","*":"TV"}],[v,"webOS"]],[/watch(?: ?os[,\/]|\d,\d\/)([\d\.]+)/i],[y,[v,"watchOS"]],[/(cros) [\w]+(?:\)| ([\w\.]+)\b)/i],[[v,"Chrome OS"],y],[/(netrange)mmh/i,/(nettv)\/(\d+\.[\w\.]+)/i,/(nintendo|playstation) (\w+)/i,/(xbox); +xbox ([^\);]+)/i,/(pico) .+os([\w\.]+)/i,/\b(joli|palm)\b ?(?:os)?\/?([\w\.]*)/i,/linux.+(mint)[\/\(\) ]?([\w\.]*)/i,/(mageia|vectorlinux|fuchsia|arcaos|arch(?= ?linux))[;l ]([\d\.]*)/i,/([kxln]?ubuntu|debian|suse|opensuse|gentoo|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire|knoppix)(?: gnu[\/ ]linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\/ ]?(?!chrom|package)([-\w\.]*)/i,/((?:open)?solaris)[-\/ ]?([\w\.]*)/i,/\b(aix)[; ]([1-9\.]{0,4})/i,/(hurd|linux|morphos)(?: (?:arm|x86|ppc)\w*| ?)([\w\.]*)/i,/(gnu) ?([\w\.]*)/i,/\b([-frentopcghs]{0,5}bsd|dragonfly)[\/ ]?(?!amd|[ix346]{1,2}86)([\w\.]*)/i,/(haiku) ?(r\d)?/i],[v,y],[/(sunos) ?([\d\.]*)/i],[[v,"Solaris"],y],[/\b(beos|os\/2|amigaos|openvms|hp-ux|serenityos)/i,/(unix) ?([\w\.]*)/i],[v,y]]},Di=(w={init:{},isIgnore:{},isIgnoreRgx:{},toString:{}},U.call(w.init,[[h,[v,y,E,k]],[p,[C]],[u,[k,N,x]],[m,[v,y]],[g,[v,y]]]),U.call(w.isIgnore,[[h,[y,E]],[m,[y]],[g,[y]]]),U.call(w.isIgnoreRgx,[[h,/ ?browser$/i],[g,/ ?os$/i]]),U.call(w.toString,[[h,[v,y]],[p,[C]],[u,[x,N]],[m,[v,y]],[g,[v,y]]]),w);function Fi(i,e){if(i=i||{},U.call(this,oi),e)U.call(this,[[G,Ti(i[r])],[L,Ti(i[J])],[S,/\?1/.test(i[K])],[N,Oi(i[Q])],[O,Oi(i[ii])],[W,Oi(i[ei])],[C,Oi(i[X])],[T,Ti(i[Z])],[$,Oi(i[Y])]]);else for(var o in i)this.hasOwnProperty(o)&&typeof i[o]!==l.UNDEFINED&&(this[o]=i[o])}function D(i,e,o,t){return U.call(this,[["itemType",i],["ua",e],["uaCH",t],["rgxMap",o],["data",M(this,i)]]),this}function F(i,e,o){if(typeof i===l.OBJECT?(e=Ni(i,!0)?(typeof e===l.OBJECT&&(o=e),i):void(o=i),i=void 0):typeof i!==l.STRING||Ni(e,!0)||(o=e,e=void 0),o)if(typeof o.append===l.FUNCTION){var t={};o.forEach(function(i,e){t[String(e).toLowerCase()]=i}),o=t}else{var r,a={};for(r in o)o.hasOwnProperty(r)&&(a[String(r).toLowerCase()]=o[r]);o=a}var s,n,w,d;return this instanceof F?(s=typeof i===l.STRING?i:o&&o[V]?o[V]:I&&I.userAgent?I.userAgent:b,n=new Fi(o,!0),w=e?((i,e)=>{var o,t={},r=e;if(!Ni(e))for(var a in r={},e)for(var s in e[a])r[s]=e[a][s].concat(r[s]||[]);for(o in i)t[o]=r[o]&&r[o].length%2==0?r[o].concat(i[o]):i[o];return t})(zi,e):zi,U.call(this,[["getBrowser",(d=function(i){return i==f?function(){return new D(i,s,w,n).set("ua",s).set(h,this.getBrowser()).set(p,this.getCPU()).set(u,this.getDevice()).set(m,this.getEngine()).set(g,this.getOS()).get()}:function(){return new D(i,s,w[i],n).parseUA().get()}})(h)],["getCPU",d(p)],["getDevice",d(u)],["getEngine",d(m)],["getOS",d(g)],["getResult",d(f)],["getUA",function(){return s}],["setUA",function(i){return Si(i)&&(s=Ii(i,500)),this}]]).setUA(s),this):new F(i,e,o).getResult()}D.prototype.get=function(i){return i?this.data.hasOwnProperty(i)?this.data[i]:void 0:this.data},D.prototype.set=function(i,e){return this.data[i]=e,this},D.prototype.setCH=function(i){return this.uaCH=i,this},D.prototype.detectFeature=function(){if(I&&I.userAgent==this.ua)switch(this.itemType){case h:I.brave&&typeof I.brave.isBrave==l.FUNCTION&&this.set(v,"Brave");break;case u:!this.get(k)&&_&&_[S]&&this.set(k,S),"Macintosh"==this.get(N)&&I&&typeof I.standalone!==l.UNDEFINED&&I.maxTouchPoints&&2<I.maxTouchPoints&&this.set(N,"iPad").set(k,o);break;case g:!this.get(v)&&_&&_[O]&&this.set(v,_[O]);break;case f:var e=this.data,i=function(i){return e[i].getItem().detectFeature().get()};this.set(h,i(h)).set(p,i(p)).set(u,i(u)).set(m,i(m)).set(g,i(g))}return this},D.prototype.parseUA=function(){switch(this.itemType!=f&&A.call(this.data,this.ua,this.rgxMap),this.itemType){case h:this.set(E,H(this.get(y)));break;case g:var i;"iOS"==this.get(v)&&"18.6"==this.get(y)&&(i=/\) Version\/([\d\.]+)/.exec(this.ua))&&26<=parseInt(i[1].substring(0,2),10)&&this.set(y,i[1])}return this},D.prototype.parseCH=function(){var i,e=this.uaCH,o=this.rgxMap;switch(this.itemType){case h:case m:var t,r=e[L]||e[G];if(r)for(var a=0;a<r.length;a++){var s=r[a].brand||r[a],n=r[a].version;this.itemType==h&&!/not.a.brand/i.test(s)&&(!t||/Chrom/.test(t)&&s!=fi||t==vi&&/WebView2/.test(s))&&(s=c(s,Ui),(t=this.get(v))&&!/Chrom/.test(t)&&/Chrom/.test(s)||this.set(v,s).set(y,n).set(E,H(n)),t=s),this.itemType==m&&s==fi&&this.set(y,n)}break;case p:var w=e[C];w&&("64"==e[$]&&(w+="64"),A.call(this.data,w+";",o));break;case u:if(e[S]&&this.set(k,S),e[N]&&(this.set(N,e[N]),this.get(k)&&this.get(x)||(A.call(w={},"droid 9; "+e[N]+")",o),!this.get(k)&&w.type&&this.set(k,w.type),!this.get(x)&&w.vendor&&this.set(x,w.vendor))),e[T]){if("string"!=typeof e[T])for(var d=0;!i&&d<e[T].length;)i=c(e[T][d++],qi);else i=c(e[T],qi);this.set(k,i)}break;case g:var b,w=e[O];w&&(b=e[W],w==Ci&&(b=13<=parseInt(H(b),10)?"11":"10"),this.set(v,w).set(y,b)),this.get(v)==Ci&&"Xbox"==e[N]&&this.set(v,"Xbox").set(y,void 0);break;case f:var l=this.data,w=function(i){return l[i].getItem().setCH(e).parseCH().get()};this.set(h,w(h)).set(p,w(p)).set(u,w(u)).set(m,w(m)).set(g,w(g))}return this},F.VERSION="2.0.8",F.BROWSER=B([v,y,E,k]),F.CPU=B([C]),F.DEVICE=B([N,x,k,j,S,i,o,e,R]),F.ENGINE=F.OS=B([v,y]);export{F as UAParser};
4
+ function B(i){for(var e={},o=0;o<i.length;o++)e[i[o].toUpperCase()]=i[o];return e}function H(i){return Si(i)?z(/[^\d\.]/g,i).split(".")[0]:void 0}function A(i,e){if(i&&e)for(var o,t,r,a,s,n=0;n<e.length&&!a;){for(var w=e[n],d=e[n+1],b=o=0;b<w.length&&!a&&w[b];)if(a=w[b++].exec(i))for(t=0;t<d.length;t++)s=a[++o],typeof(r=d[t])===l.OBJECT&&0<r.length?2===r.length?typeof r[1]==l.FUNCTION?this[r[0]]=r[1].call(this,s):this[r[0]]=r[1]:3<=r.length&&(typeof r[1]!==l.FUNCTION||r[1].exec&&r[1].test?3==r.length?this[r[0]]=s?s.replace(r[1],r[2]):void 0:4==r.length?this[r[0]]=s?r[3].call(this,s.replace(r[1],r[2])):void 0:4<r.length&&(this[r[0]]=s?r[3].apply(this,[s.replace(r[1],r[2])].concat(r.slice(4))):void 0):3<r.length?this[r[0]]=s?r[1].apply(this,r.slice(2)):void 0:this[r[0]]=s?r[1].call(this,s,r[2]):void 0):this[r]=s||void 0;n+=2}}function c(i,e){for(var o in e)if(typeof e[o]===l.OBJECT&&0<e[o].length){for(var t=0;t<e[o].length;t++)if(Ni(e[o][t],i))return"?"===o?void 0:o}else if(Ni(e[o],i))return"?"===o?void 0:o;return e.hasOwnProperty("*")?e["*"]:i}function M(e,i){var o=Di.init[i],t=Di.isIgnore[i]||0,r=Di.isIgnoreRgx[i]||0,a=Di.toString[i]||0;function s(){U.call(this,o)}return s.prototype.getItem=function(){return e},s.prototype.withClientHints=function(){return _?_.getHighEntropyValues(ti).then(function(i){return e.setCH(new Fi(i,!1)).parseCH().get()}):e.parseCH().get()},s.prototype.withFeatureCheck=function(){return e.detectFeature().get()},i!=f&&(s.prototype.is=function(i){var e,o=!1;for(e in this)if(this.hasOwnProperty(e)&&!Ni(t,e)&&q(r?z(r,this[e]):this[e])==q(r?z(r,i):i)){if(o=!0,i!=l.UNDEFINED)break}else if(i==l.UNDEFINED&&o){o=!o;break}return o},s.prototype.toString=function(){var i,e=b;for(i in a)typeof this[a[i]]!==l.UNDEFINED&&(e+=(e?" ":b)+this[a[i]]);return e||l.UNDEFINED}),s.prototype.then=function(i){function e(){for(var i in o)o.hasOwnProperty(i)&&(this[i]=o[i])}var o=this,t=(e.prototype={is:s.prototype.is,toString:s.prototype.toString,withClientHints:s.prototype.withClientHints,withFeatureCheck:s.prototype.withFeatureCheck},new e);return i(t),t},new s}var V="user-agent",b="",l={FUNCTION:"function",OBJECT:"object",STRING:"string",UNDEFINED:"undefined"},h="browser",p="cpu",u="device",m="engine",g="os",f="result",v="name",k="type",x="vendor",y="version",C="architecture",P="major",N="model",j="console",E="mobile",o="tablet",i="smarttv",e="wearable",R="xr",G="embedded",t="inapp",L="brands",S="formFactors",$="fullVersionList",T="platform",W="platformVersion",J="bitness",r="sec-ch-ua",X=r+"-full-version-list",Y=r+"-arch",Z=r+"-"+J,K=r+"-form-factors",Q=r+"-"+E,ii=r+"-"+N,ei=r+"-"+T,oi=ei+"-version",ti=[L,$,E,N,T,W,C,S,J],ri="Amazon",a="Apple",ai="ASUS",si="BlackBerry",s="Google",ni="Huawei",wi="Lenovo",di="Honor",bi="LG",li="Microsoft",ci="Motorola",hi="OnePlus",pi="OPPO",ui="Samsung",mi="Sony",gi="Xiaomi",fi="Zebra",vi="Chromium",n="Chromecast",ki="Edge",xi="Firefox",w="Opera",yi="Facebook",d="Mobile ",O=" Browser",Ci="Windows",I=typeof window!==l.UNDEFINED&&window.navigator?window.navigator:void 0,_=I&&I.userAgentData?I.userAgentData:void 0,Ni=function(i,e){if(typeof i===l.OBJECT&&0<i.length){for(var o in i)if(q(e)==q(i[o]))return!0;return!1}return!!Si(i)&&q(e)==q(i)},Ei=function(i,e){for(var o in i)return/^(browser|cpu|device|engine|os)$/.test(o)||!!e&&Ei(i[o])},Si=function(i){return typeof i===l.STRING},Ti=function(i){if(i){for(var e,o=[],t=z(/\\?\"/g,i).split(","),r=0;r<t.length;r++)-1<t[r].indexOf(";")?(e=Ii(t[r]).split(";v="),o[r]={brand:e[0],version:e[1]}):o[r]=Ii(t[r]);return o}},q=function(i){return Si(i)?i.toLowerCase():i},U=function(i){for(var e in i)i.hasOwnProperty(e)&&(typeof(e=i[e])==l.OBJECT&&2==e.length?this[e[0]]=e[1]:this[e]=void 0);return this},z=function(i,e){return Si(e)?e.replace(i,b):e},Oi=function(i){return z(/\\?\"/g,i)},Ii=function(i,e){return i=z(/^\s\s*/,String(i)),typeof e===l.UNDEFINED?i:i.substring(0,e)},_i={ME:"4.90","NT 3.51":"3.51","NT 4.0":"4.0",2e3:["5.0","5.01"],XP:["5.1","5.2"],Vista:"6.0",7:"6.1",8:"6.2",8.1:"6.3",10:["6.4","10.0"],NT:""},qi={embedded:"Automotive",mobile:"Mobile",tablet:["Tablet","EInk"],smarttv:"TV",wearable:"Watch",xr:["VR","XR"],"?":["Desktop","Unknown"],"*":void 0},Ui={Chrome:"Google Chrome",Edge:"Microsoft Edge","Edge WebView2":"Microsoft Edge WebView2","Chrome WebView":"Android WebView","Chrome Headless":"HeadlessChrome","Huawei Browser":"HuaweiBrowser","MIUI Browser":"Miui Browser","Opera Mobi":"OperaMobile",Yandex:"YaBrowser"},zi={browser:[[/\b(?:crmo|crios)\/([\w\.]+)/i],[y,[v,d+"Chrome"]],[/webview.+edge\/([\w\.]+)/i],[y,[v,ki+" WebView"]],[/edg(?:e|ios|a)?\/([\w\.]+)/i],[y,[v,"Edge"]],[/(opera mini)\/([-\w\.]+)/i,/(opera [mobiletab]{3,6})\b.+version\/([-\w\.]+)/i,/(opera)(?:.+version\/|[\/ ]+)([\w\.]+)/i],[v,y],[/opios[\/ ]+([\w\.]+)/i],[y,[v,w+" Mini"]],[/\bop(?:rg)?x\/([\w\.]+)/i],[y,[v,w+" GX"]],[/\bopr\/([\w\.]+)/i],[y,[v,w]],[/\bb[ai]*d(?:uhd|[ub]*[aekoprswx]{5,6})[\/ ]?([\w\.]+)/i],[y,[v,"Baidu"]],[/\b(?:mxbrowser|mxios|myie2)\/?([-\w\.]*)\b/i],[y,[v,"Maxthon"]],[/(kindle)\/([\w\.]+)/i,/(lunascape|maxthon|netfront|jasmine|blazer|sleipnir)[\/ ]?([\w\.]*)/i,/(avant|iemobile|slim(?:browser|boat|jet))[\/ ]?([\d\.]*)/i,/(?:ms|\()(ie) ([\w\.]+)/i,/(atlas|flock|rockmelt|midori|epiphany|silk|skyfire|bolt|iron|vivaldi|iridium|phantomjs|bowser|qupzilla|falkon|rekonq|puffin|whale(?!.+naver)|qqbrowserlite|duckduckgo|klar|helio|(?=comodo_)?dragon|otter|dooble|(?:hi|lg |ovi|qute)browser|palemoon)\/v?([-\w\.]+)/i,/(brave)(?: chrome)?\/([\d\.]+)/i,/(aloha|heytap|ovi|115|surf|qwant)browser\/([\d\.]+)/i,/(qwant)(?:ios|mobile)\/([\d\.]+)/i,/(ecosia|weibo)(?:__| \w+@)([\d\.]+)/i],[v,y],[/quark(?:pc)?\/([-\w\.]+)/i],[y,[v,"Quark"]],[/\bddg\/([\w\.]+)/i],[y,[v,"DuckDuckGo"]],[/(?:\buc? ?browser|(?:juc.+)ucweb)[\/ ]?([\w\.]+)/i],[y,[v,"UCBrowser"]],[/microm.+\bqbcore\/([\w\.]+)/i,/\bqbcore\/([\w\.]+).+microm/i,/micromessenger\/([\w\.]+)/i],[y,[v,"WeChat"]],[/konqueror\/([\w\.]+)/i],[y,[v,"Konqueror"]],[/trident.+rv[: ]([\w\.]{1,9})\b.+like gecko/i],[y,[v,"IE"]],[/ya(?:search)?browser\/([\w\.]+)/i],[y,[v,"Yandex"]],[/slbrowser\/([\w\.]+)/i],[y,[v,"Smart "+wi+O]],[/(av(?:ast|g|ira))\/([\w\.]+)/i],[[v,/(.+)/,"$1 Secure"+O],y],[/norton\/([\w\.]+)/i],[y,[v,"Norton Private"+O]],[/\bfocus\/([\w\.]+)/i],[y,[v,xi+" Focus"]],[/ mms\/([\w\.]+)$/i],[y,[v,w+" Neon"]],[/ opt\/([\w\.]+)$/i],[y,[v,w+" Touch"]],[/coc_coc\w+\/([\w\.]+)/i],[y,[v,"Coc Coc"]],[/dolfin\/([\w\.]+)/i],[y,[v,"Dolphin"]],[/coast\/([\w\.]+)/i],[y,[v,w+" Coast"]],[/miuibrowser\/([\w\.]+)/i],[y,[v,"MIUI"+O]],[/fxios\/([\w\.-]+)/i],[y,[v,d+xi]],[/\bqihoobrowser\/?([\w\.]*)/i],[y,[v,"360"]],[/\b(qq)\/([\w\.]+)/i],[[v,/(.+)/,"$1Browser"],y],[/(oculus|sailfish|huawei|vivo|pico)browser\/([\w\.]+)/i],[[v,/(.+)/,"$1"+O],y],[/samsungbrowser\/([\w\.]+)/i],[y,[v,ui+" Internet"]],[/metasr[\/ ]?([\d\.]+)/i],[y,[v,"Sogou Explorer"]],[/(sogou)mo\w+\/([\d\.]+)/i],[[v,"Sogou Mobile"],y],[/(electron)\/([\w\.]+) safari/i,/(tesla)(?: qtcarbrowser|\/(20\d\d\.[-\w\.]+))/i,/m?(qqbrowser|2345(?=browser|chrome|explorer))\w*[\/ ]?v?([\w\.]+)/i],[v,y],[/(lbbrowser|luakit|rekonq|steam(?= (clie|tenf|gameo)))/i],[v],[/ome\/([\w\.]+).+(iron(?= saf)|360(?=[es]e$))/i],[y,v],[/((?:fban\/fbios|fb_iab\/fb4a)(?!.+fbav)|;fbav\/([\w\.]+);)/i],[[v,yi],y,[k,t]],[/(kakao(?:talk|story))[\/ ]([\w\.]+)/i,/(naver)\(.*?(\d+\.[\w\.]+).*\)/i,/(daum)apps[\/ ]([\w\.]+)/i,/safari (line)\/([\w\.]+)/i,/\b(line)\/([\w\.]+)\/iab/i,/(alipay)client\/([\w\.]+)/i,/(twitter)(?:and| f.+e\/([\w\.]+))/i,/(bing)(?:web|sapphire)\/([\w\.]+)/i,/(instagram|snapchat|klarna)[\/ ]([-\w\.]+)/i],[v,y,[k,t]],[/\bgsa\/([\w\.]+) .*safari\//i],[y,[v,"GSA"],[k,t]],[/(?:musical_ly|trill)(?:.+app_?version\/|_)([\w\.]+)/i],[y,[v,"TikTok"],[k,t]],[/\[(linkedin)app\]/i],[v,[k,t]],[/(zalo(?:app)?)[\/\sa-z]*([\w\.-]+)/i],[[v,/(.+)/,"Zalo"],y,[k,t]],[/(chromium)[\/ ]([-\w\.]+)/i],[v,y],[/ome-(lighthouse)$/i],[v,[k,"fetcher"]],[/headlesschrome(?:\/([\w\.]+)| )/i],[y,[v,"Chrome Headless"]],[/wv\).+chrome\/([\w\.]+).+edgw\//i],[y,[v,ki+" WebView2"]],[/ wv\).+(chrome)\/([\w\.]+)/i],[[v,"Chrome WebView"],y],[/droid.+ version\/([\w\.]+)\b.+(?:mobile safari|safari)/i],[y,[v,"Android"+O]],[/chrome\/([\w\.]+) mobile/i],[y,[v,d+"Chrome"]],[/(chrome|omniweb|arora|[tizenoka]{5} ?browser)\/v?([\w\.]+)/i],[v,y],[/version\/([\w\.\,]+) .*mobile(?:\/\w+ | ?)safari/i],[y,[v,d+"Safari"]],[/iphone .*mobile(?:\/\w+ | ?)safari/i],[[v,d+"Safari"]],[/version\/([\w\.\,]+) .*(safari)/i],[y,v],[/webkit.+?(mobile ?safari|safari)(\/[\w\.]+)/i],[v,[y,"1"]],[/(webkit|khtml)\/([\w\.]+)/i],[v,y],[/(?:mobile|tablet);.*(firefox)\/([\w\.-]+)/i],[[v,d+xi],y],[/(navigator|netscape\d?)\/([-\w\.]+)/i],[[v,"Netscape"],y],[/(wolvic|librewolf)\/([\w\.]+)/i],[v,y],[/mobile vr; rv:([\w\.]+)\).+firefox/i],[y,[v,xi+" Reality"]],[/ekiohf.+(flow)\/([\w\.]+)/i,/(swiftfox)/i,/(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror)[\/ ]?([\w\.\+]+)/i,/(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|basilisk|waterfox)\/([-\w\.]+)$/i,/(firefox)\/([\w\.]+)/i,/(mozilla)\/([\w\.]+(?= .+rv\:.+gecko\/\d+)|[0-4][\w\.]+(?!.+compatible))/i,/(amaya|dillo|doris|icab|ladybird|lynx|mosaic|netsurf|obigo|polaris|w3m|(?:go|ice|up)[\. ]?browser)[-\/ ]?v?([\w\.]+)/i,/\b(links) \(([\w\.]+)/i],[v,[y,/_/g,"."]],[/(cobalt)\/([\w\.]+)/i],[v,[y,/[^\d\.]+./,b]]],cpu:[[/\b((amd|x|x86[-_]?|wow|win)64)\b/i],[[C,"amd64"]],[/(ia32(?=;))/i,/\b((i[346]|x)86)(pc)?\b/i],[[C,"ia32"]],[/\b(aarch64|arm(v?[89]e?l?|_?64))\b/i],[[C,"arm64"]],[/\b(arm(v[67])?ht?n?[fl]p?)\b/i],[[C,"armhf"]],[/( (ce|mobile); ppc;|\/[\w\.]+arm\b)/i],[[C,"arm"]],[/ sun4\w[;\)]/i],[[C,"sparc"]],[/\b(avr32|ia64(?=;)|68k(?=\))|\barm(?=v([1-7]|[5-7]1)l?|;|eabi)|(irix|mips|sparc)(64)?\b|pa-risc)/i,/((ppc|powerpc)(64)?)( mac|;|\))/i,/(?:osf1|[freopnt]{3,4}bsd) (alpha)/i],[[C,/ower/,b,q]],[/mc680.0/i],[[C,"68k"]],[/winnt.+\[axp/i],[[C,"alpha"]]],device:[[/\b(sch-i[89]0\d|shw-m380s|sm-[ptx]\w{2,4}|gt-[pn]\d{2,4}|sgh-t8[56]9|nexus 10)/i],[N,[x,ui],[k,o]],[/\b((?:s[cgp]h|gt|sm)-(?![lr])\w+|sc[g-]?[\d]+a?|galaxy nexus)/i,/samsung[- ]((?!sm-[lr]|browser)[-\w]+)/i,/sec-(sgh\w+)/i],[N,[x,ui],[k,E]],[/(?:\/|\()(ip(?:hone|od)[\w, ]*)[\/\);]/i],[N,[x,a],[k,E]],[/\b(?:ios|apple\w+)\/.+[\(\/](ipad)/i,/\b(ipad)[\d,]*[;\] ].+(mac |i(pad)?)os/i],[N,[x,a],[k,o]],[/(macintosh);/i],[N,[x,a]],[/\b(sh-?[altvz]?\d\d[a-ekm]?)/i],[N,[x,"Sharp"],[k,E]],[/\b((?:brt|eln|hey2?|gdi|jdn)-a?[lnw]09|(?:ag[rm]3?|jdn2|kob2)-a?[lw]0[09]hn)(?: bui|\)|;)/i],[N,[x,di],[k,o]],[/honor([-\w ]+)[;\)]/i],[N,[x,di],[k,E]],[/\b((?:ag[rs][2356]?k?|bah[234]?|bg[2o]|bt[kv]|cmr|cpn|db[ry]2?|jdn2|got|kob2?k?|mon|pce|scm|sht?|[tw]gr|vrd)-[ad]?[lw][0125][09]b?|605hw|bg2-u03|(?:gem|fdr|m2|ple|t1)-[7a]0[1-4][lu]|t1-a2[13][lw]|mediapad[\w\. ]*(?= bui|\)))\b(?!.+d\/s)/i],[N,[x,ni],[k,o]],[/(?:huawei) ?([-\w ]+)[;\)]/i,/\b(nexus 6p|\w{2,4}e?-[atu]?[ln][\dx][\dc][adnt]?)\b(?!.+d\/s)/i],[N,[x,ni],[k,E]],[/oid[^\)]+; (2[\dbc]{4}(182|283|rp\w{2})[cgl]|m2105k81a?c)(?: bui|\))/i,/\b(?:xiao)?((?:red)?mi[-_ ]?pad[\w- ]*)(?: bui|\))/i],[[N,/_/g," "],[x,gi],[k,o]],[/\b; (\w+) build\/hm\1/i,/\b(hm[-_ ]?note?[_ ]?(?:\d\w)?) bui/i,/oid[^\)]+; (redmi[\-_ ]?(?:note|k)?[\w_ ]+|m?[12]\d[01]\d\w{3,6}|poco[\w ]+|(shark )?\w{3}-[ah]0|qin ?[1-3](s\+|ultra| pro)?)( bui|; wv|\))/i,/\b(mi[-_ ]?(?:a\d|one|one[_ ]plus|note|max|cc)?[_ ]?(?:\d{0,2}\w?)[_ ]?(?:plus|se|lite|pro)?( 5g|lte)?)(?: bui|\))/i,/ ([\w ]+) miui\/v?\d/i],[[N,/_/g," "],[x,gi],[k,E]],[/droid.+; (cph2[3-6]\d[13579]|((gm|hd)19|(ac|be|in|kb)20|(d[en]|eb|le|mt)21|ne22)[0-2]\d|p[g-l]\w[1m]10)\b/i,/(?:one)?(?:plus)? (a\d0\d\d)(?: b|\))/i],[N,[x,hi],[k,E]],[/; (\w+) bui.+ oppo/i,/\b(cph[12]\d{3}|p(?:af|c[al]|d\w|e[ar])[mt]\d0|x9007|a101op)\b/i],[N,[x,pi],[k,E]],[/\b(opd2(\d{3}a?))(?: bui|\))/i],[N,[x,c,{OnePlus:["203","304","403","404","413","415"],"*":pi}],[k,o]],[/(vivo (5r?|6|8l?|go|one|s|x[il]?[2-4]?)[\w\+ ]*)(?: bui|\))/i],[N,[x,"BLU"],[k,E]],[/; vivo (\w+)(?: bui|\))/i,/\b(v[12]\d{3}\w?[at])(?: bui|;)/i],[N,[x,"Vivo"],[k,E]],[/\b(rmx[1-3]\d{3})(?: bui|;|\))/i],[N,[x,"Realme"],[k,E]],[/(ideatab[-\w ]+|602lv|d-42a|a101lv|a2109a|a3500-hv|s[56]000|pb-6505[my]|tb-?x?\d{3,4}(?:f[cu]|xu|[av])|yt\d?-[jx]?\d+[lfmx])( bui|;|\)|\/)/i,/lenovo ?(b[68]0[08]0-?[hf]?|tab(?:[\w- ]+?)|tb[\w-]{6,7})( bui|;|\)|\/)/i],[N,[x,wi],[k,o]],[/lenovo[-_ ]?([-\w ]+?)(?: bui|\)|\/)/i],[N,[x,wi],[k,E]],[/\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\b[\w ]+build\//i,/\bmot(?:orola)?[- ]([\w\s]+)(\)| bui)/i,/((?:moto(?! 360)[-\w\(\) ]+|xt\d{3,4}[cgkosw\+]?[-\d]*|nexus 6)(?= bui|\)))/i],[N,[x,ci],[k,E]],[/\b(mz60\d|xoom[2 ]{0,2}) build\//i],[N,[x,ci],[k,o]],[/\b(?:lg)?([vl]k\-?\d{3}) bui| 3\.[-\w; ]{10}lg?-([06cv9]{3,4})/i],[N,[x,bi],[k,o]],[/(lm(?:-?f100[nv]?|-[\w\.]+)(?= bui|\))|nexus [45])/i,/\blg[-e;\/ ]+(?!.*(?:browser|netcast|android tv|watch|webos))(\w+)/i,/\blg-?([\d\w]+) bui/i],[N,[x,bi],[k,E]],[/(nokia) (t[12][01])/i],[x,N,[k,o]],[/(?:maemo|nokia).*(n900|lumia \d+|rm-\d+)/i,/nokia[-_ ]?(([-\w\. ]*?))( bui|\)|;|\/)/i],[[N,/_/g," "],[k,E],[x,"Nokia"]],[/(pixel (c|tablet))\b/i],[N,[x,s],[k,o]],[/droid.+;(?: google)? (g(01[13]a|020[aem]|025[jn]|1b60|1f8f|2ybb|4s1m|576d|5nz6|8hhn|8vou|a02099|c15s|d1yq|e2ae|ec77|gh2x|kv4x|p4bc|pj41|r83y|tt9q|ur25|wvk6)|pixel[\d ]*a?( pro)?( xl)?( fold)?( \(5g\))?)( bui|\))/i],[N,[x,s],[k,E]],[/(google) (pixelbook( go)?)/i],[x,N],[/droid.+; (a?\d[0-2]{2}so|[c-g]\d{4}|so[-gl]\w+|xq-\w\w\d\d)(?= bui|\).+chrome\/(?![1-6]{0,1}\d\.))/i],[N,[x,mi],[k,E]],[/sony tablet [ps]/i,/\b(?:sony)?sgp\w+(?: bui|\))/i],[[N,"Xperia Tablet"],[x,mi],[k,o]],[/(alexa)webm/i,/(kf[a-z]{2}wi|aeo(?!bc)\w\w)( bui|\))/i,/(kf[a-z]+)( bui|\)).+silk\//i],[N,[x,ri],[k,o]],[/((?:sd|kf)[0349hijorstuw]+)( bui|\)).+silk\//i],[[N,/(.+)/g,"Fire Phone $1"],[x,ri],[k,E]],[/(playbook);[-\w\),; ]+(rim)/i],[N,x,[k,o]],[/\b((?:bb[a-f]|st[hv])100-\d)/i,/(?:blackberry|\(bb10;) (\w+)/i],[N,[x,si],[k,E]],[/(?:\b|asus_)(transfo[prime ]{4,10} \w+|eeepc|slider \w+|nexus 7|padfone|p00[cj])/i],[N,[x,ai],[k,o]],[/ (z[bes]6[027][012][km][ls]|zenfone \d\w?)\b/i],[N,[x,ai],[k,E]],[/(nexus 9)/i],[N,[x,"HTC"],[k,o]],[/(htc)[-;_ ]{1,2}([\w ]+(?=\)| bui)|\w+)/i,/(zte)[- ]([\w ]+?)(?: bui|\/|\))/i,/(alcatel|geeksphone|nexian|panasonic(?!(?:;|\.))|sony(?!-bra))[-_ ]?([-\w]*)/i],[x,[N,/_/g," "],[k,E]],[/tcl (xess p17aa)/i,/droid [\w\.]+; ((?:8[14]9[16]|9(?:0(?:48|60|8[01])|1(?:3[27]|66)|2(?:6[69]|9[56])|466))[gqswx])(_\w(\w|\w\w))?(\)| bui)/i],[N,[x,"TCL"],[k,o]],[/droid [\w\.]+; (418(?:7d|8v)|5087z|5102l|61(?:02[dh]|25[adfh]|27[ai]|56[dh]|59k|65[ah])|a509dl|t(?:43(?:0w|1[adepqu])|50(?:6d|7[adju])|6(?:09dl|10k|12b|71[efho]|76[hjk])|7(?:66[ahju]|67[hw]|7[045][bh]|71[hk]|73o|76[ho]|79w|81[hks]?|82h|90[bhsy]|99b)|810[hs]))(_\w(\w|\w\w))?(\)| bui)/i],[N,[x,"TCL"],[k,E]],[/(itel) ((\w+))/i],[[x,q],N,[k,c,{tablet:["p10001l","w7001"],"*":"mobile"}]],[/droid.+; ([ab][1-7]-?[0178a]\d\d?)/i],[N,[x,"Acer"],[k,o]],[/droid.+; (m[1-5] note) bui/i,/\bmz-([-\w]{2,})/i],[N,[x,"Meizu"],[k,E]],[/; ((?:power )?armor(?:[\w ]{0,8}))(?: bui|\))/i],[N,[x,"Ulefone"],[k,E]],[/; (energy ?\w+)(?: bui|\))/i,/; energizer ([\w ]+)(?: bui|\))/i],[N,[x,"Energizer"],[k,E]],[/; cat (b35);/i,/; (b15q?|s22 flip|s48c|s62 pro)(?: bui|\))/i],[N,[x,"Cat"],[k,E]],[/((?:new )?andromax[\w- ]+)(?: bui|\))/i],[N,[x,"Smartfren"],[k,E]],[/droid.+; (a(in)?(0(15|59|6[35])|142)p?)/i],[N,[x,"Nothing"],[k,E]],[/; (x67 5g|tikeasy \w+|ac[1789]\d\w+)( b|\))/i,/archos ?(5|gamepad2?|([\w ]*[t1789]|hello) ?\d+[\w ]*)( b|\))/i],[N,[x,"Archos"],[k,o]],[/archos ([\w ]+)( b|\))/i,/; (ac[3-6]\d\w{2,8})( b|\))/i],[N,[x,"Archos"],[k,E]],[/; (n159v)/i],[N,[x,"HMD"],[k,E]],[/(imo) (tab \w+)/i,/(infinix|tecno) (x1101b?|p904|dp(7c|8d|10a)( pro)?|p70[1-3]a?|p904|t1101)/i],[x,N,[k,o]],[/(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus(?! zenw)|dell|jolla|meizu|motorola|polytron|tecno|micromax|advan)[-_ ]?([-\w]*)/i,/; (blu|hmd|imo|infinix|lava|oneplus|tcl|wiko)[_ ]([\w\+ ]+?)(?: bui|\)|; r)/i,/(hp) ([\w ]+\w)/i,/(microsoft); (lumia[\w ]+)/i,/(oppo) ?([\w ]+) bui/i,/(hisense) ([ehv][\w ]+)\)/i,/droid[^;]+; (philips)[_ ]([sv-x][\d]{3,4}[xz]?)/i],[x,N,[k,E]],[/(kobo)\s(ereader|touch)/i,/(hp).+(touchpad(?!.+tablet)|tablet)/i,/(kindle)\/([\w\.]+)/i],[x,N,[k,o]],[/(surface duo)/i],[N,[x,li],[k,o]],[/droid [\d\.]+; (fp\du?)(?: b|\))/i],[N,[x,"Fairphone"],[k,E]],[/((?:tegranote|shield t(?!.+d tv))[\w- ]*?)(?: b|\))/i],[N,[x,"Nvidia"],[k,o]],[/(sprint) (\w+)/i],[x,N,[k,E]],[/(kin\.[onetw]{3})/i],[[N,/\./g," "],[x,li],[k,E]],[/droid.+; ([c6]+|et5[16]|mc[239][23]x?|vc8[03]x?)\)/i],[N,[x,fi],[k,o]],[/droid.+; (ec30|ps20|tc[2-8]\d[kx])\)/i],[N,[x,fi],[k,E]],[/(philips)[\w ]+tv/i,/smart-tv.+(samsung)/i],[x,[k,i]],[/hbbtv.+maple;(\d+)/i],[[N,/^/,"SmartTV"],[x,ui],[k,i]],[/(vizio)(?: |.+model\/)(\w+-\w+)/i,/tcast.+(lg)e?. ([-\w]+)/i],[x,N,[k,i]],[/(nux; netcast.+smarttv|lg (netcast\.tv-201\d|android tv))/i],[[x,bi],[k,i]],[/(apple) ?tv/i],[x,[N,a+" TV"],[k,i]],[/crkey.*devicetype\/chromecast/i],[[N,n+" Third Generation"],[x,s],[k,i]],[/crkey.*devicetype\/([^/]*)/i],[[N,/^/,"Chromecast "],[x,s],[k,i]],[/fuchsia.*crkey/i],[[N,n+" Nest Hub"],[x,s],[k,i]],[/crkey/i],[[N,n],[x,s],[k,i]],[/(portaltv)/i],[N,[x,yi],[k,i]],[/droid.+aft(\w+)( bui|\))/i],[N,[x,ri],[k,i]],[/(shield \w+ tv)/i],[N,[x,"Nvidia"],[k,i]],[/\(dtv[\);].+(aquos)/i,/(aquos-tv[\w ]+)\)/i],[N,[x,"Sharp"],[k,i]],[/(bravia[\w ]+)( bui|\))/i],[N,[x,mi],[k,i]],[/(mi(tv|box)-?\w+) bui/i],[N,[x,gi],[k,i]],[/Hbbtv.*(technisat) (.*);/i],[x,N,[k,i]],[/\b(roku)[\dx]*[\)\/]((?:dvp-)?[\d\.]*)/i,/hbbtv\/\d+\.\d+\.\d+ +\([\w\+ ]*; *([\w\d][^;]*);([^;]*)/i],[[x,/.+\/(\w+)/,"$1",c,{LG:"lge"}],[N,Ii],[k,i]],[/(playstation \w+)/i],[N,[x,mi],[k,j]],[/\b(xbox(?: one)?(?!; xbox))[\); ]/i],[N,[x,li],[k,j]],[/(ouya)/i,/(nintendo) (\w+)/i,/(retroid) (pocket ([^\)]+))/i,/(valve).+(steam deck)/i,/droid.+; ((shield|rgcube|gr0006))( bui|\))/i],[[x,c,{Nvidia:"Shield",Anbernic:"RGCUBE",Logitech:"GR0006"}],N,[k,j]],[/\b(sm-[lr]\d\d[0156][fnuw]?s?|gear live)\b/i],[N,[x,ui],[k,e]],[/((pebble))app/i,/(asus|google|lg|oppo|xiaomi) ((pixel |zen)?watch[\w ]*)( bui|\))/i],[x,N,[k,e]],[/(ow(?:19|20)?we?[1-3]{1,3})/i],[N,[x,pi],[k,e]],[/(watch)(?: ?os[,\/]|\d,\d\/)[\d\.]+/i],[N,[x,a],[k,e]],[/(opwwe\d{3})/i],[N,[x,hi],[k,e]],[/(moto 360)/i],[N,[x,ci],[k,e]],[/(smartwatch 3)/i],[N,[x,mi],[k,e]],[/(g watch r)/i],[N,[x,bi],[k,e]],[/droid.+; (wt63?0{2,3})\)/i],[N,[x,fi],[k,e]],[/droid.+; (glass) \d/i],[N,[x,s],[k,R]],[/(pico) ([\w ]+) os\d/i],[x,N,[k,R]],[/(quest( \d| pro)?s?).+vr/i],[N,[x,yi],[k,R]],[/mobile vr; rv.+firefox/i],[[k,R]],[/(tesla)(?: qtcarbrowser|\/[-\w\.]+)/i],[x,[k,G]],[/(aeobc)\b/i],[N,[x,ri],[k,G]],[/(homepod).+mac os/i],[N,[x,a],[k,G]],[/windows iot/i],[[k,G]],[/droid.+; ([\w- ]+) (4k|android|smart|google)[- ]?tv/i],[N,[k,i]],[/\b((4k|android|smart|opera)[- ]?tv|tv; rv:|large screen[\w ]+safari)\b/i],[[k,i]],[/droid .+?; ([^;]+?)(?: bui|; wv\)|\) applew|; hmsc).+?(mobile|vr|\d) safari/i],[N,[k,c,{mobile:"Mobile",xr:"VR","*":o}]],[/\b((tablet|tab)[;\/]|focus\/\d(?!.+mobile))/i],[[k,o]],[/(phone|mobile(?:[;\/]| [ \w\/\.]*safari)|pda(?=.+windows ce))/i],[[k,E]],[/droid .+?; ([\w\. -]+)( bui|\))/i],[N,[x,"Generic"]]],engine:[[/windows.+ edge\/([\w\.]+)/i],[y,[v,ki+"HTML"]],[/(arkweb)\/([\w\.]+)/i],[v,y],[/webkit\/537\.36.+chrome\/(?!27)([\w\.]+)/i],[y,[v,"Blink"]],[/(presto)\/([\w\.]+)/i,/(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna|servo)\/([\w\.]+)/i,/ekioh(flow)\/([\w\.]+)/i,/(khtml|tasman|links|dillo)[\/ ]\(?([\w\.]+)/i,/(icab)[\/ ]([23]\.[\d\.]+)/i,/\b(libweb)/i],[v,y],[/ladybird\//i],[[v,"LibWeb"]],[/rv\:([\w\.]{1,9})\b.+(gecko)/i],[y,v]],os:[[/(windows nt) (6\.[23]); arm/i],[[v,/N/,"R"],[y,c,_i]],[/(windows (?:phone|mobile|iot))(?: os)?[\/ ]?([\d\.]*( se)?)/i,/(windows)[\/ ](1[01]|2000|3\.1|7|8(\.1)?|9[58]|me|server 20\d\d( r2)?|vista|xp)/i],[v,y],[/windows nt ?([\d\.\)]*)(?!.+xbox)/i,/\bwin(?=3| ?9|n)(?:nt| 9x )?([\d\.;]*)/i],[[y,/(;|\))/g,"",c,_i],[v,Ci]],[/(windows ce)\/?([\d\.]*)/i],[v,y],[/[adehimnop]{4,7}\b(?:.*os ([\w]+) like mac|; opera)/i,/(?:ios;fbsv|ios(?=.+ip(?:ad|hone)|.+apple ?tv)|ip(?:ad|hone)(?: |.+i(?:pad)?)os|apple ?tv.+ios)[\/ ]([\w\.]+)/i,/\btvos ?([\w\.]+)/i,/cfnetwork\/.+darwin/i],[[y,/_/g,"."],[v,"iOS"]],[/(mac os x) ?([\w\. ]*)/i,/(macintosh|mac_powerpc\b)(?!.+(haiku|morphos))/i],[[v,"macOS"],[y,/_/g,"."]],[/android ([\d\.]+).*crkey/i],[y,[v,n+" Android"]],[/fuchsia.*crkey\/([\d\.]+)/i],[y,[v,n+" Fuchsia"]],[/crkey\/([\d\.]+).*devicetype\/smartspeaker/i],[y,[v,n+" SmartSpeaker"]],[/linux.*crkey\/([\d\.]+)/i],[y,[v,n+" Linux"]],[/crkey\/([\d\.]+)/i],[y,[v,n]],[/droid ([\w\.]+)\b.+(android[- ]x86)/i],[y,v],[/(ubuntu) ([\w\.]+) like android/i],[[v,/(.+)/,"$1 Touch"],y],[/(harmonyos)[\/ ]?([\d\.]*)/i,/(android|bada|blackberry|kaios|maemo|meego|openharmony|qnx|rim tablet os|sailfish|series40|symbian|tizen)\w*[-\/\.; ]?([\d\.]*)/i],[v,y],[/\(bb(10);/i],[y,[v,si]],[/(?:symbian ?os|symbos|s60(?=;)|series ?60)[-\/ ]?([\w\.]*)/i],[y,[v,"Symbian"]],[/mozilla\/[\d\.]+ \((?:mobile[;\w ]*|tablet|tv|[^\)]*(?:viera|lg(?:l25|-d300)|alcatel ?o.+|y300-f1)); rv:([\w\.]+)\).+gecko\//i],[y,[v,xi+" OS"]],[/\b(?:hp)?wos(?:browser)?\/([\w\.]+)/i,/webos(?:[ \/]?|\.tv-20(?=2[2-9]))(\d[\d\.]*)/i],[y,[v,"webOS"]],[/web0s;.+?(?:chr[o0]me|safari)\/(\d+)/i],[[y,c,{25:"120",24:"108",23:"94",22:"87",6:"79",5:"68",4:"53",3:"38",2:"538",1:"537","*":"TV"}],[v,"webOS"]],[/watch(?: ?os[,\/ ]|\d,\d\/)([\d\.]+)/i],[y,[v,"watchOS"]],[/cros [\w]+(?:\)| ([\w\.]+)\b)/i],[y,[v,"Chrome OS"]],[/kepler ([\w\.]+); (aft|aeo)/i],[y,[v,"Vega OS"]],[/(netrange)mmh/i,/(nettv)\/(\d+\.[\w\.]+)/i,/(nintendo|playstation) (\w+)/i,/(xbox); +xbox ([^\);]+)/i,/(pico) .+os([\w\.]+)/i,/\b(joli|palm)\b ?(?:os)?\/?([\w\.]*)/i,/linux.+(mint)[\/\(\) ]?([\w\.]*)/i,/(mageia|vectorlinux|fuchsia|arcaos|arch(?= ?linux))[;l ]([\d\.]*)/i,/([kxln]?ubuntu|debian|suse|opensuse|gentoo|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire|knoppix)(?: gnu[\/ ]linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\/ ]?(?!chrom|package)([-\w\.]*)/i,/((?:open)?solaris)[-\/ ]?([\w\.]*)/i,/\b(aix)[; ]([1-9\.]{0,4})/i,/(hurd|linux|morphos)(?: (?:arm|x86|ppc)\w*| ?)([\w\.]*)/i,/(gnu) ?([\w\.]*)/i,/\b([-frentopcghs]{0,5}bsd|dragonfly)[\/ ]?(?!amd|[ix346]{1,2}86)([\w\.]*)/i,/(haiku) ?(r\d)?/i],[v,y],[/(sunos) ?([\d\.]*)/i],[[v,"Solaris"],y],[/\b(beos|os\/2|amigaos|openvms|hp-ux|serenityos)/i,/(unix) ?([\w\.]*)/i],[v,y]]},Di=(w={init:{},isIgnore:{},isIgnoreRgx:{},toString:{}},U.call(w.init,[[h,[v,y,P,k]],[p,[C]],[u,[k,N,x]],[m,[v,y]],[g,[v,y]]]),U.call(w.isIgnore,[[h,[y,P]],[m,[y]],[g,[y]]]),U.call(w.isIgnoreRgx,[[h,/ ?browser$/i],[g,/ ?os$/i]]),U.call(w.toString,[[h,[v,y]],[p,[C]],[u,[x,N]],[m,[v,y]],[g,[v,y]]]),w);function Fi(i,e){if(i=i||{},U.call(this,ti),e)U.call(this,[[L,Ti(i[r])],[$,Ti(i[X])],[E,/\?1/.test(i[Q])],[N,Oi(i[ii])],[T,Oi(i[ei])],[W,Oi(i[oi])],[C,Oi(i[Y])],[S,Ti(i[K])],[J,Oi(i[Z])]]);else for(var o in i)this.hasOwnProperty(o)&&typeof i[o]!==l.UNDEFINED&&(this[o]=i[o])}function D(i,e,o,t){return U.call(this,[["itemType",i],["ua",e],["uaCH",t],["rgxMap",o],["data",M(this,i)]]),this}function F(i,e,o){if(typeof i===l.OBJECT?(e=Ei(i,!0)?(typeof e===l.OBJECT&&(o=e),i):void(o=i),i=void 0):typeof i!==l.STRING||Ei(e,!0)||(o=e,e=void 0),o)if(typeof o.append===l.FUNCTION){var t={};o.forEach(function(i,e){t[String(e).toLowerCase()]=i}),o=t}else{var r,a={};for(r in o)o.hasOwnProperty(r)&&(a[String(r).toLowerCase()]=o[r]);o=a}var s,n,w,d;return this instanceof F?(s=typeof i===l.STRING?i:o&&o[V]?o[V]:I&&I.userAgent?I.userAgent:b,n=new Fi(o,!0),w=e?((i,e)=>{var o,t={},r=e;if(!Ei(e))for(var a in r={},e)for(var s in e[a])r[s]=e[a][s].concat(r[s]||[]);for(o in i)t[o]=r[o]&&r[o].length%2==0?r[o].concat(i[o]):i[o];return t})(zi,e):zi,U.call(this,[["getBrowser",(d=function(i){return i==f?function(){return new D(i,s,w,n).set("ua",s).set(h,this.getBrowser()).set(p,this.getCPU()).set(u,this.getDevice()).set(m,this.getEngine()).set(g,this.getOS()).get()}:function(){return new D(i,s,w[i],n).parseUA().get()}})(h)],["getCPU",d(p)],["getDevice",d(u)],["getEngine",d(m)],["getOS",d(g)],["getResult",d(f)],["getUA",function(){return s}],["setUA",function(i){return Si(i)&&(s=Ii(i,500)),this}]]).setUA(s),this):new F(i,e,o).getResult()}D.prototype.get=function(i){return i?this.data.hasOwnProperty(i)?this.data[i]:void 0:this.data},D.prototype.set=function(i,e){return this.data[i]=e,this},D.prototype.setCH=function(i){return this.uaCH=i,this},D.prototype.detectFeature=function(){if(I&&I.userAgent==this.ua)switch(this.itemType){case h:I.brave&&typeof I.brave.isBrave==l.FUNCTION&&this.set(v,"Brave");break;case u:!this.get(k)&&_&&_[E]&&this.set(k,E),"Macintosh"==this.get(N)&&I&&typeof I.standalone!==l.UNDEFINED&&I.maxTouchPoints&&2<I.maxTouchPoints&&this.set(N,"iPad").set(k,o);break;case g:!this.get(v)&&_&&_[T]&&this.set(v,_[T]);break;case f:var e=this.data,i=function(i){return e[i].getItem().detectFeature().get()};this.set(h,i(h)).set(p,i(p)).set(u,i(u)).set(m,i(m)).set(g,i(g))}return this},D.prototype.parseUA=function(){switch(this.itemType!=f&&A.call(this.data,this.ua,this.rgxMap),this.itemType){case h:this.set(P,H(this.get(y)));break;case g:var i;"iOS"==this.get(v)&&"18.6"==this.get(y)&&(i=/\) Version\/([\d\.]+)/.exec(this.ua))&&26<=parseInt(i[1].substring(0,2),10)&&this.set(y,i[1])}return this},D.prototype.parseCH=function(){var i,e=this.uaCH,o=this.rgxMap;switch(this.itemType){case h:case m:var t,r=e[$]||e[L];if(r)for(var a=0;a<r.length;a++){var s=r[a].brand||r[a],n=r[a].version;this.itemType==h&&!/not.a.brand/i.test(s)&&(!t||/Chrom/.test(t)&&s!=vi||t==ki&&/WebView2/.test(s))&&(s=c(s,Ui),(t=this.get(v))&&!/Chrom/.test(t)&&/Chrom/.test(s)||this.set(v,s).set(y,n).set(P,H(n)),t=s),this.itemType==m&&s==vi&&this.set(y,n)}break;case p:var w=e[C];w&&("64"==e[J]&&(w+="64"),A.call(this.data,w+";",o));break;case u:if(e[E]&&this.set(k,E),e[N]&&(this.set(N,e[N]),this.get(k)&&this.get(x)||(A.call(w={},"droid 9; "+e[N]+")",o),!this.get(k)&&w.type&&this.set(k,w.type),!this.get(x)&&w.vendor&&this.set(x,w.vendor))),e[S]){if("string"!=typeof e[S])for(var d=0;!i&&d<e[S].length;)i=c(e[S][d++],qi);else i=c(e[S],qi);this.set(k,i)}break;case g:var b,w=e[T];w&&(b=e[W],w==Ci&&(b=13<=parseInt(H(b),10)?"11":"10"),this.set(v,w).set(y,b)),this.get(v)==Ci&&"Xbox"==e[N]&&this.set(v,"Xbox").set(y,void 0);break;case f:var l=this.data,w=function(i){return l[i].getItem().setCH(e).parseCH().get()};this.set(h,w(h)).set(p,w(p)).set(u,w(u)).set(m,w(m)).set(g,w(g))}return this},F.VERSION="2.0.9",F.BROWSER=B([v,y,P,k]),F.CPU=B([C]),F.DEVICE=B([N,x,k,j,E,i,o,e,G]),F.ENGINE=F.OS=B([v,y]);export{F as UAParser};
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "title": "UAParser.js",
3
3
  "name": "ua-parser-js",
4
- "version": "2.0.8",
4
+ "version": "2.0.9",
5
5
  "author": "Faisal Salman <f@faisalman.com> (http://faisalman.com)",
6
6
  "description": "Detect Browser, Engine, OS, CPU, and Device type/model from User-Agent & Client Hints data. Supports browser & node.js environment",
7
7
  "keywords": [
@@ -223,6 +223,7 @@
223
223
  },
224
224
  "files": [
225
225
  "dist/*.?(m)js",
226
+ "dist/icons",
226
227
  "src"
227
228
  ],
228
229
  "bin": "./script/cli.js",
@@ -1,4 +1,4 @@
1
- // Type definitions for bot-detection submodule of UAParser.js v2.0.8
1
+ // Type definitions for bot-detection submodule of UAParser.js v2.0.9
2
2
  // Project: https://github.com/faisalman/ua-parser-js
3
3
  // Definitions by: Faisal Salman <https://github.com/faisalman>
4
4
 
@@ -1,5 +1,5 @@
1
1
  //////////////////////////////////////////////////
2
- /* bot-detection submodule of UAParser.js v2.0.8
2
+ /* bot-detection submodule of UAParser.js v2.0.9
3
3
  https://github.com/faisalman/ua-parser-js
4
4
  Author: Faisal Salman <f@faisalman.com>
5
5
  AGPLv3 License */
@@ -79,6 +79,9 @@ const AICrawlers = new BotList(Crawlers, 'name', [
79
79
  Crawler.APPLE_BOT,
80
80
  Crawler.APPLE_BOT_EXTENDED,
81
81
 
82
+ // Atlassian
83
+ Crawler.ATLASSIAN_BOT,
84
+
82
85
  // Brave
83
86
  Crawler.BRAVE_BOT,
84
87
 
@@ -86,6 +89,9 @@ const AICrawlers = new BotList(Crawlers, 'name', [
86
89
  Crawler.BYTEDANCE_BYTESPIDER,
87
90
  Crawler.BYTEDANCE_TIKTOKSPIDER,
88
91
 
92
+ // Cloudflare
93
+ Crawler.CLOUDFLARE_AUTORAG,
94
+
89
95
  // Cohere
90
96
  Crawler.COHERE_TRAINING_DATA_CRAWLER,
91
97
 
@@ -106,6 +112,7 @@ const AICrawlers = new BotList(Crawlers, 'name', [
106
112
 
107
113
  // Google
108
114
  Crawler.GOOGLE_EXTENDED,
115
+ Crawler.GOOGLE_NOTEBOOKLM,
109
116
  Crawler.GOOGLE_OTHER,
110
117
  Crawler.GOOGLE_OTHER_IMAGE,
111
118
  Crawler.GOOGLE_OTHER_VIDEO,
@@ -149,6 +156,7 @@ const AICrawlers = new BotList(Crawlers, 'name', [
149
156
 
150
157
  // Semrush
151
158
  Crawler.SEMRUSH_BOT_CONTENTSHAKE,
159
+ Crawler.SEMRUSH_BOT_SWA,
152
160
 
153
161
  // Timpi
154
162
  Crawler.TIMPI_BOT,
@@ -3,7 +3,7 @@
3
3
  // Source: /src/bot-detection/bot-detection.js
4
4
 
5
5
  //////////////////////////////////////////////////
6
- /* bot-detection submodule of UAParser.js v2.0.8
6
+ /* bot-detection submodule of UAParser.js v2.0.9
7
7
  https://github.com/faisalman/ua-parser-js
8
8
  Author: Faisal Salman <f@faisalman.com>
9
9
  AGPLv3 License */
@@ -83,6 +83,9 @@ const AICrawlers = new BotList(Crawlers, 'name', [
83
83
  Crawler.APPLE_BOT,
84
84
  Crawler.APPLE_BOT_EXTENDED,
85
85
 
86
+ // Atlassian
87
+ Crawler.ATLASSIAN_BOT,
88
+
86
89
  // Brave
87
90
  Crawler.BRAVE_BOT,
88
91
 
@@ -90,6 +93,9 @@ const AICrawlers = new BotList(Crawlers, 'name', [
90
93
  Crawler.BYTEDANCE_BYTESPIDER,
91
94
  Crawler.BYTEDANCE_TIKTOKSPIDER,
92
95
 
96
+ // Cloudflare
97
+ Crawler.CLOUDFLARE_AUTORAG,
98
+
93
99
  // Cohere
94
100
  Crawler.COHERE_TRAINING_DATA_CRAWLER,
95
101
 
@@ -110,6 +116,7 @@ const AICrawlers = new BotList(Crawlers, 'name', [
110
116
 
111
117
  // Google
112
118
  Crawler.GOOGLE_EXTENDED,
119
+ Crawler.GOOGLE_NOTEBOOKLM,
113
120
  Crawler.GOOGLE_OTHER,
114
121
  Crawler.GOOGLE_OTHER_IMAGE,
115
122
  Crawler.GOOGLE_OTHER_VIDEO,
@@ -153,6 +160,7 @@ const AICrawlers = new BotList(Crawlers, 'name', [
153
160
 
154
161
  // Semrush
155
162
  Crawler.SEMRUSH_BOT_CONTENTSHAKE,
163
+ Crawler.SEMRUSH_BOT_SWA,
156
164
 
157
165
  // Timpi
158
166
  Crawler.TIMPI_BOT,
@@ -1,4 +1,4 @@
1
- // Type definitions for browser-detection submodule of UAParser.js v2.0.8
1
+ // Type definitions for browser-detection submodule of UAParser.js v2.0.9
2
2
  // Project: https://github.com/faisalman/ua-parser-js
3
3
  // Definitions by: Faisal Salman <https://github.com/faisalman>
4
4
 
@@ -1,5 +1,5 @@
1
1
  //////////////////////////////////////////////////////
2
- /* browser-detection submodule of UAParser.js v2.0.8
2
+ /* browser-detection submodule of UAParser.js v2.0.9
3
3
  https://github.com/faisalman/ua-parser-js
4
4
  Author: Faisal Salman <f@faisalman.com>
5
5
  AGPLv3 License */
@@ -3,7 +3,7 @@
3
3
  // Source: /src/browser-detection/browser-detection.js
4
4
 
5
5
  //////////////////////////////////////////////////////
6
- /* browser-detection submodule of UAParser.js v2.0.8
6
+ /* browser-detection submodule of UAParser.js v2.0.9
7
7
  https://github.com/faisalman/ua-parser-js
8
8
  Author: Faisal Salman <f@faisalman.com>
9
9
  AGPLv3 License */
@@ -1,4 +1,4 @@
1
- // Type definitions for device-detection submodule of UAParser.js v2.0.8
1
+ // Type definitions for device-detection submodule of UAParser.js v2.0.9
2
2
  // Project: https://github.com/faisalman/ua-parser-js
3
3
  // Definitions by: Faisal Salman <https://github.com/faisalman>
4
4
 
@@ -1,5 +1,5 @@
1
1
  /////////////////////////////////////////////////////
2
- /* device-detection submodule of UAParser.js v2.0.8
2
+ /* device-detection submodule of UAParser.js v2.0.9
3
3
  https://github.com/faisalman/ua-parser-js
4
4
  Author: Faisal Salman <f@faisalman.com>
5
5
  AGPLv3 License */
@@ -3,7 +3,7 @@
3
3
  // Source: /src/device-detection/device-detection.js
4
4
 
5
5
  /////////////////////////////////////////////////////
6
- /* device-detection submodule of UAParser.js v2.0.8
6
+ /* device-detection submodule of UAParser.js v2.0.9
7
7
  https://github.com/faisalman/ua-parser-js
8
8
  Author: Faisal Salman <f@faisalman.com>
9
9
  AGPLv3 License */
@@ -3,7 +3,7 @@
3
3
  // Source: /src/enums/ua-parser-enums.js
4
4
 
5
5
  ///////////////////////////////////////////////
6
- /* Enums for UAParser.js v2.0.8
6
+ /* Enums for UAParser.js v2.0.9
7
7
  https://github.com/faisalman/ua-parser-js
8
8
  Author: Faisal Salman <f@faisalman.com>
9
9
  AGPLv3 License */
@@ -16,6 +16,7 @@ export const BrowserName: Readonly<{
16
16
  '2345': '2345',
17
17
  '360': '360',
18
18
  ALIPAY: 'Alipay',
19
+ ALOHA: 'Aloha',
19
20
  AMAYA: 'Amaya',
20
21
  ANDROID: 'Android Browser',
21
22
  ARORA: 'Arora',
@@ -23,6 +24,7 @@ export const BrowserName: Readonly<{
23
24
  AVANT: 'Avant',
24
25
  AVAST: 'Avast Secure Browser',
25
26
  AVG: 'AVG Secure Browser',
27
+ AVIRA: 'Avira Secure Browser',
26
28
  BAIDU: 'Baidu Browser',
27
29
  BASILISK: 'Basilisk',
28
30
  BING: 'Bing',
@@ -92,9 +94,11 @@ export const BrowserName: Readonly<{
92
94
  LG: 'LG Browser',
93
95
  LIBREWOLF: 'LibreWolf',
94
96
  LIEBAO: 'LBBROWSER',
97
+ LIGHTHOUSE: 'Lighthouse',
95
98
  LINE: 'Line',
96
99
  LINKEDIN: 'LinkedIn',
97
100
  LINKS: 'Links',
101
+ LUAKIT: 'Luakit',
98
102
  LUNASCAPE: 'Lunascape',
99
103
  LYNX: 'Lynx',
100
104
  MAEMO: 'Maemo Browser',
@@ -109,6 +113,7 @@ export const BrowserName: Readonly<{
109
113
  NETSCAPE: 'Netscape',
110
114
  NETSURF: 'Netsurf',
111
115
  NOKIA: 'Nokia Browser',
116
+ NORTON: 'Norton Private Browser',
112
117
  OBIGO: 'Obigo',
113
118
  OCULUS: 'Oculus Browser',
114
119
  OMNIWEB: 'OmniWeb',
@@ -424,6 +429,7 @@ export const OSName: Readonly<{
424
429
  UBUNTU_TOUCH: 'Ubuntu Touch',
425
430
  UNIX: 'Unix',
426
431
  VECTORLINUX: 'VectorLinux',
432
+ VEGA_OS: 'Vega OS',
427
433
  WATCHOS: 'watchOS',
428
434
  WEBOS: 'WebOS',
429
435
  WINDOWS: 'Windows',
@@ -471,6 +477,7 @@ export const Extension: Readonly<{
471
477
  ANTHROPIC_CLAUDE_BOT: 'ClaudeBot',
472
478
  ANTHROPIC_CLAUDE_SEARCHBOT: 'Claude-SearchBot',
473
479
  ANTHROPIC_CLAUDE_WEB: 'Claude-Web',
480
+ ATLASSIAN_BOT: 'atlassian-bot',
474
481
  ARCHIVEORG_BOT: 'archive.org_bot',
475
482
  BAIDU_ADS: 'Baidu-ADS',
476
483
  BAIDU_SPIDER: 'Baiduspider',
@@ -486,6 +493,7 @@ export const Extension: Readonly<{
486
493
  BRAVE_BOT: 'Bravebot',
487
494
  BYTEDANCE_BYTESPIDER: 'Bytespider',
488
495
  BYTEDANCE_TIKTOKSPIDER: 'TikTokSpider',
496
+ CLOUDFLARE_AUTORAG: 'Cloudflare-AutoRAG',
489
497
  COMMON_CRAWL_CCBOT: 'CCBot',
490
498
  COCCOC_BOT_WEB: 'coccocbot-web',
491
499
  COCCOC_BOT_IMAGE: 'coccocbot-image',
@@ -517,6 +525,7 @@ export const Extension: Readonly<{
517
525
  GOOGLE_CLOUDVERTEXBOT: 'Google-CloudVertexBot',
518
526
  GOOGLE_EXTENDED: 'Google-Extended',
519
527
  GOOGLE_INSPECTIONTOOL: 'Google-InspectionTool',
528
+ GOOGLE_NOTEBOOKLM: 'Google-NotebookLM',
520
529
  GOOGLE_OTHER: 'GoogleOther',
521
530
  GOOGLE_OTHER_IMAGE: 'GoogleOther-Image',
522
531
  GOOGLE_OTHER_VIDEO: 'GoogleOther-Video',
@@ -561,6 +570,7 @@ export const Extension: Readonly<{
561
570
  SEMRUSH_BOT_BACKLINK: 'SemrushBot-BA',
562
571
  SEMRUSH_BOT_CONTENTSHAKE: 'SemrushBot-OCOB',
563
572
  SEMRUSH_BOT_SEO_CHECKER: 'SemrushBot-SI',
573
+ SEMRUSH_BOT_SWA: 'SemrushBot-SWA',
564
574
  SEZNAM_BOT: 'SeznamBot',
565
575
  SITEIMPROVE: 'Siteimprove',
566
576
  SOGOU_PIC_SPIDER: 'Sogou Pic Spider',
@@ -692,7 +702,8 @@ export const Extension: Readonly<{
692
702
  COHERE_AI: 'Cohere-AI',
693
703
  DISCORD_BOT: 'Discordbot',
694
704
  DUCKDUCKGO_ASSISTBOT: 'DuckAssistBot',
695
- GOOGLE_CHROME_LIGHTHOUSE: 'Chrome-Lighthouse',
705
+ FLIPBOARD_PROXY: 'FlipboardProxy',
706
+ GOOGLE_CHROME_LIGHTHOUSE: 'Lighthouse',
696
707
  GOOGLE_FEEDFETCHER: 'FeedFetcher-Google',
697
708
  GOOGLE_GEMINI_DEEP_RESEARCH: 'Gemini-Deep-Research',
698
709
  GOOGLE_IMAGEPROXY: 'GoogleImageProxy',
@@ -1,5 +1,5 @@
1
1
  ///////////////////////////////////////////////
2
- /* Enums for UAParser.js v2.0.8
2
+ /* Enums for UAParser.js v2.0.9
3
3
  https://github.com/faisalman/ua-parser-js
4
4
  Author: Faisal Salman <f@faisalman.com>
5
5
  AGPLv3 License */
@@ -12,6 +12,7 @@ const BrowserName = Object.freeze({
12
12
  '2345': '2345',
13
13
  '360': '360',
14
14
  ALIPAY: 'Alipay',
15
+ ALOHA: 'Aloha',
15
16
  AMAYA: 'Amaya',
16
17
  ANDROID: 'Android Browser',
17
18
  ARORA: 'Arora',
@@ -19,6 +20,7 @@ const BrowserName = Object.freeze({
19
20
  AVANT: 'Avant',
20
21
  AVAST: 'Avast Secure Browser',
21
22
  AVG: 'AVG Secure Browser',
23
+ AVIRA: 'Avira Secure Browser',
22
24
  BAIDU: 'Baidu Browser',
23
25
  BASILISK: 'Basilisk',
24
26
  BING: 'Bing',
@@ -88,9 +90,11 @@ const BrowserName = Object.freeze({
88
90
  LG: 'LG Browser',
89
91
  LIBREWOLF: 'LibreWolf',
90
92
  LIEBAO: 'LBBROWSER',
93
+ LIGHTHOUSE: 'Lighthouse',
91
94
  LINE: 'Line',
92
95
  LINKEDIN: 'LinkedIn',
93
96
  LINKS: 'Links',
97
+ LUAKIT: 'Luakit',
94
98
  LUNASCAPE: 'Lunascape',
95
99
  LYNX: 'Lynx',
96
100
  MAEMO: 'Maemo Browser',
@@ -105,6 +109,7 @@ const BrowserName = Object.freeze({
105
109
  NETSCAPE: 'Netscape',
106
110
  NETSURF: 'Netsurf',
107
111
  NOKIA: 'Nokia Browser',
112
+ NORTON: 'Norton Private Browser',
108
113
  OBIGO: 'Obigo',
109
114
  OCULUS: 'Oculus Browser',
110
115
  OMNIWEB: 'OmniWeb',
@@ -420,6 +425,7 @@ const OSName = Object.freeze({
420
425
  UBUNTU_TOUCH: 'Ubuntu Touch',
421
426
  UNIX: 'Unix',
422
427
  VECTORLINUX: 'VectorLinux',
428
+ VEGA_OS: 'Vega OS',
423
429
  WATCHOS: 'watchOS',
424
430
  WEBOS: 'WebOS',
425
431
  WINDOWS: 'Windows',
@@ -467,6 +473,7 @@ const Extension = Object.freeze({
467
473
  ANTHROPIC_CLAUDE_BOT: 'ClaudeBot',
468
474
  ANTHROPIC_CLAUDE_SEARCHBOT: 'Claude-SearchBot',
469
475
  ANTHROPIC_CLAUDE_WEB: 'Claude-Web',
476
+ ATLASSIAN_BOT: 'atlassian-bot',
470
477
  ARCHIVEORG_BOT: 'archive.org_bot',
471
478
  BAIDU_ADS: 'Baidu-ADS',
472
479
  BAIDU_SPIDER: 'Baiduspider',
@@ -482,6 +489,7 @@ const Extension = Object.freeze({
482
489
  BRAVE_BOT: 'Bravebot',
483
490
  BYTEDANCE_BYTESPIDER: 'Bytespider',
484
491
  BYTEDANCE_TIKTOKSPIDER: 'TikTokSpider',
492
+ CLOUDFLARE_AUTORAG: 'Cloudflare-AutoRAG',
485
493
  COMMON_CRAWL_CCBOT: 'CCBot',
486
494
  COCCOC_BOT_WEB: 'coccocbot-web',
487
495
  COCCOC_BOT_IMAGE: 'coccocbot-image',
@@ -513,6 +521,7 @@ const Extension = Object.freeze({
513
521
  GOOGLE_CLOUDVERTEXBOT: 'Google-CloudVertexBot',
514
522
  GOOGLE_EXTENDED: 'Google-Extended',
515
523
  GOOGLE_INSPECTIONTOOL: 'Google-InspectionTool',
524
+ GOOGLE_NOTEBOOKLM: 'Google-NotebookLM',
516
525
  GOOGLE_OTHER: 'GoogleOther',
517
526
  GOOGLE_OTHER_IMAGE: 'GoogleOther-Image',
518
527
  GOOGLE_OTHER_VIDEO: 'GoogleOther-Video',
@@ -557,6 +566,7 @@ const Extension = Object.freeze({
557
566
  SEMRUSH_BOT_BACKLINK: 'SemrushBot-BA',
558
567
  SEMRUSH_BOT_CONTENTSHAKE: 'SemrushBot-OCOB',
559
568
  SEMRUSH_BOT_SEO_CHECKER: 'SemrushBot-SI',
569
+ SEMRUSH_BOT_SWA: 'SemrushBot-SWA',
560
570
  SEZNAM_BOT: 'SeznamBot',
561
571
  SITEIMPROVE: 'Siteimprove',
562
572
  SOGOU_PIC_SPIDER: 'Sogou Pic Spider',
@@ -688,7 +698,8 @@ const Extension = Object.freeze({
688
698
  COHERE_AI: 'Cohere-AI',
689
699
  DISCORD_BOT: 'Discordbot',
690
700
  DUCKDUCKGO_ASSISTBOT: 'DuckAssistBot',
691
- GOOGLE_CHROME_LIGHTHOUSE: 'Chrome-Lighthouse',
701
+ FLIPBOARD_PROXY: 'FlipboardProxy',
702
+ GOOGLE_CHROME_LIGHTHOUSE: 'Lighthouse',
692
703
  GOOGLE_FEEDFETCHER: 'FeedFetcher-Google',
693
704
  GOOGLE_GEMINI_DEEP_RESEARCH: 'Gemini-Deep-Research',
694
705
  GOOGLE_IMAGEPROXY: 'GoogleImageProxy',
@@ -3,7 +3,7 @@
3
3
  // Source: /src/enums/ua-parser-enums.js
4
4
 
5
5
  ///////////////////////////////////////////////
6
- /* Enums for UAParser.js v2.0.8
6
+ /* Enums for UAParser.js v2.0.9
7
7
  https://github.com/faisalman/ua-parser-js
8
8
  Author: Faisal Salman <f@faisalman.com>
9
9
  AGPLv3 License */
@@ -16,6 +16,7 @@ const BrowserName = Object.freeze({
16
16
  '2345': '2345',
17
17
  '360': '360',
18
18
  ALIPAY: 'Alipay',
19
+ ALOHA: 'Aloha',
19
20
  AMAYA: 'Amaya',
20
21
  ANDROID: 'Android Browser',
21
22
  ARORA: 'Arora',
@@ -23,6 +24,7 @@ const BrowserName = Object.freeze({
23
24
  AVANT: 'Avant',
24
25
  AVAST: 'Avast Secure Browser',
25
26
  AVG: 'AVG Secure Browser',
27
+ AVIRA: 'Avira Secure Browser',
26
28
  BAIDU: 'Baidu Browser',
27
29
  BASILISK: 'Basilisk',
28
30
  BING: 'Bing',
@@ -92,9 +94,11 @@ const BrowserName = Object.freeze({
92
94
  LG: 'LG Browser',
93
95
  LIBREWOLF: 'LibreWolf',
94
96
  LIEBAO: 'LBBROWSER',
97
+ LIGHTHOUSE: 'Lighthouse',
95
98
  LINE: 'Line',
96
99
  LINKEDIN: 'LinkedIn',
97
100
  LINKS: 'Links',
101
+ LUAKIT: 'Luakit',
98
102
  LUNASCAPE: 'Lunascape',
99
103
  LYNX: 'Lynx',
100
104
  MAEMO: 'Maemo Browser',
@@ -109,6 +113,7 @@ const BrowserName = Object.freeze({
109
113
  NETSCAPE: 'Netscape',
110
114
  NETSURF: 'Netsurf',
111
115
  NOKIA: 'Nokia Browser',
116
+ NORTON: 'Norton Private Browser',
112
117
  OBIGO: 'Obigo',
113
118
  OCULUS: 'Oculus Browser',
114
119
  OMNIWEB: 'OmniWeb',
@@ -424,6 +429,7 @@ const OSName = Object.freeze({
424
429
  UBUNTU_TOUCH: 'Ubuntu Touch',
425
430
  UNIX: 'Unix',
426
431
  VECTORLINUX: 'VectorLinux',
432
+ VEGA_OS: 'Vega OS',
427
433
  WATCHOS: 'watchOS',
428
434
  WEBOS: 'WebOS',
429
435
  WINDOWS: 'Windows',
@@ -471,6 +477,7 @@ const Extension = Object.freeze({
471
477
  ANTHROPIC_CLAUDE_BOT: 'ClaudeBot',
472
478
  ANTHROPIC_CLAUDE_SEARCHBOT: 'Claude-SearchBot',
473
479
  ANTHROPIC_CLAUDE_WEB: 'Claude-Web',
480
+ ATLASSIAN_BOT: 'atlassian-bot',
474
481
  ARCHIVEORG_BOT: 'archive.org_bot',
475
482
  BAIDU_ADS: 'Baidu-ADS',
476
483
  BAIDU_SPIDER: 'Baiduspider',
@@ -486,6 +493,7 @@ const Extension = Object.freeze({
486
493
  BRAVE_BOT: 'Bravebot',
487
494
  BYTEDANCE_BYTESPIDER: 'Bytespider',
488
495
  BYTEDANCE_TIKTOKSPIDER: 'TikTokSpider',
496
+ CLOUDFLARE_AUTORAG: 'Cloudflare-AutoRAG',
489
497
  COMMON_CRAWL_CCBOT: 'CCBot',
490
498
  COCCOC_BOT_WEB: 'coccocbot-web',
491
499
  COCCOC_BOT_IMAGE: 'coccocbot-image',
@@ -517,6 +525,7 @@ const Extension = Object.freeze({
517
525
  GOOGLE_CLOUDVERTEXBOT: 'Google-CloudVertexBot',
518
526
  GOOGLE_EXTENDED: 'Google-Extended',
519
527
  GOOGLE_INSPECTIONTOOL: 'Google-InspectionTool',
528
+ GOOGLE_NOTEBOOKLM: 'Google-NotebookLM',
520
529
  GOOGLE_OTHER: 'GoogleOther',
521
530
  GOOGLE_OTHER_IMAGE: 'GoogleOther-Image',
522
531
  GOOGLE_OTHER_VIDEO: 'GoogleOther-Video',
@@ -561,6 +570,7 @@ const Extension = Object.freeze({
561
570
  SEMRUSH_BOT_BACKLINK: 'SemrushBot-BA',
562
571
  SEMRUSH_BOT_CONTENTSHAKE: 'SemrushBot-OCOB',
563
572
  SEMRUSH_BOT_SEO_CHECKER: 'SemrushBot-SI',
573
+ SEMRUSH_BOT_SWA: 'SemrushBot-SWA',
564
574
  SEZNAM_BOT: 'SeznamBot',
565
575
  SITEIMPROVE: 'Siteimprove',
566
576
  SOGOU_PIC_SPIDER: 'Sogou Pic Spider',
@@ -692,7 +702,8 @@ const Extension = Object.freeze({
692
702
  COHERE_AI: 'Cohere-AI',
693
703
  DISCORD_BOT: 'Discordbot',
694
704
  DUCKDUCKGO_ASSISTBOT: 'DuckAssistBot',
695
- GOOGLE_CHROME_LIGHTHOUSE: 'Chrome-Lighthouse',
705
+ FLIPBOARD_PROXY: 'FlipboardProxy',
706
+ GOOGLE_CHROME_LIGHTHOUSE: 'Lighthouse',
696
707
  GOOGLE_FEEDFETCHER: 'FeedFetcher-Google',
697
708
  GOOGLE_GEMINI_DEEP_RESEARCH: 'Gemini-Deep-Research',
698
709
  GOOGLE_IMAGEPROXY: 'GoogleImageProxy',
@@ -1,4 +1,4 @@
1
- // Type definitions for Helpers submodule of UAParser.js v2.0.8
1
+ // Type definitions for Helpers submodule of UAParser.js v2.0.9
2
2
  // Project: https://github.com/faisalman/ua-parser-js
3
3
  // Definitions by: Faisal Salman <https://github.com/faisalman>
4
4