device_detector 1.1.1 → 1.1.2

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.
@@ -371,6 +371,9 @@ HTC:
371
371
  - regex: 'HTC[ _-]Flyer Build'
372
372
  device: 'tablet'
373
373
  model: 'Flyer'
374
+ - regex: 'HTC[ _-](A103) Plus'
375
+ device: 'tablet'
376
+ model: '$1 Plus'
374
377
  - regex: 'HTC[ _-](A103)'
375
378
  device: 'tablet'
376
379
  model: '$1'
@@ -570,6 +573,8 @@ Nokia:
570
573
  model: '$1 Classic'
571
574
  - regex: 'Nokia ?([0-9]{4})s(?:-)?'
572
575
  model: '$1 Slide'
576
+ - regex: 'Nokia ?([0-9]{4}) V Flip'
577
+ model: '$1 Flip'
573
578
  - regex: 'Nokia ?([0-9]{4})'
574
579
  model: '$1'
575
580
  - regex: '(?: )?Nokia([235][0-9]{2})(?: Build|[_);/])'
@@ -880,19 +885,21 @@ TiPhone:
880
885
 
881
886
  # TiVo (https://www.tivo.com/)
882
887
  TiVo:
883
- regex: 'TIVO[ ,]'
888
+ regex: 'TIVO[ ,-]'
884
889
  device: 'tv'
885
890
  models:
886
891
  - regex: 'STREAM 4K'
887
892
  model: 'Stream 4K'
888
893
  - regex: 'TCD8F6000'
889
894
  model: 'TCD8F6000'
895
+ - regex: 'TiVo-([a-z0-9]+)-([a-z0-9]+)'
896
+ model: '$2'
890
897
 
891
898
  # Apple
892
899
  Apple:
893
- regex: '(?:iTunes-)?Apple[ _]?TV|Apple/|(?:Apple-|iTunes-)?(?<!like )(?:iPad|iPhone)(?!\: Build/)|iPh(?:[0-9]|1[0-4]),[0-9]|CFNetwork|HomePod|AirPlay|Watch ?OS|Watch1,[12]|MDCR_Mac|ICRU_iP(?:ad|hone)|Mac OS X[,;]|macOS,'
900
+ regex: '(?:iTunes-)?Apple[ _]?TV|Apple/|(?:Apple-|iTunes-)?(?<!like )(?:iPad|iPhone)(?!\: Build/)|iPh(?:[0-9]|1[0-4]),[0-9]|CFNetwork|HomePod|AirPlay|AirPodcasts/|Watch ?OS|Watch1,[12]|MDCR_Mac|ICRU_iP(?:ad|hone)|Mac OS X[,;]|macOS,|for Apple Watch'
894
901
  models:
895
- - regex: 'HomePod'
902
+ - regex: '(?:HomePod|AirPodcasts/)'
896
903
  device: 'smart speaker'
897
904
  model: 'HomePod'
898
905
  - regex: 'AirPlay'
@@ -930,6 +937,24 @@ Apple:
930
937
  - regex: 'Watch5,1[02]'
931
938
  device: 'wearable'
932
939
  model: 'Watch SE 44mm'
940
+ - regex: 'Watch6,1[02]'
941
+ device: 'wearable'
942
+ model: 'Watch SE (Gen 2) 40mm'
943
+ - regex: 'Watch6,1[13]'
944
+ device: 'wearable'
945
+ model: 'Watch SE (Gen 2) 44mm'
946
+ - regex: 'Watch6,1[46]'
947
+ device: 'wearable'
948
+ model: 'Watch Series 8 41mm'
949
+ - regex: 'Watch6,1[57]'
950
+ device: 'wearable'
951
+ model: 'Watch Series 8 45mm'
952
+ - regex: 'Watch6,18'
953
+ device: 'wearable'
954
+ model: 'Watch Ultra'
955
+ - regex: 'Watch7,5'
956
+ device: 'wearable'
957
+ model: 'Watch Ultra 2'
933
958
  - regex: 'Watch([456]),[13]'
934
959
  device: 'wearable'
935
960
  model: 'Watch Series $1 40mm'
@@ -942,7 +967,13 @@ Apple:
942
967
  - regex: 'Watch6,[79]'
943
968
  device: 'wearable'
944
969
  model: 'Watch Series 7 45mm'
945
- - regex: 'Watch'
970
+ - regex: 'Watch7,[13]'
971
+ device: 'wearable'
972
+ model: 'Watch Series 9 41mm'
973
+ - regex: 'Watch7,[24]'
974
+ device: 'wearable'
975
+ model: 'Watch Series 9 45mm'
976
+ - regex: 'Watch|for Apple Watch'
946
977
  device: 'wearable'
947
978
  model: 'Watch'
948
979
 
@@ -1384,6 +1415,18 @@ Apple:
1384
1415
  - regex: '(?:MDCR_|ICRU_|Apple-)?iPh(?:one)?14[C,_]7| 14\)$'
1385
1416
  model: 'iPhone 14'
1386
1417
  device: 'phablet'
1418
+ - regex: '(?:MDCR_|ICRU_|Apple-)?iPh(?:one)?15[C,_]5| 15PLUS\)$'
1419
+ model: 'iPhone 15 Plus'
1420
+ device: 'phablet'
1421
+ - regex: '(?:MDCR_|ICRU_|Apple-)?iPh(?:one)?16[C,_]1| 15PRO\)$'
1422
+ model: 'iPhone 15 Pro'
1423
+ device: 'phablet'
1424
+ - regex: '(?:MDCR_|ICRU_|Apple-)?iPh(?:one)?16[C,_]2| 15PROMAX\)$'
1425
+ model: 'iPhone 15 Pro Max'
1426
+ device: 'phablet'
1427
+ - regex: '(?:MDCR_|ICRU_|Apple-)?iPh(?:one)?15[C,_]4| 15\)$'
1428
+ model: 'iPhone 15'
1429
+ device: 'phablet'
1387
1430
 
1388
1431
  # specific tablet devices
1389
1432
  - regex: '(?:MDCR_|ICRU_|Apple-)?iPad1[C,_]1'
@@ -1709,9 +1752,13 @@ MicroMax:
1709
1752
 
1710
1753
  # Acteck
1711
1754
  Acteck:
1712
- regex: 'BLECK'
1755
+ regex: 'BLECK|AT723C(?:[);/ ]|$)'
1713
1756
  device: 'tablet'
1714
- model: 'Bleck'
1757
+ models:
1758
+ - regex: 'AT723C'
1759
+ model: 'Aikun AT723C'
1760
+ - regex: 'BLECK'
1761
+ model: 'Bleck'
1715
1762
 
1716
1763
  # Alba
1717
1764
  Alba:
@@ -2035,7 +2082,7 @@ Acer:
2035
2082
 
2036
2083
  # Advan or advan digital
2037
2084
  Advan:
2038
- regex: '(?:ADVAN (?:M4|S40|T5C)|i7U|S45E|S50H|I7D|i55[KD]|i4U|S7D|S4Z|i5[KE]|S5E[ _]NXT|S5J\+|S4\+|1011|E1C_3G)(?:[);/ ]|$)| (?:E1C Pro|5505|5202|50(?:[46]1|5[89]|62)|600[234]|6[25]01|Android [56].*; (?:i5C|i7A)|i5G)(?: Build|[;)])'
2085
+ regex: '(?:ADVAN (?:M4|S40|T5C)|i7U|S45E|S50H|I7D|i55[KD]|i4U|S7D|S4Z|i5[KE]|S5E[ _]NXT|S5J\+|S4\+|1011|E1C_3G)(?:[);/ ]|$)| (?:E1C Pro|5505|5202|50(?:[46]1|5[89]|62)|600[234]|6[25]01|Android [56].*; (?:i5C|i7A)|i5G|E1C 3G)(?: Build|[;)])'
2039
2086
  device: 'smartphone'
2040
2087
  models:
2041
2088
  - regex: 'ADVAN M4'
@@ -2066,7 +2113,7 @@ Advan:
2066
2113
  model: 'G3 Pro'
2067
2114
  - regex: '(S45E|50[46]1|505[89]|5062|S50H|I7D|S7D|S4Z|S5J\+|S4\+|i5C)(?:[);/ ]|$)'
2068
2115
  model: '$1'
2069
- - regex: 'E1C_3G'
2116
+ - regex: 'E1C[_ ]3G'
2070
2117
  device: 'tablet'
2071
2118
  model: 'E1C 3G'
2072
2119
  - regex: 'E1C Pro'
@@ -2124,11 +2171,14 @@ AGM:
2124
2171
 
2125
2172
  # Airis
2126
2173
  Airis:
2127
- regex: 'AIRIS'
2174
+ regex: 'AIRIS|PhonePAD 83G'
2128
2175
  device: 'smartphone'
2129
2176
  models:
2130
2177
  - regex: 'TM50QZ(?:[);/ ]|$)'
2131
2178
  model: 'TM50QZ'
2179
+ - regex: 'PhonePAD 83G'
2180
+ device: 'tablet'
2181
+ model: 'PhonePAD 83G'
2132
2182
 
2133
2183
  # Airness
2134
2184
  Airness:
@@ -3574,6 +3624,8 @@ Asus:
3574
3624
  model: 'ROG Phone 6'
3575
3625
  - regex: '(?:ASUS_)?(?:AI2203)'
3576
3626
  model: 'ROG Phone 6D'
3627
+ - regex: '(?:ASUS_)?(?:AI2205)'
3628
+ model: 'ROG Phone 7'
3577
3629
 
3578
3630
  # desktop detections
3579
3631
  - regex: 'ZN220IC'
@@ -3912,7 +3964,7 @@ Bluegood:
3912
3964
 
3913
3965
  # Blackview
3914
3966
  Blackview:
3915
- regex: 'Blackview|(BL8800|BV([24-9]000|8800|[46]900|(5[1589]|9[135689])00|6[1368]00|7100)(?:[ _](?:PRO))?|(P10000(?:[ _](?:PRO))?)|omega[ _]pro|Alife[ _][PS]1|Heatwave|DM550|BV9700Pro|(?<!Lenovo[_ ])A[68]0(?:Pro)?\))|(?:SOLID 4 G2|A[86]0Plus|A80S|BL6000Pro|BL8800Pro|R6 Lite|P2Lite|A8 MAX|A30-RU|A20Pro|Android 10;(?: [\w-]+;)? Tab[89]|Android 10(?:[\d.]*);(?: [\w-]+;)? (?:A80)|Android 11(?:[\d.]*);(?: [\w-]+;)? (?:A95)|Android 1[12];(?: [\w-]+;)? (?:A[79]0|A70 Pro|A55 Pro|Tab 1[0135]|Tab 6)|BV500|BV[579]200)(?:[);/ ]|$)'
3967
+ regex: 'Blackview|(BL8800|BV([24-9]000|8800|[46]900|(5[1589]|9[135689])00|6[1368]00|7100)(?:[ _](?:PRO))?|(P10000(?:[ _](?:PRO))?)|omega[ _]pro|Alife[ _][PS]1|Heatwave|DM550|BV9700Pro|(?<!Lenovo[_ ])A[68]0(?:Pro)?\))|(?:SOLID 4 G2|A[86]0Plus|A80S|BL6000Pro|BL8800Pro|R6 Lite|P2Lite|A8 MAX|A30-RU|A20Pro|Android 10;(?: [\w-]+;)? Tab[89]|Android 10(?:[\d.]*);(?: [\w-]+;)? (?:A80)|Android 11(?:[\d.]*);(?: [\w-]+;)? (?:A95)|Android 1[12];(?: [\w-]+;)? (?:A[79]0|A70 Pro|A55 Pro|Tab 1[01356]|Tab 6)|BV500|BV[579]200|SOLID_4G1|BV5300 Pro)(?:[);/ ]|$)'
3916
3968
  device: 'smartphone'
3917
3969
  models:
3918
3970
  - regex: 'A([2678]0|55) ?Pro(?:[);/ ]|$)'
@@ -3937,6 +3989,8 @@ Blackview:
3937
3989
  model: '$1 Pro'
3938
3990
  - regex: 'Blackview (A[78]|E7S)'
3939
3991
  model: '$1'
3992
+ - regex: 'SOLID_4G1'
3993
+ model: 'Solid-4 G1'
3940
3994
  - regex: 'SOLID 4 G2'
3941
3995
  model: 'Solid-4 G2'
3942
3996
  - regex: '(BV6[13]00)(?:[);/ ]|$)'
@@ -3956,7 +4010,7 @@ Blackview:
3956
4010
  - regex: 'Tab 11 SE(?:[);/ ]|$)'
3957
4011
  device: 'tablet'
3958
4012
  model: 'Tab 11 SE'
3959
- - regex: ' Tab ?([689]|1[0135])(?:[);/ ]|$)'
4013
+ - regex: ' Tab ?([689]|1[01356])(?:[);/ ]|$)'
3960
4014
  device: 'tablet'
3961
4015
  model: 'Tab $1'
3962
4016
 
@@ -4098,7 +4152,7 @@ Brondi:
4098
4152
 
4099
4153
  # VGO TEL (vgotel.com)
4100
4154
  VGO TEL:
4101
- regex: 'VGOTEL|(?:Venture V(?:[278]|12)|VentureV10|Ocean[_ ][689]|Ocean9L|NEW [57]|NEW 11|i_Smart)(?:[);/ ]|$)'
4155
+ regex: 'VGOTEL|(?:Venture V(?:[278]|12)|VentureV10|Ocean[_ ][689]|Ocean9L|NEW (?:11|22|[57])|i_Smart)(?:[);/ ]|$)'
4102
4156
  device: 'smartphone'
4103
4157
  models:
4104
4158
  - regex: 'Venture ?V([278]|1[02])(?:[);/ ]|$)'
@@ -4112,7 +4166,7 @@ VGO TEL:
4112
4166
 
4113
4167
  # Vivo (vivo.com.cn, vivo.com)
4114
4168
  Vivo:
4115
- regex: '((?:VIV-|BBG-)?(?<!FBCR/|NOA |Gtel )vivo(?!(?:Browser)| 4G_r))|iQOO Neo \d|(?:V1730(D[AT]|GA)|V18(01A0|13B[AT])|1819|V1937|I(?:192[78]|201[28])|V(?:2006|202[2-9]|203[0-35-9]|204[0-3568]|205[02-5789]|206[015689]|2070|210[12459]|211[01]|212[0469])|V(?:2026|2031|2036|2043)_21|V1936AL|V(?:1732|1809|181[3468]|182[149]|183[1268]|1901|191[13469]|192[1-48]|193[0246]|194[15]|195[05]|196[235]|198[16]|1990|200[125]|201[12]|202[03-5]|203[146]|204[6789]|205[45679]|2066B|206[1568]|207[23]|208[05]|2099|2106|211[18]|212[135]|213[346]|214[1358]|2162)A|V1824BA|V(?:1731|1818|2020)CA|V(?:1818|1938)CT|V(?:1730|2031)EA|V(?:1732|1809|181[3468]|182[19]|183[1268]|1901|1913|1938)T|V2029_PK|V2044|V2069A|V217[12]A|I201[19]|I2126|X50 Pro\+|I220[12368]|I2127|V211[4-8]A?|V204[57]A?|V210[28]A?|I2009|I2017|I2022|V215[4678]A|V215[0-478]|V218[03568]A|V2180GA|V219[069]A|V213[012459]A?|V2023EA|V1962BA|V212[57]|V214[0-79]|V1930|V216[0289]|V2164[KP]A|V216[234568]A|V217[08]A|PA2170|V220[37]A|V220[1-9]|V221[789]A|V221[247]|V222[079]A|V222[18]|V22[34]1A|V224[234]A|V224[67]|V2266A|V2301A|V223[189]A|V223[017]|V2254A|V228[34]A|S7t 5G| (?:Y30g|Y20T|Y31s 5G|Y33s|Y50t|Y55s 5G)|V2166(?:BA)?|iQOO U[13]x?|NEX 3s 5G)(?:[);/ ]|$)'
4169
+ regex: '((?:VIV-|BBG-)?(?<!FBCR/|NOA |Gtel )vivo(?!(?:Browser)| 4G_r))|iQOO Neo \d|(?:V1730(D[AT]|GA)|V18(01A0|13B[AT])|1819|V1937|I(?:192[78]|201[28])|V(?:2006|202[2-9]|203[0-35-9]|204[0-3568]|205[02-5789]|206[015689]|2070|210[12459]|211[01]|212[0469])|V(?:2026|2031|2036|2043)_21|V1936AL|V(?:1732|1809|181[3468]|182[149]|183[1268]|1901|191[13469]|192[1-48]|193[0246]|194[15]|195[05]|196[235]|198[16]|1990|200[125]|201[12]|202[03-5]|203[146]|204[6789]|205[45679]|2066B|206[1568]|207[23]|208[05]|2099|2106|211[18]|212[135]|213[346]|214[1358]|2162)A|V1824BA|V(?:1731|1818|2020)CA|V(?:1818|1938)CT|V(?:1730|2031)EA|V(?:1732|1809|181[3468]|182[19]|183[1268]|1901|1913|1938)T|V2029_PK|V2044|V2069A|V217[12]A|I201[19]|I2126|X50 Pro\+|I220[12368]|I2127|V211[4-8]A?|V204[57]A?|V210[28]A?|I2009|I2017|I2022|V215[4678]A|V215[0-478]|V218[03568]A|V2180GA|V219[069]A|V213[012459]A?|V2023EA|V1962BA|V212[57]|V214[0-79]|V1930|V216[0289]|V2164[KP]A|V216[234568]A|V217[08]A|PA2170|V220[37]A|V220[1-9]|V221[789]A|V221[247]|V222[079]A|V222[189]|V22[34]1A|V224[234]A|V224[679]|V2266A|V2301A|V2302|V223[189]A|V223[0178]|V2253|V2254A?|V228[34]A|S7t 5G| (?:Y30g|Y20T|Y31s 5G|Y33s|Y50t|Y55s 5G)|V2166(?:BA)?|iQOO U[13]x?|NEX 3s 5G)(?:[);/ ]|$)'
4116
4170
  device: 'smartphone'
4117
4171
  models:
4118
4172
  - regex: 'PA2170(?:[);/ ]|$)'
@@ -4277,6 +4331,8 @@ Vivo:
4277
4331
  model: 'T1x'
4278
4332
  - regex: 'V2188A'
4279
4333
  model: 'T2x'
4334
+ - regex: 'V2253'
4335
+ model: 'T2x 5G'
4280
4336
  - regex: 'V1962BA'
4281
4337
  model: 'G1 5G'
4282
4338
  - regex: 'V2203A(?:[);/ ]|$)'
@@ -4477,8 +4533,10 @@ Vivo:
4477
4533
  model: 'Y01'
4478
4534
  - regex: 'V2166(?:[);/ ]|$)'
4479
4535
  model: 'Y01A'
4480
- - regex: '(?:V2203|V2221)(?:[);/ ]|$)'
4536
+ - regex: '(?:V2203|V222[19])(?:[);/ ]|$)'
4481
4537
  model: 'Y02s'
4538
+ - regex: '(?:V2254)(?:[);/ ]|$)'
4539
+ model: 'Y02t'
4482
4540
  - regex: '(?:V2217)(?:[);/ ]|$)'
4483
4541
  model: 'Y02'
4484
4542
  - regex: 'vivo 19(?:04|40)(?:[);/ ]|$)'
@@ -4501,8 +4559,12 @@ Vivo:
4501
4559
  model: 'Y19'
4502
4560
  - regex: 'V202[79](?:_PK)?(?:[);/ ]|$)'
4503
4561
  model: 'Y20'
4504
- - regex: 'V2207(?:[);/ ]|$)'
4562
+ - regex: '(?:V2207|V2238)(?:[);/ ]|$)'
4505
4563
  model: 'Y22'
4564
+ - regex: 'V2249'
4565
+ model: 'Y27'
4566
+ - regex: 'V2302'
4567
+ model: 'Y27 5G'
4506
4568
  - regex: 'V2206(?:[);/ ]|$)'
4507
4569
  model: 'Y22s'
4508
4570
  - regex: 'vivo 1613(?:[);/ ]|$)'
@@ -6150,7 +6212,7 @@ Cube:
6150
6212
 
6151
6213
  # Meta (https://about.facebook.com/), former Oculus (https://www.oculus.com/)
6152
6214
  Meta:
6153
- regex: '(?:Pacific|Quest).+OculusBrowser|Standalone HMD'
6215
+ regex: '(?:Pacific|(?<!like )Quest).+OculusBrowser|Standalone HMD'
6154
6216
  device: 'wearable'
6155
6217
  models:
6156
6218
  - regex: 'Pacific'
@@ -6162,7 +6224,7 @@ Meta:
6162
6224
 
6163
6225
  # CUBOT (www.cubot.net)
6164
6226
  CUBOT:
6165
- regex: 'CUBOT|(?<!QUMO )QUEST(?!(?:[0-9]|\s[0-9]))(?: LITE)?|(?:(?<!(?:Redmi|Tegra) )NOTE 7|(?<!Galaxy )NOTE 20(?: PRO)?|RAINBOW 2|KING_KONG_3|KINGKONG [5679]|KINGKONG 5 Pro|ZORRO 001|KINGKONG[_ ](?:MINI2?|POWER)|KING KONG CS|R15_PRO|S550 Pro| CHEETAH| [RX]19|X19 S|(?<!MI )MAX 3|Android 9;(?: [\w-]+;)? (?:J5|MAX 2)|Android [89](?:[\d.]*);(?: [\w-]+;)? R15(?! Dream Mirror)|Android 11;(?: [\w-]+;)? (?:Pocket|NOTE 9|P50)|POCKET 3)(?:[);/ ]|$)'
6227
+ regex: 'CUBOT|(?<!QUMO |like )QUEST(?!(?:[0-9]|\s[0-9]))(?: LITE)?|(?:(?<!(?:Redmi|Tegra) )NOTE 7|(?<!Galaxy )NOTE 20(?: PRO)?|RAINBOW 2|KING_KONG_3|KINGKONG [5679]|KINGKONG 5 Pro|ZORRO 001|KINGKONG[_ ](?:MINI2?|POWER)|KING KONG CS|R15_PRO|S550 Pro| CHEETAH| [RX]19|X19 S|(?<!MI )MAX 3|Android 9;(?: [\w-]+;)? (?:J5|MAX 2|X20 PRO)|Android [89](?:[\d.]*);(?: [\w-]+;)? R15(?! Dream Mirror| Neo)|Android 11;(?: [\w-]+;)? (?:Pocket|NOTE 9|P50)|POCKET 3)(?:[);/ ]|$)'
6166
6228
  device: 'smartphone'
6167
6229
  models:
6168
6230
  - regex: 'POCKET (3)'
@@ -6197,6 +6259,8 @@ CUBOT:
6197
6259
  model: 'Quest Lite'
6198
6260
  - regex: 'QUEST'
6199
6261
  model: 'Quest'
6262
+ - regex: 'X20 PRO'
6263
+ model: 'X20 Pro'
6200
6264
  - regex: 'ZORRO 001'
6201
6265
  model: 'Zorro 001'
6202
6266
  - regex: 'CUBOT[ _]Echo'
@@ -6423,7 +6487,7 @@ Desay:
6423
6487
 
6424
6488
  # DEXP (dexp.club)
6425
6489
  DEXP:
6426
- regex: 'DEXP|(?:Ursus|Ixion)[ _]([^;/)]+)|H135[ _]Build|Larus_TV1|Ixion(?:ML4.7|ES250)|M150Storm|(?:SENIOR|F4[38]D8000K|VA(?:[12]10|170)|ML450|MS[56]50|BL(?:[123]50|160|155)|BS(?:155|160|[1256]50)|(?<!ILIUM )S(?:3[78]0|2[89]0|670)|AL(?:[12]40|[23]50)|AS(?:155|[123]60)| (?:B260|B245|H[12]10|H270|L470|N280i|P310|P380i?|R1[18]0|Q110|E1[78]0|E[12]10|B(?:450|340|35[05])|M170|M445|M[12]10|T155|H32F8000C|U43F8000Q|A(?:1[456]0|340|[34]55)|GS15[035]|GL[23]55|G25[035]|G355|G550|G15[05]|ES750|XL150|Z[1-4]55|H[13]70|H[34]10|P[45]10|L2[17]0)|Z250|A440|(?<!MITO )A350(?! TV)|N[13]80i|(?<!Blade )L1[178]0|L3[17]0i|(?<!VOX )G450|G660|Q[123]10|Q[12]80|N[234]10|N[35]70|EX111|S[245]70|S[127]70i|S169|S110|S180i?|S770|A555(?! Universe)|(?:U75H8000K|U50H8000E|U65H8000K|U50G8000QG|U55H8050E|U43G9000CG|U43F8100QG|U55G8000QG|U50G9000CG|H32H8001C|H32G8000CG|H32F8000QG?(?:-[abc])?|H32F8[01]00Q|H39F8000Q|F43H8000K|U43H8000E|U43F8000EG|F43F8000[CQ]G?|F32[FG]8000C|H24H8000C|H24F8000Q|F43F8000Q-G)(?:-[AbcfedH])?|Android 8(?:[\d.]*);(?: [\w-]+;)? A240|android 10;(?: [\w-]+;)? (?:B[23]1|B38|B1[87]|K28|K[34]1)|android 9;(?: [\w-]+;)? (?:K18|K21|B11)|android 11;(?: [\w-]+;)? (?:D[12]1|T21|K[345]1|K[342]8|K61|C3[78]|B28|B27|H28)|H32H8051C-G|H3218000K|U50H8050EG|H32I8000K|U65G8000Q|U43G8100QG|Android 11;(?: [\w-]+;)? P11)(?:[);/ ]|$)'
6490
+ regex: 'DEXP|(?:Ursus|Ixion)[ _]([^;/)]+)|H135[ _]Build|Larus_TV1|Ixion(?:ML4.7|ES250)|M150Storm|(?:SENIOR|F4[38]D8000K|VA(?:[12]10|170)|ML450|MS[56]50|BL(?:[123]50|160|155)|BS(?:155|160|[1256]50)|(?<!ILIUM )S(?:3[78]0|2[89]0|670)|AL(?:[12]40|[23]50)|AS(?:155|[123]60)| (?:B260|B245|H[12]10|H270|L470|N280i|P310|P380i?|R1[18]0|Q110|E1[78]0|E[12]10|B(?:450|340|35[05])|M170|M445|M[12]10|T155|H32F8000C|U43F8000Q|A(?:1[456]0|340|[34]55)|GS15[035]|GL[23]55|G25[035]|G355|G550|G15[05]|ES750|XL150|Z[1-4]55|H[13]70|H[34]10|P[45]10|L2[17]0)|Z250|A440|(?<!MITO )A350(?! TV)|N[13]80i|(?<!Blade )L1[178]0|L3[17]0i|(?<!VOX )G450|G660|Q[123]10|Q[12]80|N[234]10|N[35]70|EX111|S[245]70|S[127]70i|S169|S110|S180i?|S770|A555(?! Universe)|(?:U75H8000K|U50H8000E|U65H8000K|U50G8000QG|U55H8050E|U43G9000CG|U43F8100QG|U55G8000QG|U50G9000CG|H32H8001C|H32G8000CG|H32F8000QG?(?:-[abc])?|H32F8[01]00Q|H39F8000Q|F43H8000K|U43H8000E|U43F8000EG|F43F8000[CQ]G?|F32[FG]8000C|F43G8000C|H24H8000C|H24F8000Q|F43F8000Q-G)(?:-[AbcfedH])?|Android 8(?:[\d.]*);(?: [\w-]+;)? A240|android 10;(?: [\w-]+;)? (?:B[23]1|B38|B1[87]|K28|K[34]1)|android 9;(?: [\w-]+;)? (?:K18|K21|B11)|android 11;(?: [\w-]+;)? (?:D[12]1|T21|K[345]1|K[342]8|K61|C3[78]|B28|B27|H28)|H32H8051C-G|50UCY2-G|55UCY1|H3218000K|U50F8000QG|U50H8050EG|H32I8000K|U65G8000Q|U43G8100QG|Android 11;(?: [\w-]+;)? P11)(?:[);/ ]|$)'
6427
6491
  device: 'smartphone'
6428
6492
  models:
6429
6493
  - regex: '(?:DEXP_)?(ML450|MS[56]50|ES750|XL150|ES1050)(?:[);/ ]|$)'
@@ -6483,7 +6547,7 @@ DEXP:
6483
6547
  device: 'console'
6484
6548
  model: 'Freya'
6485
6549
 
6486
- - regex: '([HFU]\d{2}[A-Z]\d{4}[A-Z]{1,2}|AL-2020|H32F8000Q|H32[1I]8000K|H32H8051C-G|F43F8000Q-G)(?:-[AbcfedH]|U50H8050EG|U65G8000Q)?(?:[);/ ]|$)'
6550
+ - regex: '([HFU]\d{2}[A-Z]\d{4}[A-Z]{1,2}|AL-2020|H32F8000Q|H32[1I]8000K|H32H8051C-G|F43F8000Q-G|50UCY2-G|55UCY1)(?:-[AbcfedH]|U50H8050EG|U65G8000Q)?(?:[);/ ]|$)'
6487
6551
  device: 'tv'
6488
6552
  model: '$1'
6489
6553
 
@@ -6602,7 +6666,7 @@ COMPUMAX:
6602
6666
 
6603
6667
  # Digma
6604
6668
  Digma:
6605
- regex: 'Digma[_ ]([^;/]+) Build|iD[sr]Q\d+|DiMagic|HIT HT707[10]MG|CITI (?:7 E401 4G|8 E400 4G|ATL 4G|Kids|Octa [178]0|1902 3G|10 E402|Z530 3G|13 X703 4G)|(CITI[_ ](?:[A-Z0-9]+)[_ ][34]G)[ _][TC][ST](?:[0-9]{4}[PM][LG])|HIT 4G|HT7074ML|IDX5|(iDx10|iDx7)|MVM900H(?:WZ|C)|MVM908HCZ|(iDxD8 3G|iDxD10 3G|iDrQ10 3G|iDxD[45]|iDxQ5|iD[nx]D7(?:[_ ]3G)?)|PS604M|PT452E|Linx.+ [34]G L[TS][0-9]{4}[PM][GL]|Linx PS474S|PS1043MG|HT7071MG|HT5035PG|HT4039PG|NS6902QL|NS9797MG|TS7854M|TS1012E 3G|TT1004PG|TT702[045]MG|TT1002MG|TT7026MW|WS8251PL|VRL42|((?:Optima(?![_ ]T-II)(?: Kids 7)?|Platina|Plane)[ _](?:[EM])?(?:[0-9\.ST]+|Prime)(?:[ _][43]G)?)|(VOX[ _](?:[0-9\.A-Z]+)[_ ][43]G)|DM-LED(?:32SR21|43SR23|42SR24|24SR20|55UR31)|RS1248PL|RS1253PL|RS1249PL|RS1267PL|WS1250PL'
6669
+ regex: 'Digma[_ ]([^;/]+) Build|iD[sr]Q\d+|DiMagic|HIT HT707[10]MG|CITI (?:7 E401 4G|8 E400 4G|ATL 4G|Kids|Octa [178]0|1902 3G|10 E402|Z530 3G|13 X703 4G)|(CITI[_ ](?:[A-Z0-9]+)[_ ][34]G)[ _][TC][ST](?:[0-9]{4}[PM][LG])|HIT 4G|HT7074ML|IDX5|(iDx10|iDx7)|MVM900H(?:WZ|C)|MVM908HCZ|(iDxD8 3G|iDxD10 3G|iDrQ10 3G|iDxD[45]|iDxQ5|iD[nx]D7(?:[_ ]3G)?)|PS604M|PT452E|Linx.+ [34]G L[TS][0-9]{4}[PM][GL]|Linx PS474S|PS1043MG|HT7071MG|HT5035PG|HT4039PG|NS6902QL|NS9797MG|TS7854M|TS1012E 3G|TT1004PG|TT702[045]MG|TT1002MG|TT7026MW|WS8251PL|VRL42|((?:Optima(?![_ ]T-II)(?: Kids 7)?|Platina|Plane)[ _](?:[EM])?(?:[0-9\.ST]+|Prime)(?:[ _][43]G)?)|(VOX[ _](?:[0-9\.A-Z]+)[_ ][43]G)|DM-LED(?:32SR21|43SR23|42SR24|24SR20|55UR31)|RS1248PL|RS1253PL|RS1249PL|RS1267PL|WS1250PL|WS1262RW'
6606
6670
  device: 'smartphone'
6607
6671
  models:
6608
6672
  - regex: 'HIT(?: 3G)? HT707[10]MG'
@@ -6690,6 +6754,9 @@ Digma:
6690
6754
  - regex: 'CITI[_ ](1902 3G|Kids(?:[_ ](?:8[01]|10))?|8527_4G|Octa [178]0|10 E402 4G|8 E400 4G|7 E401 4G|13 X703 4G|1312C 4G|8443E 4G)'
6691
6755
  model: 'CITI $1'
6692
6756
  device: 'tablet'
6757
+ - regex: 'WS1262RW'
6758
+ model: 'Kids 1210B'
6759
+ device: 'tablet'
6693
6760
  - regex: '(CITI[ _](?:[A-Z0-9]+)[ _][34]G)[ _][TC][ST](?:106[24]ML|111[46]ML|1115MG|1117PG|1207MG|1210MG|3001ML|500[67]PG|7052PG|706[567]MG|7097MG|720[48]MG|820[69]MG|11[459]4MG|1195MG|1196ML|3001ML|8152ML|1050PL|709[68]PL|7113PL|7193MG|7216MG|8205PG|7203MG|8143MG|7153MG|7141MG|7140ML|8268PL)'
6694
6761
  model: '$1'
6695
6762
  device: 'tablet'
@@ -6785,7 +6852,7 @@ DoCoMo:
6785
6852
 
6786
6853
  # Doogee
6787
6854
  Doogee:
6788
- regex: 'DOOGEE[/ _-]|Valencia2_Y100(?:_?(?:pro|plus))?|Y100_Plus|X5max(?:[_ ]PRO)?|Shoot_[12]|x5_doogee|(KISSME|BIGBOY|COLLO[23]?|DAGGER|DISCOVERY2?|FIND|HOTWIND|LATTE|MAX|MINT|MOON|PIXELS|RAINBOX|TURBO|VALENCIA|VOYAGER2?|TITANS2?)[ -_](DG[0-9]+C?)(?:[);/ ]|$)|(?:BL12000|BL5500[_ ]Lite| Y6C|X9 Mini|LEO_DG280|Y9Plus|Y8 Plus|Hitman_DG850|S(?:4[01]|[568]8|9[05678]|59|61|8[69])Pro|X9[567]Pro|S[478]0Lite|S88Plus|BL[579]000|N[24]0Pro|(?<!Lenovo )S90C|Ibiza_F2|S55_Lite|T5_Lite|S60 ?Lite|Iron-bone DG750|X10S|X[569]0L|MIX2|Y6 Max|Y6_Piano(?:_black)?|X[679]pro|S96GT|android 10;(?: [\w-]+;)? (?:S59|S35|X95i?|X93|N30)|android 12;(?: [\w-]+;)? (?:S98|S61|S89|V Max|S100|V30T?)|Y7Plus|S35T|Android 9(?:[\d.]*);(?: [\w-]+;)? (?:N100|Y8)|D60 Pro|Turbo_mini_F1)(?:[);/ ]|$)'
6855
+ regex: 'DOOGEE[/ _-]|Valencia2_Y100(?:_?(?:pro|plus))?|Y100_Plus|X5max(?:[_ ]PRO)?|Shoot_[12]|x5_doogee|(KISSME|BIGBOY|COLLO[23]?|DAGGER|DISCOVERY2?|FIND|HOTWIND|LATTE|MAX|MINT|MOON|PIXELS|RAINBOX|TURBO|VALENCIA|VOYAGER2?|TITANS2?)[ -_](DG[0-9]+C?)(?:[);/ ]|$)|(?:BL12000|BL5500[_ ]Lite| Y6C|X9 Mini|LEO_DG280|Y9Plus|Y8 Plus|Hitman_DG850|S(?:4[01]|[568]8|9[05678]|59|61|8[69])Pro|X9[567]Pro|S[478]0Lite|S88Plus|BL[579]000|N[24]0Pro|(?<!Lenovo )S90C|Ibiza_F2|S55_Lite|T5_Lite|S60 ?Lite|Iron-bone DG750|X10S|X[569]0L|MIX2|Y6 Max|Y6_Piano(?:_black)?|S100Pro|X[679]pro|S96GT|android 10;(?: [\w-]+;)? (?:S59|S35|X95i?|X93|N30)|android 12;(?: [\w-]+;)? (?:S98|S61|S89|V Max|S100|V30T?)|Y7Plus|S35T|Android 9(?:[\d.]*);(?: [\w-]+;)? (?:N100|Y8)|D60 Pro|Turbo_mini_F1)(?:[);/ ]|$)'
6789
6856
  device: 'smartphone'
6790
6857
  models:
6791
6858
  - regex: 'V Max'
@@ -6814,7 +6881,7 @@ Doogee:
6814
6881
  model: 'BL5500 Lite'
6815
6882
  - regex: 'BL12000'
6816
6883
  model: 'BL12000'
6817
- - regex: 'S([568]8|9[05678]|59|61|4[01]|8[69])Pro'
6884
+ - regex: 'S([568]8|9[05678]|59|61|4[01]|8[69]|100)Pro'
6818
6885
  model: 'S$1 Pro'
6819
6886
  - regex: 'S(88)Plus'
6820
6887
  model: 'S$1 Plus'
@@ -6983,7 +7050,7 @@ EBEST:
6983
7050
 
6984
7051
  # Horizont (https://horizont.by/en/)
6985
7052
  Horizont:
6986
- regex: '(?:Horizont[_ ])?(32LE7011D|43LE7022D|32LE7052D)'
7053
+ regex: '(?:Horizont[_ ])?(32LE7011D|43LE7022D|32LE7052D|65LE7053D)'
6987
7054
  device: 'tv'
6988
7055
  model: '$1'
6989
7056
 
@@ -7062,7 +7129,7 @@ Eks Mobility:
7062
7129
 
7063
7130
  # Elephone
7064
7131
  Elephone:
7065
- regex: 'Elephone|Vowney(?: Lite)?|P6000(?!_Plus)( ?Pro| ?Plus|\+| ?02| 5.0 01)?|(?<!Chrome/)Soldier|(?:Trunk 1|P8_3D|P8_Max|P8_Mini|A6_mini|P9000(?:_Lite)?|Android 9;(?: [\w-]+;)? PX|PX_Pro| U3H|U_Pro|Android 10;(?: [\w-]+;)? (?:E10_Pro|E10))(?:[);/ ]|$)'
7132
+ regex: 'Elephone|Vowney(?: Lite)?|P6000(?!_Plus)( ?Pro| ?Plus|\+| ?02| 5.0 01)?|(?<!Chrome/)Soldier|C1_Max|(?:Trunk 1|P8_3D|P8_Max|P8_Mini|A6_mini|P9000(?:_Lite)?|Android 9;(?: [\w-]+;)? PX|PX_Pro| U3H|U_Pro|Android 10;(?: [\w-]+;)? (?:E10_Pro|E10))(?:[);/ ]|$)'
7066
7133
  device: 'smartphone'
7067
7134
  models:
7068
7135
  - regex: '(?:Elephone[_ ])?Trunk(?: 1)?(?:[);/ ]|$)'
@@ -7091,6 +7158,8 @@ Elephone:
7091
7158
  model: '$1 Pro'
7092
7159
  - regex: ' U3H(?:[);/ ]|$)'
7093
7160
  model: 'U3H'
7161
+ - regex: 'C1_Max(?:[);/ ]|$)'
7162
+ model: 'C1 Max'
7094
7163
  - regex: 'Android 9;(?: [\w-]+;)? PX(?:[);/ ]|$)'
7095
7164
  model: 'PX'
7096
7165
  - regex: '(P8_3D|P8_Max)(?:[);/ ]|$)'
@@ -7288,7 +7357,7 @@ Smartab:
7288
7357
 
7289
7358
  # Sony & Sony Ericsson (combined as they are mixed up)
7290
7359
  Sony:
7291
- regex: 'Sony(?: ?Ericsson)?|SGP|Xperia|(?:[4-9]0[12])SO|C1[569]0[45]|C2[01]0[45]|C230[45]|C530[236]|C550[23]|C6[56]0[236]|C6616|C68(?:0[26]|[34]3)|C69(?:0[236]|16|43)|D(?:200[45]|21(?:0[45]|14)|22(?:0[236]|12|43)|230[2356]|240[36]|2502|2533|510[236]|530[36]|5316|5322|5503|58[03]3|65(?:0[23]|43|63)|66[03458]3|66[14]6|6708)|E(?:20[0345]3|2006|210[45]|2115|2124|230[36]|2312|23[356]3|530[36]|53[3456]3|5506|55[356]3|56[46305][36]|58[02]3|6508|65[35]3|66[0358]3|68[358]3)|F(?:311[12356]|331[13]|321[12356]|5[13]21|5122|813[12]|833[12])|G(?:2299|312[135]|311[26]|322[136]|3212|331[123]|3412|3416|342[136]|823[12]|834[123]|8[14]4[12]|8188)|H(?:3113|3123|3133|3213|3223|3311|3321|3413|4113|4133|4213|4233|4311|4331|4413|4433|4493|8116|8166|82[1679]6|83[12]4|8416|9436|9493)|I(?:3[12]23|3213|[34]113|[34]312|4193|42[19]3|4332)|J(?:3173|3273|81[17]0|82[17]0|91[15]0|92[16]0)|(?:WT|LT|SO|ST|SK|MK)[0-9]+[a-z]+[0-9]*(?: Build|\))|X?L39H|XM50[ht]|XQ-[A-Z]{2}[0-9]{2}|W960|portalmmm/2\.0 K|S3[69]h|SOG0[1-9]|SOL2[2-6]|SOT[23]1|SOV3[1-9]|SOV4[0-3]|X10[ia]v?|E1[05][ai]v?|MT[0-9]{2}[a-z]? Build|SO-0(?:[12]C|[2-5]D|[1-4]E|[1-5]F|[1-5]G|[1-4]H|[1-4]J|[1-5]K|1M|[1-3]L)|R800[aix]|LiveWithWalkman|BRAVIA|SGP771|E3 Dual|A[012]01SO|A204SO|A[12]02SO|SO-[45]1[AB]|SO-5[1234][ABC]|A[12]03SO|A002SO|NW-(A[13]00|ZX500|Z1000)Series|NSZ-GS7|SmartWatch 3|SVP-DTV15'
7360
+ regex: 'Sony(?: ?Ericsson)?|SGP|Xperia|(?:[4-9]0[12])SO|C1[569]0[45]|C2[01]0[45]|C230[45]|C530[236]|C550[23]|C6[56]0[236]|C6616|C68(?:0[26]|[34]3)|C69(?:0[236]|16|43)|D(?:200[45]|21(?:0[45]|14)|22(?:0[236]|12|43)|230[2356]|240[36]|2502|2533|510[236]|530[36]|5316|5322|5503|58[03]3|65(?:0[23]|43|63)|66[03458]3|66[14]6|6708)|E(?:20[0345]3|2006|210[45]|2115|2124|230[36]|2312|23[356]3|530[36]|53[3456]3|5506|55[356]3|56[46305][36]|58[02]3|6508|65[35]3|66[0358]3|68[358]3)|F(?:311[12356]|331[13]|321[12356]|5[13]21|5122|813[12]|833[12])|G(?:2299|312[135]|311[26]|322[136]|3212|331[123]|3412|3416|342[136]|823[12]|834[123]|8[14]4[12]|8188)|H(?:3113|3123|3133|3213|3223|3311|3321|3413|4113|4133|4213|4233|4311|4331|4413|4433|4493|8116|8166|82[1679]6|83[12]4|8416|9436|9493)|I(?:3[12]23|3213|[34]113|[34]312|4193|42[19]3|4332)|J(?:3173|3273|81[17]0|82[17]0|91[15]0|92[16]0)|(?:WT|LT|SO|ST|SK|MK)[0-9]+[a-z]+[0-9]*(?: Build|\))|X?L39H|XM50[ht]|XQ-[A-Z]{2}[0-9]{2}|W960|portalmmm/2\.0 K|S3[69]h|SOG(?:0[1-9]|10)|SOL2[2-6]|SOT[23]1|SOV3[1-9]|SOV4[0-3]|X10[ia]v?|E1[05][ai]v?|MT[0-9]{2}[a-z]? Build|SO-0(?:[12]C|[2-5]D|[1-4]E|[1-5]F|[1-5]G|[1-4]H|[1-4]J|[1-5]K|1M|[1-3]L)|R800[aix]|LiveWithWalkman|BRAVIA|SGP771|E3 Dual|A[012]01SO|A204SO|A[12]02SO|SO-[45]1[AB]|SO-5[1234][ABCD]|A[12]03SO|A002SO|NW-(A[13]00|ZX500|Z1000)Series|NSZ-GS7|SmartWatch 3|SVP-DTV15'
7292
7361
  device: 'smartphone'
7293
7362
  models:
7294
7363
  # SONY ERICSSON: explicit smartphone models
@@ -7445,8 +7514,12 @@ Sony:
7445
7514
  model: 'Xperia Ace III'
7446
7515
  - regex: '(?:A001SO|XQ-AU42|XQ-AU51|XQ-A[TU]52|SO-41A|SOV43)(?:[);/ ]|$)'
7447
7516
  model: 'Xperia 10 II'
7517
+ - regex: '(?:A001SO|XQ-AU42|XQ-AU51|XQ-A[TU]52|SO-41A|SOV43)(?:[);/ ]|$)'
7518
+ model: 'Xperia 10 II'
7448
7519
  - regex: '(?:A10[12]SO|SO-52B|SOG04|XQ-BT52)(?:[);/ ]|$)'
7449
7520
  model: 'Xperia 10 III'
7521
+ - regex: '(?:SO-52D)(?:[);/ ]|$)'
7522
+ model: 'Xperia 10 V'
7450
7523
  - regex: 'XQ-BT44(?:[);/ ]|$)'
7451
7524
  model: 'Xperia 10 III Lite'
7452
7525
  - regex: '(?:XQ-CC72|XQ-CC[45]4|SOG07|SO-52C|A202SO)(?:[);/ ]|$)'
@@ -7465,6 +7538,8 @@ Sony:
7465
7538
  model: 'Xperia 1 III'
7466
7539
  - regex: '(?:Sony(?:Ericsson)?)?(?:SOG06|XQ-CT72|SO-51C|A201SO|XQ-CT[45]4)(?:[);/ ]|$)'
7467
7540
  model: 'Xperia 1 IV'
7541
+ - regex: '(?:Sony(?:Ericsson)?)?(?:SOG10|SO-51D)(?:[);/ ]|$)'
7542
+ model: 'Xperia 1 V'
7468
7543
  - regex: '(?:Sony(?:Ericsson)?)?LT22i|Xperia P'
7469
7544
  model: 'Xperia P'
7470
7545
  - regex: '(?:Sony(?:Ericsson)?)?LT25i|Xperia V'
@@ -7735,7 +7810,7 @@ Sony:
7735
7810
  device: 'wearable'
7736
7811
 
7737
7812
  # SONY: Bravia or TV Box
7738
- - regex: '(?:BRAVIA )(2K GB ATV3|[48]K UR[123]|4K GB ATV3|4K GB|4K VH2|4K 2015|2015|VH1|VU1)(?:[);/ ]|$)'
7813
+ - regex: '(?:BRAVIA )(2K GB ATV3|[48]K UR[123]|4K GB ATV3|4K GB|4K VH2|4K 2015|2015|VH1|VU[12]|VU31)(?:[);/ ]|$)'
7739
7814
  model: 'Bravia $1'
7740
7815
  device: 'tv'
7741
7816
  - regex: 'SVP-DTV15(?:[);/ ]|$)'
@@ -8243,7 +8318,7 @@ FNB:
8243
8318
 
8244
8319
  # Fujitsu
8245
8320
  Fujitsu:
8246
- regex: '(?:F-01[FHJKLM]|F-02[EFGHLK]|F-03[DEFGKHL]|F-04[EGFHKJ]|F-05[DEFJG]|F-06[EF]|F-07[DE]|F-08D|F-09[DE]|F-10D|F-[45]1A|F-41B|F-[45]2A|F-11D|F-12C|F-5[12]B|M532|FARTM933KZ|901FJ|arrows(?:RX|M03|M0[45](?:-PREMIUM)?)|801FJ|FJL2[12]|RM02|FCG01|A101FC|BZ02)(?:[);/ ]|$)'
8321
+ regex: '(?:F-01[FHJKLM]|F-02[EFGHLK]|F-03[DEFGKHL]|F-04[EGFHKJ]|F-05[DEFJG]|F-06[EF]|F-07[DE]|F-0[18]D|F-09[DE]|F-[45]1A|F-41B|F-[45]2A|F-1[012]D|F-12C|F-5[12]B|M532|FARTM933KZ|901FJ|arrows(?:RX|M03|M0[45](?:-PREMIUM)?)|801FJ|FJL2[12]|RM02|FCG01|A101FC|BZ02)(?:[);/ ]|$)'
8247
8322
  device: 'smartphone'
8248
8323
  models:
8249
8324
  - regex: 'F-51A(?:[);/ ]|$)'
@@ -8318,8 +8393,8 @@ Fujitsu:
8318
8393
  model: 'ANTEPRIMA F-09D'
8319
8394
  - regex: 'F-09E(?:[);/ ]|$)'
8320
8395
  model: 'Raku-Raku Smartphone Premium F-09E'
8321
- - regex: 'F-52B(?:[);/ ]|$)'
8322
- model: 'Raku-Raku Smartphone F-52B'
8396
+ - regex: 'F-(52B|12D)(?:[);/ ]|$)'
8397
+ model: 'Raku-Raku Smartphone F-$1'
8323
8398
  - regex: 'F-10D(?:[);/ ]|$)'
8324
8399
  model: 'Arrows X F-10D'
8325
8400
  - regex: 'F-11D(?:[);/ ]|$)'
@@ -8341,7 +8416,7 @@ Fujitsu:
8341
8416
  - regex: 'arrowsM(0[45])(?:[);/ ]|$)'
8342
8417
  model: 'Arrows M$1'
8343
8418
 
8344
- - regex: '(F-0[32]F|F-03G|F-04H|F-05E|F-02K)(?:[);/ ]|$)'
8419
+ - regex: '(F-0[32]F|F-03G|F-04H|F-05E|F-02K|F-01D)(?:[);/ ]|$)'
8345
8420
  model: 'Arrows Tab $1'
8346
8421
  device: 'tablet'
8347
8422
  - regex: 'FARTM933KZ'
@@ -8822,7 +8897,7 @@ Goly:
8822
8897
 
8823
8898
  # Google
8824
8899
  Google:
8825
- regex: 'Nexus(?! 6P)|GoogleTV|Google Fiber|Google Pixel|Glass(?<!Browser)|CrKey[^a-z0-9]|(?:Pixel|sailfish|taimen|blueline|Chromecast(?: HD)?)(?: Build|[)])|Pixel (?:XL|C|[2-7]|[2-4] XL)|Google 2XL|PIXEL4X|G011A|AOSP on (?:bramble|HammerHead|Manta|sunfish)|Pipit|ADT-2'
8900
+ regex: 'Nexus(?! 6P)|GoogleTV|Google Fiber|Google Pixel|Glass(?<!Browser)|CrKey[^a-z0-9]|(?:Pixel|sailfish|taimen|blueline|Chromecast(?: HD)?)(?: Build|[)])|Pixel (?:XL|C|[2-8]|[2-4] XL)|Google 2XL|PIXEL4X|G011A|AOSP on (?:bramble|HammerHead|Manta|sunfish)|Pipit|ADT-2'
8826
8901
  device: 'smartphone'
8827
8902
  models:
8828
8903
  - regex: 'Glass'
@@ -8888,9 +8963,9 @@ Google:
8888
8963
  model: 'Pixel 2'
8889
8964
  - regex: 'Google 2XL'
8890
8965
  model: 'Pixel 2 XL'
8891
- - regex: 'Pixel ([67]) Pro'
8966
+ - regex: 'Pixel ([678]) Pro'
8892
8967
  model: 'Pixel $1 Pro'
8893
- - regex: 'pixel ([2-7])'
8968
+ - regex: 'pixel ([2-8])'
8894
8969
  model: 'Pixel $1'
8895
8970
  - regex: 'Pipit'
8896
8971
  device: 'phablet'
@@ -8924,12 +8999,14 @@ Gradiente:
8924
8999
 
8925
9000
  # Grundig
8926
9001
  Grundig:
8927
- regex: 'GR?-TB[0-9]+[a-z]*|GRUNDIG|portalmmm/2\.0 G|AFTEU(?:011|014|FF014)'
9002
+ regex: 'GR?-TB[0-9]+[a-z]*|(?<!Arcelik )GRUNDIG|portalmmm/2\.0 G|AFTEU(?:011|014|FF014)'
8928
9003
  device: 'tv'
8929
9004
  models:
8930
9005
  - regex: '(GR?-TB[0-9]+[a-z]*)'
8931
9006
  device: 'tablet'
8932
9007
  model: '$1'
9008
+ - regex: 'GRUNDIG (?:Android TV|Google TV UHD\+)'
9009
+ model: ''
8933
9010
  - regex: 'GRUNDIG ([a-z0-9]+)'
8934
9011
  model: '$1'
8935
9012
  - regex: 'portalmmm/2\.0 G([a-z0-9]+)'
@@ -9084,9 +9161,113 @@ Hasee:
9084
9161
  - regex: 'Hasee ([^;/)]+)(?:[);/ ]|$)'
9085
9162
  model: '$1'
9086
9163
 
9164
+ # Toshiba
9165
+ Toshiba:
9166
+ regex: 'Toshiba|TSBNetTV/|portalmmm/[12].0 TS|(?:T-01C|T-0[12]D|IS04|IS11T|AT1S0|AT300SE|AFTDCT31|AT(?:7-C|10-A|10[PL]E-A|100|200|270|300|330|374|400|470|500a?|503|570|703|830)|AFTKMST12|AFTBAMR311|SATELLITE (?:C655|L50-C|Pro L300|A100))(?:[);/ ]|$)'
9167
+ device: 'smartphone'
9168
+ models:
9169
+ # explicit smartphone models
9170
+ - regex: 'T-01C'
9171
+ model: 'Regza T-01C'
9172
+ - regex: 'T-01D'
9173
+ model: 'Regza T-01D'
9174
+ - regex: 'T-02D'
9175
+ model: 'Regza T-02D'
9176
+ - regex: 'IS04'
9177
+ model: 'Regza IS04'
9178
+ - regex: 'IS11T'
9179
+ model: 'Regza IS11T'
9180
+
9181
+ # explicit tablet models
9182
+ - regex: 'AT7-C'
9183
+ model: 'Excite'
9184
+ device: 'tablet'
9185
+ - regex: 'AT1S0'
9186
+ model: 'Regza AT1S0'
9187
+ device: 'tablet'
9188
+ - regex: 'AT300SE'
9189
+ model: 'Regza AT300SE'
9190
+ device: 'tablet'
9191
+ - regex: 'AT500a'
9192
+ model: 'Regza AT500a'
9193
+ device: 'tablet'
9194
+ - regex: 'AT(100|200|270|300|330|374|400|470|500|503|570|703|830)'
9195
+ model: 'Regza AT$1'
9196
+ device: 'tablet'
9197
+ - regex: 'AT10([PL])E-A'
9198
+ model: 'Excite AT10$1-A'
9199
+ device: 'tablet'
9200
+ - regex: 'AT10-A'
9201
+ model: 'Excite AT10-A'
9202
+ device: 'tablet'
9203
+
9204
+ - regex: 'SATELLITE L50-C'
9205
+ device: 'desktop'
9206
+ model: 'Satellite L50C'
9207
+ - regex: 'SATELLITE (C655|Pro L300|A100)'
9208
+ device: 'desktop'
9209
+ model: 'Satellite $1'
9210
+
9211
+ - regex: 'AFTKMST12'
9212
+ device: 'tv'
9213
+ model: '43LF711U20'
9214
+ - regex: 'AFTDCT31'
9215
+ device: 'tv'
9216
+ model: '4K UHD (2020)'
9217
+ - regex: 'AFTBAMR311'
9218
+ device: 'tv'
9219
+ model: '43LF421U19'
9220
+ - regex: 'TOSHIBA;SmartTV;([a-z0-9_ \-]+);'
9221
+ device: 'tv'
9222
+ model: '$1'
9223
+ - regex: 'TOSHIBA, ([a-z0-9_ \-]+), (?:wired|wireless)'
9224
+ device: 'tv'
9225
+ model: ''
9226
+ - regex: 'TSBNetTV/'
9227
+ device: 'tv'
9228
+ model: ''
9229
+ - regex: 'Toshiba[ /_\-]?([a-z0-9_ \-]+) Build'
9230
+ model: '$1'
9231
+ - regex: 'Toshiba[ /_\-]?([a-z0-9_\-]+)'
9232
+ model: '$1'
9233
+ - regex: 'portalmmm/[12].0 (TS[a-z0-9 ]+)'
9234
+ model: '$1'
9235
+
9236
+ # AWOX (https://www.awox.com.tr/)
9237
+ AWOX:
9238
+ regex: 'AWOX(?:[);/ ]|$)'
9239
+ device: 'tv'
9240
+ models:
9241
+ - regex: 'AWOX;SmartTV;([a-z0-9_ \-]+);'
9242
+ model: '$1'
9243
+
9244
+ # UGINE (https://www.ugine.com.sa/ar)
9245
+ UGINE:
9246
+ regex: 'UGINE(?:[);/ ]|$)'
9247
+ device: 'tv'
9248
+ models:
9249
+ - regex: 'UGINE;SmartTV;([a-z0-9_ \-]+)V[ST];'
9250
+ model: '$1'
9251
+
9252
+ # Sunny
9253
+ Sunny:
9254
+ regex: '(?:SS4G9 Mira|SS4G7 Sole|SS4G1 Luna|SS4G8 Nora|SS4G6 Lola|SN7014S?|SN7016|SN10016|SUNNY (?:SS01|S52D)|SUNNY;SmartTV)(?:[);/ ]|$)'
9255
+ device: 'smartphone'
9256
+ models:
9257
+ - regex: '(SS4G9 Mira|SS4G7 Sole|SS4G1 Luna|SS4G8 Nora|SS4G6 Lola)(?:[);/ ]|$)'
9258
+ model: '$1'
9259
+ - regex: 'SUNNY (SS01|S52D)'
9260
+ model: '$1'
9261
+ - regex: '(SN7014S?|SN7016|SN10016)(?:[);/ ]|$)'
9262
+ device: 'tablet'
9263
+ model: '$1'
9264
+ - regex: 'SUNNY;SmartTV'
9265
+ device: 'tv'
9266
+ model: 'Smart TV'
9267
+
9087
9268
  # Hisense (www.hisense-usa.com)
9088
9269
  Hisense:
9089
- regex: '(?:HS-)?Hisense ([^;/]+) Build|Hisense [^);/]+|HISENSE; |HS-(?:G|U|EG?|I|L|T|X)[0-9]+[a-z0-9\-]*|HNR55[01]T|E270BSA|HWCD100E|HITV300C|HITV205N|M470BS[AE]|EG98|E2281|EG680|I46D1G|HAT4KDTV|HITV10[12]C|HLTE([237]00T|229T|200M|203T|202N|21[023567][TM]|22[67]T|22[13]E|230E|103E|310[TM]|31[16]T|500T|501N|510[TM]|7[23]0T|M800)|KS(?:907|964)|U972|U601S Pro|U972_Pro|HNR320T|HiSmart [24]K ATV4|HiSmartTV A4'
9270
+ regex: '(?:HS-)?Hisense ([^;/]+) Build|Hisense|HS-(?:G|U|EG?|I|L|T|X)[0-9]+[a-z0-9\-]*|HNR55[01]T|E270BSA|HWCD100E|HITV300C|HITV205N|M470BS[AE]|EG98|E2281|EG680|I46D1G|HAT4KDTV|HITV10[12]C|HLTE([237]00T|229T|200M|203T|202N|21[023567][TM]|22[67]T|22[13]E|230E|103E|310[TM]|31[16]T|500T|501N|510[TM]|7[23]0T|M800)|KS(?:907|964)|U972|U601S Pro|U972_Pro|HNR320T|HiSmart [24]K ATV4|HiSmartTV A4|HLTE556N'
9090
9271
  device: 'smartphone'
9091
9272
  models:
9092
9273
  # explicit tablet models
@@ -9112,6 +9293,8 @@ Hisense:
9112
9293
  model: 'A6L'
9113
9294
  - regex: 'HNR320T'
9114
9295
  model: 'A7'
9296
+ - regex: 'HLTE556N'
9297
+ model: 'A9'
9115
9298
  - regex: 'M50 Lite 2021'
9116
9299
  model: 'M50 Lite (2021)'
9117
9300
  - regex: 'E50s \d+GB'
@@ -9197,6 +9380,15 @@ Hisense:
9197
9380
  - regex: '(HAT4KDTV|HiSmart [24]K ATV4|HiSmartTV A4)(?:[);/ ]|$)'
9198
9381
  device: 'tv'
9199
9382
  model: '$1'
9383
+ - regex: 'Hisense;SmartTV;([a-z0-9_ \-]+)V[ST];'
9384
+ device: 'tv'
9385
+ model: '$1'
9386
+ - regex: 'Hisense;SmartTV;([a-z0-9_ \-]+);'
9387
+ device: 'tv'
9388
+ model: '$1'
9389
+ - regex: '(HE43A6500UWTS)'
9390
+ device: 'tv'
9391
+ model: '$1'
9200
9392
 
9201
9393
  - regex: 'HITV205N(?:[);/ ]|$)'
9202
9394
  device: 'portable media player'
@@ -9410,11 +9602,15 @@ TD Tech:
9410
9602
 
9411
9603
  # Huawei
9412
9604
  Huawei:
9413
- regex: '(HW-)?(?:Huawei(?!Browser)|MediaPad T1|Ultym5|Ideos|Honor[ _]?|(?:(?:AGS|AGS2|ALE|ALP|AMN|ANA|ANE|ARE|ARS|ASK|ATH|ATU|AUM|BAC|BAH[234]?|BG2|BGO|B[ZK]K|BKL|BL[ALN]|BND|BTV|CA[GMNZ]|CH[CM]|CHE[12]?|CLT|CMR|COL|COR|CPN|CRO|CRR|CUN|DIG|DLI|DRA|DUA|DUB|DUK|EDI|ELE|EML|EVA|EVR|FDR|FIG|FLA|FRD|FRL|GEM|GRA|HDN|HLK|HMA|Hol|HRY|HWI|H[36]0|INE|JAT|JEF|JDN|JDN2|JKM|JMM|JSN|KII|KIW|KNT|KOB|KSA|LDN|LEO|LIO|LLD|LND|LON|LRA|LUA|LY[AO]|MAR|MHA|MRD|MYA|NCE|NEN|NEM|NEO|NXT|PAR(?!-[AH]0)|PCT|PIC|PLE|PLK|POT|PPA|PRA|RIO|RNE|RVL|SCC|SCL|SCM|SEA|SHT|SLA|SNE|SPN|STF|STK|TAG|TIT|TNY|TRT|VCE|VEN|VIE|VKY|VNS|VOG|VRD|VTR|WAS|YAL|G(?:527|620S|621|630|735)|Y(?:221|330|550|6[23]5))-(?:[A-Z]{0,2}[0-9]{1,4}[A-Z]{0,3}?)|H1711|U(?:8230|8500|8661|8665|8667|8800|8818|8860|9200|9508))(?:[);/ ]|$))|hi6210sft|PE-(UL00|TL[12]0|TL00M)|T1-(A21?[Lw]|A2[23]L|701u|823L)|G7-(?:L01|TL00)|HW-01K|JNY-(LX[12]|AL10)|OXF-AN[01]0|TAS-(A[LN]00|L29|TL00)|WLZ-(AL10|AN00)|YOK-AN[10]0|NIC-LX1A|MRX-(AN19|AL[01]9|W[0-3]9)|CDY-(?:[AT]N00|AN[29][05]|NX9[AB]|TN[29]0)|GLK-(?:[AT]L00|LX1U)|JER-(?:[AT]N20|[AT]N10)|ELS-(?:[AT]N[10]0|NX9|N[23]9|N04)|AKA-(AL10|L29)|MON-(W|AL)19|BMH-(?:TN10|AN[12]0)|AQM-([AT]L[01]0|LX1)|MOA-([AT]L[02]0|LX9N)|NTS-AL00|ART-(?:[AT]L00[xm]|L29N?|L28)|MED-(?:[AT]L00|LX[29]N?|AL20)|EBG-(?:AN[01]0|TN00|N19)|ANA-(?:[AT]N00|NX9)|BZ[AK]-W00|BZT-(W09|AL[01]0)|HDL-(AL09|W09)|HWV3[123]|HW-02L|TEL-[AT]N(?:00a?|10)|KKG-AN[07]0|MXW-[AT]N00|JKM-AL00[ab]|TAH-(?:N29|AN00)m?|C8817D|T1-821W|d-01[JKH]|d-02[HK]|KRJ-(?:W09|AN00)|HWT31|Y320-U10|Y541-U02|VAT-L19|70[14]HW|60[58]HW|NOH-(?:NX9|AN0[01]|AN50|AL[01]0)|TNNH?-AN00|LIO-(?:[TA]L00|[LN]29|AN00)|KOB2K-L09|KOB2-(?:AL00|[LW]09|L03)|AGS3-(?:[WL]09|AL0[09]|W00[DE])|DNN-LX9|NEY-NX9|LON-AL00|HLK-L41|503HW|AGR-(?:[LW]09|AL09)|PPA-LX[12]|ANG-(?:AN00|LX[12])|NOP-AN00|ALA-AN70|DVC-[AT]N[02]0|302HW|Nexus 6P|DBY-W09|WKG-(?:LX9|[AT]N00)|JSC-(?:AN00|AL50)|OCE-A[NL][015]0|NZA-AL00|BRQ-A[LN]00|BZC-(?:AL|W)00|NEN-L(?:X1|22)|KOZ-AL[04]0|NTH-(?:AN00|NX9)|MRR-W[23]9|WGR-(?:W[10]9|AN19)|TET-AN[10]0|SCMR-(?:W09|AL09)|OXP-AN00|HJC-(?:AN90|LX9)|CDL-AN50|CND-AN00|NTN-(?:LX[13]|AN20|L22)|RNA-[AT]N00|CHL-(?:A[LN]00|AL60)|ELZ-AN[012]0|NAM-(?:LX9|AL00)|JLH-AN00|JAD-(?:AL[0568]0|LX9)|AGS5-(?:L09|W09)|AGS3K-(?:W20|[WL]0[09])|AGRK-[WL]09|MT2L03|LSA-AN00|KJR-W09|TET-A[NL][05]0|TYH601M|RTE-AL00|BAL-(?:AL00|L49)|BZI-(?:AL00|W00)|BZT3-(?:AL00|W09)|BZD-(?:W00|AL00)|MLD-AL[01]0|AGM3-(?:W09|AL09)HN|ABR-(?:AL[0689]0|LX9)|GIA-AN00|LEO-DLXXE?|BZA-L00|MGI-AN00|CMA-(?:LX[123]|AN[04]0)|NEW-AN90|KRJ2-(?:W09|AN00)|BRT-(?:W09|AN09)|ANY-(?:[LN]X1|LX[23]|AN00)|JLN-(?:LX[13]|AL00)|LGE-(?:NX[19]|AN[012]0)|TNA-AN00|TFY-(?:LX[123]|AN[04]0)|DIO-AN00|BZW-AL[01]0|MOGOLIA|CM990|MGA-(?:AL00|LX[39])|60[56]HW|Peppa-(?:L2[23]B|L0[23]B)|KANT-\d{3}[BCS]?|Kobe3-L09|FNE-(?:NX9|AN00)|HPB-AN00|Mate ?(?:[34]0 RS|Xs|30)|Y530|SDY-AN00|EC6108V[89]|CTR-(?:LX[123]|AL00)|VNE-(?:LX[123]|N41|AN[04]0)|HMW-W09|GLA-(?:LX[13]|AL00)|HEY-W09|GOT-(?:AL09|W[02]9)|PAL-(?:AL00|LX9)|PAN-L29|NNH-AN00|P Smart S|NCO-(?:LX[13]|AL00)|DCO-(?:AL00|LX9)|CET-(?:AL[06]0|LX9)|ADT-AN00|RMO-(?:AN00|NX1)|RKY-(?:AN00|LX[123])|M300-L09|EVE-LX9N?|BNE-(?:LX1|AL00)|dtab01|BZT4-W19|ROD-W09|ANP-AN00|WGRR-W09|HN3-U01|Holly-U19|BLM-00|ANN-AN00|VNA-(?:LX[23]|L29)|CRT-(?:NX1|LX[123]|AN00)|AGM-W09HN|PGT-(?:AN[12]0|N19)|GLL-AL01|MNA-(?:LX9|AL00)|LNA-(?:AL00|LX9)|ALT-L29|MAO-LX9N?|Enjoy 20 SE|ANB-AN00|STG-(?:AL00|LX1)|LTK-LX3|GOA-(?:LX9|AL80)|nova 6 5G| Angela-L|DBR-W09'
9605
+ regex: '(HW-)?(?:Huawei(?!Browser)|MediaPad T1|Ultym5|Ideos|Honor[ _]?|(?:(?:AGS|AGS2|ALE|ALP|AMN|ANA|ANE|ARE|ARS|ASK|ATH|ATU|AUM|BAC|BAH[234]?|BG2|BGO|B[ZK]K|BKL|BL[ALN]|BND|BTV|CA[GMNZ]|CH[CM]|CHE[12]?|CLT|CMR|COL|COR|CPN|CRO|CRR|CUN|DIG|DLI|DRA|DUA|DUB|DUK|EDI|ELE|EML|EVA|EVR|FDR|FIG|FLA|FRD|FRL|GEM|GRA|HDN|HLK|HMA|Hol|HRY|HWI|H[36]0|INE|JAT|JEF|JDN|JDN2|JKM|JMM|JSN|KII|KIW|KNT|KOB|KSA|LDN|LEO|LIO|LLD|LND|LON|LRA|LUA|LY[AO]|MAR|MHA|MRD|MYA|NCE|NEN|NEM|NEO|NXT|PAR(?!-[AH]0)|PCT|PIC|PLE|PLK|POT|PPA|PRA|RIO|RNE|RVL|SCC|SCL|SCM|SEA|SHT|SLA|SNE|SPN|STF|STK|TAG|TIT|TNY|TRT|VCE|VEN|VIE|VKY|VNS|VOG|VRD|VTR|WAS|YAL|G(?:527|620S|621|630|735)|Y(?:221|330|550|6[23]5))-(?:[A-Z]{0,2}[0-9]{1,4}[A-Z]{0,3}?)|H1711|U(?:8230|8500|8661|8665|8667|8800|8818|8860|9200|9508))(?:[);/ ]|$))|hi6210sft|PE-(UL00|TL[12]0|TL00M)|T1-(A21?[Lw]|A2[23]L|701u|823L)|G7-(?:L01|TL00)|HW-01K|JNY-(LX[12]|AL10)|OXF-AN[01]0|TAS-(A[LN]00|L29|TL00)|WLZ-(AL10|AN00)|YOK-AN[10]0|NIC-LX1A|MRX-(AN19|AL[01]9|W[0-3]9)|CDY-(?:[AT]N00|AN[29][05]|NX9[AB]|TN[29]0)|GLK-(?:[AT]L00|LX1U)|JER-(?:[AT]N20|[AT]N10)|ELS-(?:[AT]N[10]0|NX9|N[23]9|N04)|AKA-(AL10|L29)|MON-(W|AL)19|BMH-(?:TN10|AN[12]0)|AQM-([AT]L[01]0|LX1)|MOA-([AT]L[02]0|LX9N)|NTS-AL00|ART-(?:[AT]L00[xm]|L29N?|L28)|MED-(?:[AT]L00|LX[29]N?|AL20)|EBG-(?:AN[01]0|TN00|N19)|ANA-(?:[AT]N00|NX9)|BZ[AK]-W00|BZT-(W09|AL[01]0)|HDL-(AL09|W09)|HWV3[123]|HW-02L|TEL-[AT]N(?:00a?|10)|KKG-AN[07]0|MXW-[AT]N00|JKM-AL00[ab]|TAH-(?:N29|AN00)m?|C8817D|T1-821W|d-01[JKH]|d-02[HK]|KRJ-(?:W09|AN00)|HWT31|Y320-U10|Y541-U02|VAT-L19|70[14]HW|60[58]HW|NOH-(?:NX9|AN0[01]|AN50|AL[01]0)|TNNH?-AN00|LIO-(?:[TA]L00|[LN]29|AN00)|KOB2K-L09|KOB2-(?:AL00|[LW]09|L03)|AGS3-(?:[WL]09|AL0[09]|W00[DE])|DNN-LX9|NEY-NX9|LON-AL00|HLK-L41|503HW|AGR-(?:[LW]09|AL09)|PPA-LX[12]|ANG-(?:AN00|LX[12])|NOP-AN00|ALA-AN70|DVC-[AT]N[02]0|302HW|Nexus 6P|DBY-W09|WKG-(?:LX9|[AT]N00)|JSC-(?:AN00|AL50)|OCE-A[NL][015]0|NZA-AL00|BRQ-A[LN]00|BZC-(?:AL|W)00|NEN-L(?:X1|22)|KOZ-AL[04]0|NTH-(?:AN00|NX9)|MRR-W[23]9|WGR-(?:W[10]9|AN19)|TET-AN[10]0|SCMR-(?:W09|AL09)|OXP-AN00|HJC-(?:AN90|LX9)|CDL-AN50|CND-AN00|NTN-(?:LX[13]|AN20|L22)|RNA-[AT]N00|CHL-(?:A[LN]00|AL60)|ELZ-AN[012]0|NAM-(?:LX9|AL00)|JLH-AN00|JAD-(?:AL[0568]0|LX9)|AGS5-(?:L09|W09)|AGS3K-(?:W20|[WL]0[09])|AGRK-[WL]09|MT2L03|LSA-AN00|KJR-W09|TET-A[NL][05]0|TYH601M|RTE-AL00|BAL-(?:AL00|L49)|BZI-(?:AL00|W00)|BZT3-(?:AL00|W09)|BZD-(?:W00|AL00)|MLD-AL[01]0|AGM3-(?:W09|AL09)HN|ABR-(?:AL[0689]0|LX9)|GIA-AN00|LEO-DLXXE?|BZA-L00|MGI-AN00|CMA-(?:LX[123]|AN[04]0)|NEW-AN90|KRJ2-(?:W09|AN00)|BRT-(?:W09|AN09)|ANY-(?:[LN]X1|LX[23]|AN00)|JLN-(?:LX[13]|AL00)|LGE-(?:NX[19]|AN[012]0)|TNA-AN00|TFY-(?:LX[123]|AN[04]0)|DIO-AN00|BZW-AL[01]0|MOGOLIA|CM990|MGA-(?:AL[04]0|LX[39])|60[56]HW|Peppa-(?:L2[23]B|L0[23]B)|KANT-\d{3}[BCS]?|Kobe3-L09|FNE-(?:NX9|AN00)|HPB-AN00|Mate ?(?:[34]0 RS|Xs|30)|Y530|SDY-AN00|EC6108V[89]|CTR-(?:LX[123]|AL00)|VNE-(?:LX[123]|N41|AN[04]0)|HMW-W09|GLA-(?:LX[13]|AL00)|HEY-W09|GOT-(?:AL09|W[02]9)|PAL-(?:AL00|LX9)|PAN-L29|NNH-AN00|P Smart S|NCO-(?:LX[13]|AL00)|DCO-(?:AL00|LX9)|CET-(?:AL[06]0|LX9)|ADT-AN00|RMO-(?:AN00|NX[13])|RKY-(?:AN00|LX[123])|M300-L09|EVE-LX9N?|BNE-(?:LX1|AL00)|dtab01|BZT4-W19|ROD-W09|ANP-AN00|WGRR-W09|HN3-U01|Holly-U19|BLM-00|ANN-AN00|VNA-(?:LX[23]|L29)|CRT-(?:NX1|LX[123]|AN00)|AGM-W09HN|PGT-(?:AN[12]0|N19)|GLL-AL01|MNA-(?:LX9|AL00)|LNA-(?:AL00|LX9)|ALT-L29|MAO-LX9N?|Enjoy 20 SE|ANB-AN00|STG-(?:AL00|LX1)|LTK-LX3|GOA-(?:LX9|AL80)|nova 6 5G| Angela-L|DBR-W09|WOD-LX1|REP-AN00|WDY-LX1|FOA-LX9|ALI-AN00|DBY2-(?:W09|L09)|REA-(?:NX9|AN00)|AMZ-L29|AGT-AN00'
9414
9606
  device: 'smartphone'
9415
9607
  models:
9416
9608
  - regex: 'CRT-NX1'
9417
9609
  model: 'Honor 90 Lite'
9610
+ - regex: 'REA-(?:NX9|AN00)'
9611
+ model: 'Honor 90'
9612
+ - regex: 'REP-AN00'
9613
+ model: 'Honor 90 Pro'
9418
9614
  - regex: 'FNE-AN00'
9419
9615
  model: 'Honor 70'
9420
9616
  - regex: 'FNE-NX9'
@@ -9423,6 +9619,8 @@ Huawei:
9423
9619
  model: 'Honor 70 Pro'
9424
9620
  - regex: 'ANP-AN00'
9425
9621
  model: 'Honor 80 Pro'
9622
+ - regex: 'AGT-AN00'
9623
+ model: 'Honor 80 GT'
9426
9624
  - regex: 'ANB-AN00'
9427
9625
  model: 'Honor 80 Pro Flat'
9428
9626
  - regex: 'ANN-AN00'
@@ -9483,6 +9681,8 @@ Huawei:
9483
9681
  model: 'Enjoy 5S'
9484
9682
  - regex: 'MGA-AL00'
9485
9683
  model: 'Enjoy 50'
9684
+ - regex: 'MGA-AL40'
9685
+ model: 'Enjoy 60'
9486
9686
  - regex: 'CTR-AL00'
9487
9687
  model: 'Enjoy 50 Pro'
9488
9688
  - regex: 'STG-AL00'
@@ -9713,6 +9913,8 @@ Huawei:
9713
9913
  model: 'Honor Magic 4 Pro+'
9714
9914
  - regex: 'ANY-LX1'
9715
9915
  model: 'Honor Magic 4 Lite'
9916
+ - regex: 'RMO-NX3'
9917
+ model: 'Honor Magic 5 Lite'
9716
9918
  - regex: 'MGI-AN00'
9717
9919
  model: 'Honor Magic 5'
9718
9920
  - regex: 'PGT-(?:AN10|N19)'
@@ -9751,10 +9953,10 @@ Huawei:
9751
9953
  model: 'Honor Play 4'
9752
9954
  - regex: 'CHM-[CUT]L00[HM]?(?:[);/ ]|$)'
9753
9955
  model: 'Honor Play 4C'
9956
+ - regex: '(?:OXP-AN00|Honor Play 4T Pro)(?:[);/ ]|$)'
9957
+ model: 'Honor Play 4 Pro'
9754
9958
  - regex: '(?:AKA-AL10|Honor Play 4T)(?:[);/ ]|$)'
9755
9959
  model: 'Honor Play 4T'
9756
- - regex: 'OXP-AN00(?:[);/ ]|$)'
9757
- model: 'Honor Play 4 Pro'
9758
9960
  - regex: 'RKY-AN00(?:[);/ ]|$)'
9759
9961
  model: 'Honor Play 40 Plus'
9760
9962
  - regex: 'RKY-LX[123]'
@@ -9825,6 +10027,8 @@ Huawei:
9825
10027
  model: 'Honor X8 5G'
9826
10028
  - regex: 'VNE-LX[123]'
9827
10029
  model: 'Honor X6'
10030
+ - regex: 'WDY-LX[123]'
10031
+ model: 'Honor X6a'
9828
10032
  - regex: '(?:KKG-AN00|Honor X10 Max)(?:[);/ ]|$)'
9829
10033
  device: 'phablet'
9830
10034
  model: 'Honor X10 Max'
@@ -9854,6 +10058,10 @@ Huawei:
9854
10058
  model: 'Honor X5'
9855
10059
  - regex: 'CRT-AN00'
9856
10060
  model: 'Honor X50i'
10061
+ - regex: 'ALI-AN00'
10062
+ model: 'Honor X50'
10063
+ - regex: 'WOD-LX1'
10064
+ model: 'Honor X5 Plus'
9857
10065
  - regex: 'ALA-AN70(?:[);/ ]|$)'
9858
10066
  model: 'Honor V40 Lite'
9859
10067
  - regex: 'U8500(?:[);/ ]|$)'
@@ -9902,7 +10110,7 @@ Huawei:
9902
10110
  model: 'Mate 20 RS'
9903
10111
  - regex: 'EVR-(?:[TA]L00|L29|N29|AN00)(?:[);/ ]|$)'
9904
10112
  model: 'Mate 20 X'
9905
- - regex: 'TAS-([AT]L00|L29)(?:[);/ ]|$)'
10113
+ - regex: '(?:TAS-([AT]L00|L29)|AMZ-L29)(?:[);/ ]|$)'
9906
10114
  model: 'Mate 30'
9907
10115
  - regex: 'TAS-AN00(?:[);/ ]|$)'
9908
10116
  model: 'Mate 30 5G'
@@ -10002,6 +10210,8 @@ Huawei:
10002
10210
  model: 'Nova 11i'
10003
10211
  - regex: 'GOA-(?:LX9|AL80)'
10004
10212
  model: 'Nova 11 Pro'
10213
+ - regex: 'FOA-LX9'
10214
+ model: 'Nova 11'
10005
10215
  - regex: 'JNY-LX2(?:[);/ ]|$)'
10006
10216
  model: 'Nova 7i'
10007
10217
  - regex: '(?:ANG-LX[12]|Angela-(?:L2[12]B|L02B))(?:[);/ ]|$)'
@@ -10050,7 +10260,7 @@ Huawei:
10050
10260
  model: 'Nova Y90'
10051
10261
  - regex: 'STG-LX1'
10052
10262
  model: 'Nova Y91'
10053
- - regex: 'FIG-L(?:A1|X[123])(?:[);/ ]|$)'
10263
+ - regex: 'FIG-L(?:A1|X[123]|11)(?:[);/ ]|$)'
10054
10264
  model: 'P smart'
10055
10265
  - regex: 'POT-(?:LX(?:[13]|1T|2J|1AF)|AL00|L01)(?:[);/ ]|$)'
10056
10266
  model: 'P smart (2019)'
@@ -10266,6 +10476,12 @@ Huawei:
10266
10476
  - regex: 'AGS5-L09(?:[);/ ]|$)'
10267
10477
  model: 'MatePad 10.4" SE'
10268
10478
  device: 'tablet'
10479
+ - regex: 'DBY2-W09'
10480
+ model: 'MatePad 11.5" Air WiFi'
10481
+ device: 'tablet'
10482
+ - regex: 'DBY2-L09'
10483
+ model: 'MatePad 11.5" Air'
10484
+ device: 'tablet'
10269
10485
  - regex: 'AGS5-W09(?:[);/ ]|$)'
10270
10486
  model: 'MatePad 10.4" SE WiFi'
10271
10487
  device: 'tablet'
@@ -10449,7 +10665,7 @@ Huawei:
10449
10665
  - regex: '(?:FDR-(A01[LW]|A03L)|60[56]HW)(?:[);/ ]|$)'
10450
10666
  device: 'tablet'
10451
10667
  model: 'MediaPad T2 10.0" Pro'
10452
- - regex: 'T1-(?:A21[LW]|A2[23]L)(?:[);/ ]|$)'
10668
+ - regex: '(?:T1-(?:A21[LW]|A2[23]L)|MediaPad T1 10 4G)(?:[);/ ]|$)'
10453
10669
  device: 'tablet'
10454
10670
  model: 'MediaPad T1 10'
10455
10671
  - regex: 'T1-701u(?:[);/ ]|$)'
@@ -11301,7 +11517,7 @@ Infinix:
11301
11517
  model: 'Hot 30i'
11302
11518
  - regex: 'Infinix[ _-](?:X6831|X6833B)'
11303
11519
  model: 'Hot 30'
11304
- - regex: 'Infinix[ _-]X6835B'
11520
+ - regex: 'Infinix[ _-]X6835B?'
11305
11521
  model: 'Hot 30 Play'
11306
11522
  - regex: 'Infinix[ _-]X622'
11307
11523
  model: 'Hot S3X'
@@ -11669,7 +11885,6 @@ Aquarius:
11669
11885
  - regex: 'Aquarius[_ ]([^/;)]+)(?: Build|[);])'
11670
11886
  model: '$1'
11671
11887
 
11672
-
11673
11888
  # Vsun
11674
11889
  Vsun:
11675
11890
  regex: '(?:VSUN (?:ILLUSION|RACE|V9|TOUCH)|Aqua Tough|MERCURY Tough|MARS TOUCH|MARS NOTE|MARS NOCAM|SATURN SELFIE)(?:[);/ ]|$)'
@@ -11721,10 +11936,12 @@ Turbo:
11721
11936
 
11722
11937
  # Turbo-X
11723
11938
  Turbo-X:
11724
- regex: 'Turbo[-_]X|(?:TURBOX_I4G|Hive V 3G|Calltab10.1|Calltab2GB10|Calltab7inch|Turbox_S3|Fire_II_WiFi|Breeze IV|Aqua_II|RainbowIII3G|RubikII7|Rubik 10\.1 II|Rubik_10_III|QUAD-CORE A33 inet)(?:[);/ ]|$)|(?<!Rombica TV )Mercury(?!/| HD Quad core)'
11939
+ regex: 'Turbo[-_]X|(?:TURBOX_I4G|Hive V 3G|Calltab10.1|Calltab2GB10|Calltab7inch|Turbox_S3|Fire_II_WiFi|Breeze IV|Aqua_II|RainbowIII3G|RubikII7|Rubik 10\.1 II|Rubik_10_III|QUAD-CORE A33 inet)(?:[);/ ]|$)|(?<!Rombica TV )Mercury(?!/| HD Quad core)|(?:android 8([\d.]*);(?: [\w-]+;)? Dream)(?:[);/ ]|$)'
11725
11940
  device: 'smartphone'
11726
11941
  models:
11727
11942
  # specific smartphone models
11943
+ - regex: 'Dream'
11944
+ model: 'Dream'
11728
11945
  - regex: 'Turbox_S3'
11729
11946
  model: 'S3'
11730
11947
  - regex: 'Turbo-X_A2(?:[);/ ]|$)'
@@ -11995,6 +12212,10 @@ iTel:
11995
12212
  model: 'S16 Pro'
11996
12213
  - regex: 'W5505'
11997
12214
  model: 'A36'
12215
+ - regex: 'S665LN?'
12216
+ model: 'S23'
12217
+ - regex: 'A662LM'
12218
+ model: 'A60s'
11998
12219
  - regex: 'A662L'
11999
12220
  model: 'A60'
12000
12221
  - regex: 'W5504'
@@ -12105,7 +12326,7 @@ iTel:
12105
12326
  model: 'P40'
12106
12327
  - regex: 'L6005'
12107
12328
  model: 'Vision 1'
12108
- - regex: 'P682LPN'
12329
+ - regex: 'P682LPN?'
12109
12330
  model: 'Vision 3 Plus'
12110
12331
  - regex: 'P682L'
12111
12332
  model: 'P38 Pro'
@@ -12129,7 +12350,7 @@ iTel:
12129
12350
  model: 'Power Pro'
12130
12351
  - regex: 'S11Plus(?:[);/ ]|$)'
12131
12352
  model: 'S11 Plus'
12132
- - regex: 'itel[- ](A14|A16 Plus|A44 Power|A23S|A52 Lite)'
12353
+ - regex: 'itel[- ](A14S?|A16 Plus|A44 Power|A23S|A52 Lite)'
12133
12354
  model: '$1'
12134
12355
 
12135
12356
  - regex: 'itel it1701'
@@ -12423,19 +12644,23 @@ Kocaso:
12423
12644
 
12424
12645
  # Kogan
12425
12646
  Kogan:
12426
- regex: 'Kogan|(?:Agora (?:8 Plus|XI|Go))(?:[);/ ]|$)'
12647
+ regex: 'Kogan|(?:Agora (?:8 Plus|XI|Go|Lite|4G Pro))(?:[);/ ]|$)'
12427
12648
  device: 'smartphone'
12428
12649
  models:
12429
12650
  - regex: 'Kogan ?(SmarterTV(?: 2K)?|TV|TVAP)(?:[);/ ]|$)'
12430
12651
  device: 'tv'
12431
12652
  model: '$1'
12432
12653
 
12433
- - regex: 'Agora 8 Plus'
12434
- model: 'Agora 8 Plus'
12654
+ - regex: 'Agora ([68]) ?Plus'
12655
+ model: 'Agora $1 Plus'
12435
12656
  - regex: 'Agora XI'
12436
12657
  model: 'Agora 11'
12437
12658
  - regex: 'Agora Go'
12438
12659
  model: 'Agora Go'
12660
+ - regex: 'Agora 4G Pro'
12661
+ model: 'Agora 4G Pro'
12662
+ - regex: 'Agora Lite'
12663
+ model: 'Agora Lite'
12439
12664
  - regex: 'Kogan[ _-]([^;/)]+)(?: Build|[;)])'
12440
12665
  model: '$1'
12441
12666
  - regex: 'Kogan[ _-]([a-z0-9_-]+)'
@@ -12587,7 +12812,7 @@ Diva:
12587
12812
 
12588
12813
  # kyocera (kyocera.co.jp, kyocera.com)
12589
12814
  Kyocera:
12590
- regex: 'Kyocera|KWC-|QC-[0-9]{4}|(?:QC6035|NP501KC|302KC|503KC|602KC|705KC|901KC|C51[27]0|C5155|C5215|C67[35]0|C6522N?|C6530N|C6740N?|C6743|E6[89]10|KYL2[13]|KYV3[1-9]|KYT3[123]|KYF3[1235789]|KYF4[012]|KYX31|KYG01|KYY2[1-4]|S2151|KC-S701|S[468]-KC|S9-KC|S10-KC|KYV40U?|KYY31|KYV4[1-8]|KYV4[47]|KC-S301AE|KC-S302|X3-KC|E6560[CT]|E6782[L]?|E6790(?:TM)?|SZJ-JS20[12]|KCP01K|[47]04KC|A[012]01KC|WX10K|URBANO PROGRESSO|E7110|E6921|KY-51B|C6930|A101BM)(?:[-_][uj]2?)?(?:[);/ ]|$)'
12815
+ regex: 'Kyocera|KWC-|QC-[0-9]{4}|(?:QC6035|NP501KC|302KC|503KC|602KC|705KC|901KC|C51[27]0|C5155|C5215|C67[35]0|C6522N?|C6530N|C6740N?|C6743|E6[89]10|KYL2[13]|KYV3[1-9]|KYT3[123]|KYF3[1235789]|KYF4[012]|KYX31|KYG01|KYY2[1-4]|S2151|KC-S701|S[468]-KC|S9-KC|S10-KC|KYV40U?|KYY31|KYV4[1-8]|KYV4[47]|KC-S301AE|KC-S302|X3-KC|E6560[CT]|E6782[L]?|E6790(?:TM)?|SZJ-JS20[12]|KCP01K|[47]04KC|A[012]01KC|A205KC|WX10K|URBANO PROGRESSO|E7110|E6921|KY-51B|C6930|A101BM)(?:[-_][uj]2?)?(?:[);/ ]|$)'
12591
12816
  device: 'smartphone'
12592
12817
  models:
12593
12818
  # explicit smartphone models
@@ -12739,6 +12964,8 @@ Kyocera:
12739
12964
  model: 'Katan Sumaho 2'
12740
12965
  - regex: 'A201KC(?:[);/ ]|$)'
12741
12966
  model: 'Katan Sumaho 2+'
12967
+ - regex: 'A205KC(?:[);/ ]|$)'
12968
+ model: 'Katan Sumaho 3' # simple smartphone 3
12742
12969
  - regex: 'URBANO PROGRESSO(?:[);/ ]|$)'
12743
12970
  model: 'Urbano Progresso'
12744
12971
  - regex: 'KYY31(?:[);/ ]|$)'
@@ -12828,10 +13055,10 @@ Krüger&Matz:
12828
13055
 
12829
13056
  # LAIQ
12830
13057
  LAIQ:
12831
- regex: 'LAIQ'
13058
+ regex: 'LAIQ|(?:Monaco)(?:[);/ ]|$)'
12832
13059
  device: 'smartphone'
12833
13060
  models:
12834
- - regex: '(Glam|New York|Dubai)(?:[);/ ]|$)'
13061
+ - regex: '(?:LAIQ_)?(Glam|New York|Dubai|Monaco)(?:[);/ ]|$)'
12835
13062
  model: '$1'
12836
13063
 
12837
13064
  # AIS
@@ -12844,6 +13071,12 @@ AIS:
12844
13071
  - regex: 'Kingcomm C500'
12845
13072
  model: 'Super Smart Plus X3'
12846
13073
 
13074
+ # Beko (https://www.beko.com.tr/)
13075
+ Beko:
13076
+ regex: 'Beko(?:[);/ ]|$)'
13077
+ device: 'tv'
13078
+ model: ''
13079
+
12847
13080
  # Benco (www.bencomobile.com)
12848
13081
  Benco:
12849
13082
  regex: 'Benco[_ ]|(?:AE9010|AE9950|AH9110)(?:[);/ ]|$)'
@@ -12862,6 +13095,8 @@ Lava:
12862
13095
  device: 'smartphone'
12863
13096
  models:
12864
13097
  # explicit smartphone models
13098
+ - regex: 'LZX409(?:[);/ ]|$)'
13099
+ model: 'Blaze 2'
12865
13100
  - regex: 'Flair ([ZS]1|P8)(?:[);/ ]|$)'
12866
13101
  model: 'Flair $1'
12867
13102
  - regex: 'AF9030(?:[);/ ]|$)'
@@ -13273,6 +13508,12 @@ Lephone:
13273
13508
  - regex: 'lephone(?:[ _])?([^/);]*)(?: Build|[);])'
13274
13509
  model: '$1'
13275
13510
 
13511
+ # Lemco
13512
+ Lemco:
13513
+ regex: 'Lemco (FBX-3566W?)(?:[);/ ]|$)'
13514
+ device: 'peripheral'
13515
+ model: '$1'
13516
+
13276
13517
  # lenco
13277
13518
  Lenco:
13278
13519
  regex: 'Lenco (?:[^/);]*)(?: Build|[);])|(?:TDV900)(?:[);/ ]|$)'
@@ -13297,7 +13538,7 @@ Aligator:
13297
13538
 
13298
13539
  # lenovo (lenovo.com)
13299
13540
  Lenovo:
13300
- regex: '(?:LNV-)?Lenovo|IdeaTab|IdeaPad|Thinkpad|Yoga Tablet|Tab2A[0-9]-[0-9]{2}[a-z]?|ZUK[ -_]|(?:TB2-X30L|TB3-710I|TB328FU|TB128FU|YT3-X50[MFL]|K50a40|TB-(?:X103F|8504F|X304F|X704V|X704A)|A5500-H|A2107A-H|A3500-HV|A2109A|S6000|Z2 Plus|Vibe[ _](?:P1|S6i Plus|S[23567]i|C|[ZX]2|K5(?: Plus)?|V7)|P2A42|L38011|L18011|[5-8]01LV|[67]02LV|Z2131|K350t|K31-t3|TAB 2 A8-50LC|S90-A|A101LV|P70-A|VR-1541F|d-42A|lineage_A6020|EveryPad2|A2010l36|F0CU0028RK|TB132FU|TB328XU|TB138FC|PB-6505Y|TB-X505[FL]|TB-8704V|TB3[05]0[FX]U|TB-X605[FL]|L38043|TB3-X70L|TB-X605[LF]C|A7600-HV?)(?:[);/ ]|$)'
13541
+ regex: '(?:LNV-)?Lenovo|IdeaTab|IdeaPad|Thinkpad|Yoga Tablet|Tab2A[0-9]-[0-9]{2}[a-z]?|ZUK[ -_]|(?:TB2-X30L|TB3-710I|TB328FU|TB128FU|YT3-X50[MFL]|K50a40|TB-(?:X103F|8504F|X304F|X704V|X704A)|A5500-H|A2107A-H|A3500-HV|A2109A|S6000|Z2 Plus|Vibe[ _](?:P1|S6i Plus|S[23567]i|C|[ZX]2|K5(?: Plus)?|V7)|P2A42|L38011|L18011|[5-8]01LV|[67]02LV|Z2131|K350t|K31-t3|TAB 2 A8-50LC|S90-A|A101LV|P70-A|VR-1541F|d-42A|lineage_A6020|EveryPad2|A2010l36|F0CU0028RK|TB132FU|TB328XU|TB138FC|PB-6505Y|TB-X505[FL]|TB-8704V|TB3[05]0[FX]U|TB-X605[FL]|L38043|TB3-X70L|TB-X605[LF]C|A7600-HV?|YT-X703F)(?:[);/ ]|$)'
13301
13542
  device: 'smartphone'
13302
13543
  models:
13303
13544
  - regex: 'Lenovo ?G780'
@@ -13597,8 +13838,9 @@ Lenovo:
13597
13838
  model: 'Legion Y90'
13598
13839
  - regex: 'L71091'
13599
13840
  model: 'Legion Y70'
13600
- - regex: 'Lenovo S60-?a'
13601
- model: 'S60'
13841
+ - regex: 'Lenovo S([69]0)-?[aU]'
13842
+ model: 'S$1'
13843
+
13602
13844
  - regex: 'Lenovo K30-W(?:[);/ ]|$)'
13603
13845
  model: 'K3'
13604
13846
  - regex: 'L18011(?:[);/ ]|$)'
@@ -13655,7 +13897,7 @@ Lenovo:
13655
13897
  model: 'Vibe C'
13656
13898
  - regex: '(?:VIBE X2|X2-(?:X+CU|TO|AP))(?:[);/ ]|$)'
13657
13899
  model: 'Vibe X2'
13658
- - regex: 'X3(?:a40|c[57]0)(?:[);/ ]|$)'
13900
+ - regex: '(?:X3(?:a40|c[57]0)|K51c78)(?:[);/ ]|$)'
13659
13901
  model: 'Vibe X3'
13660
13902
  - regex: 'Lenovo X3 Lite(?:[);/ ]|$)'
13661
13903
  model: 'Vibe X3 Lite'
@@ -13857,9 +14099,17 @@ Lexibook:
13857
14099
  - regex: '(MFC[0-9]{3}[a-z]{2,})'
13858
14100
  model: '$1'
13859
14101
 
14102
+ # Vargo or Ivargo
14103
+ Vargo:
14104
+ regex: 'Vargo[; _]|(?:V210101|Android 8(?:[\d.]*);(?: [\w-]+;)? VX4)(?:[);/ ]|$)'
14105
+ device: 'smartphone'
14106
+ models:
14107
+ - regex: '(V210101|VX4)(?:[);/ ]|$)'
14108
+ model: '$1'
14109
+
13860
14110
  # LG or LGE (lg.com)
13861
14111
  LG:
13862
- regex: '(?<!TECNO )LG|Web0S; Linux/SmartTV|portalmmm/2\.0 (?:KE|KG|KP|L3)|(?:(?!VX20|VX19)VX[0-9]+|L-0[12]D|L-07C|P713|(LM-[A-Z][0-9]{3}[A-Z]{0,3}(?:\(FGN?\)|\(G\)|\.FN|\.F(?:GN?)?)?)|LM-(X625N1|G820QM[0127])|G Watch|lucye)(?:[);/ ]|$)|NetCast|RS98[78]|RS500|VS(?:50[01]|835|876|880|98[05-8]|99[056]|(410|415|425|500|880)PP)|VS820|VS870 4G|Nexsus 5|LML(41[34]D|211B|713D|212V)L|VK810 4G|VK815|X5-LG|L-05[DE]|L-03K|L-01[LJK]|L-52A|L-[45]1A|901LG|A001LG|80[12]LG|402LG|LGT32|L-02K|L-01F|LM-V40|DM-01K|DM-02H|LMX130IM|VS810PP|VS425|VM670|VS930 4G'
14112
+ regex: '(?<!TECNO Mobile |TECNO )LG|Web0S; Linux/SmartTV|portalmmm/2\.0 (?:KE|KG|KP|L3)|(?:(?!VX20|VX19)VX[0-9]+|L-0[12]D|L-07C|P713|(LM-[A-Z][0-9]{3}[A-Z]{0,3}(?:\(FGN?\)|\(G\)|\.FN|\.F(?:GN?)?)?)|LM-(X625N1|G820QM[0127])|G Watch|lucye)(?:[);/ ]|$)|NetCast|RS98[78]|RS500|VS(?:50[01]|835|876|880|98[05-8]|99[056]|(410|415|425|500|880)PP)|VS820|VS870 4G|Nexsus 5|LML(41[34]D|211B|713D|212V)L|VK810 4G|VK815|X5-LG|L-05[DE]|L-03K|L-01[LJK]|L-52A|L-[45]1A|901LG|A001LG|80[12]LG|402LG|LGT32|L-02K|L-01F|LM-V40|DM-01K|DM-02H|LMX130IM|VS810PP|VS425|VM670|VS930 4G'
13863
14113
  device: 'smartphone'
13864
14114
  models:
13865
14115
  - regex: 'DM-(01K|02H)'
@@ -14743,11 +14993,13 @@ Konka:
14743
14993
 
14744
14994
  # Konrow (konrow.com)
14745
14995
  Konrow:
14746
- regex: 'KONROW[_ ]|(?:KTAB_1003|BIGCOOL|SOFT5|COOLFIVE|COOL-K|Just5|Link5|EASY ?(?:5|62|K55)|EASY_5_EEA|EASY55|CITY55?|Cool55|SKY_?55_EEA|android 11;(?: [\w-]+;)? SWEET5|SWEET 55)(?:[);/ ]|$)'
14996
+ regex: 'KONROW[_ ]|(?:LINK55|KTAB_1003|BIGCOOL|SOFT5|COOLFIVE|COOL-K|Just5|Link5|EASY ?(?:5|62|K55)|EASY_5_EEA|EASY55|CITY55?|Cool55|SKY_?55_EEA|android 11;(?: [\w-]+;)? SWEET5|SWEET 55)(?:[);/ ]|$)'
14747
14997
  device: 'smartphone'
14748
14998
  models:
14749
14999
  - regex: 'BIGCOOL(?:[);/ ]|$)'
14750
15000
  model: 'BigCool'
15001
+ - regex: 'LINK55(?:[);/ ]|$)'
15002
+ model: 'LINK55'
14751
15003
  - regex: 'COOL-K(?:[);/ ]|$)'
14752
15004
  model: 'Cool-K'
14753
15005
  - regex: 'Cool55(?:[);/ ]|$)'
@@ -15615,6 +15867,8 @@ Mobicel:
15615
15867
  model: 'Clik Plus'
15616
15868
  - regex: 'CLIK'
15617
15869
  model: 'Clik'
15870
+ - regex: 'VX(19|20) Pro'
15871
+ model: 'VX$1 Pro'
15618
15872
  - regex: 'VX(19|20)'
15619
15873
  model: 'VX$1'
15620
15874
  - regex: 'PULSE_1'
@@ -16971,7 +17225,7 @@ Nomi:
16971
17225
 
16972
17226
  # NUU Mobile
16973
17227
  NUU Mobile:
16974
- regex: 'NUU_|(?:(?:N(570[24]|500[12])L|S5701L|S6001L|[SN]5501L)|A6L-[CG]|N5502L|S6303L)(?:[);/ ]|$)'
17228
+ regex: 'NUU_|(?:(?:N(570[24]|500[12])L|S5701L|S6001L|[SN]5501L)|A6L-[CG]|N5502L|S6501L|S6303L)(?:[);/ ]|$)'
16975
17229
  device: 'smartphone'
16976
17230
  models:
16977
17231
  - regex: 'NUU_A([13]L?)'
@@ -16988,6 +17242,8 @@ NUU Mobile:
16988
17242
  model: 'M19'
16989
17243
  - regex: 'N5702L'
16990
17244
  model: 'G3'
17245
+ - regex: 'S6501L'
17246
+ model: 'G5'
16991
17247
  - regex: 'N5501L'
16992
17248
  model: 'A5L'
16993
17249
  - regex: 'N5002L'
@@ -17410,7 +17666,7 @@ Olax:
17410
17666
 
17411
17667
  # Olympia (https://www.olympia-vertrieb.de/)
17412
17668
  Olympia:
17413
- regex: 'TREK(?:[);/ ]|$)'
17669
+ regex: '(?<!Stream )TREK(?:[);/ ]|$)'
17414
17670
  device: 'smartphone'
17415
17671
  models:
17416
17672
  - regex: 'TREK(?:[);/ ]|$)'
@@ -17493,17 +17749,21 @@ Onda:
17493
17749
 
17494
17750
  # OnePlus (www.oneplus.com or oneplus.com.ru)
17495
17751
  OnePlus:
17496
- regex: '(?:du_)?ONEPLUS|(?:PGKM10|CPH244[79]|CPH240[19]|CPH24[12]3|CPH246[579]|CPH2487|CPH241[157]|CPH2459|CPH2399|CPH2381|A0001|A200[135]|AC200[13]|A300[03]|A3010|A5000|A600[03]|A601[03]|BE201[1235]|BE202[5689]|E100[135]|GM191[03517]|GM190[0135]|GM192[05]|HD191[0137]|HD190[01357]|HD1925|IN201[013579]|IN202[0135]|KB200[01357]|LE211[01357]|LE212[035]|GN2200|Nord N10 5G|LE210[01]|LE212[17]|DE211[78]|DN210[13]|EB210[13]|MT211[01]|IV2201|NE221[01357]|PGZ110|PGP110|PHK110|PHB110)(?: Build|[;)])'
17752
+ regex: '(?:du_)?ONEPLUS|(?:PGKM10|CPH251[35]|CPH2551|CPH2569|CPH249[31]|CPH244[79]|CPH240[19]|CPH24[12]3|CPH246[579]|CPH2487|CPH241[157]|CPH2419|CPH245[91]|CPH2399|CPH238[19]|A0001|A200[135]|AC200[13]|A300[03]|A3010|A5000|A600[03]|A601[03]|BE201[1235]|BE202[5689]|E100[135]|GM191[03517]|GM190[0135]|GM192[05]|HD191[0137]|HD190[01357]|HD1925|IN201[013579]|IN202[0135]|KB200[01357]|LE211[01357]|LE212[035]|GN2200|Nord N10 5G|LE210[01]|LE212[17]|DE211[78]|DN210[13]|EB210[13]|MT211[01]|IV2201|NE221[01357]|PG[PZ]110|PH[BKP]110)(?: Build|[;)])'
17497
17753
  device: 'smartphone'
17498
17754
  models:
17499
- - regex: '(?:CPH244[79]|PHB110)(?:[);/ ]|$)'
17755
+ - regex: '(?:CPH244[79]|PHB110|CPH2451)(?:[);/ ]|$)'
17500
17756
  model: '11'
17501
17757
  - regex: 'CPH2487(?:[);/ ]|$)'
17502
17758
  model: '11R 5G'
17503
- - regex: 'PGKM10(?:[);/ ]|$)'
17504
- model: 'Ace'
17759
+ - regex: 'CPH2551(?:[);/ ]|$)'
17760
+ model: 'Open'
17505
17761
  - regex: 'PHK110(?:[);/ ]|$)'
17506
17762
  model: 'Ace 2'
17763
+ - regex: 'PGKM10(?:[);/ ]|$)'
17764
+ model: 'Ace'
17765
+ - regex: 'PHP110(?:[);/ ]|$)'
17766
+ model: 'Ace 2V'
17507
17767
  - regex: 'PGP110(?:[);/ ]|$)'
17508
17768
  model: 'Ace Pro'
17509
17769
  - regex: 'PGZ110(?:[);/ ]|$)'
@@ -17518,14 +17778,22 @@ OnePlus:
17518
17778
  model: 'Nord CE 2 Lite'
17519
17779
  - regex: 'CPH246[57](?:[);/ ]|$)'
17520
17780
  model: 'Nord CE 3 Lite'
17781
+ - regex: 'CPH2569(?:[);/ ]|$)'
17782
+ model: 'Nord CE 3 5G'
17783
+ - regex: 'CPH249[13]'
17784
+ model: 'Nord 3 5G'
17521
17785
  - regex: 'BE2012(?:[);/ ]|$)'
17522
17786
  model: 'Clover'
17523
17787
  - regex: 'BE201[135](?:[);/ ]|$)'
17524
17788
  model: 'Nord N100'
17525
17789
  - regex: 'DE211[78](?:[);/ ]|$)'
17526
17790
  model: 'Nord N200 5G'
17791
+ - regex: 'CPH2389'
17792
+ model: 'Nord N300 5G'
17527
17793
  - regex: '(?:GN2200|CPH2459)(?:[);/ ]|$)'
17528
17794
  model: 'Nord N20 5G'
17795
+ - regex: '(?:CPH251[35])(?:[);/ ]|$)'
17796
+ model: 'Nord N30 5G'
17529
17797
  - regex: 'CPH2469(?:[);/ ]|$)'
17530
17798
  model: 'Nord N20 SE'
17531
17799
  - regex: 'BE2025(?:[);/ ]|$)'
@@ -17603,7 +17871,7 @@ OnePlus:
17603
17871
 
17604
17872
  # Realme (sub brand Oppo)
17605
17873
  Realme:
17606
- regex: 'Realme[ _]|(?:RMX(?:18(0[13579]|11|3[13]|2[1257]|[45]1|53|45)|19(03|4[1235]|19|9[23]|2[1579]|[01379]1|73)|20(?:[025-7]1|42|[0357]2|03|2[257]|63|7[56]|63L1|8[1356]|[2-5]0)|21(?:0[13]|1[27]|[12]1|4[24]|5[156]|6[13]|7[036]|8[0359]|9[345])|220[0125]|30(?:[3468]1|4[23]|9[23]|63|85)|31(?:15|2[125]|42|51|6[16]|71|9[1357])|32(?:0[13]|35|42|[346]1|6[0235689]|86)|33(?:[0157]0|[17]2|71|6[036]|[0186]1|57|88|9[12356])|34(?:30|78|[69]1|[67]2|7[145]|9[23])|35(?:0[1236]|1[1367]|21|[578]1|6[0123]|7[24])|36(?:1[0125]|[39]0|2[347]|8[67]|6[013])|370[0689]|3710|37[47]1)|(?:OPPO[ _]?)?CPH1861|RMP210[235-8]|4K Google TV Stick)(?:[);/ ]|$)'
17874
+ regex: 'Realme[ _]|(?:RMX(?:18(0[13579]|11|3[13]|2[1257]|[45]1|53|45)|19(03|4[1235]|19|9[23]|2[1579]|[01379]1|73)|20(?:[025-7]1|42|[0357]2|03|2[257]|63|7[56]|63L1|8[1356]|[2-5]0)|21(?:0[13]|1[27]|[12]1|4[24]|5[156]|6[13]|7[036]|8[0359]|9[345])|220[0125]|30(?:[3468]1|4[23]|9[23]|63|85)|31(?:15|2[125]|42|51|6[16]|71|9[1357])|32(?:0[13]|35|42|[346]1|6[0235689]|86)|33(?:[0157]0|[17]2|71|6[036]|[0186]1|57|88|9[12356])|34(?:30|78|[69]1|[67]2|7[145]|9[23])|35(?:0[1236]|1[1367]|21|[578]1|6[0123]|7[24])|36(?:1[01257]|[39]0|2[347]|8[67]|6[013])|370[0689]|37[146]0|37[47]1|3830)|(?:OPPO[ _]?)?CPH1861|RMP210[235-8]|4K Google TV Stick)(?:[);/ ]|$)'
17607
17875
  device: 'smartphone'
17608
17876
  models:
17609
17877
  - regex: 'RMX370[68]'
@@ -17620,7 +17888,7 @@ Realme:
17620
17888
  model: '2'
17621
17889
  - regex: 'RMX180[137]'
17622
17890
  model: '2 Pro'
17623
- - regex: 'RMX(1833|182[125])'
17891
+ - regex: 'RMX(?:182[125])'
17624
17892
  model: '3'
17625
17893
  - regex: 'RMX1827'
17626
17894
  model: '3i'
@@ -17704,12 +17972,16 @@ Realme:
17704
17972
  model: '9 Pro 5G'
17705
17973
  - regex: 'RMX36(?:30|15)'
17706
17974
  model: '10'
17975
+ - regex: 'RMX3617'
17976
+ model: '10s'
17707
17977
  - regex: 'RMX366[01]'
17708
17978
  model: '10 Pro 5G'
17709
17979
  - regex: 'RMX368[67]'
17710
17980
  model: '10 Pro+ 5G'
17711
17981
  - regex: 'RMX3741'
17712
17982
  model: '11 Pro+ 5G'
17983
+ - regex: 'RMX3740'
17984
+ model: '11 Pro+'
17713
17985
  - regex: 'RMX3771'
17714
17986
  model: '11 Pro 5G'
17715
17987
  - regex: 'RMX1925(?:[);/ ]|$)'
@@ -17754,6 +18026,10 @@ Realme:
17754
18026
  model: 'C35'
17755
18027
  - regex: 'RMX3710'
17756
18028
  model: 'C55'
18029
+ - regex: 'RMX3830'
18030
+ model: 'C51'
18031
+ - regex: 'RMX3760'
18032
+ model: 'C53'
17757
18033
  - regex: 'RMX3231'
17758
18034
  model: 'C11 (2021)'
17759
18035
  - regex: 'RMX3709'
@@ -17808,7 +18084,7 @@ Realme:
17808
18084
  model: 'Narzo 50i'
17809
18085
  - regex: 'RMX3506'
17810
18086
  model: 'Narzo 50i Prime'
17811
- - regex: 'RMX1831(?:[);/ ]|$)'
18087
+ - regex: 'RMX183[13](?:[);/ ]|$)'
17812
18088
  model: 'U1'
17813
18089
  - regex: 'RMX(?:20(?:51|[2]5)|2144)(?:[);/ ]|$)'
17814
18090
  model: 'X50 5G'
@@ -17867,7 +18143,7 @@ Realme:
17867
18143
 
17868
18144
  # Oppo (oppo.com)
17869
18145
  OPPO:
17870
- regex: '(?:OB-)?OPPO[ _]?([a-z0-9]+)|N1T|R8001|R820[16]|A101OP|OPG0[1-4]|A00[12]OP|(?:X90[07][0679]|U70[57]T?|X909T?|R(?:10[01]1|2001|201[07]|6007|7005|7007|80[13579]|81[13579]|82[01379]|83[013]|800[067]|8015|810[679]|811[13]|820[057])[KLSTW]?|N520[79]|N5117|A33[wf]|A33fw|A37fw?|PAAM00|PAAT00|PAC[TM]00|R7kf|R7plus[fmt]?|A1601|CPH[0-9]{4}|CPH19(69|79|23|1[179])|PB(A[TM]00|CT10|BT30|CM[13]0|[FD]M00)|P(E[RFHG]M\d{2}|E[GH]T\d{2}|DAM10|ADM00|AF[TM]00|ADT00|AHM00|BBM[03]0|BBT00|BDT00|BFT00|[CB]E[MT]00|CA[MT]00|C[CDG]M00|CA[MT]10|[CD]PM00|CRM00|CDT00|CD[TM]10|CHM[013]0|CKM[08]0|CLM[15]0|DEM[13]0|DHM00|D[RK][TM]00|DPT00|DB[TM]00|DCM00|[CD]NM00|DVM00|DY[TM][12]0|DNT00|EA[TM]00|CRT01|EDM00)|PFDM00|PEG[MT]10|PEM[MT][02]0|PDCT00|PDET10|PDS[TM]00|PEC[MT]30|PE[QYPEXNLU]M00|PCHT30|PCRT00|PFGM00|PF[VU]M10|A102OP|PFCM00|PFJM10|PGCM10|PECM20|PDAT10|A103OP|PCCT00|PFTM[12]0|PFFM20|OW19W[123]|OW20W1|PGJM10|PGAM10|PF[EF]M10|Reno[45] Z 5G|Reno5 Pro 5G|Reno[56] 5G|Find X[23]|Find N| R7sf| 1201|[56].*; (?:R7[gf])|OPD210[12]A?|OPD2201|PFZM10|PGIM10|A1603|A201OP|PESM10|PGBM10|PHA120|PGGM10|PHM110|PG[WX]110|PGU110|PHJ110|PCCM40|PHQ110|CHP1723|PGT110|PGEM10|RX17Neo|R15 Dream Mirror)(?:[);/ ]|$)'
18146
+ regex: '(?:OB-)?OPPO[ _]?([a-z0-9]+)|N1T|R8001|R820[16]|A101OP|OPG0[1-4]|A00[12]OP|(?:X90[07][0679]|U70[57]T?|X909T?|R(?:10[01]1|2001|201[07]|6007|7005|7007|80[13579]|81[13579]|82[01379]|83[013]|800[067]|8015|810[679]|811[13]|820[057]|15 Neo)[KLSTW]?|N520[79]|N5117|A33[wf]|A33fw|A37fw?|PAAM00|PAAT00|PAC[TM]00|R7kf|R7plus[fmt]?|A1601|CPH[0-9]{4}|CPH19(69|79|23|1[179])|PB(A[TM]00|CT10|BT30|CM[13]0|[FD]M00)|P(E[RFHG]M\d{2}|E[GH]T\d{2}|DAM10|ADM00|AF[TM]00|ADT00|AHM00|BBM[03]0|BBT00|BDT00|BFT00|[CB]E[MT]00|CA[MT]00|C[CDG]M00|CA[MT]10|[CD]PM00|CRM00|CDT00|CD[TM]10|CHM[013]0|CKM[08]0|CLM[15]0|DEM[13]0|DHM00|D[RK][TM]00|DPT00|DB[TM]00|DCM00|[CD]NM00|DVM00|DY[TM][12]0|DNT00|EA[TM]00|CRT01|EDM00)|PFDM00|PEG[MT]10|PEM[MT][02]0|PDCT00|PDET10|PDS[TM]00|PEC[MT]30|PE[QYPEXNLU]M00|PCHT30|PCRT00|PFGM00|PF[VU]M10|A102OP|PFCM00|PFJM10|PGCM10|PECM20|PDAT10|A103OP|PCCT00|PFTM[12]0|PFFM20|OW19W[123]|OW20W1|PGJM10|PGAM10|PF[EF]M10|Reno[45] Z 5G|Reno5 Pro 5G|Reno[56] 5G|Find X[23]|Find N| R7sf| 1201|[56].*; (?:R7[gf])|OPD210[12]A?|OPD2201|PFZM10|PGIM10|A1603|A201OP|PESM10|PGBM10|PHW110|PHA120|PGGM10|PHM110|PG[WX]110|PGU110|PHJ110|PCCM40|PHQ110|CHP1723|PGT110|PGEM10|RX17Neo|R15 Dream Mirror|R9 Plustm A|PGFM10|Reno5 K 5G|A301OP|P(?:JC|H[FV])110)(?:[);/ ]|$)'
17871
18147
  device: 'smartphone'
17872
18148
  models:
17873
18149
  - regex: 'PCHM10(?:[);/ ]|$)'
@@ -17902,12 +18178,16 @@ OPPO:
17902
18178
  model: 'A1s'
17903
18179
  - regex: 'CPH22(?:69|75)(?:[);/ ]|$)'
17904
18180
  model: 'A16'
18181
+ - regex: 'CPH2591(?:[);/ ]|$)'
18182
+ model: 'A18'
17905
18183
  - regex: '(?:OPPO[ _]?)?(CPH1837|PAD[TM]00)(?:[);/ ]|$)'
17906
18184
  model: 'A3'
17907
18185
  - regex: '(?:OPPO[ _]?)?A37f(w)(?:[);/ ]|$)'
17908
18186
  model: 'A37f$1'
17909
18187
  - regex: 'A37f(?:[);/ ]|$)'
17910
18188
  model: 'A37f'
18189
+ - regex: 'CPH2579(?:[);/ ]|$)'
18190
+ model: 'A38'
17911
18191
  - regex: '(?:OPPO[ _]?)?CPH1605(?:[);/ ]|$)'
17912
18192
  model: 'A39'
17913
18193
  - regex: 'PESM10(?:[);/ ]|$)'
@@ -17956,6 +18236,8 @@ OPPO:
17956
18236
  model: 'A57 (2022)'
17957
18237
  - regex: 'PHJ110'
17958
18238
  model: 'A58 5G'
18239
+ - regex: 'CPH2577'
18240
+ model: 'A58'
17959
18241
  - regex: 'PFTM10'
17960
18242
  model: 'A97'
17961
18243
  - regex: 'PHA120'
@@ -17986,6 +18268,8 @@ OPPO:
17986
18268
  model: 'A77 5G'
17987
18269
  - regex: '(?:OPPO[ _]?)?(?:CPH2495|CPH2483)'
17988
18270
  model: 'A78 5G'
18271
+ - regex: '(?:OPPO[ _]?)?CPH2565'
18272
+ model: 'A78'
17989
18273
  - regex: '(?:OPPO[ _]?)?A79kt'
17990
18274
  model: 'A79'
17991
18275
  - regex: '(?:OPPO[ _]?)?CPH2473'
@@ -18016,6 +18300,8 @@ OPPO:
18016
18300
  model: 'A93s'
18017
18301
  - regex: 'PFUM10'
18018
18302
  model: 'A96 5G'
18303
+ - regex: 'CPH2529'
18304
+ model: 'A98 5G'
18019
18305
  - regex: '(?:CPH2203|CPH2333)(?:[);/ ]|$)'
18020
18306
  model: 'A94'
18021
18307
  - regex: '(?:CPH2197)(?:[);/ ]|$)'
@@ -18064,7 +18350,7 @@ OPPO:
18064
18350
  model: 'F9 Pro'
18065
18351
  - regex: '(?:OPPO[ _]?)?CPH2223(?:[);/ ]|$)'
18066
18352
  model: 'F19s'
18067
- - regex: '(?:OPPO[ _]?)?CPH2285(?:[);/ ]|$)'
18353
+ - regex: '(?:OPPO[ _]?)?(?:CPH2285|F19 Pro)(?:[);/ ]|$)'
18068
18354
  model: 'F19 Pro'
18069
18355
  - regex: '(?:OPPO[ _]?)?CPH2213(?:[);/ ]|$)'
18070
18356
  model: 'F19 Pro Plus'
@@ -18084,6 +18370,8 @@ OPPO:
18084
18370
  model: 'Find N2'
18085
18371
  - regex: '(?:OPPO[ _]?)?(?:CPH2437|PGT110)(?:[);/ ]|$)'
18086
18372
  model: 'Find N2 Flip'
18373
+ - regex: '(?:OPPO[ _]?)?(?:CPH2519)(?:[);/ ]|$)'
18374
+ model: 'Find N3 Flip'
18087
18375
  - regex: '(?:OPPO[ _]?)?R815[TW]?(?:[);/ ]|$)'
18088
18376
  model: 'Find Clover'
18089
18377
  - regex: '(?:OPPO[ _]?)?R8015(?:[);/ ]|$)'
@@ -18148,6 +18436,10 @@ OPPO:
18148
18436
  model: 'K10 5G'
18149
18437
  - regex: '(?:OPPO[ _]?)?PGIM10'
18150
18438
  model: 'K10 Pro 5G'
18439
+ - regex: '(?:OPPO[ _]?)?PJC110'
18440
+ model: 'K11 5G'
18441
+ - regex: '(?:OPPO[ _]?)?PHF110'
18442
+ model: 'K11x 5G'
18151
18443
  - regex: '(?:OPPO[ _]?)?N5117(?:[);/ ]|$)'
18152
18444
  model: 'N1 Mini'
18153
18445
  - regex: '(?:OPPO[ _]?)?N520[79](?:[);/ ]|$)'
@@ -18188,6 +18480,8 @@ OPPO:
18188
18480
  model: 'RX17 Neo'
18189
18481
  - regex: 'R15 Dream Mirror'
18190
18482
  model: 'R15 Dream Mirror'
18483
+ - regex: 'R15 Neo'
18484
+ model: 'R15 Neo'
18191
18485
  - regex: '(?:OPPO[ _]?)?(?:CPH1893)(?:[);/ ]|$)'
18192
18486
  model: 'R17 Neo'
18193
18487
  - regex: '(?:OPPO[ _]?)?(?:CPH1877|PBD[MT]00)(?:[);/ ]|$)'
@@ -18210,7 +18504,7 @@ OPPO:
18210
18504
  model: 'R7 Plus'
18211
18505
  - regex: '(?:OPPO[ _]?)?R7Plusf(?:[);/ ]|$)'
18212
18506
  model: 'R7 Plus F'
18213
- - regex: '(?:OPPO[ _]?)?X9079(?:[);/ ]|$)'
18507
+ - regex: '(?:OPPO[ _]?)?(?:X9079|R9 Plustm A)(?:[);/ ]|$)'
18214
18508
  model: 'R9 Plus'
18215
18509
  - regex: '(?:OPPO[ _]?)?(?:CPH1607|R9sk)(?:[);/ ]|$)'
18216
18510
  model: 'R9s'
@@ -18224,6 +18518,14 @@ OPPO:
18224
18518
  model: 'Reno 10X Zoom'
18225
18519
  - regex: 'PCCT00'
18226
18520
  model: 'Reno 10X'
18521
+ - regex: 'PHW110'
18522
+ model: 'Reno 10'
18523
+ - regex: 'CPH2531'
18524
+ model: 'Reno 10 5G'
18525
+ - regex: '(?:CPH2525|PHV110)(?:[);/ ]|$)'
18526
+ model: 'Reno 10 Pro 5G'
18527
+ - regex: 'CPH2521'
18528
+ model: 'Reno 10 Pro+ 5G'
18227
18529
  - regex: '(?:PCKM00|CPH1907)(?:[);/ ]|$)'
18228
18530
  model: 'Reno 2'
18229
18531
  - regex: 'CPH1989(?:[);/ ]|$)'
@@ -18266,6 +18568,8 @@ OPPO:
18266
18568
  model: 'Reno 5 5G'
18267
18569
  - regex: 'PEG[MT]10(?:[);/ ]|$)'
18268
18570
  model: 'Reno 5K'
18571
+ - regex: 'Reno5 K 5G'
18572
+ model: 'Reno 5K 5G'
18269
18573
  - regex: 'CPH2217(?:[);/ ]|$)'
18270
18574
  model: 'Reno 5F'
18271
18575
  - regex: '(?:CPH2211|Reno5 Z 5G)(?:[);/ ]|$)'
@@ -18312,6 +18616,8 @@ OPPO:
18312
18616
  model: 'Reno 9 Pro+'
18313
18617
  - regex: 'PGX110'
18314
18618
  model: 'Reno 9 Pro'
18619
+ - regex: 'CPH2523|A301OP'
18620
+ model: 'Reno 9 A'
18315
18621
  - regex: '(?:PEYM00)(?:[);/ ]|$)'
18316
18622
  model: 'K9 Pro 5G'
18317
18623
  - regex: '(?:PEXM00)(?:[);/ ]|$)'
@@ -18327,6 +18633,10 @@ OPPO:
18327
18633
  - regex: 'A59st(?:[);/ ]|$)'
18328
18634
  model: 'A59s'
18329
18635
 
18636
+ - regex: 'OPPO ?(CNM632)'
18637
+ device: 'tv'
18638
+ model: '$1'
18639
+
18330
18640
  - regex: 'OPD2102A?'
18331
18641
  model: 'Pad Air'
18332
18642
  device: 'tablet'
@@ -18631,6 +18941,9 @@ Panasonic:
18631
18941
  - regex: 'PANASONIC, ([a-z0-9_ \-]+), (?:wired|wireless)'
18632
18942
  model: ''
18633
18943
  device: 'tv'
18944
+ - regex: 'PANASONIC,([a-z0-9_ \-]+),(?:wired|wireless)'
18945
+ model: '$1'
18946
+ device: 'tv'
18634
18947
  - regex: 'Panasonic[ _\-]?([a-z0-9]+)'
18635
18948
  model: '$1'
18636
18949
  - regex: 'portalmmm/2.0 (P[a-z0-9]+)'
@@ -18688,6 +19001,16 @@ ArmPhone:
18688
19001
  device: 'smartphone'
18689
19002
  model: '$1'
18690
19003
 
19004
+ # Penta
19005
+ Penta:
19006
+ regex: 'Penta[ _]|(?:PS650)(?:[);/ ]|$)'
19007
+ device: 'tablet'
19008
+ models:
19009
+ - regex: 'PS650'
19010
+ model: 'Smart PS650'
19011
+ - regex: 'WS704DX'
19012
+ model: 'T-Pad WS704DX'
19013
+
18691
19014
  # Pentagram
18692
19015
  Pentagram:
18693
19016
  regex: 'Pentagram|Quadra|Monster X5'
@@ -18710,7 +19033,7 @@ Pentagram:
18710
19033
 
18711
19034
  # Tcl (tcl.com)
18712
19035
  TCL:
18713
- regex: 'TCL,|TCL[_ -][a-z0-9]+|(?:TCL[_ -][^;/]+ Build)|(?:TCLGalaG60(?:\(9108A\))?|4163D|4187[DMU]|4188[CLRSVO]|5004S|5087Z|5101A|5102[BKLMOP]|5107G|5124J|5130[JMEI]|5133A|5148A|5152D|5159[AJ]|5164D|5199I|6102[ADH]|6125[ADFH]|6127[AI]|6156[ADH]|6159[AK]|6165[AHS]|7040N|8491X|9048S|9060[GX]|9080G|9081X|9295G|9296[GQ]|A(?:50[2789]|600)DL|T(?:60[123]|701)DL|T(?:506D|671[EFGHO]|676[HJK]|766[AHJSU]|767[GHW]|770[BH]|771K|773O|774[BH]|775[BH]|776[HO]|779W|780H|781SPP|781S|781|782H|790[SY]|799[BH]|810[HS])|Percee TV|9317X1|9161G| 9061| 8182| 8167| 8095|BeyondTV\d?|T507U|T610[KE]|9132G|9137W|T430W|T431D|T501[CL]|T768S)(?:_(?:RU|EEA|TR))?(?:[);/ ]|$)'
19036
+ regex: 'TCL,|TCL[_ -][a-z0-9]+|(?:TCL[_ -][^;/]+ Build)|TCL72563C|(?:TCLGalaG60(?:\(9108A\))?|4163D|4187[DMU]|4188[CLRSVO]|5004S|5087Z|5101A|5102[BKLMOP]|5107G|5124J|5130[JMEI]|5133A|5148A|5152D|5159[AJ]|5164D|5199I|6102[ADH]|6125[ADFH]|6127[AI]|6156[ADH]|6159[AK]|6165[AHS]|7040N|8491X|9048S|9060[GX]|9080G|9081X|9295G|9296[GQ]|A(?:50[2789]|600)DL|T(?:60[123]|701)DL|T(?:506D|671[EFGHO]|676[HJK]|766[AHJSU]|767[GHW]|770[BH]|771K|773O|774[BH]|775[BH]|776[HO]|779W|780H|781SPP|781S|781|782H|790[SY]|799[BH]|810[HS])|Percee TV|9317X1|9161G| 9061| 8182| 8167| 8095|BeyondTV\d?|T507U|T610[KE]|9132G|9166G|9137W|T430W|T431[DU]|T501[CL]|T768S)(?:_(?:RU|EEA|TR))?(?:[);/ ]|$)'
18714
19037
  device: 'smartphone'
18715
19038
  models:
18716
19039
  - regex: 'TCLGalaG60(?:\(9108A\))?(?:[);/ ]|$)'
@@ -18727,7 +19050,7 @@ TCL:
18727
19050
  model: '205'
18728
19051
  - regex: '(?:4163D|4188S)(?:[);/ ]|$)'
18729
19052
  model: '304'
18730
- - regex: 'T431D(?:[);/ ]|$)'
19053
+ - regex: 'T431[DU](?:[);/ ]|$)'
18731
19054
  model: '403'
18732
19055
  - regex: '6102[AD](?:[);/ ]|$)'
18733
19056
  model: '305'
@@ -18889,6 +19212,9 @@ TCL:
18889
19212
  - regex: '9137W'
18890
19213
  device: 'tablet'
18891
19214
  model: 'Tab 8 LE'
19215
+ - regex: '9166G'
19216
+ device: 'tablet'
19217
+ model: 'Tab 11 LTE'
18892
19218
  - regex: '8491X'
18893
19219
  device: 'tablet'
18894
19220
  model: 'Tab 10L'
@@ -18905,10 +19231,16 @@ TCL:
18905
19231
  - regex: '((?:43|55)S62FS|(?:43|50)P65US|U(?:43|60|65)P60|65P4USM|(?:40|49)S62|L32S6|55P610|50P8S|55S62|(?:43|50)P6US|55DP60)'
18906
19232
  device: 'tv'
18907
19233
  model: '$1'
19234
+ - regex: 'TCL72563C'
19235
+ device: 'tv'
19236
+ model: '72563C'
19237
+ - regex: 'TCL,([a-z0-9_ \-]+),(?:wired|wireless)'
19238
+ device: 'tv'
19239
+ model: '$1'
18908
19240
 
18909
19241
  # JVC
18910
19242
  JVC:
18911
- regex: 'JVC[;,]|AV-10NT310|AFTSO001'
19243
+ regex: 'JVC[;, ]|AV-10NT310|AFTSO001'
18912
19244
  device: 'tv'
18913
19245
  models:
18914
19246
  - regex: 'JVC[;,](32D1290)'
@@ -19253,6 +19585,8 @@ Safaricom:
19253
19585
  models:
19254
19586
  - regex: 'NEON_RAY_PRO'
19255
19587
  model: 'Neon Ray Pro'
19588
+ - regex: 'Neon Ray Ultra'
19589
+ model: 'Neon Ray Ultra'
19256
19590
  - regex: 'NEON_RAY'
19257
19591
  model: 'Neon Ray'
19258
19592
  - regex: 'NEON RAY 2'
@@ -19344,7 +19678,7 @@ Soundmax:
19344
19678
 
19345
19679
  # Samsung
19346
19680
  Samsung:
19347
- regex: 'SAMSUNG(?! ?(?:Browser|Redmi))|FamilyHub|Maple (?!III)|Gear Live|(?:SEC_)?SC-(?:001|01[EFGHKLM]|02[CGHJKLMF]|03[EFJKL]|04[EFJLG]|05[GL]|(?:4[12]|5[1-4])A|5[1-5]B|5[1-5]C|56C)|N[57]100|N5110|N9100|S(?:CH|GH|PH|EC|AM|HV|HW|M)-|SMART-TV|GT-|(?<!GOG|GOG )Galaxy|(?:portalmmm|o2imode)/2\.0 [SZ]|sam[rua]|beyond[02]q?|crownq?lte|vollo Vi86(?:[);/ ]|$)|(?:lineage_|aokp_|rr_)?(?:serranoltexx|j5y17lte|Santos103G|fortuna3g)|(?:OTV-)?SMT-E5015|ISW11SC|40[34]SC|SC(?:G1[6789]|V3[1-9]|V4[0-9]|51Aa|-56B|T21|G0[1-9]|G1[0-5]|L2[234])(?:-[uj])?(?:[);/ ]|$)'
19681
+ regex: 'SAMSUNG(?! ?(?:Browser|Redmi))|FamilyHub|Maple (?!III)|Maple2012|SMART-TV.+Tizen.+SamsungBrowser|Gear Live|(?:SEC_)?SC-(?:001|01[EFGHKLM]|02[CGHJKLMF]|03[EFJKL]|04[EFJLG]|05[GL]|(?:4[12]|5[1-4])A|5[1-5]B|5[1-5]C|56C|5[23]D)|N[57]100|N5110|N9100|S(?:CH|GH|PH|EC|AM|HV|HW|M)-|GT-|(?<!GOG|GOG )Galaxy|(?:portalmmm|o2imode)/2\.0 [SZ]|sam[rua]|beyond[02]q?|crownq?lte|vollo Vi86(?:[);/ ]|$)|(?:lineage_|aokp_|rr_)?(?:serranoltexx|j5y17lte|Santos103G|fortuna3g)|(?:OTV-)?SMT-E5015|ISW11SC|40[34]SC|SC(?:G1[6789]|G21|V3[1-9]|V4[0-9]|51Aa|-56B|T21|G0[1-9]|G1[0-5]|L2[234])(?:-[uj])?(?:[);/ ]|$)'
19348
19682
  device: 'smartphone'
19349
19683
  models:
19350
19684
  # explicit tv models
@@ -19360,6 +19694,9 @@ Samsung:
19360
19694
  - regex: 'Samsung, ([a-z0-9_ \-]+), (?:wired|wireless)'
19361
19695
  device: 'tv'
19362
19696
  model: '$1'
19697
+ - regex: 'Maple2012'
19698
+ device: 'tv'
19699
+ model: 'Smart TV (2012)'
19363
19700
 
19364
19701
  # explicit tablet models
19365
19702
  - regex: '(?:SAMSUNG-)?(?:GT-)?N5100'
@@ -20183,7 +20520,7 @@ Samsung:
20183
20520
  model: 'Galaxy S23'
20184
20521
  - regex: '(?:SAMSUNG-)?SM-S916'
20185
20522
  model: 'Galaxy S23+'
20186
- - regex: '(?:SAMSUNG-)?SM-S918'
20523
+ - regex: '(?:SAMSUNG-)?(?:SM-S918|SC-52D)'
20187
20524
  model: 'Galaxy S23 Ultra'
20188
20525
  - regex: '(?:SAMSUNG-)?SM-F700(?:U1|[0FNUW])|SCV47'
20189
20526
  model: 'Galaxy Z Flip'
@@ -20285,7 +20622,7 @@ Samsung:
20285
20622
  model: 'Galaxy A72'
20286
20623
  - regex: '(?:SAMSUNG-)?SM-A736'
20287
20624
  model: 'Galaxy A73 5G'
20288
- - regex: '(?:SAMSUNG-)?SM-A716(?:U1|[0BUV])(?:[);/ ]|$)'
20625
+ - regex: '(?:SAMSUNG-)?SM-A716(?:U1|[0BUVT])(?:[);/ ]|$)'
20289
20626
  model: 'Galaxy A71 5G'
20290
20627
  - regex: '(?:SAMSUNG-)?SM-A(?:530F|800[0FISXY])|SCV32'
20291
20628
  model: 'Galaxy A8'
@@ -20365,13 +20702,13 @@ Samsung:
20365
20702
  model: 'Galaxy A50s'
20366
20703
  - regex: '(?:SAMSUNG-)?SM-(?:A515[FUW]|S515DL)'
20367
20704
  model: 'Galaxy A51'
20368
- - regex: '(?:SAMSUNG-)?(?:SM-A516(?:U1|[0BNUV])|SC-54A|SCG07)'
20705
+ - regex: '(?:SAMSUNG-)?(?:SM-A516(?:U1|[0BNUVT])|SC-54A|SCG07)'
20369
20706
  model: 'Galaxy A51 5G'
20370
20707
  - regex: '(?:SAMSUNG-)?SM-A536V'
20371
20708
  model: 'Galaxy A53 5G UW'
20372
20709
  - regex: '(?:SAMSUNG-)?(?:SM-A536|SC-53C|SCG15|SM-S536DL)'
20373
20710
  model: 'Galaxy A53 5G'
20374
- - regex: '(?:SAMSUNG-)?(?:SM-A546)'
20711
+ - regex: '(?:SAMSUNG-)?(?:SM-A546|SC-53D|SCG21)'
20375
20712
  model: 'Galaxy A54 5G'
20376
20713
  - regex: '(?:SAMSUNG-)?SM-A705(?:GM|[MYF]N|[0FUWX])'
20377
20714
  model: 'Galaxy A70'
@@ -20587,8 +20924,12 @@ Samsung:
20587
20924
  model: 'Galaxy Quantum 3'
20588
20925
  - regex: '(?:SAMSUNG-)?SM-M536'
20589
20926
  model: 'Galaxy M53 5G'
20927
+ - regex: '(?:SAMSUNG-)?SM-M546'
20928
+ model: 'Galaxy M54 5G'
20590
20929
  - regex: '(?:SAMSUNG-)?SM-M625'
20591
20930
  model: 'Galaxy M62'
20931
+ - regex: '(?:SAMSUNG-)?SM-M546'
20932
+ model: 'Galaxy M54 5G'
20592
20933
  - regex: '(?:SAMSUNG-)?SM-W201([689])'
20593
20934
  model: 'Galaxy W201$1'
20594
20935
  - regex: '(?:SAMSUNG-)?SM-W2022'
@@ -20664,6 +21005,9 @@ Samsung:
20664
21005
  - regex: '(?:SAMSUNG-)?(?:SM-F721|SC-54C|SCG17)'
20665
21006
  model: 'Galaxy Z Flip 4'
20666
21007
  device: 'phablet'
21008
+ - regex: '(?:SAMSUNG-)?(?:SM-F731)'
21009
+ model: 'Galaxy Z Flip 5'
21010
+ device: 'phablet'
20667
21011
  - regex: '(?:SAMSUNG-)?SM-F916(?:U1|[0BNQUW])|SCG05'
20668
21012
  model: 'Galaxy Z Fold 2 5G'
20669
21013
  device: 'phablet'
@@ -20673,6 +21017,9 @@ Samsung:
20673
21017
  - regex: '(?:SAMSUNG-)?(?:SM-F936|SCG16|SC-55C)'
20674
21018
  model: 'Galaxy Z Fold 4'
20675
21019
  device: 'phablet'
21020
+ - regex: '(?:SAMSUNG-)?(?:SM-F946)'
21021
+ model: 'Galaxy Z Fold 5'
21022
+ device: 'phablet'
20676
21023
  - regex: '(?:SAMSUNG-)?GT-I9060(?:[);/ ]|$)'
20677
21024
  model: 'Galaxy Grand Neo'
20678
21025
  device: 'phablet'
@@ -20835,7 +21182,7 @@ Samsung:
20835
21182
  model: '$1'
20836
21183
  - regex: 'SAMSUNG[ _/\-]?([a-z0-9\-]+)'
20837
21184
  model: '$1'
20838
- - regex: 'SAMSUNG;[ ]?([a-z0-9 ]+)'
21185
+ - regex: 'SAMSUNG;(?! CPU OS)[ ]?([a-z0-9 ]+)'
20839
21186
  model: '$1'
20840
21187
  - regex: 'SEC_SC-([a-z0-9]+)'
20841
21188
  model: 'SC-$1' # NTT DoCoMo
@@ -22042,6 +22389,12 @@ COYOTE:
22042
22389
  - regex: '1090 DVR Maximus Pro'
22043
22390
  model: '1090 DVR Maximus Pro' # GPS tablet
22044
22391
 
22392
+ # Matco Tools
22393
+ Matco Tools:
22394
+ regex: '(Maximus 3\.0)'
22395
+ device: 'tablet'
22396
+ model: '$1'
22397
+
22045
22398
  # Maximus (maximus-mobile.com)
22046
22399
  Maximus:
22047
22400
  regex: 'Maximus[ _]|(Noir X|G10 max|iX Ultra)(?:[);/ ]|$)'
@@ -22508,75 +22861,6 @@ Starmobile:
22508
22861
  device: 'tablet'
22509
22862
  model: 'Engage 7 Plus'
22510
22863
 
22511
- # Toshiba
22512
- Toshiba:
22513
- regex: 'Toshiba|TSBNetTV/|portalmmm/[12].0 TS|(?:T-01C|T-0[12]D|IS04|IS11T|AT1S0|AT300SE|AFTDCT31|AT(?:7-C|10-A|10[PL]E-A|100|200|270|300|330|374|400|470|500a?|503|570|703|830)|AFTKMST12|AFTBAMR311|SATELLITE (?:C655|L50-C|Pro L300|A100))(?:[);/ ]|$)'
22514
- device: 'smartphone'
22515
- models:
22516
- # explicit smartphone models
22517
- - regex: 'T-01C'
22518
- model: 'Regza T-01C'
22519
- - regex: 'T-01D'
22520
- model: 'Regza T-01D'
22521
- - regex: 'T-02D'
22522
- model: 'Regza T-02D'
22523
- - regex: 'IS04'
22524
- model: 'Regza IS04'
22525
- - regex: 'IS11T'
22526
- model: 'Regza IS11T'
22527
-
22528
- # explicit tablet models
22529
- - regex: 'AT7-C'
22530
- model: 'Excite'
22531
- device: 'tablet'
22532
- - regex: 'AT1S0'
22533
- model: 'Regza AT1S0'
22534
- device: 'tablet'
22535
- - regex: 'AT300SE'
22536
- model: 'Regza AT300SE'
22537
- device: 'tablet'
22538
- - regex: 'AT500a'
22539
- model: 'Regza AT500a'
22540
- device: 'tablet'
22541
- - regex: 'AT(100|200|270|300|330|374|400|470|500|503|570|703|830)'
22542
- model: 'Regza AT$1'
22543
- device: 'tablet'
22544
- - regex: 'AT10([PL])E-A'
22545
- model: 'Excite AT10$1-A'
22546
- device: 'tablet'
22547
- - regex: 'AT10-A'
22548
- model: 'Excite AT10-A'
22549
- device: 'tablet'
22550
-
22551
- - regex: 'SATELLITE L50-C'
22552
- device: 'desktop'
22553
- model: 'Satellite L50C'
22554
- - regex: 'SATELLITE (C655|Pro L300|A100)'
22555
- device: 'desktop'
22556
- model: 'Satellite $1'
22557
-
22558
- - regex: 'AFTKMST12'
22559
- device: 'tv'
22560
- model: '43LF711U20'
22561
- - regex: 'AFTDCT31'
22562
- device: 'tv'
22563
- model: '4K UHD (2020)'
22564
- - regex: 'AFTBAMR311'
22565
- device: 'tv'
22566
- model: '43LF421U19'
22567
- - regex: 'TOSHIBA, ([a-z0-9_ \-]+), (?:wired|wireless)'
22568
- device: 'tv'
22569
- model: ''
22570
- - regex: 'TSBNetTV/'
22571
- device: 'tv'
22572
- model: ''
22573
- - regex: 'Toshiba[ /_\-]?([a-z0-9_ \-]+) Build'
22574
- model: '$1'
22575
- - regex: 'Toshiba[ /_\-]?([a-z0-9_\-]+)'
22576
- model: '$1'
22577
- - regex: 'portalmmm/[12].0 (TS[a-z0-9 ]+)'
22578
- model: '$1'
22579
-
22580
22864
  # Ok
22581
22865
  Ok:
22582
22866
  regex: 'AFTWI001(?:[);/ ]|$)'
@@ -22589,6 +22873,12 @@ Anker:
22589
22873
  device: 'tv'
22590
22874
  model: 'Nebula Soundbar'
22591
22875
 
22876
+ # Altus (https://www.altus.com.tr/)
22877
+ Altus:
22878
+ regex: 'Altus(?:[);/ ]|$)'
22879
+ device: 'tv'
22880
+ model: ''
22881
+
22592
22882
  # Kindle
22593
22883
  Amazon:
22594
22884
  regex: '(?:AFT[ABMNRST]|AFTSSS?|AFTKA|SD4930UR|AEO(?:BC|C[HW]|KN)|KF(?:OT|ONWI|TT|JWI|JWA|[DFS]OWI|A[PRSU]WI|T[BH]WI|TRP?WI|SAW[IA]|GIWI|KAWI|MAWI|MEWI|MUWI|SUWI))(?:[);/ ]|$)|Kindle|AlexaMediaPlayer|Amazon (?:Tate|Jem)|Silk/\d+\.\d+|Echo/1|.+FIRETVSTICK'
@@ -22647,6 +22937,8 @@ Amazon:
22647
22937
  model: 'Kindle Fire HDX 8.9" WiFi'
22648
22938
  - regex: 'KFAPWA(?:[);/ ]|$)'
22649
22939
  model: 'Kindle Fire HDX 8.9" 4G'
22940
+ - regex: 'KFSNWI(?:[);/ ]|$)'
22941
+ model: 'Fire Max 11'
22650
22942
  - regex: 'KFARWI(?:[);/ ]|$)'
22651
22943
  model: 'Fire HD 6'
22652
22944
  - regex: 'KFASWI(?:[);/ ]|$)'
@@ -22834,20 +23126,22 @@ T-Mobile:
22834
23126
 
22835
23127
  # Teclast (teclast.com)
22836
23128
  Teclast:
22837
- regex: 'Teclast|P80_G3M2|TLA00[12]|TLA016|X98 Air III|M20_4G|X98 Air II\(HG5N\)|Tbook|X80 Power\(B2N4\)|(?:[TM]40 Plus|T30|P80[XH]|P20HD|P10[_ ]HD|M40|P10SE?|M30_Pro|M40SE|P8[05]|P25(?:_T)?|P[23]0S|P[34]0HD)_(?:ROW|EEA|RUS)|P20HD\(N6H5\)|T40 Plus\(M7T3\)|T40Pro|T40 PRO(?:\(T1A1\))?|T10\(E3C[56]\)|P10S\(N4H5\)|98\(M1E[45789]\)|98\(M3E3\)|X10 \(M1D3\)|M89 Pro|M40\(N9H[123]\)|P20HD\(N6H7\)|M40SE\(M5T3\)|M40(?:SE?|Pro|Air)_(?:ROW|EEA|RUS)| P80X|P30Air|P10HD_Lite|(?:T50|M40_Plus|M40 Pro)_(?:ROW|EEA)'
23129
+ regex: 'Teclast|P80_G3M2|TLA00[12]|TLA016|X98 Air III|M20_4G|X98 Air II\(HG5N\)|Tbook|X80 Power\(B2N4\)|P80H\(D1C2\)|T20\(T2E1\)|(?:[TM]40 Plus|T30|P80[XH]|P20HD|P10[_ ]HD|M40|P10SE?|M30_Pro|M40SE|P8[05]|P25(?:_T)?|P[23]0S|P[34]0HD)_(?:ROW|EEA|RUS)|P20HD\(N6H5\)|T40 Plus\(M7T3\)|T40Pro|T40 PRO(?:\(T1A1\))?|T10\(E3C[56]\)|P10S\(N4H5\)|98\(M1E[45789]\)|98\(M3E3\)|X10 \(M1D3\)|M89 Pro|M40\(N9H[123]\)|P20HD\(N6H7\)|M40SE\(M5T3\)|M40(?:SE?|Pro|Air)_(?:ROW|EEA|RUS)| P80X|P30Air|P10HD_Lite|(?:T50|M40_Plus|M40 Pro|T50Pro_W)_(?:ROW|EEA)|P40HD_T_EEA'
22838
23130
  device: 'tablet'
22839
23131
  models:
22840
23132
  - regex: 'Tbook[_ -]([^;/]+)(?: Build|[;)]|$)'
22841
23133
  model: 'Tbook $1'
22842
23134
  - regex: 'T10\(E3C[56]\)'
22843
23135
  model: 'T10'
23136
+ - regex: 'T20\(T2E1\)'
23137
+ model: 'T20'
22844
23138
  - regex: 'X10 \(M1D3\)'
22845
23139
  model: 'X10'
22846
23140
  - regex: 'P10S(?:\(N4H5\)|_(?:ROW|EEA))(?:[);/ ]|$)'
22847
23141
  model: 'P10S'
22848
23142
  - regex: 'P20HD_?(?:ROW|EEA|RUS)|P20HD\(N6H[57]\)'
22849
23143
  model: 'P20HD'
22850
- - regex: 'P40HD_?(?:ROW|EEA|RUS)'
23144
+ - regex: 'P40HD_?(?:ROW|EEA|RUS|T_EEA)'
22851
23145
  model: 'P40HD'
22852
23146
  - regex: 'P10[_ ]HD_(?:ROW|EEA)'
22853
23147
  model: 'Apex P10HD'
@@ -22887,6 +23181,10 @@ Teclast:
22887
23181
  model: 'T40'
22888
23182
  - regex: 'T40 Plus(?:_(?:ROW|EEA)|\(M7T3\))'
22889
23183
  model: 'T40 Plus'
23184
+ - regex: 'T50Pro_W'
23185
+ model: 'T50 Pro'
23186
+ - regex: 'P80H\(D1C2\)'
23187
+ model: 'P80h'
22890
23188
  - regex: '(P80[Xh]|P30HD|T30|M40|P25(?:_T)?|P10SE|P20S|T50)[_ ](?:ROW|EEA)'
22891
23189
  model: '$1'
22892
23190
  - regex: 'P80X'
@@ -22906,11 +23204,13 @@ Teclast:
22906
23204
 
22907
23205
  # Tecno Mobile or Tecno
22908
23206
  Tecno Mobile:
22909
- regex: 'Tecno|Phantom[56]|Phantom6-Plus|DP7C Pro-SGA1'
23207
+ regex: 'Tecno|Phantom[56]|Phantom6-Plus|Phantom6S|DP7C Pro-SGA1'
22910
23208
  device: 'smartphone'
22911
23209
  models:
22912
23210
  - regex: 'Phantom6-Plus'
22913
23211
  model: 'Phantom 6 Plus'
23212
+ - regex: 'Phantom6S'
23213
+ model: 'Phantom 6S'
22914
23214
  - regex: 'Phantom([56])'
22915
23215
  model: 'Phantom $1'
22916
23216
  - regex: 'TECNO[ _]AD8'
@@ -22957,7 +23257,7 @@ Tecno Mobile:
22957
23257
  - regex: 'Tecno[ _]P701(?:[);/ ]|$)'
22958
23258
  model: 'DroidPad 7D'
22959
23259
  device: 'tablet'
22960
- - regex: 'DP7C Pro-SGA1(?:[);/ ]|$)'
23260
+ - regex: '(?:DP7C Pro-SGA1|TECNO[ _]DP7CPRO)(?:[);/ ]|$)'
22961
23261
  model: 'DroidPad 7C Pro'
22962
23262
  device: 'tablet'
22963
23263
  - regex: 'Tecno[ _]P703(?:[);/ ]|$)'
@@ -23100,13 +23400,13 @@ Tecno Mobile:
23100
23400
  model: 'Pop 6 Go'
23101
23401
  - regex: 'TECNO[ _]BE8[i]?(?:[);/ ]|$)'
23102
23402
  model: 'Pop 6 Pro'
23103
- - regex: 'TECNO[ _]BF7(?:[);/ ]|$)'
23403
+ - regex: 'TECNO[ _]BF7h?(?:[);/ ]|$)'
23104
23404
  model: 'Pop 7 Pro'
23105
23405
  - regex: 'Tecno[ _]SA1S Pro(?:[);/ ]|$)'
23106
23406
  model: 'SA1s Pro'
23107
23407
  - regex: 'Tecno[ _]KG5[mh]?(?:[);/ ]|$)'
23108
23408
  model: 'Spark Go (2022)'
23109
- - regex: 'Tecno[ _]BF7n(?:[);/ ]|$)'
23409
+ - regex: 'Tecno[ _](?:Mobile )?BF7n(?:[);/ ]|$)'
23110
23410
  model: 'Spark Go (2023)'
23111
23411
  - regex: 'Tecno[ _]KA7O?(?:[);/ ]|$)'
23112
23412
  model: 'Spark 2'
@@ -23158,9 +23458,9 @@ Tecno Mobile:
23158
23458
  model: 'Spark 9'
23159
23459
  - regex: 'TECNO[ _]KH6(?:[);/ ]|$)'
23160
23460
  model: 'Spark 9T'
23161
- - regex: 'TECNO[ _]KI5[km]'
23461
+ - regex: 'TECNO[ _](?:Mobile[ _])?KI5[km]'
23162
23462
  model: 'Spark 10C'
23163
- - regex: 'TECNO[ _]KI5'
23463
+ - regex: 'TECNO[ _](?:Mobile[ _])?KI5'
23164
23464
  model: 'Spark 10'
23165
23465
  - regex: 'TECNO[ _]KI8'
23166
23466
  model: 'Spark 10 5G'
@@ -23217,9 +23517,12 @@ Tecno Mobile:
23217
23517
  - regex: 'TECNO[ _]LE6h?(?:[);/ ]|$)'
23218
23518
  device: 'phablet'
23219
23519
  model: 'Pova Neo'
23220
- - regex: 'TECNO[ _]LG6n(?:[);/ ]|$)'
23520
+ - regex: 'TECNO[ _](?:Mobile )?LG6n(?:[);/ ]|$)'
23221
23521
  device: 'phablet'
23222
23522
  model: 'Pova Neo 2'
23523
+ - regex: 'TECNO[ _]LH6n(?:[);/ ]|$)'
23524
+ device: 'phablet'
23525
+ model: 'Pova Neo 3'
23223
23526
  - regex: 'TECNO[ _]LE7n?(?:[);/ ]|$)'
23224
23527
  device: 'phablet'
23225
23528
  model: 'Pova 2'
@@ -24085,15 +24388,23 @@ VK Mobile:
24085
24388
  device: 'feature phone'
24086
24389
  model: 'VK$1'
24087
24390
 
24391
+ # Fortis
24392
+ Fortis:
24393
+ regex: '(Apollo 5 Neo)(?:[);/ ]|$)'
24394
+ device: 'smartphone'
24395
+ model: '$1'
24396
+
24088
24397
  # Vernee
24089
24398
  Vernee:
24090
- regex: 'Vernee|(?:Mars Pro|Apollo[ _](?:Lite|X)|Thor (?:E|Plus)|X2_euro|M7_EEA|T3 Pro|V2 Pro)(?:[);/ ]|$)'
24399
+ regex: 'Vernee|(?:Mars Pro|Apollo[ _](?:Lite|X)|Thor (?:E|Plus)|X2_euro|M7_EEA|T3 Pro|V2 Pro|(?<!MAXTRON )Apollo)(?:[);/ ]|$)'
24091
24400
  device: 'smartphone'
24092
24401
  models:
24093
24402
  - regex: 'Apollo[ _]Lite'
24094
24403
  model: 'Apollo Lite'
24095
24404
  - regex: 'Apollo[ _]X'
24096
24405
  model: 'Apollo X'
24406
+ - regex: 'Apollo'
24407
+ model: 'Apollo'
24097
24408
  - regex: 'Mars Pro'
24098
24409
  model: 'Mars Pro'
24099
24410
  - regex: 'Thor E'
@@ -24275,7 +24586,7 @@ Verykool:
24275
24586
 
24276
24587
  # Vestel (vestel.com)
24277
24588
  Vestel:
24278
- regex: 'Vestel[ _]|Venus[ _](GO|E[2-5]|V[1-9]|Z[1-9]0)|(?<!Winnovo )V_?TAB|VP74|VT97PRO|VSP145M|VSP250[GS]|VSP355[GS]|V3_5580_Dual|V TAB Z[12]'
24589
+ regex: 'Vestel[ _,/]|Venus[ _](GO|E[2-5]|V[1-9]|Z[1-9]0)|(?<!Winnovo )V_?TAB|VP74|VT97PRO|VSP145M|VSP250[GS]|VSP355[GS]|V3_5580_Dual|V TAB Z[12]'
24279
24590
  device: 'smartphone'
24280
24591
  models:
24281
24592
  - regex: 'VT97PRO'
@@ -24332,6 +24643,10 @@ Vestel:
24332
24643
  - regex: 'Vestel[ _](5000|5530)'
24333
24644
  model: '$1'
24334
24645
 
24646
+ - regex: 'VESTEL, ([a-z0-9_ \-]+), (?:wired|wireless)|\+CE-HTML'
24647
+ device: 'tv'
24648
+ model: ''
24649
+
24335
24650
  # Videocon
24336
24651
  Videocon:
24337
24652
  regex: 'Videocon[_ \-]|(?:VT75C|V50DC|V406018|V512930|V50(?:2430|3630|4730|5024|5430|4630|5[98]20)|Z45_(?:Dazzle|Amaze)|Z45Q Star|Z50 Nova)(?:[);/ ]|$)'
@@ -24739,22 +25054,9 @@ Smart:
24739
25054
  - regex: '(Coral 4|Slide Lite|Notrino|Smart PRIME II)'
24740
25055
  model: '$1'
24741
25056
 
24742
- # Sunny
24743
- Sunny:
24744
- regex: '(?:SS4G9 Mira|SS4G7 Sole|SS4G1 Luna|SS4G8 Nora|SS4G6 Lola|SN7014S?|SN7016|SN10016|SUNNY (?:SS01|S52D))(?:[);/ ]|$)'
24745
- device: 'smartphone'
24746
- models:
24747
- - regex: '(SS4G9 Mira|SS4G7 Sole|SS4G1 Luna|SS4G8 Nora|SS4G6 Lola)(?:[);/ ]|$)'
24748
- model: '$1'
24749
- - regex: 'SUNNY (SS01|S52D)'
24750
- model: '$1'
24751
- - regex: '(SN7014S?|SN7016|SN10016)(?:[);/ ]|$)'
24752
- device: 'tablet'
24753
- model: '$1'
24754
-
24755
25057
  # Wiko (wikomobile.com)
24756
25058
  Wiko:
24757
- regex: '(?:WIKO[_ -])|(?:WIKO-)?CINK_[a-z0-9_]+|(?:WIKO-)?HIGHWAY_[a-z0-9_]+|(?:WIKO-)?(?:Cink([^/;]*)|Highway([^/;]*)|Iggy|Stairway|Rainbow ?(Jam|Lite|Up)?|Darkside|Darkmoon|Darkfull|Darknight|Freddy|FEVER|Jerry[2]?|Sublim|Ozzy|JIMMY|Barry|Birdy|Bloom(?!4)|Getaway|Goa(?!nna|lPlus|-)|Kite|Robby|Lenny[2-9]?|(?<!iBall[_ ])Slide|Sunset[2-9]?|Sunny[2-9]?|Tommy[2-9]?|PULP(?: Fab)?|Wax|HARRY|Ridge(?! Plus)(?: Fab)?|U FEEL(?: Prime| Lite)?|U PULSE(?: LITE)?|View2 (?:Go|Plus)|View XL|View Prime)(?: Plus)?(?: 4G)?(?: Build|$)?|W_(?:C8[06]0|K[346]00|P130|P200|C200SN)|WC300|W-(?:V7[23]0|V745|V755|V8[035]0|P[36]11|K130|K211|K3[68]0|K420|K510S?|K521|K560|K610|K630)-(?:BYT|EEA|FRA|OPE|SU[IN]|SWI|TIM|TMV|TVM|DU|T[HV]|ID)|WIM Lite|W-V851|W-V6[08]0|W-V750BN|W-V770|W-K200|W-U300|(?:U307AS|CINK PEAX 2|HIGHWAY PURE|C210AE|v3913|U614AS|V3991AN|v12fnlite|K-KOOL|p6901|U616AT|VHEM|KENNY|View Go| WIM)(?:[);/ ]|$)'
25059
+ regex: '(?:WIKO[_ -])|(?:WIKO-)?CINK_[a-z0-9_]+|(?:WIKO-)?HIGHWAY_[a-z0-9_]+|(?:WIKO-)?(?:Cink([^/;]*)|Highway([^/;]*)|Iggy|Stairway|Rainbow ?(Jam|Lite|Up)?|Darkside|Darkmoon|Darkfull|Darknight|Freddy|FEVER|Jerry[2]?|Sublim|Ozzy|JIMMY|Barry|Birdy|Bloom(?!4)|Getaway|Goa(?!nna|lPlus|-)|Kite|Robby|Lenny[2-9]?|(?<!iBall[_ ])Slide2?|Sunset[2-9]?|Sunny[2-9]?|Tommy[2-9]?|PULP(?: Fab)?|Wax|HARRY|Ridge(?! Plus)(?: Fab)?|U FEEL(?: Prime| Lite)?|U PULSE(?: LITE)?|View2 (?:Go|Plus)|View XL|View Prime)(?: Plus)?(?: 4G)?(?: Build|$)?|W_(?:C8[06]0|K[346]00|P130|P200|C200SN)|WC300|W-(?:V7[23]0|V745|V755|V8[035]0|P[36]11|K130|K211|K3[68]0|K420|K510S?|K521|K560|K610|K630)-(?:BYT|EEA|FRA|OPE|SU[IN]|SWI|TIM|TMV|TVM|DU|T[HV]|ID)|WIM Lite|W-V851|W-V6[08]0|W-V750BN|W-V770|W-K200|W-U300|(?:U307AS|CINK PEAX 2|HIGHWAY PURE|C210AE|v3913|U614AS|V3991AN|v12fnlite|K-KOOL|p6901|U616AT|VHEM|KENNY|View Go| WIM)(?:[);/ ]|$)'
24758
25060
  device: 'smartphone'
24759
25061
  models:
24760
25062
  - regex: '(?:WIKO-)?W-V770'
@@ -24859,6 +25161,8 @@ Wiko:
24859
25161
  model: 'Lenny $1'
24860
25162
  - regex: '(?:WIKO-)?Lenny'
24861
25163
  model: 'Lenny'
25164
+ - regex: '(?:WIKO-)?Slide2'
25165
+ model: 'Slide 2'
24862
25166
  - regex: '(?:WIKO-)?Slide'
24863
25167
  model: 'Slide'
24864
25168
  - regex: '(?:WIKO-)?Sunset2'
@@ -25260,7 +25564,7 @@ Zopo:
25260
25564
 
25261
25565
  # Xiaomi
25262
25566
  Xiaomi:
25263
- regex: 'Xiaomi(?!/(?:Miui|Mint[ ])Browser)|MiTV-\w|MiProjA1|Mi9 Pro 5G|(?:MI [a-z0-9]+|Mi-4c|MI-One[ _]?[a-z0-9]+|MIX(?: 2S?)?|MIX 2S ART|pomelo)(?:[);/ ]|$)|HM (?:[^/;]+) (?:Build|MIUI)|(?:2014501|2014011|201481[12378]|201302[23]|2013061) Build|Redmi|POCOPHONE|(?:SHARK )?KTUS-[AH]0|(?:SHARK )?(KLE|KSR|MBU|PAR)-[AH]0|SK[RW]-[AH]0|PRS-[AH]0|POCO F1|DLT-[AH]0|MIBOX[234]([_ ]PRO)?|MiTV4[ACSX]?|AWM-A0|MI CC 9 Meitu Edition|MiBOX1S|M2006J10C|M2006C3(?:L[IGC]|LVG|MN?G|MT)|M2007J1(?:7[CGI]|SC)|M2002(?:J9[SEG]|F4LG)|HM2014819|WT88047|210611(?:8C|19(?:BI|[AD]G|AL))|M2001(?:J2G|C3K3I)|M2004J1(?:5SC|9AG)|M2004J(?:7[AB]|19)[CG]|M2012K11(?:[CGI]|A[CI])|M2011K2[CG]|M2011J18C|M2006C3[ML]II|M2003J(?:15SC|15SS|6B2G|6A1G)|M2007J3S[ICYGP]|M2007J22[CG]|M2103K19[CGYI]|M2101K(?:[79]AG|7AI|7B[GI]|6[GIRP]|7BNY|9[GCR])|M2010J19S[CGYIL]|M2102(?:K1AC|K1[CG]|J2SC)|HM NOTE 1(?:LTE|W)|MI[_ ]PLAY|XIG01|Qin 1s\+|Qin ?2(?: Pro)?|MI_(NOTE_Pro|5X|4i|(?:A2|8)_Lite)|A001XM|lancelot|XIG02|2107119DC|M2101K(?:7BL|9AI)|A101XM|M2012K10C|M2104K10AC|M19(?:01F7[1S]|10F4S|08(?:F1XE|C3JGG)|08C3J[IH]|06F9S[IH]|02F1G)|21051182[CG]|21081111RG|2109119D[GI]|21091116(?:AI|[AU]?C|i|U[GI])|220111(?:7T[LGIY]|19TI|19UY|6S[IRC]|6TG|[67]SG|7SL)|21121(?:119S[CG]|23A[CG]|119VL|210C)|2204121(?:6[CI]|6UC|9[CGI]|9NY|1AC)|220333Q(?:AG|NY|L|BI)|2107113S[IGR]|22031(?:29G|116BG|21C)|PAR-H0|M2105K81A?C|2109119BC|2202(?:1119KR|1211RC|33L2[CGI])|22011(?:2[23][CG]|211C|16TI|17S[YI])|joyeuse|galahad|hydrogen|begonia|kenzo|willow|beryllium|rosemary| MDG1|KLE-AO|Mi ?Pad \d|220612(?:18C|[23]SC)|2207(?:12(?:2MC|12AG|19AI)|33S(?:F?G|[IL])|43FI)|2208(?:7RA4DI|1212(?:U?G|C)|128(?:1AC|3[GC]))|Black Shark|MZB8298IN|2210(?:1317C|1316(?:U[PG]|UCP?|[CIG])|1(?:29SG|32[CG]))|2211(?:13(?:3[CG]|17I)|1317G)|23013RK75C|23053RN02[AY]|2209(?:5RA98C|116AG|129SC)|2212(?:0RN86G|6RN91Y|ARNC4L|2RK93C|7RK46C)|2302(?:6RN54G|1RAA(?:EG|2Y)|8R(?:N4DG|A60L|NCAG))|angelican|vnd_camellia|2304(?:9RAD8C|FPN6D[GC])|2303(?:0RAC7Y|CRA44A|ERA42L)|M1906G7G|Hongmi 4A|23046RP50C|M1912G7BC'
25567
+ regex: 'Xiaomi(?!/(?:Miui|Mint[ ])Browser)| ONC(?: Build|[;)])|MiTV-\w|MiProjA1|Mi9 Pro 5G|(?:MI [a-z0-9]+|Mi-4c|MI-One[ _]?[a-z0-9]+|MIX(?: 2S?)?|MIX 2S ART|pomelo)(?:[);/ ]|$)|HM (?:[^/;]+) (?:Build|MIUI)|(?:2014501|2014011|201481[12378]|201302[23]|2013061) Build|Redmi|POCOPHONE|(?:SHARK )?KTUS-[AH]0|(?:SHARK )?(KLE|KSR|MBU|PAR)-[AH]0|SK[RW]-[AH]0|PRS-[AH]0|POCO F1|DLT-[AH]0|MIBOX[234]([_ ]PRO)?|MiTV4[ACSX]?|AWM-A0|MI CC 9 Meitu Edition|MiBOX1S|M2006J10C|M2006C3(?:L[IGC]|LVG|MN?G|MT)|M2007J1(?:7[CGI]|SC)|M2002(?:J9[SEG]|F4LG)|HM2014819|WT88047|210611(?:8C|19(?:BI|[AD]G|AL))|M2001(?:J2G|C3K3I)|M2004J1(?:5SC|9AG)|M2004J(?:7[AB]|19)[CG]|M2012K11(?:[CGI]|A[CI])|M2011K2[CG]|M2011J18C|M2006C3[ML]II|M2003J(?:15SC|15SS|6B2G|6A1G)|M2007J3S[ICYGP]|M2007J22[CG]|M2103K19[CGYI]|M2101K(?:[79]AG|7AI|7B[GI]|6[GIRP]|7BNY|9[GCR])|M2010J19S[CGYIL]|M2102(?:K1AC|K1[CG]|J2SC)|HM NOTE 1(?:LTE|W)|MI[_ ]PLAY|XIG01|Qin 1s\+|Qin ?2(?: Pro)?|MI_(NOTE_Pro|5X|4i|(?:A2|8)_Lite)|A001XM|lancelot|XIG02|2107119DC|M2101K(?:7BL|9AI)|A101XM|M2012K10C|M2104K10AC|M19(?:01F7[1S]|10F4S|08(?:F1XE|C3JGG)|08C3J[IH]|06F9S[IH]|02F1G)|21051182[CG]|21081111RG|2109119D[GI]|21091116(?:AI|[AU]?C|i|U[GI])|220111(?:7T[LGIY]|19TI|19UY|6S[IRC]|6TG|[67]SG|7SL)|21121(?:119S[CG]|23A[CG]|119VL|210C)|2204121(?:6[CI]|6UC|9[CGI]|9NY|1AC)|220333Q(?:AG|NY|L|BI)|2107113S[IGR]|22031(?:29G|116BG|21C)|PAR-H0|M2105K81A?C|2109119BC|2202(?:1119KR|1211RC|33L2[CGI])|22011(?:2[23][CG]|211C|16TI|17S[YI])|joyeuse|galahad|hydrogen|begonia|kenzo|willow|beryllium|rosemary| MDG1|KLE-AO|Mi ?Pad \d|220612(?:18C|[23]SC)|2207(?:12(?:2MC|12AG|19AI)|33S(?:F?G|[IL])|43FI)|2208(?:7RA4DI|1212(?:U?G|C)|128(?:1AC|3[GC]))|Black Shark|MZB8298IN|2210(?:1317C|1316(?:U[PG]|UCP?|[CIG])|1(?:29SG|32[CG]))|2211(?:13(?:3[CG]|17I)|1317G)|23013RK75C|23053RN02[AYL]|2209(?:5RA98C|116AG|129SC)|2212(?:0RN86[GI]|6RN91Y|ARNC4L|2RK93C|7RK46C)|2302(?:6RN54G|1RAA(?:EG|2Y)|8R(?:N4D[GI]|A60L|NCAG))|angelican|vnd_camellia|2304(?:9RAD8C|FPN6D[GC])|2303(?:0RAC7Y|CRA44A|ERA42L)|M1906G7G|Hongmi 4A|23046RP50C|M1912G7BC|23076RN4BI|23043RP34[GI]'
25264
25568
  device: 'smartphone'
25265
25569
  models:
25266
25570
  # specific smartphone models
@@ -25460,7 +25764,7 @@ Xiaomi:
25460
25764
  model: 'Redmi 8A'
25461
25765
  - regex: 'Redmi 8A (Dual|Pro)(?:[);/ ]|$)'
25462
25766
  model: 'Redmi 8A $1'
25463
- - regex: '(?:M2004J7AC|M2004J15SC|Redmi 10X 4G)(?:[);/ ]|$)'
25767
+ - regex: '(?:M2004J7AC|M2004J15SC|Redmi 10X (?:4G|LTE))(?:[);/ ]|$)'
25464
25768
  model: 'Redmi 10X'
25465
25769
  - regex: '220333Q(?:AG|NY|L)(?:[);/ ]|$)'
25466
25770
  model: 'Redmi 10C'
@@ -25502,10 +25806,12 @@ Xiaomi:
25502
25806
  model: 'Redmi 10 Prime'
25503
25807
  - regex: '(?:M2004J7BC|Redmi 10X Pro)(?:[);/ ]|$)'
25504
25808
  model: 'Redmi 10X Pro'
25505
- - regex: '22120RN86G|22126RN91Y|2212ARNC4L'
25809
+ - regex: '22120RN86[GI]|22126RN91Y|2212ARNC4L'
25506
25810
  model: 'Redmi 12C'
25507
- - regex: '23053RN02[AY]'
25811
+ - regex: '23053RN02[AYL]'
25508
25812
  model: 'Redmi 12'
25813
+ - regex: '23076RN4BI(?:[);/ ]|$)'
25814
+ model: 'Redmi 12 5G'
25509
25815
  - regex: '22071219AI(?:[);/ ]|$)'
25510
25816
  model: 'Redmi 11 Prime'
25511
25817
  - regex: 'Redmi K20 Pro Premium Edition(?:[);/ ]|$)'
@@ -25554,6 +25860,8 @@ Xiaomi:
25554
25860
  model: 'Redmi 6 Pro Extreme'
25555
25861
  - regex: 'Xiaomi_M1805D1ST'
25556
25862
  model: 'Redmi 6 Pro'
25863
+ - regex: ' ONC(?: Build|[;)])'
25864
+ model: 'Redmi 7'
25557
25865
  - regex: 'Redmi (\d+) Pro(?:[);/ ]|$)'
25558
25866
  model: 'Redmi $1 Pro'
25559
25867
  - regex: 'Redmi 4 Prime(?:[);/ ]|$)'
@@ -25562,7 +25870,7 @@ Xiaomi:
25562
25870
  model: 'Redmi A1+'
25563
25871
  - regex: '220733S[GIL](?:[);/ ]|$)'
25564
25872
  model: 'Redmi A1'
25565
- - regex: '2302(?:8RN4DG|6RN54G)'
25873
+ - regex: '2302(?:8RN4D[GI]|6RN54G)'
25566
25874
  model: 'Redmi A2'
25567
25875
  - regex: '23028RNCAG'
25568
25876
  model: 'Redmi A2+'
@@ -25590,8 +25898,11 @@ Xiaomi:
25590
25898
  - regex: '23046RP50C(?:[);/ ]|$)'
25591
25899
  model: 'Pad 6 Pro'
25592
25900
  device: 'tablet'
25901
+ - regex: '23043RP34[GI](?:[);/ ]|$)'
25902
+ model: 'Pad 6'
25903
+ device: 'tablet'
25593
25904
 
25594
- - regex: 'MI PAD 4 PLUS(?:[);/ ]|$)'
25905
+ - regex: 'MI PAD ?4 ?PLUS(?:[);/ ]|$)'
25595
25906
  model: 'Mi Pad 4 Plus'
25596
25907
  device: 'tablet'
25597
25908
  - regex: 'MI PAD 4(?:[);/ ]|$)'
@@ -26680,11 +26991,13 @@ Zenek:
26680
26991
 
26681
26992
  # Nubia (www.nubia.com)
26682
26993
  Nubia:
26683
- regex: 'Nubia[ _]|(?:NX(?:403A|404H|406E|40[X2]|503A|50[5678]J|51[0123]J|521J|523J_V1|529Jq?|5[345]1J|5[48]9J|569[HJ]|5[67]3J|575J|59[157]J|60[1689]J|61[12679]J|62[79]J|65[19]J|6[126]9J|66[67]J|679J|70[129]J|711J|729J|709S|907J))(?:[);/ ]|$)'
26994
+ regex: 'Nubia[ _]|(?:NX(?:403A|404H|406E|40[X2]|503A|50[5678]J|51[0123]J|521J|523J_V1|529Jq?|5[345]1J|5[48]9J|569[HJ]|5[67]3J|575J|59[157]J|60[1689]J|61[12679]J|62[79]J|65[19]J|6[126]9J|66[67]J|679[JS]|70[129]J|71[12]J|729J|709S|907J))(?:[);/ ]|$)'
26684
26995
  device: 'smartphone'
26685
26996
  models:
26686
26997
  - regex: 'NX711J'
26687
26998
  model: 'Z50'
26999
+ - regex: 'NX712J'
27000
+ model: 'Z50 Ultra'
26688
27001
  - regex: 'NX667J'
26689
27002
  model: 'Z30 Pro'
26690
27003
  - regex: 'NX701J'
@@ -26697,7 +27010,7 @@ Nubia:
26697
27010
  model: 'Red Magic 8 Pro'
26698
27011
  - regex: 'NX709S'
26699
27012
  model: 'Red Magic 7S Pro'
26700
- - regex: 'NX679J'
27013
+ - regex: 'NX679[JS]'
26701
27014
  model: 'Red Magic 7'
26702
27015
  - regex: 'NX669J'
26703
27016
  model: 'Red Magic 6'
@@ -26800,7 +27113,7 @@ Rakuten:
26800
27113
 
26801
27114
  # ZTE
26802
27115
  ZTE:
26803
- regex: 'ZTE(?!; MegaFon)|AxonPhone|([a-z0-9]+)_USA_Cricket|(?:Blade[ _](?:E01|V0820|L110|L[2357]|L7A|L8|S6|V[6789]|V8Q|V8 SE|V9 VITA|X7|A(310?|320|460|465|475|510|520|530|602|51|30|3)|V580|V Ultra|Q Lux)|N9[15]8St|N818S|N951[0579]|N91[38]0|N9101|N913[267]|N952[01]|N9560|N9810|N799D|[UV]9180|[UV]9815|Z(?:5151V|610DL|6250CC|6400C|6410S|233V|331|5031O|559DL|6621O|667T|6750M|768G|792|81[25]|818L|82[08]|83[12359]|85[125]|851M|992|(557|71[67]|798|836|861|916)BL|986DL|(232|718|828)TL|(?:233|353|558|717|799|837|862|899|917|963)VL|955A|95[678]|965|97[018]|98[1237]|986U|999|936L)|V769M|Blade Apex2|G (LTE|Lux)|Vec|Z959|V865M|Z3001S|902ZT|KIS II Max|Kis 3|K3DX-V5G|Z930L|Optus X|Blade[ _](A[357] 2019(?:-T)?|A[35] 2020-T|A7S 2020-T|A6 MAX|A0622|X9)|Z3153V|Z836F|Ctyon-A9|602ZT|MO-01[JK]|Z963U|402ZT|P545|P609|P650 Pro|dandelion|901ZT|A00[13]ZT|Z-01K|UZTE (?:GRAND V7|V808)|ZTG01|K8[37]CA|K87CC|VERGATARIO ?5(?:PLUS)?|Axon mini|KIS C341|A103ZT|Z335(?:1S|[23]CA)|Z5156CC|Z5157[VY]|B867RE|MEO Smart A80|P65[10] 2021|Z6201V|Z6252CA|Z6251V?|A2020N3|A202ZT|Z719DL|Z5158)(?:[);/ ]|$)'
27116
+ regex: 'ZTE(?!; MegaFon)|AxonPhone|([a-z0-9]+)_USA_Cricket|(?:Blade[ _](?:E01|V0820|L110|L[2357]|L7A|L8|S6|V[6789]|V8Q|V8 SE|V9 VITA|X7|A(310?|320|460|465|475|510|520|530|602|51|30|3)|V580|V Ultra|Q Lux)|N9[15]8St|N818S|N951[0579]|N91[38]0|N9101|N913[267]|N952[01]|N9560|N9810|N799D|[UV]9180|[UV]9815|Z(?:5151V|610DL|6250CC|6400C|6410S|233V|331|5031O|559DL|6621O|667T|6750M|768G|792|81[25]|818L|82[08]|83[12359]|85[125]|851M|992|(557|71[67]|798|836|861|916)BL|986DL|(232|718|828)TL|(?:233|353|558|717|799|837|862|899|917|963)VL|955A|95[678]|965|97[018]|98[1237]|986U|999|936L)|V769M|Blade Apex2|G (LTE|Lux)|Vec|Z959|V865M|Z3001S|902ZT|KIS II Max|Kis 3|K3DX-V5G|Z930L|Optus X|Blade[ _](A[357] 2019(?:-T)?|A[35] 2020-T|A7S 2020-T|A6 MAX|A0622|X9)|Z3153V|Z836F|Ctyon-A9|602ZT|MO-01[JK]|Z963U|402ZT|P545|P609|P650 Pro|dandelion|901ZT|A00[13]ZT|Z-01K|UZTE (?:GRAND V7|V808)|ZTG01|K8[37]CA|K87CC|VERGATARIO ?5(?:PLUS)?|Axon mini|KIS C341|A103ZT|Z335(?:1S|[23]CA)|Z5156CC|Z5157[VY]|B867RE|MEO Smart A[48]0|SmartA35|P65[10] 2021|Z6201V|Z6252CA|Z6251V?|A2020N3|A202ZT|Z719DL|Z5158|B2017G)(?:[);/ ]|$)'
26804
27117
  device: 'smartphone'
26805
27118
  models:
26806
27119
  # explicit smartphone models
@@ -26970,6 +27283,8 @@ ZTE:
26970
27283
  model: 'Blade C2'
26971
27284
  - regex: 'ZTE[_ ]Blade[_ ](C2|V7)[_ ]Plus'
26972
27285
  model: 'Blade $1 Plus'
27286
+ - regex: '(?:ZTE[_ ])?BA521'
27287
+ model: 'Blade 521'
26973
27288
  - regex: 'Blade G Plus'
26974
27289
  model: 'Blade G Plus'
26975
27290
  - regex: 'ZTE_Blade_III'
@@ -27116,6 +27431,8 @@ ZTE:
27116
27431
  model: 'Blade V41 Smart'
27117
27432
  - regex: 'ZTE 8045'
27118
27433
  model: 'Blade V40 Vita'
27434
+ - regex: 'ZTE 8140N'
27435
+ model: 'Blade V41 Vita'
27119
27436
  - regex: 'ZTE 9046'
27120
27437
  model: 'Blade V40 Pro'
27121
27438
  - regex: 'ZTE 8046'
@@ -27292,8 +27609,10 @@ ZTE:
27292
27609
  model: 'Blade V2020 Vita'
27293
27610
  - regex: 'KIS C341'
27294
27611
  model: 'Kis C341'
27295
- - regex: 'MEO Smart A80'
27296
- model: 'MEO Smart A80'
27612
+ - regex: 'MEO Smart A([48]0)'
27613
+ model: 'MEO Smart A$1'
27614
+ - regex: 'Smart ?A(35)'
27615
+ model: 'MEO Smart A$1'
27297
27616
 
27298
27617
  - regex: 'A2121[LE]?(?:[);/ ]|$)'
27299
27618
  device: 'phablet'
@@ -27343,7 +27662,7 @@ ZTE:
27343
27662
  model: 'Blade V10'
27344
27663
  - regex: 'ZTE B(A601|A910|A510)(?:[);/ ]|$)'
27345
27664
  model: 'Blade $1'
27346
- - regex: 'ZTE Blade (A[35]1|A7s)'
27665
+ - regex: 'ZTE Blade (A[35]1|A7s|C370)'
27347
27666
  model: 'Blade $1'
27348
27667
  - regex: 'ZTE BA610T(?:[);/ ]|$)'
27349
27668
  model: 'Blade A610'
@@ -27498,6 +27817,12 @@ Lemhoov:
27498
27817
  - regex: 'Lemhoov[ _-]([^/;]+) Build'
27499
27818
  model: '$1'
27500
27819
 
27820
+ # MStar
27821
+ MStar:
27822
+ regex: 'MStar(?:[);/ ]|$)'
27823
+ device: 'tv'
27824
+ model: ''
27825
+
27501
27826
  # MTC (MTS)
27502
27827
  MTC:
27503
27828
  regex: 'MTC[ _](968|97[82]|970|982[OT]?|1078)|(?:MTC[_ ])?SMART[ _]?(?:Race[2]?|Sprint|Run|Turbo|Surf[2]?)[ _]4G|MTC975|Smart Bit|Smart_(?:LINE|Light)|(?:MTC[ _])?SMART[ _](?:Run|Start[_ ][23])|Redbox Mini 5\(MTS\)|MTS TV|DV8235|DV8304-C|Osmartphona'
@@ -27691,6 +28016,9 @@ X-TIGI:
27691
28016
  - regex: 'X-TIGI_JOY10_PRO'
27692
28017
  model: 'Joy 10 Pro'
27693
28018
  device: 'tablet'
28019
+ - regex: 'X-TIGI_JOY10'
28020
+ model: 'Joy 10'
28021
+ device: 'tablet'
27694
28022
  - regex: 'X[_ ]TIGI[_ ]JOY7_TV'
27695
28023
  model: 'Joy 7 TV'
27696
28024
  device: 'tablet'
@@ -27805,7 +28133,7 @@ NEXBOX:
27805
28133
 
27806
28134
  # True or TrueSmart
27807
28135
  'True':
27808
- regex: ' TRUE BEYOND TAB 3G|HPH07|SMART[ _](4G Adventure(?: Pro)?|MAX 4.0 PLUS|4G[ _](?:GEN C [45]\.[05]|M1 Plus|Champion|Speedy 5\.0 Plus|Speedy[_ ]5inch|P1))|Alpha 5G|SMART Champ 4\.0|TRUE SMART 7.0 Quadcore'
28136
+ regex: ' TRUE BEYOND TAB 3G|HPH07|SMART[ _](4G Adventure(?: Pro)?|MAX 4.0 PLUS|4G[ _](?:GEN C [45]\.[05]|M1 Plus|Champion|Speedy 5\.0 Plus|Speedy[_ ]5inch|P1))|Alpha 5G|SMART Champ 4\.0|TRUE SMART 7.0 Quadcore|SMART 4G M1'
27809
28137
  device: 'smartphone'
27810
28138
  models:
27811
28139
  - regex: 'Alpha 5G(?:[);/ ]|$)'
@@ -27832,6 +28160,8 @@ NEXBOX:
27832
28160
  model: 'Smart 4G P1'
27833
28161
  - regex: 'SMART[ _]4G M1 Plus'
27834
28162
  model: 'Smart 4G M1 Plus'
28163
+ - regex: 'SMART 4G M1'
28164
+ model: 'Smart 4G M1'
27835
28165
  - regex: 'TRUE BEYOND TAB 3G'
27836
28166
  device: 'tablet'
27837
28167
  model: 'Beyond Tab 3G'
@@ -27844,12 +28174,15 @@ NEXBOX:
27844
28174
  model: 'ID TV HPH07'
27845
28175
 
27846
28176
  Yandex:
27847
- regex: '(?:YNDX-?000SB|YandexModule2-00001)(?:[);/ ]|$)'
28177
+ regex: '(?:YNDX-?(?:000SB|0007[12])|YandexModule2-00001)(?:[);/ ]|$)'
27848
28178
  device: 'smartphone'
27849
28179
  models:
27850
28180
  - regex: 'YandexModule2-00001'
27851
28181
  device: 'tv'
27852
28182
  model: 'Module'
28183
+ - regex: 'YNDX-?(0007[12])'
28184
+ device: 'tv'
28185
+ model: 'YNDX-$1'
27853
28186
  - regex: 'YNDX-?000SB'
27854
28187
  model: 'YNDX-000SB'
27855
28188
 
@@ -27893,7 +28226,7 @@ HiHi:
27893
28226
 
27894
28227
  # Hi or Hi TFG (https://www.hi-online.co.za/)
27895
28228
  Hi:
27896
- regex: '(?:(?<!Thrill )Boost(?:[ _](?:Hypa|Max|Ultra))?(?: Build|[;)])|HMR(?:5012|5450)|Crusader|(?:VHIX-)?VHIX-\w+(?:-[A-Z])?|43FSY112X[cd]|32HSY119X|39HSY111X|55USY151X|50USY151X)(?:[);/ ]|$)'
28229
+ regex: '(?:(?<!Thrill )Boost(?:[ _](?:Hypa|Max|Ultra))?(?: Build|[;)])|HMR(?:5012|5450)|Crusader|(?:VHIX-)?VHIX-\w+(?:-[A-Z])?|43FSY112X[cd]|32HSY119X|39HSY111X|55USY151X|50USY151X|65USY151X)(?:[);/ ]|$)'
27897
28230
  device: 'smartphone'
27898
28231
  models:
27899
28232
  - regex: 'Boost[ _](Hypa|Max|Ultra)(?:[);/ ]|$)'
@@ -27910,7 +28243,7 @@ Hi:
27910
28243
  - regex: '(?:VHIX-)?VHIX-(\w+)'
27911
28244
  device: 'tv'
27912
28245
  model: 'VHIX-$1'
27913
- - regex: '(32HSY119X|39HSY111X|55USY151X|43FSY112X[cd]|50USY151X)(?:[);/ ]|$)'
28246
+ - regex: '(32HSY119X|39HSY111X|55USY151X|43FSY112X[cd]|50USY151X|65USY151X)(?:[);/ ]|$)'
27914
28247
  device: 'tv'
27915
28248
  model: '$1'
27916
28249
 
@@ -27930,7 +28263,7 @@ Boost:
27930
28263
 
27931
28264
  # Highscreen
27932
28265
  Highscreen:
27933
- regex: 'HIGHSCREEN|(Easy[- ]Power(?:[- ]Pro)?|Pure[_ ](?:Power|F)|Power Ice(?: Max)?|Easy[_ ]([SFL]|XL)(?:_Pro)?|Razar_Pro|Power Rage(?: Evo)?|Zera-S-Power|Zera[ _][UFS]|Power[ _]?Five[ _]?(?:Pro|Evo|Max|Max(?:Lite|2))|Power(?:Four|Five)|BOOST II(?:se)?|Fest(?:XL)?(?:-Pro)?|Tasty|Boost3|Boost 3(?: Pro)? SE|Expanse|Hercules|Alpha Rage|VergeM|Ice2|Prime [LS]|Spade|Spark 2|Alpha GT[RX]|Wallet|Thunder|Razar|COSMO DUO|Prime Mini SE| Bay|Omega Q)(?:[);/ ]|$)'
28266
+ regex: 'HIGHSCREEN|(Easy[- ]Power(?:[- ]Pro)?|Pure[_ ](?:Power|F)|Power Ice(?: Max)?|Easy[_ ]([SFL]|XL)(?:_Pro)?|Razar_Pro|Power Rage(?: Evo)?|Zera-S-Power|Zera[ _][UFS]|Power[ _]?Five[ _]?(?:Pro|Evo|Max|Max(?:Lite|2))|Power(?:Four|Five)|BOOST II(?:se)?|Fest(?:XL)?(?:-Pro)?|Tasty|Boost3|Boost 3(?: Pro)? SE|Expanse|Explosion|Hercules|Alpha Rage|VergeM|Ice2|Prime [LS]|Spade|Spark 2|Alpha GT[RX]|Wallet|Thunder|Razar|COSMO DUO|Prime Mini SE| Bay|Omega Q)(?:[);/ ]|$)'
27934
28267
  device: 'smartphone'
27935
28268
  models:
27936
28269
  - regex: '(Power Ice(?:[ ](?:Max|Evo))?|Power Rage(?: Evo)?|Zera[ _][UFS]|Alpha GT[RX]|Wallet)(?:[);/ ]|$)'
@@ -27979,6 +28312,8 @@ Highscreen:
27979
28312
  model: 'Easy Power Pro'
27980
28313
  - regex: '(?:HIGHSCREEN )?Easy-Power(?:[);/ ]|$)'
27981
28314
  model: 'Easy Power'
28315
+ - regex: 'Explosion'
28316
+ model: 'Explosion'
27982
28317
  - regex: 'BOOST II(?:[);/ ]|$)'
27983
28318
  model: 'Boost 2'
27984
28319
  - regex: 'BOOST IIse(?:[);/ ]|$)'
@@ -28133,9 +28468,9 @@ Unihertz:
28133
28468
  - regex: '(Titan|Atom_X?L)(?:[);/ ]|$)'
28134
28469
  model: '$1'
28135
28470
 
28136
- # Chuwi
28471
+ # Chuwi (www.chuwi.com)
28137
28472
  Chuwi:
28138
- regex: '(?:CW-(Hi8-super|Hi12|V99i?|V17HD3G|VX8-3G|V88-QUAD|V9-DUAL|V88S|Vi[78]|[HV]i10 (?:pro|plus))|Hi10 (?:Pro|plus)|HiPad[ -](?:X|X?Pro|Air|Max)|HiPadX|HiBox-hero|HiBook(?: pro)?|Hi[89] ?(?:Air|Pro)|HiPad ?Plus|Hi8SE|Vi8 plus|Vi10(?: ?Pro)?|Surpad|HiPadPro)(?:[);/ ]|$)'
28473
+ regex: '(?:CW-(Hi8-super|Hi12|V99i?|V17HD3G|VX8-3G|V88-QUAD|V9-DUAL|V88S|Vi[78]|[HV]i10 (?:pro|plus))|Hi10 (?:Pro|plus)|HiPad[ -](?:X|X?Pro|Air|Max)|HiPadX|HiBox-hero|HiBook(?: pro)?|Hi(?:[89]|10) ?(?:Air|X?Pro)|HiPad ?Plus|Hi8SE|Vi8 plus|Vi10(?: ?Pro)?|Surpad|HiPadPro)(?:[);/ ]|$)'
28139
28474
  device: 'tablet'
28140
28475
  models:
28141
28476
  - regex: '(CW-Hi8-super)(?:[);/ ]|$)'
@@ -28170,6 +28505,8 @@ Chuwi:
28170
28505
  model: 'Hi$1 Air'
28171
28506
  - regex: 'Hi8SE(?:[);/ ]|$)'
28172
28507
  model: 'Hi8 SE'
28508
+ - regex: 'Hi10 ?XPro'
28509
+ model: 'Hi10 XPro'
28173
28510
  - regex: 'Hi([89]) ?pro(?:[);/ ]|$)'
28174
28511
  model: 'Hi$1 Pro'
28175
28512
  - regex: 'Vi10 Plus(?:[);/ ]|$)'
@@ -28319,6 +28656,12 @@ Yxtel:
28319
28656
  device: 'smartphone'
28320
28657
  model: '$1'
28321
28658
 
28659
+ # PROFiLO
28660
+ PROFiLO:
28661
+ regex: 'PROFILO(?:[);/ ]|$)'
28662
+ device: 'tv'
28663
+ model: ''
28664
+
28322
28665
  # Proline
28323
28666
  Proline:
28324
28667
  regex: 'Proline_|(?:H10882M-TN|H1088[28]M|H1010|M504)(?:[);/ ]|$)'
@@ -28430,13 +28773,13 @@ Spectrum:
28430
28773
 
28431
28774
  # Kivi
28432
28775
  Kivi:
28433
- regex: 'KIVI [24]K|(?:24H600G[RU]|24FR50WU|24HK30B|32HR55GU|32H700GU|32F700WU|4[39]UP50GU|40UR50G[RU]|40U600G[RU]|50U730GR|55U600(?:G[RU]|KD)|65UP50GU|55U[PC]50G[RU]|50U600G[RU]|50UX10S|55UR50G[RU]|40FK30G|40FR5[02]BR|43U(?:800B[RU]|600KD|K35G)|50FK30G|50UK35G|32HR50GR|32F700GR|55UC30G|55U730GR|32HK30G|40FK30G|32HR50GU|43UK30G|32FR50(?:WR|BU)|32FK3[02]G|32H600KD|40U600KD)(?:_-Ver0[0-9])?(?:[);/ ]|$)'
28776
+ regex: 'KIVI [24]K|(?:24H600G[RU]|24FR50WU|24HK30B|32HR55GU|32H700GU|32F700WU|4[39]UP50GU|40UR50G[RU]|40U600G[RU]|50U730GR|55U600(?:G[RU]|KD)|65UP50GU|55U[PC]50G[RU]|50U600G[RU]|50UX10S|55UR50G[RU]|40FK30G|40FR5[02]BR|43U(?:800B[RU]|600KD|K35G)|50FK30G|50UK35G|32HR50GR|32F700GR|55UC30G|55U730GR|32HK30G|40FK30G|32HR50GU|43UK30G|32FR50(?:WR|BU)|32FK3[02]G|32H600KD|40U600KD|32H600GR)(?:_-Ver0[0-9])?(?:[);/ ]|$)'
28434
28777
  device: 'tv'
28435
28778
  models:
28436
- - regex: '(24H600G[RU]|24FR50WU|24HK30B|32HR55GU|32H700GU|4[39]UP50GU|32F700WU|40UR50G[RU]|40U600G[RU]|50U730GR|55U600(?:G[RU]|KD)|65UP50GU|55U[PC]50G[RU]|50UX10S|50U600G[RU]|55UR50G[RU]|55U730GR|40FK30G|40FR5[02]BR|43U(?:K35G|600KD|800B[RU])|50FK30G|50UK35G|32HR50GR|32FR50(?:WR|BU)|32FK3[02]G|32H600KD|40U600KD|32F700GR)(?:[);/ ]|$)'
28437
- model: '$1'
28438
28779
  - regex: '(55UC30G|40FK30G|43UK30G|32HR50G[RU]|32HK30G|32FK32G)_-Ver0([0-9])(?:[);/ ]|$)'
28439
28780
  model: '$1 v$2'
28781
+ - regex: '(\d{2}(?:[HFU]|U[CPRXKX]|[BHF][RK])\d{2,3}(?:[GW][RU]|B[UR]|KD|[BGS]))(?:[);/ ]|$)'
28782
+ model: '$1'
28440
28783
  - regex: 'KIVI ([24]K Android TV)'
28441
28784
  model: '$1'
28442
28785
 
@@ -28604,13 +28947,15 @@ Uhans:
28604
28947
 
28605
28948
  # Soyes
28606
28949
  Soyes:
28607
- regex: '(?:SOYES[ _](?:[67]S|XS|XS11)|S10-H)(?:[);/ ]|$)'
28950
+ regex: '(?:SOYES[ _](?:[67]S|XS|XS11)|S10-H|XS12 PRO)(?:[);/ ]|$)'
28608
28951
  device: 'smartphone'
28609
28952
  models:
28610
28953
  - regex: 'SOYES[ _]([67]S|XS11|XS)'
28611
28954
  model: '$1'
28612
28955
  - regex: 'S10-H'
28613
28956
  model: 'S10-H'
28957
+ - regex: 'XS12 PRO'
28958
+ model: 'XS12 Pro'
28614
28959
 
28615
28960
  # Zidoo
28616
28961
  Zidoo:
@@ -28720,10 +29065,10 @@ Ryte:
28720
29065
 
28721
29066
  # Vontar
28722
29067
  Vontar:
28723
- regex: '(HK1 (?:Max|MINI\+?|PLUS|PRO)|KK MAX|VONTAR[ -](?:Z[58]|[VH]1|KIII|MX-4K|X[234]))(?:[);/ ]|$)'
29068
+ regex: '(HK1 (?:Max|MINI\+?|PLUS|PRO)|KK MAX|VONTAR[ -](?:Z[58]|[VH]1|KIII|MX-4K|X[234])|H618)(?:[);/ ]|$)'
28724
29069
  device: 'tv'
28725
29070
  models:
28726
- - regex: 'VONTAR[ -](Z[58]|[VH]1|KIII|MX-4K|X[234])(?:[);/ ]|$)'
29071
+ - regex: 'VONTAR[ -](Z[58]|[VH]1|KIII|MX-4K|X[234]|H618)(?:[);/ ]|$)'
28727
29072
  model: '$1'
28728
29073
  - regex: 'HK1 Max(?:[);/ ]|$)'
28729
29074
  model: 'HK1 Max'
@@ -28746,9 +29091,13 @@ Vorke:
28746
29091
 
28747
29092
  # Wigor
28748
29093
  Wigor:
28749
- regex: 'Wigor (V4)(?:[);/ ]|$)'
29094
+ regex: '(?:Wigor (?:V4))(?:[);/ ]|$)|Android 7(?:[\d.]*);(?: [\w-]+;)? V3(?: Build|[;)])'
28750
29095
  device: 'smartphone'
28751
- model: '$1'
29096
+ models:
29097
+ - regex: 'Wigor (V4)(?:[);/ ]|$)'
29098
+ model: '$1'
29099
+ - regex: ' (V3)(?: Build|[;)])'
29100
+ model: '$1'
28752
29101
 
28753
29102
  # NEXON (nexon.ua)
28754
29103
  NEXON:
@@ -29152,12 +29501,16 @@ Multilaser:
29152
29501
  model: 'G Max'
29153
29502
  - regex: 'Multilaser[ _]GMAX_2(?:[);/ ]|$)'
29154
29503
  model: 'G Max 2'
29504
+ - regex: 'Multilaser[ _]G_?MAX_2_SE'
29505
+ model: 'G Max 2 SE'
29155
29506
  - regex: 'Multilaser[ _]G(?:[);/ ]|$)'
29156
29507
  model: 'G'
29157
29508
  - regex: 'Multilaser[ _]G[ _]2(?:[);/ ]|$)'
29158
29509
  model: 'G2'
29159
29510
  - regex: 'Multilaser[ _]E[_ ]Lite(?:[);/ ]|$)'
29160
29511
  model: 'E Lite'
29512
+ - regex: 'Multilaser[ _]([H])[_ ]5G(?:[);/ ]|$)'
29513
+ model: '$1 5G'
29161
29514
  - regex: 'Multilaser[ _]([FEH])(?:[);/ ]|$)'
29162
29515
  model: '$1'
29163
29516
  - regex: 'MS60F_PLUS(?:[);/ ]|$)'
@@ -29276,7 +29629,7 @@ Maxtron:
29276
29629
 
29277
29630
  # Philco (philco.com.br)
29278
29631
  Philco:
29279
- regex: 'PHILCO |(PCS0[12]|PH350B|PTB[78]R|PTB7PAP_PTB7PAB_PTB7PAR|Hit Max|Hit P1[023]|HIT P8|HIT P10a|TP7A4|TP10A1I)(?:[);/ ]|$)'
29632
+ regex: 'PHILCO[ /]|(PCS0[12]|PH350B|PTB[78]R|PTB7PAP_PTB7PAB_PTB7PAR|Hit Max|Hit P1[023]|HIT P8|HIT P10a|TP7A4|TP10A1I)(?:[);/ ]|$)'
29280
29633
  device: 'smartphone'
29281
29634
  models:
29282
29635
  - regex: 'HIT P10a'
@@ -29291,6 +29644,9 @@ Philco:
29291
29644
  - regex: 'PHILCO Android TV(?:[);/ ]|$)'
29292
29645
  device: 'tv'
29293
29646
  model: ''
29647
+ - regex: 'PH60D16DSGWN4K(?:[);/ ]|$)'
29648
+ device: 'tv'
29649
+ model: 'PH60D16DSGWN4K'
29294
29650
  - regex: 'PTB7PAP_PTB7PAB_PTB7PAR(?:[);/ ]|$)'
29295
29651
  device: 'tablet'
29296
29652
  model: 'PTB7PA'
@@ -29317,7 +29673,7 @@ Newman:
29317
29673
 
29318
29674
  # Swipe
29319
29675
  Swipe:
29320
- regex: '(?:Slate2|Swipe_Elite_3M?|Elite_(?:Grace|VR)|EliteDual|Elite (?:Prime|Star|Note|Sense)|Konnect (?:Prime|Power|Neo 4G))(?:[);/ ]|$)'
29676
+ regex: '(?:Slate2|Swipe_(?:Elite_3M?|Strike8)|Elite_(?:Grace|VR)|EliteDual|Elite (?:Prime|Star|Note|Sense)|Konnect (?:Prime|Power|Neo 4G))(?:[);/ ]|$)'
29321
29677
  device: 'smartphone'
29322
29678
  models:
29323
29679
  - regex: 'Konnect Power'
@@ -29331,6 +29687,9 @@ Swipe:
29331
29687
  - regex: 'Slate2(?:[);/ ]|$)'
29332
29688
  device: 'tablet'
29333
29689
  model: 'Slate 2'
29690
+ - regex: 'Swipe[_ ]Strike8'
29691
+ device: 'tablet'
29692
+ model: 'Strike 8'
29334
29693
 
29335
29694
  # Owwo
29336
29695
  Owwo:
@@ -29474,7 +29833,7 @@ Winds:
29474
29833
 
29475
29834
  # Asano
29476
29835
  Asano:
29477
- regex: '(?:32LH7010T|32LH8[10]10T|32LH7030S|32LF7130S|28LH701[10]T|43LU8010T|24LH7020T|24LH8010T|40LF7030S|5[05]LU8120T|42LF7110T|32LF7120T)(?:[);/ ]|$)'
29836
+ regex: '(?:32LH7010T|32LH8[10]10T|32LH7030S|32LF7130S|28LH701[10]T|43LU8010T|24LH7011T|24LH7020T|24LH8010T|40LF7030S|5[05]LU8120T|42LF7110T|32LF7120T|32LF8120T|50LU8110T)(?:[);/ ]|$)'
29478
29837
  device: 'tv'
29479
29838
  models:
29480
29839
  - regex: '(\d{2})(L[FHU]\d+[ST])(?:[);/ ]|$)'
@@ -29602,9 +29961,11 @@ Neo:
29602
29961
 
29603
29962
  # NEKO
29604
29963
  NEKO:
29605
- regex: 'NEKO_LT-(\w+)(?:[);/ ]|$)'
29964
+ regex: '(?:NEKO_(?:W_)?LT[-_](\w+)|LT-\d{2}N(?:H8020S|F7021S))(?:[);/ ]|$)'
29606
29965
  device: 'tv'
29607
- model: 'LT-$1'
29966
+ models:
29967
+ - regex: '(?:NEKO_)?(?:W_)?LT[-_](\w+)(?:[);/ ]|$)'
29968
+ model: 'LT-$1'
29608
29969
 
29609
29970
  # Neomi
29610
29971
  Neomi:
@@ -29930,7 +30291,7 @@ iMars:
29930
30291
 
29931
30292
  # Logic or Logic Mobility (logicmobility.com)
29932
30293
  Logic:
29933
- regex: '(?:LOGIC[_ ](X4 Plus|X50|X[135]|X4M|L4T|L5D|X5[AFT]|X60G|L50T?|L57|L6[0135]|X60_PLUS)(:?[_ ]LITE2?)?|L55[ABS])(?:[);/ ]|$)'
30294
+ regex: '(?:LOGIC[_ ](X4 Plus|X50|X[135]|X4M|L4T|L5D|X5[AFT]|X60G|L50T?|L57|L6[0135]|X60_PLUS)(:?[_ ]LITE2?)?|L55[ABS]|Q-502)(?:[);/ ]|$)'
29934
30295
  device: 'smartphone'
29935
30296
  models:
29936
30297
  - regex: 'LOGIC[_ ]X60_PLUS(?:[);/ ]|$)'
@@ -29943,7 +30304,7 @@ Logic:
29943
30304
  model: '$1 Lite 2'
29944
30305
  - regex: 'LOGIC[_ ](X4 Plus|X50|X[13]|X4M|L4T|L5D|L6[013]|X5[AFT]|X60G)(?:[);/ ]|$)'
29945
30306
  model: '$1'
29946
- - regex: '(L50T?|L55[ABS]|L57)(?:[);/ ]|$)'
30307
+ - regex: '(L50T?|L55[ABS]|L57|Q-502)(?:[);/ ]|$)'
29947
30308
  model: '$1'
29948
30309
 
29949
30310
  # Cloud or Cloud TruConnect (www.cloudmobileusa.com)
@@ -30554,6 +30915,8 @@ Fero:
30554
30915
  model: 'Pace'
30555
30916
  - regex: 'A4001 Plus 2019'
30556
30917
  model: 'A4001 Plus (2019)'
30918
+ - regex: 'A4001 Plus'
30919
+ model: 'A4001 Plus'
30557
30920
  - regex: 'Fero[ _](A4001|A450[23]|A5001|L100|Iris|Power|Mega LTE|Vibe|J1)'
30558
30921
  model: '$1'
30559
30922
 
@@ -30829,7 +31192,7 @@ TTEC:
30829
31192
 
30830
31193
  # eSTAR
30831
31194
  eSTAR:
30832
- regex: 'eSTAR[_ ](?:Grand|GO\!?|Zoom Quad|Gemini|MINI[_ ]3G|BEAUTY|MOON)|(?:MERCURY HD Quad core|MID1020L)(?:[);/ ]|$)'
31195
+ regex: 'eSTAR[_ ](?:Grand|GO\!?|Zoom Quad|Gemini|MINI[_ ]3G|BEAUTY|MOON)|(?:MERCURY HD Quad core|MID1020L|takee 1)(?:[);/ ]|$)'
30833
31196
  device: 'tablet'
30834
31197
  models:
30835
31198
  - regex: 'eSTAR (Grand|GO\!?) (HD Intel|IPS Intel|IPS|HD|Intel) Quad Core 3G'
@@ -30853,6 +31216,10 @@ eSTAR:
30853
31216
  - regex: '(MID1020L)'
30854
31217
  model: '$1'
30855
31218
 
31219
+ - regex: 'takee 1'
31220
+ device: 'smartphone'
31221
+ model: 'Takee 1'
31222
+
30856
31223
  # Hometech (hometech.com.tr)
30857
31224
  Hometech:
30858
31225
  regex: '(?:Ideal (?:10S|Tab [79]|8S)|ALFA(?:10T[BX]|7LM)|ALFA[_ ](?:10R[CX]|10BS|10TM?|8T|10MB|10YC|7RS|[78]M?RC|7M|8S[TL]|8RX|8MG)|HT[ _](?:7RT|8MZ))(?:[);/ ]|$)'
@@ -31228,6 +31595,18 @@ Spark:
31228
31595
  - regex: 'Plus 3'
31229
31596
  model: 'Plus 3'
31230
31597
 
31598
+ # Sparx (https://sparx.pk/)
31599
+ Sparx:
31600
+ regex: 'Sparx[ _]'
31601
+ device: 'smartphone'
31602
+ models:
31603
+ - regex: 'Neo 7 Ultra'
31604
+ model: 'Neo 7 Ultra'
31605
+ - regex: 'Neo 7 Pro'
31606
+ model: 'Neo 7 Pro'
31607
+ - regex: 'Neo 7'
31608
+ model: 'Neo 7'
31609
+
31231
31610
  # SPC or SPC Universe or SPC Mobile (spc.es)
31232
31611
  SPC:
31233
31612
  regex: '(?:GRAVITY [34]G(?:_2019)?|GRAVITY2-4G|GRAVITY_OCTACORE|GRAVITY[ -](?:Max|SE|PRO|2-MAX|2)|SPC (?:GEN|SMART)|SPC_ALIEN(?:_STICK)?|SPC Glow9.7|Lightyear|Laika|L70_Lite|L60 Turbo|L60 Pro|FLOW 7)(?:[);/ ]|$)'
@@ -31505,12 +31884,6 @@ Zentality:
31505
31884
  device: 'smartphone'
31506
31885
  model: '$1'
31507
31886
 
31508
- # Fortis
31509
- Fortis:
31510
- regex: '(Apollo 5 Neo)(?:[);/ ]|$)'
31511
- device: 'smartphone'
31512
- model: '$1'
31513
-
31514
31887
  # OpelMobile (opelmobile.com.au)
31515
31888
  OpelMobile:
31516
31889
  regex: 'Opel ?Mobile|(?:OpelMobile_Smart(?:JX|X1)|Easy_Smart_2)(?:[);/ ]|$)'
@@ -32271,13 +32644,13 @@ Shtrikh-M:
32271
32644
 
32272
32645
  # BBK (bbk.ru)
32273
32646
  BBK:
32274
- regex: '(?:32LEX-7272|([65]5|50|4[03]|3[29]|2[48])LEX[-_](81(?:27|39|45|58|6[12]|7[34])|71(?:[23]7|4[345]|5[45]|6[2368]|[57]8|7[15])|725[79]|7225|8243)[_/]?([FU]?TS2C)|39LEX-7289)(?:[);/ ]|$)'
32647
+ regex: '(?:32LEX-7272|([65]5|50|4[03]|3[29]|2[48])LEX[-_](81(?:27|39|45|58|6[12]|7[34])|71(?:[23]7|4[345]|5[45]|6[2368]|[57]8|7[15])|7202|725[79]|7225|7287|8243|8202)[_/]?([FU]?TS2C)|(?:3[29]|24)LEX-7289(?:-c)?)(?:[);/ ]|$)'
32275
32648
  device: 'tv'
32276
32649
  models:
32277
32650
  - regex: '(\d{2})LEX[-_](\d{3,4})[_/]?([FU]?TS2C)'
32278
32651
  model: '$1LEX-$2/$3'
32279
- - regex: '39LEX-7289(?:[);/ ]|$)'
32280
- model: '39LEX-7289/TS2C'
32652
+ - regex: '(3[29]|24)LEX-7289(?:-c)?(?:[);/ ]|$)'
32653
+ model: '$1LEX-7289/TS2C'
32281
32654
  - regex: '(\d{2})LEX[-_](\d{3,4})'
32282
32655
  model: '$1LEX-$2'
32283
32656
 
@@ -32483,7 +32856,7 @@ Philips:
32483
32856
  model: 'Xenium $1'
32484
32857
  - regex: '(?:Philips[_ ])?(S397|W5510)(?:[);/ ]|$)'
32485
32858
  model: '$1'
32486
- - regex: 'AND1E(?: TV)?(?:[);/ ]|$)'
32859
+ - regex: '(?:AND1E|Google)(?: TV)?(?:[);/ ]|$)'
32487
32860
  model: 'Android TV'
32488
32861
  device: 'tv'
32489
32862
  - regex: '(PI3210G)'
@@ -32523,6 +32896,10 @@ Philips:
32523
32896
  - regex: '(NETTV/[0-9\.]{5})'
32524
32897
  model: 'NetTV Series'
32525
32898
  device: 'tv'
32899
+ - regex: 'UHD Android TV'
32900
+ model: 'Smart TV UHD'
32901
+ device: 'tv'
32902
+
32526
32903
  - regex: 'Philips-FISIO ([a-z0-9]+)'
32527
32904
  model: 'Fisio $1'
32528
32905
  - regex: 'Philips[ _-]?([a-z0-9\-@]+)'
@@ -32834,11 +33211,13 @@ LT Mobile:
32834
33211
 
32835
33212
  # ONYX BOOX (onyx-boox.ru)
32836
33213
  ONYX BOOX:
32837
- regex: '(?:KON_TIKI(2)?|Nova3Color|Lomonosov|Poke2Color|NovaAirC|NoteAir2P?|LIVINGSTONE2)(?:[);/ ]|$)'
33214
+ regex: '(?:KON_TIKI(2)?|Nova3Color|Lomonosov|Poke2Color|NovaAirC|NoteAir2P?|LIVINGSTONE2|MC_FAUST[23]|DARWIN9|MC_DARWIN[678]|MC_GAMA4|MC_Cristo4|MC_NovaPro)(?:[);/ ]|$)'
32838
33215
  device: 'tablet'
32839
33216
  models:
32840
33217
  - regex: 'NovaAirC'
32841
33218
  model: 'Nova Air C'
33219
+ - regex: 'MC_NovaPro'
33220
+ model: 'Nova Pro'
32842
33221
  - regex: 'NoteAir2P'
32843
33222
  model: 'Nova Air 2 Plus'
32844
33223
  - regex: 'NoteAir2'
@@ -32851,6 +33230,14 @@ ONYX BOOX:
32851
33230
  model: 'Kon Tiki $1'
32852
33231
  - regex: 'Lomonosov'
32853
33232
  model: 'Lomonosov'
33233
+ - regex: 'MC_FAUST([23])'
33234
+ model: 'Faust $1'
33235
+ - regex: '(?:MC_)?DARWIN([6789])'
33236
+ model: 'Darwin $1'
33237
+ - regex: 'MC_GAMA4'
33238
+ model: 'Gama 4'
33239
+ - regex: 'MC_Cristo4'
33240
+ model: 'Monte Cristo 4'
32854
33241
  - regex: 'LIVINGSTONE2'
32855
33242
  model: 'Living Stone 2'
32856
33243
 
@@ -33072,9 +33459,9 @@ Axioo:
33072
33459
  device: 'tablet'
33073
33460
  model: 'PicoPad $1 3G'
33074
33461
 
33075
- # Pico (pico-interactive.com)
33462
+ # Pico (https://www.picoxr.com)
33076
33463
  Pico:
33077
- regex: 'Pico (G2 4K|Neo 3)(?:[);/ ]|$)'
33464
+ regex: 'Pico (G2 4K|Neo 3|4)(?:[);/ ]|$)'
33078
33465
  device: 'wearable'
33079
33466
  model: '$1'
33080
33467
 
@@ -33325,14 +33712,6 @@ Gooweel:
33325
33712
  - regex: 'M5 Pro'
33326
33713
  model: 'M5 Pro'
33327
33714
 
33328
- # Vargo or Ivargo
33329
- Vargo:
33330
- regex: 'Vargo[; _]|(?:V210101)(?:[);/ ]|$)'
33331
- device: 'smartphone'
33332
- models:
33333
- - regex: '(V210101)(?:[);/ ]|$)'
33334
- model: '$1'
33335
-
33336
33715
  # Elekta (elektagulf.com)
33337
33716
  Elekta:
33338
33717
  regex: 'ELED-(?:4[238]S[AM]{2}RT|5[05](?:CV_)?SMART_UHD|32SMART)(?:[);/ ]|$)'
@@ -33785,7 +34164,7 @@ Mara:
33785
34164
 
33786
34165
  # BMAX (www.bmaxit.com)
33787
34166
  BMAX:
33788
- regex: '(?:(?:I11|I10(Plus)?)_EEA|Android 11;(?: [\w-]+;)? I11|I10_Pro)(?:[);/ ]|$)'
34167
+ regex: '(?:(?:I11|I10(Plus)?)_EEA|Android 11;(?: [\w-]+;)? I11|I10_Pro|I10Plus)(?:[);/ ]|$)'
33789
34168
  device: 'tablet'
33790
34169
  models:
33791
34170
  - regex: 'I10_?(Plus|Pro)?(?:_(?:EEA|ROW))?(?:[);/ ]|$)'
@@ -33831,7 +34210,7 @@ Glofiish:
33831
34210
 
33832
34211
  # Polar (polar.ru)
33833
34212
  Polar:
33834
- regex: 'Polar(?:_WK)?[_ ](P32L32T2CSM|P24L51T2CSM|P40L33T2CSM|P43U51T2SCSM|P39L21T2CSM)(?:[);/ ]|$)'
34213
+ regex: 'Polar(?:_WK?)?[_ ](P32L32T2CSM|P24L51T2CSM|P40L33T2CSM|P43U51T2SCSM|P39L21T2CSM|P32L21T2SCSM|P65U51T2CSM|P42L21T2CSM|P50U51T2SCSM)(?:[);/ ]|$)'
33835
34214
  device: 'tv'
33836
34215
  model: '$1'
33837
34216
 
@@ -33867,7 +34246,7 @@ neoCore:
33867
34246
 
33868
34247
  # Novex
33869
34248
  Novex:
33870
- regex: '(NWX-40F171MSY|NVX-32H219MSY|NVX-43U329MSY|NVX-39H211MSY|NWX-43F149MSYv?|NWX-24H121MSY)(?:[);/ ]|$)'
34249
+ regex: '(NWX-40F171MSY|NVX-32H219MSY|NVX-43U329MSY|NVX-39H211MSY|NWX-43F149MSYv?|NWX-24H121MSY|NWX-32H171MSY)(?:[);/ ]|$)'
33871
34250
  device: 'tv'
33872
34251
  model: '$1'
33873
34252
 
@@ -33958,7 +34337,7 @@ Bubblegum:
33958
34337
 
33959
34338
  # Erisson
33960
34339
  Erisson:
33961
- regex: '(42FLEA73T2SM|42FLX9060T2|39LES80T2SM|32LX9051T2|55ULES92T2SM)(?:[);/ ]|$)'
34340
+ regex: '(42FLEA73T2SM|42FLX9060T2|39LES80T2SM|32LX9051T2|55ULES92T2SM|32LEA73T2SM)(?:[);/ ]|$)'
33962
34341
  device: 'tv'
33963
34342
  model: '$1'
33964
34343
 
@@ -34119,7 +34498,7 @@ Alps:
34119
34498
 
34120
34499
  # Starwind (starwind.com.ru)
34121
34500
  Starwind:
34122
- regex: 'Smart_Starwind|(?:SW-LED(?:24SG303|32SB302|42SB300|40SG300|43SG30[20]|32SG30[012]|55UG400))(?:[);/ ]|$)'
34501
+ regex: 'Smart_Starwind|(?:SW-LED(?:24SG303|32SB302|42SB300|40SG300|43SG30[20]|43UB404|32SG30[012]|55UG400|50UB401))(?:[);/ ]|$)'
34123
34502
  device: 'tv'
34124
34503
  models:
34125
34504
  - regex: 'SW-LED(\d{2}[SU][BG]\d{3})'
@@ -34182,7 +34561,7 @@ Smarty:
34182
34561
 
34183
34562
  # Leff
34184
34563
  Leff:
34185
- regex: '(32H540S|32H5[235]0T|5[05]U540S|40F540S|43F5[35]0T|32H511T)(?:[);/ ]|$)'
34564
+ regex: '(32H540S|32H5[235]0T|5[05]U540S|55U630S|40F540S|43F5[35]0T|32H511T)(?:[);/ ]|$)'
34186
34565
  device: 'tv'
34187
34566
  model: '$1'
34188
34567
 
@@ -34770,7 +35149,7 @@ Benesse:
34770
35149
  # Airtel
34771
35150
  Airtel:
34772
35151
  regex: 'Airtel[ _]'
34773
- model: 'smartphone'
35152
+ device: 'smartphone'
34774
35153
  models:
34775
35154
  - regex: 'Airpad 7-s'
34776
35155
  device: 'tablet'
@@ -35271,7 +35650,7 @@ ENACOM:
35271
35650
 
35272
35651
  # Yuno
35273
35652
  Yuno:
35274
- regex: 'YUNO\.|ULX-55UTCS3234|ULX-32TCS226|ULX-43UTCS347'
35653
+ regex: 'YUNO\.|ULX-55UTCS3234|ULX-32TCS226|ULX-43UTCS347|ULX-39TCS222'
35275
35654
  device: 'tv'
35276
35655
  models:
35277
35656
  - regex: 'ULX-(\d{2}U?TCS\d{2,4})'
@@ -35624,7 +36003,7 @@ ENIE:
35624
36003
 
35625
36004
  # Dcode (dcode.com.pk)
35626
36005
  Dcode:
35627
- regex: 'DS-(?:BD1|CR1|CL2 Pro)(?:[);/ ]|$)'
36006
+ regex: 'DS-(?:BD1|CR1|CL2 Pro|X1)(?:[);/ ]|$)'
35628
36007
  device: 'smartphone'
35629
36008
  models:
35630
36009
  - regex: 'DS-CR1'
@@ -35633,10 +36012,12 @@ Dcode:
35633
36012
  model: 'Cygnal 2 Pro'
35634
36013
  - regex: 'DS-BD1'
35635
36014
  model: 'Bold'
36015
+ - regex: 'DS-(X1)'
36016
+ model: '$1'
35636
36017
 
35637
36018
  # Pritom
35638
36019
  Pritom:
35639
- regex: 'Pritom_|(?:K7_A101(?:_EEA)?|Android 1[01];(?: [\w-]+;)? (?:M10_Lite|M10_(?:PLUS|Air)(?:_EEA)?)|P7PRO)(?:[);/ ]|$)'
36020
+ regex: 'Pritom_|(?:K7_A101(?:_EEA)?|Android 1[01];(?: [\w-]+;)? (?:M10_Lite|M10_(?:PLUS|Air)(?:_EEA)?|P7_EEA)|P7PRO)(?:[);/ ]|$)'
35640
36021
  device: 'tablet'
35641
36022
  models:
35642
36023
  - regex: 'M10_Lite'
@@ -35649,6 +36030,8 @@ Pritom:
35649
36030
  model: 'M10 Plus'
35650
36031
  - regex: 'Pritom[_ ]M10'
35651
36032
  model: 'M10'
36033
+ - regex: 'P7_EEA'
36034
+ model: 'P7'
35652
36035
  - regex: 'P7PRO'
35653
36036
  model: 'TronPad P7 Pro'
35654
36037
 
@@ -35672,7 +36055,7 @@ Chainway:
35672
36055
 
35673
36056
  # Harper (https://harper.ru/)
35674
36057
  Harper:
35675
- regex: '(?:HARPER[_ ])?(ABX-332|ABX-[12]10|40F660TS|24R490TS)(?:[);/ ]|$)'
36058
+ regex: '(?:HARPER[_ ])?(ABX-332|ABX-[12]10|40F660TS|24R490TS|65U660TS)(?:[);/ ]|$)'
35676
36059
  device: 'tv'
35677
36060
  model: '$1'
35678
36061
 
@@ -35812,7 +36195,6 @@ ECOO:
35812
36195
  - regex: 'ECOO[ _](E0[45])'
35813
36196
  model: '$1'
35814
36197
 
35815
-
35816
36198
  # Dom.ru
35817
36199
  Dom.ru:
35818
36200
  regex: '(Movix Pro(?: Voice)?|Movix Go)(?:[);/ ]|$)'
@@ -35828,7 +36210,7 @@ Carbon Mobile:
35828
36210
  # Chili Green (chiligreen.com)
35829
36211
  ChiliGreen:
35830
36212
  regex: 'E-Board[ -]MX05[45]'
35831
- model: 'tablet'
36213
+ device: 'tablet'
35832
36214
  models:
35833
36215
  - regex: 'E-Board[ -](MX05[45])'
35834
36216
  model: 'E-Board $1'
@@ -35964,12 +36346,15 @@ Blackpcs:
35964
36346
 
35965
36347
  # GoldMaster (www.goldmaster.com.tr)
35966
36348
  GoldMaster:
35967
- regex: '(?:Netta 2 Pro|Netta 3\.100m|BENGAL_6|DETROIT 3)(?:[);/ ]|$)'
36349
+ regex: '(?:Netta 2 Pro|Netta 3\.100m|BENGAL_6|DETROIT 3|i-910)(?:[);/ ]|$)'
35968
36350
  device: 'tablet'
35969
36351
  models:
35970
36352
  - regex: 'Netta 2 Pro'
35971
36353
  model: 'Netta 2 Pro'
35972
36354
  device: 'tv'
36355
+ - regex: 'i-910'
36356
+ model: 'i-910'
36357
+ device: 'tv'
35973
36358
  - regex: 'Netta 3\.100m'
35974
36359
  model: 'Netta 3'
35975
36360
  device: 'tv'
@@ -36042,9 +36427,13 @@ Skyline:
36042
36427
 
36043
36428
  # Hiberg (hiberg.ru)
36044
36429
  Hiberg:
36045
- regex: '(32Y_STV-R)(?:[);/ ]|$)'
36430
+ regex: '(?:32Y_STV-R|HIBERG43YUHD)(?:[);/ ]|$)'
36046
36431
  device: 'tv'
36047
- model: '$1'
36432
+ models:
36433
+ - regex: 'HIBERG43YUHD'
36434
+ model: '43Y UHD'
36435
+ - regex: '(32Y_STV-R)'
36436
+ model: '$1'
36048
36437
 
36049
36438
  # Hartens
36050
36439
  Hartens:
@@ -36232,6 +36621,12 @@ Mobell:
36232
36621
  - regex: 'NOVA P3'
36233
36622
  model: 'Nova P3'
36234
36623
 
36624
+ # Mobvoi (https://www.mobvoi.com/)
36625
+ Mobvoi:
36626
+ regex: 'TicWatch (C2|C2\+|Pro S|S2?)(?:[);/ ]|$)'
36627
+ device: 'wearable'
36628
+ model: 'TicWatch $1'
36629
+
36235
36630
  # Smartex
36236
36631
  Smartex:
36237
36632
  regex: '(?:Android 7(?:[\d.]*);(?: [\w-]+;)? M512| M520| M700)(?:[);/ ]|$)'
@@ -36394,9 +36789,9 @@ MwalimuPlus:
36394
36789
 
36395
36790
  # OLTO (olto.su)
36396
36791
  OLTO:
36397
- regex: 'OLTO-(43ST20U)(?:[);/ ]|$)'
36398
- device: 'tv'
36399
- model: '$1'
36792
+ regex: 'OLTO-(43ST20U)(?:[);/ ]|$)'
36793
+ device: 'tv'
36794
+ model: '$1'
36400
36795
 
36401
36796
  # DSIC
36402
36797
  DSIC:
@@ -36406,7 +36801,7 @@ DSIC:
36406
36801
 
36407
36802
  # Mascom
36408
36803
  Mascom:
36409
- regex: 'Mascom (S750|SS289)(?:[);/ ]|$)'
36804
+ regex: 'Mascom (S750|SS289|WS517)(?:[);/ ]|$)'
36410
36805
  device: 'smartphone'
36411
36806
  model: '$1'
36412
36807
 
@@ -36563,9 +36958,14 @@ Zamolxe:
36563
36958
 
36564
36959
  # REGAL
36565
36960
  REGAL:
36566
- regex: 'Regal (TAB 10\.1)'
36961
+ regex: 'Regal (?:TAB 10\.1|Google TV)'
36567
36962
  device: 'tablet'
36568
- model: '$1'
36963
+ models:
36964
+ - regex: 'Regal (TAB 10\.1)'
36965
+ model: '$1'
36966
+ - regex: 'Regal Google TV'
36967
+ device: 'tv'
36968
+ model: ''
36569
36969
 
36570
36970
  # Great Asia or GreatAsia (www.sz-tabletpc.com)
36571
36971
  Great Asia:
@@ -36703,15 +37103,15 @@ Versus:
36703
37103
 
36704
37104
  # NGPon
36705
37105
  NGpon:
36706
- regex: 'Android 4(?:[\d.]*);(?: [\w-]+;)? (3188HD)(?: Build|[;)])'
36707
- device: 'tv'
36708
- model: '$1'
37106
+ regex: 'Android 4(?:[\d.]*);(?: [\w-]+;)? (3188HD)(?: Build|[;)])'
37107
+ device: 'tv'
37108
+ model: '$1'
36709
37109
 
36710
37110
  # Rupa
36711
37111
  Rupa:
36712
- regex: 'Pyramid A5X'
36713
- device: 'tv'
36714
- model: 'Pyramid A5X'
37112
+ regex: 'Pyramid A5X'
37113
+ device: 'tv'
37114
+ model: 'Pyramid A5X'
36715
37115
 
36716
37116
  # SEBBE
36717
37117
  SEBBE:
@@ -36739,14 +37139,14 @@ Kinstone:
36739
37139
 
36740
37140
  # HIPER
36741
37141
  HIPER:
36742
- regex: 'HIPER MEDIA|(?:U(?:65|50)YQ2200GR)(?:[);/ ]|$)'
37142
+ regex: 'HIPER MEDIA|(?:U(?:43|50|65)YQ2200GR|H32YQ2200GR)(?:[);/ ]|$)'
36743
37143
  device: 'tv'
36744
37144
  models:
36745
37145
  - regex: 'MEDIA STICK 4K'
36746
37146
  model: 'Media Stick 4K'
36747
37147
  - regex: 'MEDIA TV (i4 Pro|i4|[46]K)'
36748
37148
  model: 'Media TV $1'
36749
- - regex: '(U(?:65|50)YQ2200GR)'
37149
+ - regex: '(U(?:43|50|65)YQ2200GR|H32YQ2200GR)'
36750
37150
  model: '$1'
36751
37151
 
36752
37152
  # TopDevice (https://topdevice.ru/)
@@ -36780,9 +37180,9 @@ ANXONIT:
36780
37180
  device: 'tablet'
36781
37181
  model: '$1'
36782
37182
 
36783
- # VITYAZ
37183
+ # Vityaz or vityas
36784
37184
  Vityaz:
36785
- regex: '(24LH1207)(?:[);/ ]|$)'
37185
+ regex: '(24LH1207|43LU1204)(?:[);/ ]|$)'
36786
37186
  device: 'tv'
36787
37187
  model: '$1'
36788
37188
 
@@ -36891,11 +37291,13 @@ Zoom:
36891
37291
  device: 'smartphone'
36892
37292
  model: '$1'
36893
37293
 
36894
- # Linsay
37294
+ # Linsay (linsaydigital.com)
36895
37295
  Linsay:
36896
- regex: 'LINSAY[_ ]'
37296
+ regex: 'LINSAY[_ ]|(?:F10XIPSQ)(?:[);/ ]|$)'
36897
37297
  device: 'tablet'
36898
37298
  models:
37299
+ - regex: '(F10XIPSQ)(?:[);/ ]|$)'
37300
+ model: '$1'
36899
37301
  - regex: 'LINSAY[_ ]([^/;)]+)(?: Build|[);])'
36900
37302
  model: '$1'
36901
37303
 
@@ -36983,7 +37385,7 @@ Bolva:
36983
37385
  device: 'tablet'
36984
37386
  model: 'B-TAB1021'
36985
37387
 
36986
- # DIJITSU
37388
+ # DIJITSU (http://dijitsu.com.tr/)
36987
37389
  DIJITSU:
36988
37390
  regex: 'DIJITSU_'
36989
37391
  device: 'smartphone'
@@ -37187,7 +37589,7 @@ Nanho:
37187
37589
 
37188
37590
  # Vekta (myvekta.ru)
37189
37591
  Vekta:
37190
- regex: '(LD-65SU8815BS|LD-32SR4850BS)(?:[);/ ]|$)'
37592
+ regex: '(LD-65SU8815BS|LD-32SR4850BS|LD-50SU8921BS)(?:[);/ ]|$)'
37191
37593
  device: 'tv'
37192
37594
  model: '$1'
37193
37595
 
@@ -37243,19 +37645,85 @@ Epic:
37243
37645
 
37244
37646
  # AMCV
37245
37647
  AMCV:
37246
- regex: '(LE-39ZTHS25)(?:[);/ ]|$)'
37648
+ regex: '(LE-3[29]ZTHS25)(?:[);/ ]|$)'
37247
37649
  device: 'tv'
37248
37650
  model: '$1'
37249
37651
 
37250
37652
  # F+ or F-Plus (fplusmobile.ru)
37251
37653
  F+:
37252
- regex: '(SH6[05]|SA50)_2[13]\d{3}(?:[);/ ]|$)'
37654
+ regex: '(SH6[05]|SA50|SP65)_(?:2[13]|66)\d{3}(?:[);/ ]|$)'
37655
+ device: 'smartphone'
37656
+ model: '$1'
37657
+
37658
+ # Sber (sberdevices.ru)
37659
+ Sber:
37660
+ regex: '(SberBox)(?:[);/ ]|$)'
37661
+ device: 'tv'
37662
+ model: '$1'
37663
+
37664
+ # Sveon
37665
+ Sveon:
37666
+ regex: '(SBX604)(?:[);/ ]|$)'
37667
+ device: 'tv'
37668
+ model: '$1'
37669
+
37670
+ # DSDevices
37671
+ DSDevices:
37672
+ regex: '(DSCS9)(?:[);/ ]|$)'
37673
+ device: 'tv'
37674
+ model: '$1'
37675
+
37676
+ # VOLKANO
37677
+ VOLKANO:
37678
+ regex: '(VK-740-BL)(?:[);/ ]|$)'
37679
+ device: 'tablet'
37680
+ model: '$1'
37681
+
37682
+ # A&K
37683
+ A&K:
37684
+ regex: '(G4040)'
37685
+ device: 'feature phone'
37686
+ model: '$1'
37687
+
37688
+ # BASE
37689
+ BASE:
37690
+ regex: 'BASE[_ ](Varia)'
37691
+ device: 'smartphone'
37692
+ model: '$1'
37693
+
37694
+ # BAUHN (https://bauhn.com.au/)
37695
+ BAUHN:
37696
+ regex: 'BAUHN(?:[);/ ]|$)'
37697
+ device: 'tv'
37698
+ model: ''
37699
+
37700
+ # CKK Mobile
37701
+ CKK Mobile:
37702
+ regex: 'CKK (Inspire 1|Garnet)'
37253
37703
  device: 'smartphone'
37254
37704
  model: '$1'
37255
37705
 
37706
+ # SPURT
37707
+ SPURT:
37708
+ regex: '(?: K700)(?:[);/ ]|$)'
37709
+ device: 'smartphone'
37710
+ model: 'K700'
37711
+
37712
+ # Z-Kai
37713
+ Z-Kai:
37714
+ regex: '(ZMOOTH)(?:[);/ ]|$)'
37715
+ device: 'tablet'
37716
+ model: '$1'
37717
+
37718
+ # Arçelik
37719
+ Arçelik:
37720
+ regex: 'Arcelik'
37721
+ device: 'tv'
37722
+ model: ''
37723
+
37256
37724
  # Devices with undectable brand, but detectable model
37257
37725
  Unknown:
37258
- regex: 'Plasma Mobile|WebTV/(\d+\.\d+)|TV Bro|(?:M10 Ultra|FO-R15|TVBOX|Smart[ _]?TV|SmartATV|M8S\+ 4K|PCBox|rk(?:3128|322x|3368)(?:[_-]box)?|H10 PLAY|Smart AIO TV|TVBOX_L|L-BOX|TVBOX-5G|mips.+(?:Opera TV|wireless|wired)|smartbox|TV BOX|I12Pro Max|(?:audi_)?ks1280x480|AT&T TV|RealtekATV|AOSP on r33a0|hx322x_box|X98_S500)(?:[);/ ]|$)'
37726
+ regex: 'Plasma Mobile|WebTV/(\d+\.\d+)|TV Bro|(?:M10 Ultra|FO-R15|TVBOX|Smart[ _-]?TV|SmartATV|M8S\+ 4K|PCBox|rk(?:3128|322x|3368)(?:[_-]box)?|H10 PLAY|Smart AIO TV|TVBOX_L|L-BOX|TVBOX-5G|mips.+(?:Opera TV|wireless|wired)|smartbox|TV BOX|I12Pro Max|(?:audi_)?ks1280x480|AT&T TV|RealtekATV|AOSP on r33a0|hx322x_box|X98_S500)(?:[);/ ]|$)'
37259
37727
  device: 'smartphone'
37260
37728
  models:
37261
37729
  - regex: 'WebTV/(\d+\.\d+)'
@@ -37267,7 +37735,7 @@ Unknown:
37267
37735
  - regex: '(FO-R15|X98_S500)(?:[);/ ]|$)'
37268
37736
  device: 'tv'
37269
37737
  model: '$1'
37270
- - regex: '(Smart[ _]?TV|SmartATV|PCBox|hx322x_box|rk(?:3128|322x|3368)(?:[_-]box)?|TVBOX|Smart AIO TV|TVBOX_L|L-BOX|TVBOX-5G|AT&T TV|RealtekATV|TV Bro|AOSP on r33a0)(?:[);/ ]|$)'
37738
+ - regex: '(Smart[ _-]?TV|SmartATV|PCBox|hx322x_box|rk(?:3128|322x|3368)(?:[_-]box)?|TVBOX|Smart AIO TV|TVBOX_L|L-BOX|TVBOX-5G|AT&T TV|RealtekATV|TV Bro|AOSP on r33a0)(?:[);/ ]|$)'
37271
37739
  device: 'tv'
37272
37740
  model: ''
37273
37741
  - regex: 'M8S\+ 4K(?:[);/ ]|$)'