device_detector 1.0.2 → 1.0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (61) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +4 -5
  3. data/CHANGELOG.md +3 -0
  4. data/README.md +5 -5
  5. data/Rakefile +13 -0
  6. data/lib/device_detector/version.rb +1 -1
  7. data/regexes/bots.yml +89 -2
  8. data/regexes/client/browser_engine.yml +3 -0
  9. data/regexes/client/browsers.yml +325 -76
  10. data/regexes/client/feed_readers.yml +6 -0
  11. data/regexes/client/libraries.yml +9 -0
  12. data/regexes/client/mobile_apps.yml +40 -1
  13. data/regexes/client/pim.yml +5 -0
  14. data/regexes/device/mobiles.yml +1607 -431
  15. data/regexes/oss.yml +1 -1
  16. data/regexes/vendorfragments.yml +1 -1
  17. data/spec/device_detector/concrete_user_agent_spec.rb +16 -17
  18. data/spec/device_detector/device_spec.rb +25 -25
  19. data/spec/device_detector/memory_cache_spec.rb +19 -19
  20. data/spec/device_detector/model_extractor_spec.rb +3 -3
  21. data/spec/device_detector/version_extractor_spec.rb +5 -6
  22. data/spec/device_detector_spec.rb +26 -26
  23. data/spec/fixtures/client/browser.yml +655 -322
  24. data/spec/fixtures/client/feed_reader.yml +39 -45
  25. data/spec/fixtures/client/library.yml +24 -11
  26. data/spec/fixtures/client/mediaplayer.yml +29 -28
  27. data/spec/fixtures/client/mobile_app.yml +100 -41
  28. data/spec/fixtures/client/pim.yml +32 -19
  29. data/spec/fixtures/detector/bots.yml +140 -23
  30. data/spec/fixtures/detector/camera.yml +2 -2
  31. data/spec/fixtures/detector/console.yml +3 -3
  32. data/spec/fixtures/detector/desktop.yml +312 -73
  33. data/spec/fixtures/detector/feature_phone.yml +48 -0
  34. data/spec/fixtures/detector/feed_reader.yml +141 -126
  35. data/spec/fixtures/detector/mediaplayer.yml +39 -38
  36. data/spec/fixtures/detector/mobile_apps.yml +86 -85
  37. data/spec/fixtures/detector/phablet.yml +715 -236
  38. data/spec/fixtures/detector/portable_media_player.yml +17 -0
  39. data/spec/fixtures/detector/smartphone-1.yml +3534 -3512
  40. data/spec/fixtures/detector/smartphone-10.yml +3848 -6286
  41. data/spec/fixtures/detector/smartphone-11.yml +5548 -3298
  42. data/spec/fixtures/detector/smartphone-12.yml +8655 -0
  43. data/spec/fixtures/detector/smartphone-2.yml +3645 -3625
  44. data/spec/fixtures/detector/smartphone-3.yml +4099 -4176
  45. data/spec/fixtures/detector/smartphone-4.yml +3861 -3865
  46. data/spec/fixtures/detector/smartphone-5.yml +3991 -4037
  47. data/spec/fixtures/detector/smartphone-6.yml +4074 -4047
  48. data/spec/fixtures/detector/smartphone-7.yml +4355 -4362
  49. data/spec/fixtures/detector/smartphone-8.yml +4087 -4136
  50. data/spec/fixtures/detector/smartphone-9.yml +4420 -4408
  51. data/spec/fixtures/detector/smartphone.yml +2900 -2904
  52. data/spec/fixtures/detector/tablet-1.yml +3946 -3912
  53. data/spec/fixtures/detector/tablet-2.yml +3593 -3617
  54. data/spec/fixtures/detector/tablet-3.yml +2738 -85
  55. data/spec/fixtures/detector/tablet.yml +3604 -3616
  56. data/spec/fixtures/detector/tv.yml +131 -51
  57. data/spec/fixtures/detector/unknown.yml +64 -27
  58. data/spec/fixtures/device/camera.yml +4 -3
  59. data/spec/fixtures/device/car_browser.yml +3 -2
  60. data/spec/fixtures/device/console.yml +15 -14
  61. metadata +4 -2
@@ -47,6 +47,12 @@
47
47
  url: 'http://www.chebinliu.com/projects/iphone/feeddler-rss-reader/'
48
48
  type: 'Feed Reader App'
49
49
 
50
+ - regex: 'QuiteRSS(?:[/ ](\d+[\.\d]+))?'
51
+ name: 'QuiteRSS'
52
+ version: '$1'
53
+ url: https://quiterss.org
54
+ type: 'Feed Reader App'
55
+
50
56
  - regex: 'gPodder/([\d\.]+)'
51
57
  name: 'gPodder'
52
58
  version: '$1'
@@ -82,3 +82,12 @@
82
82
  - regex: 'HTTPie(?:/(\d+[\.\d]+))?'
83
83
  name: 'HTTPie'
84
84
  version: '$1'
85
+
86
+ - regex: 'rest-client/(\d+[\.\d]+).*ruby'
87
+ name: 'REST Client for Ruby'
88
+ version: '$1'
89
+
90
+ - regex: 'RestSharp/(\d+[\.\d]+)'
91
+ name: 'RestSharp'
92
+ version: '$1'
93
+ url: 'http://restsharp.org/'
@@ -165,4 +165,43 @@
165
165
  regex: 'RSSRadio/([\d]+)?'
166
166
  name: 'RSSRadio'
167
167
  version: '$1'
168
-
168
+ -
169
+ regex: 'SogouSearch Android[\d\.]+ version([\d\.]+)?'
170
+ name: 'SogouSearch App'
171
+ version: '$1'
172
+ -
173
+ regex: 'NewsArticle/([\d\.]+)?'
174
+ name: 'NewsArticle App'
175
+ version: '$1'
176
+ -
177
+ regex: 'tieba/([\d\.]+)?'
178
+ name: 'tieba'
179
+ version: '$1'
180
+ -
181
+ regex: 'com\.douban\.group/([\d\.]+)?'
182
+ name: 'douban App'
183
+ version: '$1'
184
+ -
185
+ regex: 'BingWeb/([\d\.]+)?'
186
+ name: 'BingWebApp'
187
+ version: '$1'
188
+ -
189
+ regex: 'GSA/([\d\.]+)?'
190
+ name: 'Google Search App'
191
+ version: '$1'
192
+ -
193
+ regex: 'Flipboard/([\d\.]+)?'
194
+ name: 'Flipboard App'
195
+ version: '$1'
196
+ -
197
+ regex: 'Instagram[ /]([\d\.]+)?'
198
+ name: 'Instagram App'
199
+ version: '$1'
200
+ -
201
+ regex: 'baiduboxapp/([\d\.]+)?'
202
+ name: 'Baidu Box App'
203
+ version: '$1'
204
+ -
205
+ regex: 'Crosswalk(?!.*Streamy)/([\d\.]+)?'
206
+ name: 'CrosswalkApp'
207
+ version: '$1'
@@ -43,4 +43,9 @@
43
43
 
44
44
  - regex: 'DAVdroid(?:/(\d+[\.\d]+))?'
45
45
  name: 'DAVdroid'
46
+ version: '$1'
47
+
48
+ # SeaMonkey
49
+ - regex: '(?:SeaMonkey|Iceape)(?:/(\d+[\.\d]+))?'
50
+ name: 'SeaMonkey'
46
51
  version: '$1'
@@ -8,7 +8,7 @@
8
8
  'Tunisie Telecom':
9
9
  regex: 'StarTrail TT[);/ ]'
10
10
  device: 'smartphone'
11
- model: 'StarTrail'
11
+ model: 'StarTrail by TT'
12
12
 
13
13
  # SFR
14
14
  SFR:
@@ -29,6 +29,8 @@ SFR:
29
29
  model: 'StarShine 2' # ZTE
30
30
  - regex: 'StarShine[);/ ]'
31
31
  model: 'StarShine' # Huawei U8180
32
+ - regex: 'STARADDICT 4[);/ ]'
33
+ model: 'Staraddict 4'
32
34
  - regex: 'STARADDICT III[);/ ]'
33
35
  model: 'Staraddict 3' # Coolpad 8861U
34
36
  - regex: 'STARADDICT II Plus[);/ ]'
@@ -54,10 +56,12 @@ SFR:
54
56
 
55
57
  # HTC
56
58
  HTC:
57
- regex: 'HTC|Sprint (?:APA|ATP)|ADR(?!910L)[a-z0-9]+|NexusHD2|Amaze[ _]4G[);/ ]|(Desire|Sensation|Evo ?3D|IncredibleS|Wildfire|Butterfly)[ _]?([^;/]+) Build|(Amaze[ _]4G|One ?[XELSV\+]+)[);/ ]|SPV E6[05]0|One M8|X525a|PG86100|PC36100|XV6975|PJ83100[);/ ]|2PYB2|0PJA10|0PJA2'
59
+ regex: 'HTC|Sprint (?:APA|ATP)|ADR(?!910L)[a-z0-9]+|NexusHD2|Amaze[ _]4G[);/ ]|(Desire|Sensation|Evo ?3D|IncredibleS|Wildfire|Butterfly)[ _]?([^;/]+) Build|(Amaze[ _]4G|One ?[XELSV\+]+)[);/ ]|SPV E6[05]0|One M8|X525a|PG86100|PC36100|XV6975|PJ83100[);/ ]|2PYB2|2PZC5|0PJA10|0PJA2'
58
60
  device: 'smartphone'
59
61
  models:
60
62
  # explicit smartphone models
63
+ - regex: '2PZC5[);/ ]'
64
+ model: 'U11'
61
65
  - regex: 'XV6975[);/ ]'
62
66
  model: 'Imagio'
63
67
  - regex: 'PG86100[);/ ]'
@@ -127,40 +131,52 @@ HTC:
127
131
 
128
132
  # microsoft
129
133
  Microsoft:
130
- regex: 'KIN\.(One|Two)|RM-(?:1031|106[57]|109[02]|1096|1099|1109|1114|1127|1141|1154)|Microsoft; Lumia'
134
+ regex: 'KIN\.(One|Two)|RM-(?:1010|1031|106[57]|107[23467]|1089|109[02]|1096|1099|1109|111[34]|1127|1141|1154|994)|Microsoft; Lumia|Lumia (?:1530|1320|950|850|650|640|550|535|435)'
131
135
  device: 'smartphone'
132
136
  models:
133
137
  - regex: 'KIN\.(One|Two)'
134
138
  device: 'feature phone'
135
139
  model: 'Kin $1'
136
140
 
137
- - regex: 'RM-1031'
138
- model: 'Lumia 532'
139
- - regex: 'RM-106[57]'
140
- model: 'Lumia 640 XL'
141
- - regex: 'RM-1096'
142
- model: 'Lumia 640 XL'
143
- - regex: 'RM-109[02]'
144
- model: 'Lumia 535'
145
- - regex: 'RM-1099'
141
+ - regex: 'RM-1099|Lumia 430'
146
142
  model: 'Lumia 430'
147
- - regex: 'RM-1109'
148
- model: 'Lumia 640'
149
- - regex: 'RM-1114'
143
+ - regex: 'RM-1114|Lumia 435'
150
144
  model: 'Lumia 435'
151
- - regex: 'RM-1127'
152
- model: 'Lumia 550'
153
- - regex: 'RM-1141'
145
+ - regex: 'RM-1031|Lumia 532'
146
+ model: 'Lumia 532'
147
+ - regex: 'RM-109[02]|RM-1089|Lumia 535'
148
+ model: 'Lumia 535'
149
+ - regex: 'RM-1141|Lumia 540'
154
150
  model: 'Lumia 540'
155
- - regex: 'RM-1154'
151
+ - regex: 'RM-1127|Lumia 550'
152
+ model: 'Lumia 550'
153
+ - regex: 'RM-1010'
154
+ model: 'Lumia 638'
155
+ - regex: 'RM-106[57]|RM-1096|Lumia 640 XL'
156
+ model: 'Lumia 640 XL'
157
+ device: 'phablet'
158
+ - regex: 'RM-1109|RM-1113|RM-107[23467]|Lumia 640'
159
+ model: 'Lumia 640'
160
+ - regex: 'RM-1154|Lumia 650'
156
161
  model: 'Lumia 650'
162
+ - regex: 'Lumia 850'
163
+ model: 'Lumia 850'
164
+ - regex: 'Lumia 950 XL'
165
+ model: 'Lumia 950 XL'
166
+ device: 'phablet'
167
+ - regex: 'Lumia 950'
168
+ model: 'Lumia 950'
169
+ - regex: 'RM-994|Lumia 1320'
170
+ model: 'Lumia 1320'
171
+ - regex: 'Lumia 1530'
172
+ model: 'Lumia 1530'
157
173
 
158
174
  - regex: 'Microsoft; Lumia ([^;/)]+)[;/)]'
159
175
  model: 'Lumia $1'
160
176
 
161
177
  # NOKIA
162
178
  Nokia:
163
- regex: 'Nokia|Lumia|Maemo RX|portalmmm/2\.0 N7|portalmmm/2\.0 NK|nok[0-9]+|Symbian.*\s([a-z0-9]+)$|RX-51 N900|TA-[0-9]{4}'
179
+ regex: 'Nokia(?!Browser|Webview|; GT-I8750)|Lumia|Maemo RX|portalmmm/2\.0 N7|portalmmm/2\.0 NK|nok[0-9]+|Symbian.*\s([a-z0-9]+)$|RX-51 N900|TA-[0-9]{4}|ARM; 909'
164
180
  device: 'smartphone'
165
181
  models:
166
182
  # Nokia branded phones by HMD Global
@@ -178,12 +194,121 @@ Nokia:
178
194
  - regex: 'TA-10(04|12|52)'
179
195
  model: '8'
180
196
  # 2018 Models
181
- - regex: 'Nokia ([A-Za-z0-9\. ]+) Build'
182
- model: '$1'
197
+ - regex: 'Nokia 8\.1'
198
+ model: '8.1'
199
+ - regex: 'Nokia 8 Sirocco'
200
+ model: '8 Sirocco'
201
+ - regex: 'Nokia 7\.1'
202
+ model: '7.1'
203
+ - regex: 'Nokia 7 plus'
204
+ model: '7 plus'
205
+ - regex: 'Nokia 6\.1 Plus'
206
+ model: '6.1 Plus'
207
+ - regex: 'Nokia 6\.1'
208
+ model: '6.1'
209
+ - regex: 'Nokia 5\.1 Plus'
210
+ model: '5.1 Plus'
211
+ - regex: 'Nokia 5\.1'
212
+ model: '5.1'
213
+ - regex: 'Nokia 3\.1'
214
+ model: '3.1'
215
+ - regex: 'Nokia 2\.1'
216
+ model: '2.1'
217
+ - regex: 'Nokia 1 Plus'
218
+ model: '1 Plus'
219
+ - regex: 'Nokia 1'
220
+ model: '1'
183
221
 
184
222
  # Nokia phones
185
223
  - regex: 'RX-51 N900'
186
224
  model: 'N900'
225
+ - regex: '(?: )?(Nokia500|nokiaasha500(?:dualsim)?)(?: Build|[_);/])'
226
+ model: 'Asha 500'
227
+ - regex: 'Nokia5130c(?:-2)?'
228
+ model: '5130 XpressMusic'
229
+ - regex: 'Nokia5230'
230
+ model: 'Nuron'
231
+ - regex: 'Nokia5233'
232
+ model: '5233'
233
+ - regex: 'Nokia5800d-1'
234
+ model: '5800 XpressMusic'
235
+ - regex: 'Nokia6210Navigator'
236
+ model: 'Navigator'
237
+ - regex: 'Nokia8800e?'
238
+ model: 'Sapphire Arte'
239
+ - regex: 'NOKIA-RH-17'
240
+ model: '2280'
241
+ - regex: 'NOKIA-RH-27'
242
+ model: '6225'
243
+ - regex: 'NOKIA-RH-34'
244
+ model: '6585'
245
+ - regex: 'NOKIA-RH-48'
246
+ model: '3105'
247
+ - regex: 'NOKIA-RM-11'
248
+ model: '3205'
249
+ - regex: 'Nokia808 PureView'
250
+ model: '808 PureView'
251
+ - regex: 'Nokia ?([0-9]{4})c(?:-)?'
252
+ model: '$1 Classic'
253
+ - regex: 'Nokia ?([0-9]{4})s(?:-)?'
254
+ model: '$1 Slide'
255
+ - regex: 'Nokia ?([0-9]{4})'
256
+ model: '$1'
257
+ - regex: '(?: )?Nokia([235][0-9]{2})(?: Build|[_);/])'
258
+ model: 'Asha $1'
259
+ - regex: 'Nokia([CEX]-?[0-9]{1,2}i?)-[0-9]{1,2}u?(?: Build|[_);/])'
260
+ model: '$1'
261
+
262
+ - regex: 'Nokia;? 520T'
263
+ model: 'Lumia 520T'
264
+ - regex: 'RM-91[45]'
265
+ model: 'Lumia 520'
266
+ - regex: 'RM-997|Nokia 526'
267
+ model: 'Lumia 526'
268
+ - regex: 'RM-846'
269
+ model: 'Lumia 620'
270
+ - regex: 'RM-97[68]'
271
+ model: 'Lumia 630'
272
+ - regex: 'RM-97[45]'
273
+ model: 'Lumia 635'
274
+ - regex: 'RM-1027'
275
+ model: 'Lumia 636'
276
+ - regex: 'NOKIA;? 710'
277
+ model: 'Lumia 710'
278
+ - regex: 'Nokia;? 720T'
279
+ model: 'Lumia 720T'
280
+ - regex: 'RM-885'
281
+ model: 'Lumia 720'
282
+ - regex: 'Lumia 730'
283
+ model: 'Lumia 730'
284
+ - regex: 'RM-103[89]'
285
+ model: 'Lumia 735'
286
+ - regex: 'Nokia;? 800C'
287
+ model: 'Lumia 800C'
288
+ - regex: 'Nokia;? 800'
289
+ model: 'Lumia 800'
290
+ - regex: 'Nokia 820'
291
+ model: 'Lumia 820'
292
+ - regex: 'RM-984'
293
+ model: 'Lumia 830'
294
+ - regex: 'Nokia;? 900'
295
+ model: 'Lumia 900'
296
+ - regex: '(RM-82[12]|Nokia;? 920)(?: Build|[_);/])'
297
+ model: 'Lumia 920'
298
+ - regex: '(RM-89[23]|RM-910|Nokia;? 925)(?: Build|[a_);/])'
299
+ model: 'Lumia 925'
300
+ - regex: 'Lumia 929'
301
+ model: 'Lumia Icon'
302
+ - regex: 'RM-1045'
303
+ model: 'Lumia 930'
304
+ - regex: '(ARM; 909|NOKIA;? 909|NOKIA; id300)(?: Build|[_);/])'
305
+ model: 'Lumia 1020'
306
+ - regex: 'NOKIA;? 1520\.1'
307
+ model: 'Lumia 1520.1'
308
+
309
+ - regex: 'Nokia ([A-Za-z0-9\. ]+)(?: Build|[_);/])'
310
+ model: '$1'
311
+
187
312
  - regex: 'Nokia(N[0-9]+)'
188
313
  model: '$1'
189
314
  - regex: 'Nokia-([a-z0-9]+)'
@@ -316,117 +441,160 @@ TiPhone:
316
441
 
317
442
  # Apple
318
443
  Apple:
319
- regex: '(?:iTunes-)?Apple[ _]?TV|(?:Apple-|iTunes-)?(?:iPad|iPhone)|iPh[0-9],[0-9]|CFNetwork'
444
+ regex: '(?:iTunes-)?Apple[ _]?TV|(?:Apple-|iTunes-)?(?<!like )(?:iPad|iPhone)|iPh[0-9],[0-9]|CFNetwork'
320
445
  models:
321
446
  # specific smartphone devices
322
- - regex: '(?:Apple-)?iPh(?:one)?1[C,]1'
447
+ - regex: '(?:Apple-)?iPh(?:one)?1[C,_]1'
323
448
  model: 'iPhone'
324
449
  device: 'smartphone'
325
- - regex: '(?:Apple-)?iPh(?:one)?1[C,]2'
450
+ - regex: '(?:Apple-)?iPh(?:one)?1[C,_]2'
326
451
  model: 'iPhone 3G'
327
452
  device: 'smartphone'
328
- - regex: '(?:Apple-)?iPh(?:one)?2[C,]1'
453
+ - regex: '(?:Apple-)?iPh(?:one)?2[C,_]1'
329
454
  model: 'iPhone 3GS'
330
455
  device: 'smartphone'
331
- - regex: '(?:Apple-)?iPh(?:one)?3[C,][123]'
456
+ - regex: '(?:Apple-)?iPh(?:one)?3[C,_][123]'
332
457
  model: 'iPhone 4'
333
458
  device: 'smartphone'
334
- - regex: '(?:Apple-)?iPh(?:one)?4[C,]1'
459
+ - regex: '(?:Apple-)?iPh(?:one)?4[C,_]1|1C2%254enohPi'
335
460
  model: 'iPhone 4S'
336
461
  device: 'smartphone'
337
- - regex: '(?:Apple-)?iPh(?:one)?5[C,][12]'
462
+ - regex: '(?:Apple-)?iPh(?:one)?5[C,_][12]'
338
463
  model: 'iPhone 5'
339
464
  device: 'smartphone'
340
- - regex: '(?:Apple-)?iPh(?:one)?5[C,][34]'
465
+ - regex: '(?:Apple-)?iPh(?:one)?5[C,_][34]'
341
466
  model: 'iPhone 5C'
342
467
  device: 'smartphone'
343
- - regex: '(?:Apple-)?iPh(?:one)?6[C,][12]'
468
+ - regex: '(?:Apple-)?iPh(?:one)?6[C,_][12]'
344
469
  model: 'iPhone 5S'
345
470
  device: 'smartphone'
346
- - regex: '(?:Apple-)?iPh(?:one)?7[C,]1'
471
+ - regex: '(?:Apple-)?iPh(?:one)?7[C,_]1|1C2%257enohPi'
347
472
  model: 'iPhone 6 Plus'
348
473
  device: 'phablet'
349
- - regex: '(?:Apple-)?iPh(?:one)?7[C,]2'
474
+ - regex: '(?:Apple-)?iPh(?:one)?7[C,_]2'
350
475
  model: 'iPhone 6'
351
476
  device: 'smartphone'
352
- - regex: '(?:Apple-)?iPh(?:one)?8[C,]1'
353
- model: 'iPhone 6s'
354
- device: 'smartphone'
355
- - regex: '(?:Apple-)?iPh(?:one)?8[C,]2'
477
+ - regex: '(?:Apple-)?iPh(?:one)?8[C,_]2'
356
478
  model: 'iPhone 6s Plus'
357
479
  device: 'phablet'
358
- - regex: '(?:Apple-)?iPh(?:one)?8[C,]4'
480
+ - regex: '(?:Apple-)?iPh(?:one)?8[C,_]1|iPhone 6s'
481
+ model: 'iPhone 6s'
482
+ device: 'smartphone'
483
+ - regex: '(?:Apple-)?iPh(?:one)?8[C,_]4'
359
484
  model: 'iPhone SE'
360
485
  device: 'smartphone'
361
- - regex: '(?:Apple-)?iPh(?:one)?9[C,][13]'
486
+ - regex: '(?:Apple-)?iPh(?:one)?9[C,_][13]'
362
487
  model: 'iPhone 7'
363
488
  device: 'smartphone'
364
- - regex: '(?:Apple-)?iPh(?:one)?9[C,][24]'
489
+ - regex: '(?:Apple-)?iPh(?:one)?9[C,_][24]'
365
490
  model: 'iPhone 7 Plus'
366
491
  device: 'phablet'
367
- - regex: '(?:Apple-)?iPh(?:one)?10[C,][14]'
492
+ - regex: '(?:Apple-)?iPh(?:one)?10[C,_][14]'
368
493
  model: 'iPhone 8'
369
494
  device: 'smartphone'
370
- - regex: '(?:Apple-)?iPh(?:one)?10[C,][25]'
495
+ - regex: '(?:Apple-)?iPh(?:one)?10[C,_][25]'
371
496
  model: 'iPhone 8 Plus'
372
497
  device: 'phablet'
373
- - regex: '(?:Apple-)?iPh(?:one)?10[C,][36]'
498
+ - regex: '(?:Apple-)?iPh(?:one)?10[C,_][36]|iPhone X'
374
499
  model: 'iPhone X'
375
500
  device: 'phablet'
501
+ - regex: '(?:Apple-)?iPh(?:one)?11[C,_][2]'
502
+ model: 'iPhone XS'
503
+ device: 'smartphone'
504
+ - regex: '(?:Apple-)?iPh(?:one)?11[C,_][46]'
505
+ model: 'iPhone XS Max'
506
+ device: 'phablet'
507
+ - regex: '(?:Apple-)?iPh(?:one)?11[C,_][8]'
508
+ model: 'iPhone XR'
509
+ device: 'smartphone'
510
+ - regex: '(?:Apple-)?iPh(?:one)?12[C,_][1]'
511
+ model: 'iPhone 11'
512
+ device: 'smartphone'
513
+ - regex: '(?:Apple-)?iPh(?:one)?12[C,_][3]'
514
+ model: 'iPhone 11 Pro'
515
+ device: 'phablet'
516
+ - regex: '(?:Apple-)?iPh(?:one)?12[C,_][5]'
517
+ model: 'iPhone 11 Pro Max'
518
+ device: 'phablet'
376
519
 
377
520
  # specific tablet devices
378
- - regex: '(?:Apple-)?iPad1[C,]1'
521
+ - regex: '(?:Apple-)?iPad1[C,_]1'
379
522
  model: 'iPad'
380
523
  device: 'tablet'
381
- - regex: '(?:Apple-)?iPad2[C,][1234]'
524
+ - regex: '(?:Apple-)?iPad2[C,_][1234]'
382
525
  model: 'iPad 2'
383
526
  device: 'tablet'
384
- - regex: '(?:Apple-)?iPad2[C,][567]'
527
+ - regex: '(?:Apple-)?iPad2[C,_][567]'
385
528
  model: 'iPad Mini'
386
529
  device: 'tablet'
387
- - regex: '(?:Apple-)?iPad3[C,][123]'
530
+ - regex: '(?:Apple-)?iPad3[C,_][123]'
388
531
  model: 'iPad 3'
389
532
  device: 'tablet'
390
- - regex: '(?:Apple-)?iPad3[C,][456]'
533
+ - regex: '(?:Apple-)?iPad3[C,_][456]'
391
534
  model: 'iPad 4'
392
535
  device: 'tablet'
393
- - regex: '(?:Apple-)?iPad4[C,][123]'
536
+ - regex: '(?:Apple-)?iPad4[C,_][123]'
394
537
  model: 'iPad Air'
395
538
  device: 'tablet'
396
- - regex: '(?:Apple-)?iPad4[C,][456]'
539
+ - regex: '(?:Apple-)?iPad4[C,_][456]'
397
540
  model: 'iPad Mini 2'
398
541
  device: 'tablet'
399
- - regex: '(?:Apple-)?iPad4[C,][789]'
542
+ - regex: '(?:Apple-)?iPad4[C,_][789]'
400
543
  model: 'iPad Mini 3'
401
544
  device: 'tablet'
402
- - regex: '(?:Apple-)?iPad5[C,][12]'
545
+ - regex: '(?:Apple-)?iPad5[C,_][12]'
403
546
  model: 'iPad Mini 4'
404
547
  device: 'tablet'
405
- - regex: '(?:Apple-)?iPad5[C,][34]'
548
+ - regex: '(?:Apple-)?iPad5[C,_][34]'
406
549
  model: 'iPad Air 2'
407
550
  device: 'tablet'
408
- - regex: '(?:Apple-)?iPad6[C,][34]'
551
+ - regex: '(?:Apple-)?iPad6[C,_][34]'
409
552
  model: 'iPad Pro 9.7'
410
553
  device: 'tablet'
411
- - regex: '(?:Apple-)?iPad6[C,][78]'
554
+ - regex: '(?:Apple-)?iPad6[C,_][78]'
412
555
  model: 'iPad Pro 12.9'
413
556
  device: 'tablet'
414
- - regex: '(?:Apple-)?iPad6[C,](?:11|12)'
415
- model: 'iPad 5'
557
+ - regex: '(?:Apple-)?iPad6[C,_](?:11|12)'
558
+ model: 'iPad 5 9.7'
416
559
  device: 'tablet'
417
- - regex: '(?:Apple-)?iPad7[C,][12]'
560
+ - regex: '(?:Apple-)?iPad7[C,_][12]'
418
561
  model: 'iPad Pro 2 12.9'
419
562
  device: 'tablet'
420
- - regex: '(?:Apple-)?iPad7[C,][34]'
563
+ - regex: '(?:Apple-)?iPad7[C,_][34]'
421
564
  model: 'iPad Pro 10.5'
422
565
  device: 'tablet'
423
- - regex: '(?:Apple-)?iPad7[C,][56]'
424
- model: 'iPad 6'
566
+ - regex: '(?:Apple-)?iPad7[C,_][56]'
567
+ model: 'iPad 6 9.7'
568
+ device: 'tablet'
569
+ - regex: '(?:Apple-)?iPad7[C,_](?:11|12)'
570
+ model: 'iPad 7 10.2'
571
+ device: 'tablet'
572
+ - regex: '(?:Apple-)?iPad8[C,_][1-4]'
573
+ model: 'iPad Pro 3 11.0'
574
+ device: 'tablet'
575
+ - regex: '(?:Apple-)?iPad8[C,_][5-8]'
576
+ model: 'iPad Pro 3 12.9'
425
577
  device: 'tablet'
426
578
 
579
+ - regex: 'Apple-?TV2[C,_]1'
580
+ model: 'Apple TV 2'
581
+ device: 'tv'
582
+ - regex: 'Apple-?TV3[C,_][12]'
583
+ model: 'Apple TV 3'
584
+ device: 'tv'
585
+ - regex: 'Apple-?TV5[C,_]3'
586
+ model: 'Apple TV 4'
587
+ device: 'tv'
588
+ - regex: 'Apple-?TV6[C,_]2'
589
+ model: 'Apple TV 4K'
590
+ device: 'tv'
591
+
427
592
  - regex: '(?:iTunes-)?Apple[ _]?TV'
428
593
  model: 'Apple TV'
429
594
  device: 'tv'
595
+ - regex: 'HomePod'
596
+ model: 'HomePod'
597
+ device: 'smart speaker'
430
598
  - regex: 'iTunes-iPad/[0-9]+(?:\.[0-9]+)* \(([^;]+);'
431
599
  model: 'iPad $1'
432
600
  device: 'tablet'
@@ -442,7 +610,7 @@ Apple:
442
610
 
443
611
  # micromax
444
612
  MicroMax:
445
- regex: '(?:MicroMax[ \-\_]?[a-z0-9]+|Q327)|P70221 Build'
613
+ regex: '(?:MicroMax[ \-\_]?[a-z0-9]+|Q327)|P70221 Build|YU(5040|5530)[);/ ]'
446
614
  device: 'smartphone'
447
615
  models:
448
616
  - regex: 'AQ5001'
@@ -456,6 +624,10 @@ MicroMax:
456
624
  model: 'Bolt'
457
625
  - regex: 'Q417'
458
626
  model: 'Canvas Mega'
627
+ - regex: 'YU5040[);/ ]'
628
+ model: 'YU Yureka YU5040'
629
+ - regex: 'YU5530[);/ ]'
630
+ model: 'YU Yureka S YU5530'
459
631
  - regex: 'Q424'
460
632
  model: 'Bolt Selfie'
461
633
  - regex: 'Q426'
@@ -468,9 +640,23 @@ MicroMax:
468
640
 
469
641
  # 3Q
470
642
  3Q:
471
- regex: '(AC0731B|AC1024C|AC7803C|BC9710AM|EL72B|LC0720C|LC0723B|LC0725B|LC0804B|LC0808B|LC0809B|LC0810C|LC0816C|LC0901D|LC1016C|MT0724B|MT0729B|MT0729D|MT0811B|OC1020A|RC0709B|RC0710B|RC0718C|RC0719H|RC0721B|RC0722C|RC0726B|RC0734H|RC0743H|RC0817C|RC1018C|RC1019G|RC1025F|RC1301C|RC7802F|RC9711B|RC9712C|RC9716B|RC9717B|RC9724C|RC9726C|RC9727F|RC9730C|RC9731C|TS0807B|TS1013B|VM0711A|VM1017A|RC0813C|QS9719D|QS9718C|QS9715F|QS1023H|QS0815C|QS0730C|QS0728C|QS0717D|QS0716D|QS0715C|MT7801C)'
643
+ regex: 'AC0731B|AC1024C|AC7803C|BC9710AM|EL72B|LC0720C|LC0723B|LC0725B|LC0804B|LC0808B|LC0809B|LC0810C|LC0816C|LC0901D|LC1016C|MT0724B|MT0729[BD]|MT0811B|OC1020A|RC0709B|RC0710B|RC0718C|RC0719H|RC0721B|RC0722C|RC0726B|RC0734H|RC0743H|RC0817C|RC1018C|RC1019G|RC1025F|RC1301C|RC7802F|RC9711B|RC9712C|RC9716B|RC9717B|RC9724C|RC9726C|RC9727F|RC9730C|RC9731C|TS0807B|TS1013B|VM0711A|VM1017A|RC0813C|QS9719D|QS9718C|QS9715F|QS1023H|QS0815C|QS0730C|QS0728C|QS0717D|QS0716D|QS0715C|MT7801C|TS9708B|AC0732C|MT0739D|MT0812E|(?:3Q_)?ER71B'
472
644
  device: 'tablet'
473
- model: '$1'
645
+ models:
646
+ - regex: 'MT0724B|LC0901D|LC0816C|LC0810C|LC0809B|LC0808B|LC0804B|LC0725B|LC0723B'
647
+ model: 'Qoo! P-Pad'
648
+ - regex: 'VM1017A|TS1013B|TS0807B|RC9731C|RC9730C|RC9727F|RC9726C|RC9724C|RC9717B|RC9716B|RC9712C|RC9711B|RC1301C|RC1025F|RC1019G|RC1018C|RC0817C|RC0813C|RC0743H|RC0734H|RC0726B|RC0722C|RC0721B|RC0719H|RC0718C|RC0710B|RC0709B|QS9715F|QS1023H|QS0815C|QS0730C|QS0728C|QS0717D|QS0716D|QS0715C|MT0811B|MT0739D|MT0729[BD]|LC1016C|LC0720C|BC9710AM|AC1024C|AC0731B'
649
+ model: 'Qoo! Q-Pad'
650
+ - regex: 'MT7801C|QS9718C|QS9719D|VM0711A|OC1020A'
651
+ model: 'Qoo! Surf'
652
+ - regex: 'TS9708B'
653
+ model: 'Surf TS1009B'
654
+ - regex: 'AC7803C|AC0732C'
655
+ model: 'Qoo! Lite'
656
+ - regex: 'MT0812E|RC7802F'
657
+ model: 'Qoo! Meta'
658
+ - regex: 'EL72B|(?:3Q_)?ER71B'
659
+ model: 'Qoo! Q-Book'
474
660
 
475
661
  # 4Good
476
662
  4Good:
@@ -480,7 +666,9 @@ MicroMax:
480
666
  - regex: 'T700i_3G'
481
667
  model: 'T700i 3G'
482
668
  device: 'tablet'
483
- - regex: '(S(?:450m|555m|501m)[_ ][43]G|Light A103)'
669
+ - regex: 'S555m[_ ]4G'
670
+ model: 'People'
671
+ - regex: '(S(?:450m|501m)[_ ][43]G|Light A103)'
484
672
  model: '$1'
485
673
  - regex: '4Good[ _]([^;/]+) Build'
486
674
  model: '$1'
@@ -511,7 +699,7 @@ AllCall:
511
699
 
512
700
  # Bravis
513
701
  Bravis:
514
- regex: 'Bravis[ _]|A501 Bright|NB(?:106M|10[1-8]|751|7[145]|8[57]1|76)|NP101|NP 104 3G|B501'
702
+ regex: 'Bravis[ _]|A501 Bright|NB(?:106M|10[1-8]|751|7[145]|8[57]1|76)|NP101|NP 104 3G|B501|N1-570 Space'
515
703
  device: 'smartphone'
516
704
  models:
517
705
  - regex: 'A501 Bright'
@@ -530,6 +718,8 @@ Bravis:
530
718
  model: 'Trend'
531
719
  - regex: 'B501'
532
720
  model: 'Easy'
721
+ - regex: 'N1-570'
722
+ model: 'Space'
533
723
  - regex: 'BRAVIS[ ]A554'
534
724
  model: 'A554 Grand'
535
725
  - regex: 'BRAVIS[ _]SLIM[ _]3G'
@@ -546,7 +736,7 @@ Bravis:
546
736
 
547
737
  # Acer
548
738
  Acer:
549
- regex: 'acer|(?<!ZTE BLADE )a(?:101|110|2[10]0|211|50[10]|51[10]|70[10])[);/ ]|Android.*V3[67]0[);/ ]|Android.*Z1[23456]0 Build|Android.*Z5\d{2} Build|Android.*T0[234678] Build|A1-830|A1-81[01]|A3-A[1234][01]|B1-7[1235678][01]|B1-7[23]3|B1-8[1235]0|B1-A71|B3-A[12]0|B3-A3[02]|E39 Build|S5[12]0 Build|DA[0-9]+HQ?L[);/ ]'
739
+ regex: 'acer|(?<!ZTE BLADE )a(?:101|110|2[10]0|211|50[10]|51[10]|70[10])[);/ ]|Android.*V3[67]0[);/ ]|Android.*Z1[23456]0 Build|Android.*Z5\d{2} Build|Android.*T0[234678] Build|Android.*S55[);/ ]|A1-830|A1-81[01]|A1-7[23]4|A3-A[1234][01]|B1-7[1235678][01]|B1-7[23]3|B1-8[1235]0|B1-A71|B3-A[12]0|B3-A3[02]|E39[);/ ]|S5[12]0 Build|DA[0-9]+HQ?L[);/ ]|Aspire V5-121|Predator G9-793|GT-810'
550
740
  device: 'smartphone'
551
741
  models:
552
742
  # smart displays
@@ -567,60 +757,121 @@ Acer:
567
757
  - regex: 'A1-830'
568
758
  model: 'Iconia A1'
569
759
  device: 'tablet'
760
+ - regex: 'A1-7[23]4'
761
+ model: 'Iconia Talk S'
762
+ device: 'tablet'
570
763
  - regex: 'A3-A[12][01]'
571
764
  model: 'Iconia A3'
572
765
  device: 'tablet'
573
766
  - regex: 'A3-A[34]0'
574
767
  model: 'Iconia Tab 10'
575
768
  device: 'tablet'
576
- - regex: 'B1-7[1235][01]|B1-A71'
769
+ - regex: 'B1-7[5678]0|B1-730HD'
770
+ model: 'Iconia One 7'
771
+ device: 'tablet'
772
+ - regex: 'B1-7[123][01]|B1-A71'
577
773
  model: 'Iconia B1'
578
774
  device: 'tablet'
579
775
  - regex: 'B1-7[23]3'
580
776
  model: 'Iconia Talk 7'
581
777
  device: 'tablet'
582
- - regex: 'B1-7[678]0'
583
- model: 'Iconia One 7'
584
- device: 'tablet'
585
778
  - regex: 'B1-8[1235]0'
586
779
  model: 'Iconia One 8'
587
780
  device: 'tablet'
588
781
  - regex: 'B3-A[12]0|B3-A3[02]'
589
782
  model: 'Iconia One 10'
590
783
  device: 'tablet'
784
+ - regex: 'A101'
785
+ model: 'Vangogh'
786
+ device: 'tablet'
787
+ - regex: 'A200'
788
+ model: 'Picasso E'
789
+ device: 'tablet'
790
+ - regex: 'A50[01]'
791
+ model: 'Picasso'
792
+ device: 'tablet'
793
+ - regex: 'Acer One 7'
794
+ model: 'One 7'
795
+ device: 'tablet'
796
+ - regex: 'GT-810'
797
+ model: 'Predator 8'
798
+ device: 'tablet'
591
799
 
592
800
  # explicit smartphone models
593
- - regex: 'E39 Build'
801
+ - regex: 'E39[);/ ]'
594
802
  model: 'Liquid E700'
803
+ - regex: 'E310[);/ ]'
804
+ model: 'Liquid Mini'
805
+ - regex: 'E320(?:-orange)?[);/ ]'
806
+ model: 'Liquid Express'
807
+ - regex: 'E310[);/ ]'
808
+ model: 'beTouch E210'
595
809
  - regex: 'Android.*V360[);/ ]'
596
- model: 'Liquid E1'
810
+ model: 'Liquid E1 Duo'
597
811
  - regex: 'Android.*V370[);/ ]'
598
- model: 'Liquid E2'
599
- - regex: 'S510 Build'
812
+ model: 'Liquid E2 Duo'
813
+ - regex: 'S510[);/ ]'
600
814
  model: 'Liquid S1'
601
- - regex: 'S520 Build'
815
+ - regex: 'S520[);/ ]'
602
816
  model: 'Liquid S2'
603
- - regex: 'Android.*Z1([2345])0 Build'
817
+ - regex: '(?:Acer_)?P400[);/ ]'
818
+ model: 'neoTouch P400'
819
+ - regex: '(?:Acer_)?P300[);/ ]'
820
+ model: 'neoTouch P300'
821
+ - regex: '(?:Acer_)?S200[);/ ]'
822
+ model: 'neoTouch S200'
823
+ - regex: '(?:Acer_)?E100[);/ ]'
824
+ model: 'beTouch E100'
825
+ - regex: 'Android.*Z1([234])0[);/ ]'
604
826
  model: 'Liquid Z$1'
605
- - regex: 'Android.*Z160 Build'
606
- model: 'Liquid Z4'
607
- - regex: 'Android.*Z(5\d{2}) Build'
827
+ - regex: 'Android.*Z110[);/ ]'
828
+ model: 'Liquid Z110'
829
+ - regex: 'Android.*Z150[);/ ]'
830
+ model: 'Liquid Z5 Duo'
831
+ - regex: 'Android.*Z160[);/ ]'
832
+ model: 'Liquid Z4 Duo'
833
+ - regex: 'Android.*Z(5\d{2})[);/ ]'
608
834
  model: 'Liquid Z$1'
609
- - regex: 'Android.*T02 Build'
835
+ - regex: 'Android.*S57[);/ ]'
836
+ model: 'Liquid Jade Z'
837
+ - regex: 'Android.*T02[);/ ]'
610
838
  model: 'Liquid Z530'
611
- - regex: 'Android.*T03 Build'
839
+ - regex: 'Android.*T03[);/ ]'
612
840
  model: 'Liquid Z630'
613
- - regex: 'Android.*T04 Build'
841
+ - regex: 'Android.*T04[);/ ]'
614
842
  model: 'Liquid Z630S'
615
- - regex: 'Android.*T06 Build'
843
+ - regex: 'Android.*T06[);/ ]'
616
844
  model: 'Liquid Zest'
617
- - regex: 'Android.*T07 Build'
845
+ - regex: 'Android.*T07[);/ ]'
618
846
  model: 'Liquid Zest 4G'
619
- - regex: 'Android.*T08 Build'
847
+ - regex: 'Android.*T08[);/ ]'
620
848
  model: 'Liquid Zest Plus'
621
- - regex: 'Acer; ?([^;\)]+)'
849
+ - regex: 'TM01[);/ ]'
850
+ model: 'Liquid M330'
851
+ - regex: 'M220[);/ ]'
852
+ model: 'Liquid M220'
853
+ - regex: 'AcerTD600'
854
+ model: 'TD600'
855
+ - regex: 'Android.*S55[);/ ]'
856
+ model: 'Liquid Jade'
857
+
858
+ # desktop models
859
+ - regex: '(?:Acer )?(Chromebook R1[13])'
860
+ model: '$1'
861
+ device: 'desktop'
862
+ - regex: '(?:Acer )?(Chromebook 14)'
863
+ model: '$1'
864
+ device: 'desktop'
865
+ - regex: '(Aspire V5-121)'
866
+ model: '$1'
867
+ device: 'desktop'
868
+ - regex: '(Predator G9-793)'
869
+ model: '$1'
870
+ device: 'desktop'
871
+
872
+ - regex: 'Acer; ?([^;\(\)/]+)'
622
873
  model: '$1'
623
- - regex: 'Acer[ _\-]?([^;\)]+) Build'
874
+ - regex: 'Acer(?! ?inc)[ _\-]?([^;\(\)/]+)[();/ ]'
624
875
  model: '$1'
625
876
  - regex: 'acer[\-_]([a-z0-9]+)'
626
877
  model: '$1'
@@ -721,7 +972,7 @@ Arian Space:
721
972
 
722
973
  # Alcatel
723
974
  Alcatel:
724
- regex: 'Alcatel|Alc[a-z0-9]+|One[ _]?Touch|idol3|(?:4003[AJ]|4009[ADEFIKMSX]|4013[DEJKMX]|4014[ADEKMX]|4015[ADNTX]|4016[ADX]|4017[ADEFSX]|4018[ADEFMX]|4024[EDX]|4027[ADNX]|4028[AEJS]|4032[ADEX]|4034[ADEFGX]|4035[ADXY]|4045[ADEX]|4047[ADFGNX]|4049[DEGMX]|4060[SW]|4114E|5009[AD]|5010[DEGSUX]|5011A|5012[DFG]|5015[ADEX]|5016[AXJ]|5017[ABDEOX]|5019D|5022[EDX]|5023[EF]|5024A|5025[DG]|5026[AD]|5027B|5033[AX]|5033D[ _]RU|5038[ADEX]|5041C|5042[ADEFGWX]|5044[ADGIKOPSTY]|5045[ADFGIJTXY]|5046[ADGIJSTUY]|5047[DIUY]|5049[EGSWZ]|5050[ASXY]|5051[ADEJMTWX]|5052[AD]|5054[ADNSWX]|5056[ADEGIJMNTUWX]|5057M|5058[AIY]|5059[ADXYZ]|5065[ADNWX]|5070D|5080[ADFQUX]|5085[ABCDGHIJNOQY]|5086[ADY]|5090[AIY]|5095[IKY]|5098[OS]|5099[ADYUI]|5116J|5145A|6016[ADEX]|6036[AXY]|6037[BKY]|6039[AHJKY]|6043[AD]|6044D|6045[BFIKOY]|6050[AFY]|6055[ABDHIKPUYZ]|6058[ADX]|6060S|6062W|6070K|7040[ADEFKRT]|7041[DX]|7043[AEKY]|7044[AX]|7045Y|7048[ASWX]|7055A|7070X|8030Y|8050[DEGX]|8063|9001[DIX]|9002X|9003[AX]|9024O|9005X|9007[ATX]|9008[ADIJNTUX]|9010X|9022X|9203A|A570BL|I213|I216X)[);/ ]|TIMXL'
975
+ regex: 'Alcatel|Alc(?!or )[a-z0-9]+|One[ _]?Touch|idol3|(?:4003[AJ]|4009[ADEFIKMSX]|4013[DEJKMX]|4014[ADEKMX]|4015[ADNTX]|4016[ADX]|4017[ADEFSX]|4018[ADEFMX]|4024[EDX]|4027[ADNX]|4028[AEJS]|4032[ADEX]|4034[ADEFGX]|4035[ADXY]|4045[ADEX]|4047[ADFGNX]|4049[DEGMX]|4060[SW]|4114E|5009[AD]|5010[DEGSUX]|5011A|5012[DFG]|5015[ADEX]|5016[AXJ]|5017[ABDEOX]|5019D|5022[EDX]|5023[EF]|5024A|5025[DEG]|5026[AD]|5027B|5033[AX]|5033D[ _]RU|5034D|5038[ADEX]|5041C|5042[ADEFGWX]|5044[ADGIKOPSTY]|5045[ADFGIJTXY]|5046[ADGIJSTUY]|5047[DIUY]|5049[EGSWZ]|5050[ASXY]|5051[ADEJMTWX]|5052[AD]|5054[ADNSTWX]|5056[ADEGIJMNTUWX]|5057M|5058[AIY]|5059[ADXYZ]|5065[ADNWX]|5070D|5080[ADFQUX]|5085[ABCDGHIJNOQY]|5086[ADY]|5090[AIY]|5095[IKY]|5098[OS]|5099[ADYUI]|5116J|5145A|6016[ADEX]|6036[AXY]|6037[BKY]|6039[AHJKY]|6043[AD]|6044D|6045[BFIKOY]|6050[AFY]|6055[ABDHIKPUYZ]|6058[ADX]|6060S|6062W|6070K|7040[ADEFKRT]|7041[DX]|7043[AEKY]|7044[AX]|7045Y|7048[ASWX]|7055A|7070X|8030Y|8050[DEGX]|8063|9001[DIX]|9002X|9003[AX]|9024O|9005X|9007[ATX]|9008[ADIJNTUX]|9010X|9022X|9203A|A570BL|I213|I216X)[);/ ]|TIMXL'
725
976
  device: 'smartphone'
726
977
  models:
727
978
  - regex: '(?:5022[EDX]|5070D)[);/ ]'
@@ -762,7 +1013,7 @@ Alcatel:
762
1013
  model: 'One Touch Pop 3'
763
1014
  - regex: '(?:5015[AE]|5016[AJ]|5065[ADWX]|5116J)[);/ ]'
764
1015
  model: 'One Touch Pop 3 5"'
765
- - regex: '(?:5025[DG]|5054[ADSX])[);/ ]'
1016
+ - regex: '(?:5025[DEG]|5054[ADSTX])[);/ ]'
766
1017
  model: 'One Touch Pop 3 5.5"'
767
1018
  - regex: '5015D[);/ ]'
768
1019
  model: 'One Touch Pop 3 Dual SIM'
@@ -790,6 +1041,8 @@ Alcatel:
790
1041
  model: 'One Touch Dawn'
791
1042
  - regex: '5024A[);/ ]'
792
1043
  model: '1S'
1044
+ - regex: '5034D[);/ ]'
1045
+ model: '3L'
793
1046
  - regex: '7040[RT][);/ ]'
794
1047
  model: 'One Touch Fierce 2'
795
1048
  - regex: '5056[NW]'
@@ -932,6 +1185,22 @@ Alcatel:
932
1185
  device: 'tablet'
933
1186
  - regex: '7048[ASWX][);/ ]'
934
1187
  model: 'One Touch Go Play'
1188
+ - regex: '(?:Alcatel-)?OT-802[);/ ]'
1189
+ model: 'Wave'
1190
+ - regex: 'ALCATEL_ONE_TOUCH_768T[);/ ]'
1191
+ model: 'Island'
1192
+ - regex: '(?:TRIBE_)?3075A[);/ ]'
1193
+ model: 'One Touch Tribe'
1194
+ - regex: 'ALCATEL_one_touch_585[);/ ]'
1195
+ model: 'One Touch 585'
1196
+ - regex: 'ALCATEL_ONE_TOUCH_838[);/ ]'
1197
+ model: 'One Touch 838'
1198
+ - regex: 'ALCATEL_one_touch_813d[);/ ]'
1199
+ model: 'One Touch 813D'
1200
+ - regex: 'ALCATEL_one_touch_813[);/ ]'
1201
+ model: 'One Touch 813'
1202
+ - regex: 'OT871A'
1203
+ model: 'One Touch 871A'
935
1204
  - regex: '(?:Alcatel[ _])?One[ _]?Touch[ _]((?:T[0-9]+|TAB[^/;]+|EVO[78](?:HD)?)) Build'
936
1205
  device: 'tablet'
937
1206
  model: 'One Touch $1'
@@ -957,6 +1226,12 @@ Alcatel:
957
1226
  model: 'U5 Lite'
958
1227
  - regex: '4047A[);/ ]'
959
1228
  model: 'U5 Plus'
1229
+ - regex: '4044[CV][);/ ]'
1230
+ model: 'Quick Flip'
1231
+ - regex: '4044O[);/ ]'
1232
+ model: 'Cingular Flip 2'
1233
+ - regex: '4044[MNT][);/ ]'
1234
+ model: 'Go Flip'
960
1235
  - regex: '5044[GS][);/ ]'
961
1236
  model: 'U50'
962
1237
  - regex: '5033[AX][);/ ]'
@@ -979,6 +1254,8 @@ Alcatel:
979
1254
  model: '7'
980
1255
  - regex: 'Alcatel UP'
981
1256
  model: ''
1257
+ - regex: '(?:ALCATEL_)?A383G[);/ ]'
1258
+ model: 'Big Easy Plus'
982
1259
  - regex: '5041C'
983
1260
  model: 'TETRA'
984
1261
  - regex: 'ALCATEL([^/;]+) Build'
@@ -992,13 +1269,19 @@ Alcatel:
992
1269
 
993
1270
  # Allview
994
1271
  Allview:
995
- regex: 'Allview|A4You|A5_(?:Easy(?:_TM)?|Ready(?:_TM)?|Quad|Quad_Plus_TM)|A[56789]_Lite|A5Smiley|A6_Duo|AX4Nano|C6_Duo|E[23]_Living|E3_(?:Jump|Sign)|E4_Lite|M9_Connect|P(?:43_Easy|[5689]_Energy|6_Energy_Lite|[68]_Energy_Mini(?:_TM)?|(41|[458])_eMagic(?:_TM)?|[589](?:_)?Life(?:_TM)?|[567]_Lite(?:_TM)?|6_plus|[45678]_Pro|7_Seon|10_Style|7_Xtreme|6_Qmax|4_Quad)|V(?:[13]_Viper|1_Viper_I|2_Viper_(?:E|I|S|X|X_plus|Xe))|X(?:[1234]_Soul_Xtreme|[12345]_Soul|3_Soul_Lite|[24]Soul_Mini(?:_TM)?|4_Soul_Mini_S(?:_TM)?|[234]_Soul_Style(?:_TM)?|2_Soul_Style_Plus|2_Twin)|Viva_H801'
1272
+ regex: 'Allview|A4You|A5_(?:Easy(?:_TM)?|Ready(?:_TM)?|Quad|Quad_Plus_TM)|A[56789]_Lite|A5Smiley|A6_Duo|AX2_Frenzy|AX4Nano|AX5NanoQ|C6_Duo|E[23]_Living|E3_(?:Jump|Sign)|E4_Lite|M9_Connect|P(?:43_Easy|[5689]_Energy|6_Energy_Lite|[68]_Energy_Mini(?:_TM)?|(41|[458])_eMagic(?:_TM)?|[589](?:_)?Life(?:_TM)?|[567]_Lite(?:_TM)?|6_plus|[45678]_Pro|7_Seon|10_Style|7_Xtreme|6_Qmax|4_Quad)|V(?:[13]_Viper|1_Viper_I|2_Viper_(?:E|I|S|X|X_plus|Xe))|X(?:[1234]_Soul_Xtreme|[12345]_Soul|3_Soul_Lite|[24]Soul_Mini(?:_TM)?|4_Soul_Mini_S(?:_TM)?|[234]_Soul_Style(?:_TM)?|2_Soul_Style_Plus|2_Twin)|Viva_H801'
996
1273
  device: 'smartphone'
997
1274
  models:
998
1275
  - regex: 'A4You'
999
1276
  model: 'A4 You'
1277
+ - regex: 'AX2_Frenzy'
1278
+ model: 'AX2 Frenzy'
1279
+ device: 'tablet'
1000
1280
  - regex: 'AX4Nano'
1001
1281
  model: 'AX4 Nano'
1282
+ - regex: 'AX5NanoQ'
1283
+ model: 'AX5 Nano Q'
1284
+ device: 'tablet'
1002
1285
  - regex: 'C6_Duo'
1003
1286
  model: 'C6 Duo'
1004
1287
  - regex: 'E([23])_Living'
@@ -1091,10 +1374,12 @@ Allview:
1091
1374
  model: 'A5 Quad'
1092
1375
  - regex: 'A6_Duo'
1093
1376
  model: 'A6 Duo'
1094
- - regex: 'Allview[ _-]([^;/]+) Build'
1095
- model: '$1'
1096
- - regex: 'Allview[ _-]([^;/]+)[;/)]'
1097
- model: '$1'
1377
+ - regex: 'Impera S'
1378
+ model: 'Impera S'
1379
+ - regex: 'ALLVIEW P4i'
1380
+ model: 'AllDro P4'
1381
+ - regex: 'Allview_P2'
1382
+ model: 'AllDro'
1098
1383
 
1099
1384
  # explicit tablet models
1100
1385
  - regex: 'AllviewCityPlus'
@@ -1115,6 +1400,32 @@ Allview:
1115
1400
  - regex: 'Viva_H801'
1116
1401
  device: 'tablet'
1117
1402
  model: 'Viva H801'
1403
+ - regex: 'ALLVIEW ?SPEEDI'
1404
+ device: 'tablet'
1405
+ model: 'Speed I'
1406
+ - regex: 'ALLVIEW ?SPEED'
1407
+ device: 'tablet'
1408
+ model: 'Speed'
1409
+ - regex: 'ALLVIEWSPEED'
1410
+ device: 'tablet'
1411
+ model: 'Speed'
1412
+ - regex: 'AX4Nano'
1413
+ device: 'tablet'
1414
+ model: 'AX4 Nano'
1415
+ - regex: 'ALLVIEW_TX1_Quasar'
1416
+ device: 'tablet'
1417
+ model: 'TX1 Quasar'
1418
+
1419
+ - regex: 'Allview[ _-]([^;/]+) Build'
1420
+ model: '$1'
1421
+ - regex: 'Allview[ _-]([^;/]+)[;/)]'
1422
+ model: '$1'
1423
+
1424
+ # Allwinner
1425
+ Allwinner:
1426
+ regex: 'QUAD-CORE A64 p3'
1427
+ device: 'tablet'
1428
+ model: 'A64 QUAD-CORE p3'
1118
1429
 
1119
1430
  # altron
1120
1431
  altron:
@@ -1181,6 +1492,13 @@ Ainol:
1181
1492
  regex: 'Numy|novo[0-9]'
1182
1493
  device: 'tablet'
1183
1494
  models:
1495
+ - regex: 'Numy 3G AX1'
1496
+ model: 'Novo 7 Numy AX1 3G'
1497
+ - regex: 'Numy_3G_AX3'
1498
+ model: 'Numy AX3 Sword'
1499
+ - regex: 'Numy_3G_BW1'
1500
+ model: 'Numy 3G Talos 2'
1501
+
1184
1502
  - regex: 'Numy[ _]([^;/]+) Build'
1185
1503
  model: 'Numy $1'
1186
1504
  - regex: 'Novo([0-9]+)[ \-]([^;/]+) Build'
@@ -1191,6 +1509,8 @@ Archos:
1191
1509
  regex: '(?:YL-)?Archos'
1192
1510
  device: 'smartphone'
1193
1511
  models:
1512
+ - regex: 'Archos (Oxygen 63)[);/ ]'
1513
+ model: '$1'
1194
1514
  - regex: 'Archos ?5[);/ ]'
1195
1515
  device: 'tablet'
1196
1516
  model: '5'
@@ -1351,7 +1671,7 @@ Assistant:
1351
1671
 
1352
1672
  # Ark
1353
1673
  Ark:
1354
- regex: '(ARK[_ -])?Benefit[_ -]([^/;]*) Build|EDGE A5HD|ICON (R40\+|R45)|Impulse[ _](P[12])'
1674
+ regex: '(ARK[_ -])?Benefit[_ -]([^/;]*) Build|EDGE A5HD|ICON (R40\+|R45)|Impulse[ _](P[12])|Wizard_1[/;) ]'
1355
1675
  device: 'smartphone'
1356
1676
  models:
1357
1677
  - regex: '(?:ARK[_ -])?Benefit[_ -]([^/;]*) Build'
@@ -1364,6 +1684,8 @@ Ark:
1364
1684
  model: 'Edge $1'
1365
1685
  - regex: 'ICON (R40\+|R45)'
1366
1686
  model: 'Icon $1'
1687
+ - regex: 'Wizard_1'
1688
+ model: 'Wizard 1'
1367
1689
 
1368
1690
  # Garmin-Asus
1369
1691
  Garmin-Asus:
@@ -1379,7 +1701,7 @@ Garmin-Asus:
1379
1701
 
1380
1702
  # Asus
1381
1703
  Asus:
1382
- regex: 'Asus|Transformer|TF300T|Slider SL101|PadFone|ME302(?:C|KL)|ME301T|ME371MG|ME17(?:1|2V|3X)|(?:K0[01][0-9a-z]|P(?:00[18ACIL]|01[MTVWYZ]|01MA|01T_1|02[13478])(?: Build|\))|X015D|X018D|X003|X00[7ABT]D|Z00D|Z00[MTY]D|Z01[7FGHKMR]D)[);/ ]|ZB(631|602|633|55[135]|50[01])KL|ZC(55[134]|520|600)KL|ZA550KL|ZE(520|620|55[2345])KL|ZD55[23]KL|ZS6[23]0KL|ZB500KG'
1704
+ regex: 'Asus|Transformer|TF300T|Slider SL101|PadFone|ME302(?:C|KL)|ME301T|ME371MG|ME17(?:1|2V|3X)|(?:K0[01][0-9a-z]|P(?:00[18ACIL]|01[MTVWYZ]|01MA|01T_1|02[13478])(?: Build|\))|X015D|X018D|X003|X00[7ABT]D|Z00D|Z00[MTY]D|Z01[7FGHKMR]D)[);/ ]|ZB(631|602|633|55[135]|50[01])KL|ZC(55[134]|520|600)KL|ZA550KL|ZE(520|620|55[2345])KL|ZD55[23]KL|ZS6[23]0KL|ZB(500KG|601KL)'
1383
1705
  device: 'smartphone'
1384
1706
  models:
1385
1707
  # explicit tablet models
@@ -1501,6 +1823,8 @@ Asus:
1501
1823
  model: 'ZenFone C'
1502
1824
  - regex: '(?:ASUS_)?(X00PD|ZB555KL)'
1503
1825
  model: 'ZenFone Max M1'
1826
+ - regex: '(?:ASUS_)?(ZB601KL)'
1827
+ model: 'ZenFone Max Pro M1'
1504
1828
  - regex: '(?:ASUS_)?(X01AD|ZB633KL)'
1505
1829
  model: 'ZenFone Max M2'
1506
1830
  - regex: '(?:ASUS_)?(?:Z00[AD]|Z008D|Z008|Z00AD[AB]?)'
@@ -1583,6 +1907,8 @@ Asus:
1583
1907
  model: 'ZenFone Zoom'
1584
1908
  - regex: '(?:ASUS_)?Z01QD'
1585
1909
  model: 'ROG Phone'
1910
+ - regex: '(?:ASUS_)?I001DA'
1911
+ model: 'ROG Phone 2'
1586
1912
 
1587
1913
  # general detections
1588
1914
  - regex: 'Asus(?:-|;)?([a-z0-9]+)'
@@ -1751,11 +2077,13 @@ Bluegood:
1751
2077
 
1752
2078
  # Blackview
1753
2079
  Blackview:
1754
- regex: '(BV([2456789]000|(5[58]|9[56])00)(?:[ _](?:PRO))?|(P10000(?:[ _](?:PRO))?)|omega[ _]pro|Alife[ _][PS]1|Heatwave|DM550)'
2080
+ regex: '(BV([2456789]000|(5[58]|9[56])00)(?:[ _](?:PRO))?|(P10000(?:[ _](?:PRO))?)|omega[ _]pro|Alife[ _][PS]1|Heatwave|DM550|BV9700Pro)'
1755
2081
  device: 'smartphone'
1756
2082
  models:
1757
2083
  - regex: '(BV6000S)'
1758
2084
  model: '$1'
2085
+ - regex: '(BV9700)Pro'
2086
+ model: '$1 Pro'
1759
2087
  - regex: 'BV9000Pro-F'
1760
2088
  model: 'BV9000 Pro F'
1761
2089
  - regex: '(BV([48]000|9[56]00))Pro'
@@ -1860,27 +2188,91 @@ Brondi:
1860
2188
  model: 'SURFING TAB $1'
1861
2189
  device: 'tablet'
1862
2190
 
2191
+ # VGO TEL
2192
+ VGO TEL:
2193
+ regex: 'Venture V8'
2194
+ device: 'smartphone'
2195
+ models:
2196
+ - regex: 'Venture V8'
2197
+ model: 'Venture V8'
2198
+
1863
2199
  # Vivo
1864
2200
  Vivo:
1865
- regex: '((?:VIV-|BBG-)?vivo)|V1813BA|V1818T|V1731CA|V1809T|V1813T'
2201
+ regex: '((?:VIV-|BBG-)?vivo)|V1813BA|V1818T|V1731CA|V1809T|V1813T|V1818A'
1866
2202
  device: 'smartphone'
1867
2203
  models:
1868
- - regex: '(?:VIV-|BBG-)?vivo[ _]1601 Build'
2204
+ - regex: '(?:VIV-|BBG-)?vivo[ _]1601[);/ ]'
1869
2205
  model: 'V5'
1870
2206
  - regex: 'V1813BA'
1871
2207
  model: 'Z3'
2208
+ - regex: 'Vivo ONE'
2209
+ model: 'One'
2210
+ - regex: 'X9Plus'
2211
+ model: 'X9 Plus'
2212
+ - regex: 'X20Plus'
2213
+ model: 'X20 Plus'
1872
2214
  - regex: 'V1809T'
1873
2215
  model: 'X23'
1874
- - regex: 'V1818T'
2216
+ - regex: 'V1818[AT]|vivo 181[45]'
1875
2217
  model: 'Y93'
1876
2218
  - regex: 'V1813T'
1877
2219
  model: 'Y97'
1878
2220
  - regex: 'V1731CA'
1879
2221
  model: 'Y73'
1880
- - regex: 'vivo 1816'
2222
+ - regex: 'vivo 18(16|20)'
1881
2223
  model: 'Y91i'
1882
- - regex: 'vivo 1817'
2224
+ - regex: 'vivo 1606'
2225
+ model: 'Y53i'
2226
+ - regex: 'vivo 1603'
2227
+ model: 'Y55l'
2228
+ - regex: 'vivo 1609'
2229
+ model: 'V5 Lite'
2230
+ - regex: 'vivo 1610'
2231
+ model: 'Y55s'
2232
+ - regex: 'vivo 1611'
2233
+ model: 'V5 Plus'
2234
+ - regex: 'vivo 181[17]'
1883
2235
  model: 'Y91'
2236
+ - regex: 'vivo (1713|1612)'
2237
+ model: 'V5s'
2238
+ - regex: 'vivo 1714'
2239
+ model: 'Y69'
2240
+ - regex: 'vivo 1716'
2241
+ model: 'V7 Plus'
2242
+ - regex: 'vivo 1718'
2243
+ model: 'V7'
2244
+ - regex: 'vivo 1719'
2245
+ model: 'Y65'
2246
+ - regex: 'vivo 1723'
2247
+ model: 'V9'
2248
+ - regex: 'vivo 1726'
2249
+ model: 'Y83 Pro'
2250
+ - regex: 'vivo 1721'
2251
+ model: 'X20'
2252
+ - regex: 'vivo 1724'
2253
+ model: 'Y71'
2254
+ - regex: 'vivo 1725'
2255
+ model: 'X21'
2256
+ - regex: 'vivo 1727'
2257
+ model: 'V9 Youth'
2258
+ - regex: 'vivo 1801'
2259
+ model: 'Y71i'
2260
+ - regex: 'vivo 1804'
2261
+ model: 'V11 Pro'
2262
+ - regex: 'vivo 1805'
2263
+ model: 'Nex'
2264
+ - regex: 'vivo 1806'
2265
+ model: 'V11i'
2266
+ - regex: 'vivo 1807'
2267
+ model: 'Y95'
2268
+ - regex: 'vivo 180([38]|8i)'
2269
+ model: 'Y81'
2270
+ - regex: 'vivo 1818'
2271
+ model: 'V15 Pro'
2272
+ - regex: 'vivo 1902'
2273
+ model: 'Y17'
2274
+ - regex: 'vivo 1909'
2275
+ model: 'V17 Pro'
1884
2276
  - regex: 'vivo 1812'
1885
2277
  model: 'Y81i'
1886
2278
  - regex: '(?:VIV-|BBG-)?vivo[ _]([^/;]+) Build'
@@ -1915,8 +2307,8 @@ Beeline:
1915
2307
  regex: 'Beeline'
1916
2308
  device: 'smartphone'
1917
2309
  models:
1918
- - regex: 'Beeline_Pro_6'
1919
- model: 'Pro 6'
2310
+ - regex: 'Beeline[_ ]Pro[_ ]([26])'
2311
+ model: 'Pro $1'
1920
2312
  - regex: 'Tab (Fast|Pro)'
1921
2313
  model: 'Tab $1'
1922
2314
  device: 'tablet'
@@ -1995,230 +2387,297 @@ bq:
1995
2387
  regex: 'Aquaris|bq [^/;]+ Build|BQS-([0-9]{4})|(BQ(ru)?[_ -][0-9]{3,4})'
1996
2388
  device: 'smartphone'
1997
2389
  models:
1998
- - regex: 'BQ-5594'
1999
- model: 'Strike Power Max'
2000
- - regex: 'BQ(ru)?-5054'
2001
- model: 'Crystal'
2002
- - regex: 'BQ(ru)?-5503'
2003
- model: 'Nice 2'
2004
- - regex: 'BQ-5056'
2005
- model: 'Fresh'
2006
- - regex: 'BQ-5507L'
2007
- model: 'Iron Max'
2008
- - regex: 'BQ-5508L'
2009
- model: 'Next LTE'
2010
- - regex: 'BQ-5010G'
2011
- model: 'Spot'
2012
- - regex: 'BQ-5500L'
2013
- model: 'Advance'
2014
- - regex: 'BQ-5012L'
2015
- model: 'Rich'
2016
- - regex: 'BQ(ru)?-5022'
2017
- model: 'Bond'
2018
- - regex: 'BQ-5002G'
2019
- model: 'Fun'
2020
- - regex: 'BQ(S)?-(5701L|5060)'
2021
- model: 'Slim'
2022
- - regex: 'BQ-5511L'
2023
- model: 'Bliss'
2024
- - regex: 'BQ-5520L'
2025
- model: 'Silk'
2026
- - regex: 'BQ-5071'
2027
- model: 'Belief'
2028
- - regex: 'BQ-5301'
2029
- model: 'Strike View'
2030
- - regex: 'BQS-4007'
2031
- model: 'Valencia'
2032
- - regex: 'BQ-4501G'
2033
- model: 'Fox Easy'
2034
- - regex: 'BQ-5515(L)?'
2035
- model: 'Fast'
2036
- - regex: 'BQ(S)?-5045'
2037
- model: 'Fast'
2038
- - regex: 'BQ-5015L'
2039
- model: 'First'
2040
- - regex: 'BQ-5519L'
2041
- model: 'Fast Plus'
2042
- - regex: 'BQ(S)?-(6016L|5520)'
2043
- model: 'Mercury'
2390
+ - regex: 'BQ(ru)?-(5209L|5044)'
2391
+ model: 'Strike LTE'
2392
+ - regex: 'BQ(S|ru)?-(5070|6040L)'
2393
+ model: 'Magic'
2394
+ - regex: 'BQ-9011(G)?'
2395
+ model: 'Vision'
2396
+ device: 'tablet'
2397
+ - regex: 'BQ-8068L'
2398
+ model: 'Hornet Plus Pro'
2399
+ - regex: 'BQ-8067L'
2400
+ model: 'Hornet Plus'
2401
+ device: 'tablet'
2402
+ - regex: 'BQ-8052G'
2403
+ model: 'BQ-8052G'
2404
+ device: 'tablet'
2405
+ - regex: 'BQ-8041L'
2406
+ model: 'Art'
2407
+ device: 'tablet'
2408
+ - regex: 'BQ-7084G'
2409
+ model: 'Simple'
2410
+ device: 'tablet'
2411
+ - regex: 'BQ-7061G'
2412
+ model: 'Andros'
2413
+ device: 'tablet'
2414
+ - regex: 'BQ-7051G'
2415
+ model: 'Elba'
2416
+ device: 'tablet'
2417
+ - regex: 'BQ-7036L'
2418
+ model: 'Hornet'
2419
+ device: 'tablet'
2420
+ - regex: 'BQ-7022(G)?'
2421
+ model: 'Canion'
2422
+ device: 'tablet'
2423
+ - regex: 'BQ-7021G'
2424
+ model: 'Hit'
2425
+ device: 'tablet'
2426
+ - regex: 'BQ-7010G'
2427
+ model: 'Max'
2428
+ device: 'tablet'
2429
+ - regex: 'BQ-7006G'
2430
+ model: 'Union'
2431
+ device: 'tablet'
2432
+ - regex: 'BQ-7003'
2433
+ model: 'Jamaica'
2434
+ device: 'tablet'
2435
+ - regex: 'BQ-6200L|BQ-6000L'
2436
+ model: 'Aurora'
2044
2437
  - regex: 'BQ(ru)?[ -]6015L'
2045
2438
  model: 'Universe'
2439
+ - regex: 'BQ-6010G'
2440
+ model: 'Practic'
2046
2441
  - regex: 'BQ-6001L|BQ-6050'
2047
2442
  model: 'Jumbo'
2048
- - regex: 'BQ-5700L'
2049
- model: 'Space X'
2050
- - regex: 'BQ(ru)?-5201'
2051
- model: 'Space'
2052
- - regex: 'BQ(ru)?-(5209L|5044)'
2053
- model: 'Strike LTE'
2054
- - regex: 'BQ-4526|BQ-5004G'
2055
- model: 'Fox'
2056
- - regex: 'BQ(ru)?[- ]402[68]'
2057
- model: 'Up!'
2058
- - regex: 'BQ-(4585|5011G)'
2059
- model: 'Fox View'
2060
- - regex: 'BQS-5025'
2061
- model: 'High Way'
2062
- - regex: 'BQ-5008L'
2063
- model: 'Brave'
2064
- - regex: 'BQ-5052'
2065
- model: 'Sense'
2066
- - regex: 'BQ-5512L|BQ-5528L'
2067
- model: 'Strike Forward'
2068
- - regex: 'BQ-5003L'
2069
- model: 'Shark Pro'
2070
- - regex: 'BQ-5005L'
2071
- model: 'Intense'
2072
- - regex: 'BQ-5522'
2073
- model: 'Next'
2074
2443
  - regex: 'BQ-5707G'
2075
2444
  model: 'Next Music'
2445
+ - regex: 'BQ-5702'
2446
+ model: 'Spring'
2447
+ - regex: 'BQ-5700L'
2448
+ model: 'Space X'
2449
+ - regex: 'BQ-5594'
2450
+ model: 'Strike Power Max'
2076
2451
  - regex: 'BQ-5591'
2077
2452
  model: 'Jeans'
2078
- - regex: 'BQ-5009L'
2079
- model: 'Trend'
2080
- - regex: 'BQ-5300G'
2081
- model: 'Velvet View'
2082
- - regex: 'BQS-4701'
2083
- model: 'Venice'
2084
- - regex: 'BQS-4003'
2085
- model: 'Verona'
2453
+ - regex: 'BQ-5522'
2454
+ model: 'Next'
2455
+ - regex: 'BQ(ru)?-5521'
2456
+ model: 'Strike Power Max'
2457
+ - regex: 'BQ-5520L'
2458
+ model: 'Silk'
2459
+ - regex: 'BQ-5519L'
2460
+ model: 'Fast Plus'
2461
+ - regex: 'BQ-5517L'
2462
+ model: 'Twin Pro'
2463
+ - regex: 'BQ-5516L'
2464
+ model: 'Twin'
2086
2465
  - regex: 'BQS-5515'
2087
2466
  model: 'Wide'
2088
- - regex: 'BQS-5055'
2089
- model: 'Turbo Plus'
2467
+ - regex: 'BQ-5515(L)?'
2468
+ model: 'Fast'
2469
+ - regex: 'BQ-5512L|BQ-5528L'
2470
+ model: 'Strike Forward'
2471
+ - regex: 'BQ-5511L'
2472
+ model: 'Bliss'
2473
+ - regex: 'BQ(ru)?-5510'
2474
+ model: 'Strike Power Max 4G'
2475
+ - regex: 'BQ-5508L'
2476
+ model: 'Next LTE'
2477
+ - regex: 'BQ-5507L'
2478
+ model: 'Iron Max'
2479
+ - regex: 'BQ(ru)?-5504'
2480
+ model: 'Strike Selfie Max'
2481
+ - regex: 'BQ(ru)?-5503'
2482
+ model: 'Nice 2'
2483
+ - regex: 'BQS-5502'
2484
+ model: 'Hammer'
2485
+ - regex: 'BQS-5501'
2486
+ model: 'Kawasaki'
2090
2487
  - regex: 'BQS-5500'
2091
2488
  model: 'Vancouver'
2092
- - regex: 'BQ(ru)?[_ ]5590'
2093
- model: 'Spring'
2094
- - regex: 'BQ(ru)?-5035'
2095
- model: 'Velvet'
2096
- - regex: 'BQ(S|ru)?-(5070|6040L)'
2097
- model: 'Magic'
2098
- - regex: 'BQ-4001G'
2099
- model: 'Cool'
2489
+ - regex: 'BQ-5500L'
2490
+ model: 'Advance'
2491
+ - regex: 'BQ-5302G'
2492
+ model: 'Velvet 2'
2493
+ - regex: 'BQ-5301'
2494
+ model: 'Strike View'
2495
+ - regex: 'BQ-5300G'
2496
+ model: 'Velvet View'
2497
+ - regex: 'BQ(ru)?-5211|BQS-5020'
2498
+ model: 'Strike'
2499
+ - regex: 'BQ-5206L'
2500
+ model: 'Balance'
2501
+ - regex: 'BQ(ru)?-5204|BQS-5050'
2502
+ model: 'Strike Selfie'
2503
+ - regex: 'BQ(ru)?-5203'
2504
+ model: 'Vision'
2100
2505
  - regex: 'BQ(ru)?-5202'
2101
2506
  model: 'Space Lite'
2102
- - regex: 'BQ(ru)?-5037|BQ-5514L'
2103
- model: 'Strike Power 4G'
2104
- - regex: 'BQ(ru)?-5510'
2105
- model: 'Strike Power Max 4G'
2507
+ - regex: 'BQ(ru)?-5201'
2508
+ model: 'Space'
2509
+ - regex: 'BQ-5082'
2510
+ model: 'Sense 2'
2511
+ - regex: 'BQ-5071'
2512
+ model: 'Belief'
2513
+ - regex: 'BQS-5065|BQ-5340'
2514
+ model: 'Choice'
2106
2515
  - regex: 'BQ(ru)?-5059|BQ-5514G'
2107
2516
  model: 'Strike Power'
2108
- - regex: 'BQ(ru)?-4072'
2109
- model: 'Strike Mini'
2110
- - regex: 'BQ(ru)?-5521'
2111
- model: 'Strike Power Max'
2112
2517
  - regex: 'BQ-5058'
2113
2518
  model: 'Strike Power Easy'
2114
- - regex: 'BQ-6200L|BQ-6000L'
2115
- model: 'Aurora'
2116
- - regex: 'BQ(ru)?-5000'
2117
- model: 'Tokyo'
2118
- - regex: 'BQ-6010G'
2119
- model: 'Practic'
2120
- - regex: 'BQ(ru)?-5204|BQS-5050'
2121
- model: 'Strike Selfie'
2122
- - regex: 'BQ(ru)?-5504'
2123
- model: 'Strike Selfie Max'
2124
2519
  - regex: 'BQ(ru)?-5057'
2125
2520
  model: 'Strike 2'
2126
- - regex: 'BQ(ru)?-5203'
2127
- model: 'Vision'
2128
- - regex: 'BQ(ru)?-5211|BQS-5020'
2129
- model: 'Strike'
2521
+ - regex: 'BQ-5056|BQS-5030'
2522
+ model: 'Fresh'
2523
+ - regex: 'BQS-5055'
2524
+ model: 'Turbo Plus'
2525
+ - regex: 'BQ(ru)?-5054'
2526
+ model: 'Crystal'
2527
+ - regex: 'BQ-5052'
2528
+ model: 'Sense'
2529
+ - regex: 'BQ(S)?-5045'
2530
+ model: 'Fast'
2531
+ - regex: 'BQ(ru)?-5037|BQ-5514L'
2532
+ model: 'Strike Power 4G'
2533
+ - regex: 'BQ(ru)?-5035'
2534
+ model: 'Velvet'
2130
2535
  - regex: 'BQ(ru)?-5033'
2131
2536
  model: 'Shark'
2132
- - regex: 'BQ-4077'
2133
- model: 'Shark Mini'
2134
2537
  - regex: 'BQ-5032'
2135
2538
  model: 'Element'
2136
- - regex: 'BQ-5082'
2137
- model: 'Sense 2'
2138
- - regex: 'BQS-5065|BQ-5340'
2139
- model: 'Choice'
2140
- - regex: 'BQ-5702'
2141
- model: 'Spring'
2142
- - regex: 'BQ-5302G'
2143
- model: 'Velvet 2'
2144
- - regex: 'BQ-5001L'
2145
- model: 'Contact'
2539
+ - regex: 'BQS-5025'
2540
+ model: 'High Way'
2541
+ - regex: 'BQ(ru)?-5022'
2542
+ model: 'Bond'
2543
+ - regex: 'BQ-5015L'
2544
+ model: 'First'
2545
+ - regex: 'BQ-5012L'
2546
+ model: 'Rich'
2547
+ - regex: 'BQS-5011'
2548
+ model: 'Monte Carlo'
2549
+ - regex: 'BQ-5010G'
2550
+ model: 'Spot'
2551
+ - regex: 'BQS-5010'
2552
+ model: 'Prague'
2553
+ - regex: 'BQ-5009L'
2554
+ model: 'Trend'
2555
+ - regex: 'BQS-500[59]'
2556
+ model: 'Sydney'
2557
+ - regex: 'BQ-5008L'
2558
+ model: 'Brave'
2146
2559
  - regex: 'BQ-5007L'
2147
2560
  model: 'Iron'
2148
- - regex: 'BQ-5516L'
2149
- model: 'Twin'
2150
- - regex: 'BQ-5517L'
2151
- model: 'Twin Pro'
2152
- - regex: 'BQ-5206L'
2153
- model: 'Balance'
2154
- - regex: 'Aquaris M8'
2155
- model: 'Aquaris M8'
2156
- device: 'tablet'
2157
- - regex: 'BQ-7084G'
2158
- model: 'Simple'
2159
- device: 'tablet'
2160
- - regex: 'BQ-7021G'
2161
- model: 'Hit'
2162
- device: 'tablet'
2163
- - regex: 'BQ-8067L'
2164
- model: 'Hornet Plus'
2165
- device: 'tablet'
2166
- - regex: 'BQ-7036L'
2167
- model: 'Hornet'
2168
- device: 'tablet'
2169
- - regex: 'BQ-9011(G)?'
2170
- model: 'Vision'
2171
- device: 'tablet'
2172
- - regex: 'BQ-7061G'
2173
- model: 'Andros'
2174
- device: 'tablet'
2561
+ - regex: 'BQS-5006'
2562
+ model: 'Los Angeles'
2563
+ - regex: 'BQ-5005L'
2564
+ model: 'Intense'
2565
+ - regex: 'BQS-5004'
2566
+ model: 'Paris'
2567
+ - regex: 'BQ-5003L'
2568
+ model: 'Shark Pro'
2569
+ - regex: 'BQ-5002G'
2570
+ model: 'Fun'
2571
+ - regex: 'BQS-5002'
2572
+ model: 'Colombo'
2573
+ - regex: 'BQ-5001L'
2574
+ model: 'Contact'
2575
+ - regex: 'BQS-5001'
2576
+ model: 'Milan'
2577
+ - regex: 'BQ(ru|S)?-5000'
2578
+ model: 'Tokyo'
2579
+ - regex: 'BQS-4800'
2580
+ model: 'Blade'
2581
+ - regex: 'BQS-4707'
2582
+ model: 'Montreal'
2583
+ - regex: 'BQS-4702'
2584
+ model: 'Оsaka'
2585
+ - regex: 'BQS-4701'
2586
+ model: 'Venice'
2587
+ - regex: 'BQ-(?:4585|5011G)'
2588
+ model: 'Fox View'
2589
+ - regex: 'BQS-4570'
2590
+ model: 'Drive'
2591
+ - regex: 'BQS-4560'
2592
+ model: 'Golf'
2593
+ - regex: 'BQS-4555'
2594
+ model: 'Turbo'
2595
+ - regex: 'BQS-4550'
2596
+ model: 'Richmond'
2597
+ - regex: 'BQ-(?:4526|5004G)'
2598
+ model: 'Fox'
2599
+ - regex: 'BQS-4525'
2600
+ model: 'Vienna'
2601
+ - regex: 'BQS-4516'
2602
+ model: 'Singapore'
2603
+ - regex: 'BQS-4515'
2604
+ model: 'Moscow'
2605
+ - regex: 'BQS-4510'
2606
+ model: 'Florence'
2607
+ - regex: 'BQS-4505'
2608
+ model: 'Santiago'
2609
+ - regex: 'BQS-4503'
2610
+ model: 'Dubai'
2611
+ - regex: 'BQS-4502'
2612
+ model: 'Kingston'
2613
+ - regex: 'BQS-4501 Bristol'
2614
+ model: 'Bristol'
2615
+ - regex: 'BQ-4501G'
2616
+ model: 'Fox Easy'
2617
+ - regex: 'BQ-4077'
2618
+ model: 'Shark Mini'
2619
+ - regex: 'BQ(ru)?-4072'
2620
+ model: 'Strike Mini'
2621
+ - regex: 'BQ(ru)?[- ]402[68]'
2622
+ model: 'Up!'
2623
+ - regex: 'BQS-4010'
2624
+ model: 'Aspen'
2625
+ - regex: 'BQS-4009'
2626
+ model: 'Orleans'
2627
+ - regex: 'BQS-4008'
2628
+ model: 'Shanghai'
2629
+ - regex: 'BQS-4007'
2630
+ model: 'Valencia'
2631
+ - regex: 'BQS-4005'
2632
+ model: 'Seoul'
2633
+ - regex: 'BQS-4004'
2634
+ model: 'Dusseldorf'
2635
+ - regex: 'BQS-4003'
2636
+ model: 'Verona'
2637
+ - regex: 'BQ-4001G'
2638
+ model: 'Cool'
2639
+ - regex: 'BQS-4001'
2640
+ model: 'Oxford'
2641
+ - regex: 'BQS-3510'
2642
+ model: 'Aspen Mini'
2643
+ - regex: 'BQS-3503'
2644
+ model: 'Bombay'
2175
2645
  - regex: 'BQ-1085L'
2176
2646
  model: 'Hornet Max Pro'
2177
2647
  device: 'tablet'
2178
2648
  - regex: 'BQ-1084L'
2179
2649
  model: 'Hornet Max'
2180
2650
  device: 'tablet'
2181
- - regex: 'BQ-8068L'
2182
- model: 'Hornet Plus Pro'
2183
- - regex: 'BQ-7010G'
2184
- model: 'Max'
2185
- device: 'tablet'
2186
- - regex: 'BQ-7051G'
2187
- model: 'Elba'
2651
+ - regex: 'BQ-1083G'
2652
+ model: 'Armor Pro Plus'
2188
2653
  device: 'tablet'
2189
2654
  - regex: 'BQ-1082G'
2190
2655
  model: 'Armor Pro'
2191
2656
  device: 'tablet'
2192
- - regex: 'BQ-1083G'
2193
- model: 'Armor Pro Plus'
2194
- device: 'tablet'
2195
2657
  - regex: 'BQ-1077L'
2196
2658
  model: 'Armor Pro LTE'
2197
2659
  device: 'tablet'
2198
- - regex: 'BQ-7022(G)?'
2199
- model: 'Canion'
2200
- device: 'tablet'
2201
- - regex: 'BQ-8041L'
2202
- model: 'Art'
2203
- device: 'tablet'
2204
- - regex: 'BQ-7006G'
2205
- model: 'Union'
2660
+ - regex: 'BQ(ru)?-1057L'
2661
+ model: 'Passion'
2206
2662
  device: 'tablet'
2207
2663
  - regex: 'BQ-1051G'
2208
2664
  model: 'Corsika'
2209
2665
  device: 'tablet'
2210
- - regex: 'BQ-8052G'
2211
- model: 'BQ-8052G'
2212
- device: 'tablet'
2213
2666
  - regex: 'BQ-1050G'
2214
2667
  model: 'Hawaii'
2215
2668
  device: 'tablet'
2216
2669
  - regex: 'BQ-1008G'
2217
2670
  model: 'Grace'
2218
2671
  device: 'tablet'
2219
- - regex: 'BQ-7003'
2220
- model: 'Jamaica'
2672
+ - regex: 'Aquaris M8'
2673
+ model: 'Aquaris M8'
2221
2674
  device: 'tablet'
2675
+ - regex: 'BQ(ru)?[_ ]5590'
2676
+ model: 'Spring'
2677
+ - regex: 'BQ(S)?-(6016L|5520)'
2678
+ model: 'Mercury'
2679
+ - regex: 'BQ(S)?-(5701L|5060)'
2680
+ model: 'Slim'
2222
2681
  - regex: '(BQ-7850|BQ-700[12]G|BQ-8002G|BQ-905[12]G|BQ-9702G|BQ-7056G)'
2223
2682
  model: '$1'
2224
2683
  device: 'tablet'
@@ -2243,9 +2702,15 @@ bq:
2243
2702
  - regex: 'BQ-7050G'
2244
2703
  model: 'Malta'
2245
2704
  device: 'tablet'
2705
+ - regex: 'BQ-7000G'
2706
+ model: 'Сharm'
2707
+ device: 'tablet'
2246
2708
  - regex: 'BQ-7005G'
2247
2709
  model: 'Maui'
2248
2710
  device: 'tablet'
2711
+ - regex: 'BQ-7098G'
2712
+ model: 'Armor Power'
2713
+ device: 'tablet'
2249
2714
  - regex: 'BQ-1007'
2250
2715
  model: 'Necker'
2251
2716
  device: 'tablet'
@@ -2314,6 +2779,16 @@ Casio:
2314
2779
  - regex: 'C811 4G[);/ ]'
2315
2780
  model: "G'zOne Commando 4G LTE"
2316
2781
 
2782
+ # Casper
2783
+ Casper:
2784
+ regex: 'CASPER_|VIA_(G4|M4|P2|V8C)'
2785
+ device: 'smartphone'
2786
+ models:
2787
+ - regex: 'CASPER_VIA_(E2|M[13]|V[69])'
2788
+ model: 'VIA $1'
2789
+ - regex: 'VIA_(G4|M4|P2|V8C)'
2790
+ model: 'VIA $1'
2791
+
2317
2792
  # Cat
2318
2793
  Cat:
2319
2794
  regex: 'Cat ?(tablet|stargate|nova)|B15Q'
@@ -2518,7 +2993,7 @@ ConCorde:
2518
2993
 
2519
2994
  # Condor
2520
2995
  Condor:
2521
- regex: '(?:PGN\-?[456][012][0-9]|PHS\-601|Plume L1)[;/) ]|CTAB[^/;]+ Build'
2996
+ regex: 'Allure M3|(?:PGN\-?[456][012][0-9]|PHS\-601|Plume L1)[;/) ]|CTAB[^/;]+ Build'
2522
2997
  device: 'smartphone'
2523
2998
  models:
2524
2999
  - regex: 'CTAB([^/;]+) Build'
@@ -2539,6 +3014,8 @@ Condor:
2539
3014
  model: 'C8S'
2540
3015
  - regex: 'PGN\-?506'
2541
3016
  model: 'C7'
3017
+ - regex: 'Allure M3'
3018
+ model: 'Allure M3'
2542
3019
  - regex: 'PGN\-?507'
2543
3020
  model: 'Allure A9'
2544
3021
  - regex: 'PGN\-?508'
@@ -2617,6 +3094,14 @@ Coolpad:
2617
3094
  - regex: '(?:YL-)?Coolpad[ _\-]?([a-z0-9\-]+)'
2618
3095
  model: '$1'
2619
3096
 
3097
+ # Clarmin
3098
+ Clarmin:
3099
+ regex: 'Clarmin'
3100
+ device: 'smartphone'
3101
+ models:
3102
+ - regex: 'Clarmin_B6'
3103
+ model: 'B6'
3104
+
2620
3105
  # Cricket
2621
3106
  Cricket:
2622
3107
  regex: 'Cricket-([a-z0-9]+)'
@@ -2647,11 +3132,13 @@ Crosscall:
2647
3132
 
2648
3133
  # Cube
2649
3134
  Cube:
2650
- regex: '(<!myPhone ?)Cube|(U[0-9]+GT|K8GT)'
3135
+ regex: '(<!myPhone ?)Cube|(U[0-9]+GT|K8GT)|(T8-PLUSM?S?)[);/ ]'
2651
3136
  device: 'tablet'
2652
3137
  models:
2653
3138
  - regex: 'U27GT'
2654
3139
  model: 'Talk 8'
3140
+ - regex: 'T8-PLUSM?S?[);/ ]'
3141
+ model: 'T8 Ultimate'
2655
3142
  - regex: 'U55GT'
2656
3143
  model: 'Talk 79'
2657
3144
  - regex: 'U65GT'
@@ -2689,7 +3176,7 @@ CUBOT:
2689
3176
  model: 'Power'
2690
3177
  - regex: 'CUBOT_X18_Plus'
2691
3178
  model: 'X18 Plus'
2692
- - regex: 'CUBOT[ _](H3|J3|P7|P20|C6W|X18)'
3179
+ - regex: 'CUBOT[ _](A5|C6W|H3|J3|P7|P20|R9|R11|X18)'
2693
3180
  model: '$1'
2694
3181
  - regex: 'CUBOT ([^;/]+) Build'
2695
3182
  model: '$1'
@@ -2774,6 +3261,12 @@ Dell:
2774
3261
  models:
2775
3262
  - regex: 'XCD35'
2776
3263
  model: 'XCD35'
3264
+ - regex: '(?:Dell )?Venue Build'
3265
+ model: 'Venue'
3266
+ device: 'smartphone'
3267
+ - regex: 'Dell; Venue Pro'
3268
+ model: 'Venue Pro'
3269
+ device: 'smartphone'
2777
3270
  - regex: '(?:Dell )?(Streak|Venue) ?([^/;]*) Build'
2778
3271
  model: '$1 $2'
2779
3272
  device: 'tablet'
@@ -2797,7 +3290,7 @@ Desay:
2797
3290
 
2798
3291
  # DEXP
2799
3292
  DEXP:
2800
- regex: 'DEXP|(?:Ursus|Ixion)[ _]([^;/)]+)|H135[ _]Build'
3293
+ regex: 'DEXP|(?:Ursus|Ixion)[ _]([^;/)]+)|H135[ _]Build|(BL150|BS155|BS160|BS550|BS650)[);/ ]'
2801
3294
  device: 'smartphone'
2802
3295
  models:
2803
3296
 
@@ -2811,7 +3304,8 @@ DEXP:
2811
3304
  - regex: 'H135[ _]Build'
2812
3305
  model: 'Atlas'
2813
3306
  device: 'desktop'
2814
-
3307
+ - regex: '(BL150|BS155|BS160|BS550|BS650)[);/ ]'
3308
+ model: '$1'
2815
3309
  - regex: 'DEXP[ _]([^;/]+) Build'
2816
3310
  model: '$1'
2817
3311
  - regex: 'DEXP[ _]([^);/]+)[);/ ]'
@@ -2862,7 +3356,7 @@ Digiland:
2862
3356
 
2863
3357
  # Digma
2864
3358
  Digma:
2865
- regex: 'Digma[_ ]([^;/]+) Build|HIT HT707[10]MG|CITI 1902 3G|(CITI (?:[A-Z0-9]+) 3G) C[ST]500[67]PG|iDrQ10 3G|iDxD8 3G|iDnD7|HIT 4G HT7074ML|IDX5|(iDx10|iDx7)|MVM900H(?:WZ|C)|MVM908HCZ|iDxD10 3G|(iDxD[45]|iDxQ5)|iDxD7[_ ]3G|PS604M|PT452E|Linx A400 3G LT4001PG|Linx C500 3G LT5001PG|Linx PS474S|NS6902QL|NS9797MG|((?:Optima|Platina|Plane)[ _](?:[EM])?(?:[0-9\.ST]+|Prime)(?:[ _][43]G)?)|(VOX[ _](?:[0-9\.A-Z]+)[_ ][43]G)'
3359
+ regex: 'Digma[_ ]([^;/]+) Build|HIT HT707[10]MG|CITI 1902 3G|(CITI (?:[A-Z0-9]+) 3G) C[ST]500[67]PG|iDrQ10 3G|iDxD8 3G|iDnD7|HIT 4G HT7074ML|IDX5|(iDx10|iDx7)|MVM900H(?:WZ|C)|MVM908HCZ|iDxD10 3G|(iDxD[45]|iDxQ5)|iDxD7[_ ]3G|PS604M|PT452E|Linx A400 3G LT4001PG|Linx C500 3G LT5001PG|Linx PS474S|LS504[01]PL|LT40(47|54)MG|LS405[01]MG|LS5053ML|LT5048MG|LT5052ML|LT4049PG|NS6902QL|NS9797MG|((?:Optima|Platina|Plane)[ _](?:[EM])?(?:[0-9\.ST]+|Prime)(?:[ _][43]G)?)|(VOX[ _](?:[0-9\.A-Z]+)[_ ][43]G)'
2866
3360
  device: 'smartphone'
2867
3361
  models:
2868
3362
  - regex: 'HIT HT707[10]MG'
@@ -2877,6 +3371,26 @@ Digma:
2877
3371
  model: '$1'
2878
3372
  - regex: 'PS604M'
2879
3373
  model: 'Linx 6.0'
3374
+ - regex: 'LT4049PG'
3375
+ model: 'Linx Atom 3G'
3376
+ - regex: 'LT5048MG'
3377
+ model: 'Linx Joy 3G'
3378
+ - regex: 'LT5052ML'
3379
+ model: 'Linx Base 4G'
3380
+ - regex: 'LT4047MG'
3381
+ model: 'Linx Alfa 3G'
3382
+ - regex: 'LS4050MG'
3383
+ model: 'Linx X1 3G'
3384
+ - regex: 'LS4051MG'
3385
+ model: 'Linx X1 Pro 3G'
3386
+ - regex: 'LT4054MG'
3387
+ model: 'Linx Argo 3G'
3388
+ - regex: 'LS5041PL'
3389
+ model: 'Linx Trix 4G'
3390
+ - regex: 'LS5040PL'
3391
+ model: 'Linx Rage 4G'
3392
+ - regex: 'LS5053ML'
3393
+ model: 'Linx Pay 4G'
2880
3394
  - regex: '(Linx A400 3G) LT4001PG'
2881
3395
  model: '$1'
2882
3396
  - regex: '(Linx C500 3G) LT5001PG'
@@ -2940,7 +3454,7 @@ DoCoMo:
2940
3454
 
2941
3455
  # Doogee
2942
3456
  Doogee:
2943
- regex: 'DOOGEE[ _-]|Valencia2_Y100pro|X5max(?:[_ ]PRO)?|(BIGBOY|COLLO[23]?|DAGGER|DISCOVERY2?|FIND|HOTWIND|LATTE|MAX|MINT|MOON|PIXELS|RAINBOX|TURBO|VALENCIA|VOYAGER2?|TITANS2?)[ -_](DG[0-9]+C?)[);/ ]|BL[579]000[);/ ]|BL12000|BL5500[_ ]Lite'
3457
+ regex: 'DOOGEE[ _-]|Valencia2_Y100pro|X5max(?:[_ ]PRO)?|(KISSME|BIGBOY|COLLO[23]?|DAGGER|DISCOVERY2?|FIND|HOTWIND|LATTE|MAX|MINT|MOON|PIXELS|RAINBOX|TURBO|VALENCIA|VOYAGER2?|TITANS2?)[ -_](DG[0-9]+C?)[);/ ]|BL[579]000[);/ ]|BL12000|BL5500[_ ]Lite'
2944
3458
  device: 'smartphone'
2945
3459
  models:
2946
3460
  - regex: 'Valencia2_Y100pro'
@@ -2953,6 +3467,8 @@ Doogee:
2953
3467
  model: 'BL5500 Lite'
2954
3468
  - regex: 'BL12000'
2955
3469
  model: 'BL12000'
3470
+ - regex: 'KISSME-DG580'
3471
+ model: 'Kissme DG580'
2956
3472
  - regex: '(X5max(?:[_ ]PRO)?)'
2957
3473
  model: '$1'
2958
3474
  - regex: '(?:DOOGEE[ _-])?(BIGBOY|COLLO[23]?|DAGGER|DISCOVERY2?|FIND|HOTWIND|LATTE|MAX|MINT|MOON|PIXELS|RAINBOX|TURBO|VALENCIA|Valencia2_Y100pro|VOYAGER2?|TITANS2?)[ -_](DG[0-9]+C?)[);/ ]'
@@ -3147,6 +3663,17 @@ Evercoss:
3147
3663
  - regex: 'A75A\*'
3148
3664
  model: 'A75A Star'
3149
3665
 
3666
+ # Eurostar
3667
+ Eurostar:
3668
+ regex: '(ET7002C-H12|Onyx-[13]S)[/;) ]'
3669
+ device: 'smartphone'
3670
+ models:
3671
+ - regex: 'Onyx-([13]S)[/;) ]'
3672
+ model: 'Onyx $1'
3673
+ - regex: 'ET7002C-H12[/;) ]'
3674
+ model: 'ePad 4S'
3675
+ device: 'tablet'
3676
+
3150
3677
  # Eton
3151
3678
  Eton:
3152
3679
  regex: 'Eton'
@@ -3169,6 +3696,12 @@ Rikomagic:
3169
3696
  device: 'tv'
3170
3697
  model: 'MK$1'
3171
3698
 
3699
+ # Rinno
3700
+ Rinno:
3701
+ regex: 'Rinno (R(?:400|505))'
3702
+ device: 'smartphone'
3703
+ model: '$1'
3704
+
3172
3705
  # Riviera
3173
3706
  Riviera:
3174
3707
  regex: 'RIVIERA '
@@ -3185,7 +3718,7 @@ Senseit:
3185
3718
 
3186
3719
  # Sony & Sony Ericsson (combined as they are mixed up)
3187
3720
  Sony:
3188
- regex: 'Sony(?: ?Ericsson)?|SGP|Xperia|([456]0[12]|701)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)|D200[45]|D21(?:0[45]|14)|D22(?:0[236]|12|43)|D230[2356]|D240[36]|D25(?:02|33)|D510[236]|D530[36]|D5316|D5322|D5503|D58[03]3|D65(?:0[23]|43|63)|D66[03458]3|D66[14]6|D6708|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|65[35]3|66[0358]3|68[358]3)|F311[12356]|F331[13]|F321[12356]|F5[13]21|F5122|F813[12]|F833[12]|G312[135]|G311[26]|G322[136]|G3212|G331[123]|G3412|G3416|G342[136]|G823[12]|G834[123]|G8[14]4[12]|H(?:3113|3123|3133|3213|3223|3311|3321|4113|4133|4213|4233|4311|4331|4413|4433|82[167]6|83[12]4|8416|9436)|(?:WT|LT|SO|ST|SK|MK)[0-9]+[a-z]+[0-9]*(?: Build|\))|X?L39H|XM50[ht]|W960|portalmmm/2\.0 K|S3[69]h|SOL2[246]|SOV3[1234567]|X10[ia]v?|E1[05][ai]v?|MT[0-9]{2}[a-z]? Build|SO-0(?:[12]C|[345]D|[234]E|[1235]F|[1234]G|[134]H|[1234]J|2K)|R800[aix]|J9110|I4293|H9493|H8296|H8166|H4493|LiveWithWalkman'
3721
+ regex: 'Sony(?: ?Ericsson)?|SGP|Xperia|([456]0[12]|701)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)|D200[45]|D21(?:0[45]|14)|D22(?:0[236]|12|43)|D230[2356]|D240[36]|D25(?:02|33)|D510[236]|D530[36]|D5316|D5322|D5503|D58[03]3|D65(?:0[23]|43|63)|D66[03458]3|D66[14]6|D6708|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|65[35]3|66[0358]3|68[358]3)|I[34]312|I4332|F311[12356]|F331[13]|F321[12356]|F5[13]21|F5122|F813[12]|F833[12]|G312[135]|G311[26]|G322[136]|G3212|G331[123]|G3412|G3416|G342[136]|G823[12]|G834[123]|G8[14]4[12]|H(?:3113|3123|3133|3213|3223|3311|3321|4113|4133|4213|4233|4311|4331|4413|4433|82[167]6|83[12]4|8416|9436)|(?:WT|LT|SO|ST|SK|MK)[0-9]+[a-z]+[0-9]*(?: Build|\))|X?L39H|XM50[ht]|W960|portalmmm/2\.0 K|S3[69]h|SOL2[246]|SOV3[1234567]|X10[ia]v?|E1[05][ai]v?|MT[0-9]{2}[a-z]? Build|SO-0(?:[12]C|[345]D|[234]E|[1235]F|[1234]G|[134]H|[1234]J|[12]K)|R800[aix]|J9110|J81[17]0|I[34]113|I3[12]23|I42[19]3|H9493|H8296|H8166|H4493|LiveWithWalkman'
3189
3722
  device: 'smartphone'
3190
3723
  models:
3191
3724
  # SONY ERICSSON: explicit smartphone models
@@ -3314,9 +3847,11 @@ Sony:
3314
3847
  # SONY: explicit smartphone models
3315
3848
  - regex: 'SO-04G'
3316
3849
  model: 'Xperia A4'
3317
- - regex: '(?:Sony(?:Ericsson)?)?I4293'
3850
+ - regex: '(?:Sony(?:Ericsson)?)?I(?:4113|31[12]3)'
3851
+ model: 'Xperia 10'
3852
+ - regex: '(?:Sony(?:Ericsson)?)?I(?:42[19]3|3223)'
3318
3853
  model: 'Xperia 10 Plus'
3319
- - regex: '(?:Sony(?:Ericsson)?)?J9110'
3854
+ - regex: '(?:Sony(?:Ericsson)?)?J(?:9110|81[17]0)'
3320
3855
  model: 'Xperia 1'
3321
3856
  - regex: '(?:Sony(?:Ericsson)?)?LT22i'
3322
3857
  model: 'Xperia P'
@@ -3397,6 +3932,10 @@ Sony:
3397
3932
  model: 'Xperia L2'
3398
3933
  - regex: 'H43[13]1'
3399
3934
  model: 'Xperia L2 Dual'
3935
+ - regex: 'I3312'
3936
+ model: 'Xperia L3'
3937
+ - regex: 'I43[13]2'
3938
+ model: 'Xperia L3 Dual'
3400
3939
  - regex: '(?:Sony(?:Ericsson)?)?D2302'
3401
3940
  model: 'Xperia M2 Dual'
3402
3941
  - regex: '(?:Sony(?:Ericsson)?)?D230[356]'
@@ -3469,7 +4008,7 @@ Sony:
3469
4008
  model: 'Xperia XA Ultra Dual'
3470
4009
  - regex: '(?:Sony(?:Ericsson)?)?F833[12]|SOV34|601SO|SO-01J'
3471
4010
  model: 'Xperia XZ'
3472
- - regex: '(?:Sony(?:Ericsson)?)?(?:701SO|SOV36|G834[123])'
4011
+ - regex: '(?:Sony(?:Ericsson)?)?(?:701SO|SOV36|G834[123]|SO-01K)'
3473
4012
  model: 'Xperia XZ1'
3474
4013
  - regex: '(?:Sony(?:Ericsson)?)?G8441|SO-02K'
3475
4014
  model: 'Xperia XZ1 Compact'
@@ -3658,6 +4197,17 @@ eTouch:
3658
4197
  device: 'smartphone'
3659
4198
  model: '$1'
3660
4199
 
4200
+ # Etuline
4201
+ Etuline:
4202
+ regex: '(ETL-S(?:3520|4521|5042|5084|6022)|ETL-T(?:752G|882G|9[78]0))[/); ]'
4203
+ device: 'smartphone'
4204
+ models:
4205
+ - regex: '(ETL-S(?:[^/); ]+))'
4206
+ model: '$1'
4207
+ - regex: '(ETL-T(?:[^/); ]+))'
4208
+ device: 'tablet'
4209
+ model: '$1'
4210
+
3661
4211
  # Storex
3662
4212
  Storex:
3663
4213
  regex: "eZee[^a-z]*Tab ?([^;/]*) Build|STOREX LinkBox"
@@ -3687,6 +4237,8 @@ Evolio:
3687
4237
  models:
3688
4238
  - regex: 'M4MAGIC'
3689
4239
  model: 'M4 Magic'
4240
+ - regex: 'Evolio_M5Pro'
4241
+ model: 'M5 Pro'
3690
4242
  - regex: 'Evolio[ _](M6|S4 Cobalt|S5|X10|Yuppi)'
3691
4243
  model: '$1'
3692
4244
 
@@ -3811,6 +4363,12 @@ Fairphone:
3811
4363
  device: 'smartphone'
3812
4364
  model: '$1'
3813
4365
 
4366
+ # Famoco
4367
+ Famoco:
4368
+ regex: '(FX[123]00)'
4369
+ device: 'smartphone'
4370
+ model: '$1'
4371
+
3814
4372
  # FiGO
3815
4373
  FiGO:
3816
4374
  regex: 'ATRIUM II F55L2|TRIO F40LT|EPIC F50G|Gravity X55L|Orion M50L|ULTRA M50G|M405B|VIRTUE3|F55L Build'
@@ -3930,8 +4488,10 @@ G-TiDE:
3930
4488
  models:
3931
4489
  - regex: 'Shining7'
3932
4490
  model: 'Shining 7'
3933
- - regex: 'G-TiDE_(A1|S3)'
4491
+ - regex: 'G-TiDE_(A1|S[34])'
3934
4492
  model: '$1'
4493
+ - regex: 'G-TiDE V6'
4494
+ model: 'V6'
3935
4495
  - regex: 'E(57|60|66|72|77)'
3936
4496
  model: '$1'
3937
4497
 
@@ -3992,6 +4552,9 @@ Ginzzu:
3992
4552
  models:
3993
4553
  - regex: 'GINZZU[_ ]?(S40[17]0|S4710|ST6040)'
3994
4554
  model: '$1'
4555
+ - regex: 'GINZZU[_ ]?(GT-7105)'
4556
+ model: '$1'
4557
+ device: 'tablet'
3995
4558
  - regex: '(RS6[12]D) ULTIMATE'
3996
4559
  model: '$1 Ultimate'
3997
4560
  - regex: '((?:RS(?:7[14]|81|9[67])D)|S50[45]0|S5120|S40[23]0|RS8502|RS9602|RS94D)[);/ ]'
@@ -3999,7 +4562,7 @@ Ginzzu:
3999
4562
 
4000
4563
  # Gionee
4001
4564
  Gionee:
4002
- regex: '(?:GIO-)?GIONEE[ _-]?[a-z0-9]+|(?:Dream_D1|V188S?|GN[0-9]{3,4}[a-z]?)[);/ ]|F103(?: Pro)? Build|P5 mini Build|M7 Power '
4565
+ regex: '(?:GIO-)?GIONEE[ _-]?[a-z0-9]+|(?:Dream_D1|V188S?|GN[0-9]{3,4}[a-z]?)[);/ ]|F103(?: Pro)? Build|P5 mini Build|P7 Max Build|M7 Power '
4003
4566
  device: 'smartphone'
4004
4567
  models:
4005
4568
  - regex: 'GN810[);/ ]'
@@ -4017,6 +4580,8 @@ Gionee:
4017
4580
  model: 'M7 Power'
4018
4581
  - regex: 'P5 mini Build'
4019
4582
  model: 'P5 mini'
4583
+ - regex: 'P7 Max Build'
4584
+ model: 'P7 Max'
4020
4585
  - regex: '(?:(?:GIO-)?GIONEE[ _-])?Dream_D1[);/ ]'
4021
4586
  model: 'Dream D1'
4022
4587
  - regex: '(?:GIO-)?GIONEE[ _-]([a-z0-9_-]+).*Android'
@@ -4104,7 +4669,7 @@ Goly:
4104
4669
 
4105
4670
  # Google
4106
4671
  Google:
4107
- regex: 'Nexus|GoogleTV|Glass|CrKey[^a-z0-9]|Pixel Build|Pixel (?:XL|C|[23]|[23] XL)'
4672
+ regex: 'Nexus|GoogleTV|Glass|CrKey[^a-z0-9]|Pixel(?: Build|\))|Pixel (?:XL|C|[23]|[23] XL)'
4108
4673
  device: 'smartphone'
4109
4674
  models:
4110
4675
  - regex: 'Glass'
@@ -4125,7 +4690,7 @@ Google:
4125
4690
  - regex: 'GoogleTV'
4126
4691
  device: 'tv'
4127
4692
  model: 'GoogleTV'
4128
- - regex: 'Pixel Build'
4693
+ - regex: 'Pixel(?: Build|\))'
4129
4694
  model: 'Pixel'
4130
4695
  - regex: 'Pixel XL'
4131
4696
  model: 'Pixel XL'
@@ -4257,6 +4822,17 @@ Hi-Level:
4257
4822
  device: 'tablet'
4258
4823
  model: 'HLV-T$1'
4259
4824
 
4825
+ # Hoffmann
4826
+ Hoffmann:
4827
+ regex: '(HOFFMANN|Neo[_ ]A[139]00)[);/ ]'
4828
+ device: 'smartphone'
4829
+ models:
4830
+ - regex: 'Neo[_ ](A[139]00)'
4831
+ model: 'Neo $1'
4832
+ - regex: 'HOFFMANN[ _]X[-_ ](Prime|Twist)'
4833
+ model: 'X $1'
4834
+
4835
+
4260
4836
  # Homtom
4261
4837
  Homtom:
4262
4838
  regex: 'Homtom|(?:HT[0-9]{1,2})(?: ?Pro)?[);/ ]'
@@ -4285,23 +4861,33 @@ Hoozo:
4285
4861
 
4286
4862
  # Huawei
4287
4863
  Huawei:
4288
- regex: '(HW-)?(?:Huawei|Ideos|Honor[ _]?|(?:(?:AGS|AGS2|ALE|ALP|AMN|ANE|ARE|ATH|ATU|AUM|BAC|BAH|BG2|BGO|BKK|BKL|BLA|BLL|BLN|BND|BTV|CAG|CAM|CAN|CAZ|CHC|CHE[12]?|CHM|CLT|CMR|COL|COR|CPN|CRO|CRR|CUN|DIG|DIG|DLI|DRA|DUA|DUB|DUK|EDI|ELE|EML|EVA|EVR|FDR|FIG|FLA|FRD|GRA|HMA|HRY|HWI|H[36]0|INE|JAT|JDN2|JKM|JMM|JSN|KIW|KOB|KSA|LDN|LLD|LND|LON|LUA|LYA|MAR|MHA|MRD|MYA|NEM|NEO|NXT|PAR|PCT|PIC|PLE|PLK|POT|PRA|RIO|RNE|RVL|SCC|SCL|SEA|SHT|SLA|SNE|STF|STK|TAG|TIT|TNY|TRT|VCE|VEN|VIE|VKY|VNS|VOG|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,2}?)|H1711|U(?:8230|8500|8661|8665|8667|8800|8818|8860|9200|9508))[);/ ])|hi6210sft|HRY-LX1MEB'
4864
+ regex: '(HW-)?(?:Huawei|Ideos|Honor[ _]?|(?:(?:AGS|AGS2|ALE|ALP|AMN|ANE|ARE|ARS|ATH|ATU|AUM|BAC|BAH|BAH2|BG2|BGO|BKK|BKL|BLA|BLL|BLN|BND|BTV|CAG|CAM|CAN|CAZ|CHC|CHE[12]?|CHM|CLT|CMR|COL|COR|CPN|CRO|CRR|CUN|DIG|DIG|DLI|DRA|DUA|DUB|DUK|EDI|ELE|EML|EVA|EVR|FDR|FIG|FLA|FRD|GRA|HLK|HMA|HRY|HWI|H[36]0|INE|JAT|JDN|JDN2|JKM|JMM|JSN|KIW|KNT|KOB|KSA|LDN|LLD|LND|LON|LUA|LY[AO]|MAR|MHA|MRD|MYA|NCE|NEM|NEO|NXT|PAR|PCT|PIC|PLE|PLK|POT|PRA|RIO|RNE|RVL|SCC|SCL|SEA|SHT|SLA|SNE|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,2}?)|H1711|U(?:8230|8500|8661|8665|8667|8800|8818|8860|9200|9508))[);/ ])|hi6210sft|HRY-LX1MEB|GEM-70[1-3]L|PE-UL00|VRD-W09'
4289
4865
  device: 'smartphone'
4290
4866
  models:
4867
+ - regex: 'ARS-([AT]L00|L22)[);/ ]'
4868
+ model: 'Y Max'
4291
4869
  - regex: 'U(8230|8661|8667)[);/ ]'
4292
4870
  model: 'U$1'
4293
4871
  - regex: 'TAG-[ACT]L00'
4294
4872
  model: 'Enjoy 5S'
4295
- - regex: 'DUA-AL00'
4296
- model: 'Enjoy 7'
4297
- - regex: 'FIG-AL10'
4873
+ - regex: 'DIG-(?:TL10|AL00)'
4874
+ model: 'Enjoy 6S'
4875
+ - regex: 'NCE-AL[10]0'
4876
+ model: 'Enjoy 6'
4877
+ - regex: 'SLA-(?:AL00|TL10)'
4878
+ model: 'Enjoy 7' # Nova Lite (2017)
4879
+ - regex: 'DUA-[TA]L00'
4880
+ model: 'Honor Play 7'
4881
+ - regex: 'FIG-(?:AL[10]0|TL10)'
4298
4882
  model: 'Enjoy 7S'
4299
- - regex: 'LDN-(?:AL20|TL20)'
4883
+ - regex: 'LDN-(?:AL[12]0|TL20)'
4300
4884
  model: 'Enjoy 8'
4301
- - regex: 'ATU-AL1'
4885
+ - regex: 'ATU-(?:AL1|TL10)'
4302
4886
  model: 'Enjoy 8e'
4303
4887
  - regex: 'FLA-AL10'
4304
4888
  model: 'Enjoy 8 Plus'
4889
+ - regex: 'MRD-[TA]L00'
4890
+ model: 'Enjoy 9e'
4305
4891
  - regex: 'U8500[);/ ]'
4306
4892
  model: 'Ideos X2'
4307
4893
  - regex: 'U8510[);/ ]'
@@ -4342,21 +4928,30 @@ Huawei:
4342
4928
  model: 'Ascend Y550'
4343
4929
  - regex: 'U9508[);/ ]'
4344
4930
  model: 'Honor 2'
4345
- - regex: 'YAL-L21[);/ ]'
4931
+ - regex: 'YAL-(?:L21|AL00)'
4346
4932
  model: 'Honor 20'
4933
+ - regex: 'YAL-L41[);/ ]'
4934
+ model: 'Honor 20 Pro'
4347
4935
  - regex: 'VOG-AL00[);/ ]'
4348
4936
  model: 'Honor P30 Pro'
4349
- - regex: 'CHE2?-[UT]L00[HM]?|CHE1-CL[12]0|CHE2-L(?:11|23)|Che1-L04|CHE-TL00'
4937
+ - regex: 'CHE2?-[UT]L00[HM]?|CHE1-CL[12]0|CHE2-L(?:1[12]|23)|Che1-L04|CHE-TL00'
4350
4938
  model: 'Honor 4X'
4351
4939
  - regex: 'CHM-[CUT]L00[HM]?'
4352
4940
  model: 'Honor Play 4C'
4941
+ - regex: 'JDN-AL00'
4942
+ model: 'Honor Pad 2'
4943
+ device: 'tablet'
4944
+ - regex: 'JAT-AL00'
4945
+ model: 'Honor Play 8A'
4946
+ - regex: 'KNT-(?:AL[12]0|[TU]L10)'
4947
+ model: 'Honor V8'
4353
4948
  - regex: 'DUK-AL20'
4354
4949
  model: 'Honor V9'
4355
4950
  - regex: 'JMM-AL[10]0'
4356
4951
  model: 'Honor V9 Play'
4357
4952
  - regex: 'BKL-(?:AL00|AL20|AL30|L09|TL10)'
4358
4953
  model: 'Honor V10'
4359
- - regex: 'PCT-AL10'
4954
+ - regex: 'PCT-[TA]L10'
4360
4955
  model: 'Honor V20'
4361
4956
  - regex: 'BKL-L04'
4362
4957
  model: 'Honor View 10'
@@ -4370,7 +4965,7 @@ Huawei:
4370
4965
  model: 'Honor 4A'
4371
4966
  - regex: '(?:Honor_|HW-)?CAM-(?:AL00|TL00H|TL00)(?:_TD)?[);/ ]'
4372
4967
  model: 'Honor 5A'
4373
- - regex: '(?:Honor_|HW-)?KIW-(?:AL10|TL00H|L2[124]|UL00)(?:_TD)?[);/ ]'
4968
+ - regex: '(?:Honor_|HW-)?KIW-(?:AL10|TL00H|[TC]L00|L2[124]|UL00)(?:_TD)?[);/ ]'
4374
4969
  model: 'Honor 5X'
4375
4970
  - regex: '(?:Honor_|HW-)?CHM-U01(?:_TD)?[);/ ]'
4376
4971
  model: 'Honor 4C'
@@ -4378,21 +4973,23 @@ Huawei:
4378
4973
  model: 'Honor 6'
4379
4974
  - regex: 'MYA-TL10'
4380
4975
  model: 'Honor 6 Play'
4976
+ - regex: 'PE-UL00'
4977
+ model: 'Honor 6 Plus'
4381
4978
  - regex: '(?:Honor_|HW-)?SCL-L01(?:_TD)?[);/ ]'
4382
4979
  model: 'Honor Y6'
4383
4980
  - regex: '(?:Honor_|HW-)?LYO-L21'
4384
- model: 'Honor Y6 II Compact'
4981
+ model: 'Honor Y6 II Compact' # Honor 5A
4385
4982
  - regex: '(?:Honor_|HW-)?PLK-(?:AL10|CL00|TL00|TL01H?|UL00|L01)[);/ ]'
4386
4983
  model: 'Honor 7'
4387
- - regex: 'AUM-(?:AL[20]0|L33)'
4984
+ - regex: 'AUM-(?:AL[20]0|L33[A]?|TL20)'
4388
4985
  model: 'Honor 7A'
4389
4986
  - regex: 'AUM-L29'
4390
4987
  model: 'Honor 7A Pro'
4391
- - regex: '(?:Honor_|HW-)?(?:LND-AL[34]0|LND-L29|AUM-L41)[);/ ]'
4988
+ - regex: '(?:Honor_|HW-)?(?:LND-(?:AL[34]0|L29|TL40)|AUM-L41)[);/ ]'
4392
4989
  model: 'Honor 7C'
4393
- - regex: '(?:Honor_|HW-)?DUA-L22[);/ ]'
4990
+ - regex: '(?:Honor_|HW-)?DUA-(?:L22|LX3)[);/ ]'
4394
4991
  model: 'Honor 7S'
4395
- - regex: '(?:Honor_|HW-)?NEM-(?:AL10|L51|UL10)[);/ ]'
4992
+ - regex: '(?:Honor_|HW-)?NEM-(?:AL10|L51|UL10|TL00)[);/ ]'
4396
4993
  model: 'Honor 5C'
4397
4994
  - regex: '(?:Honor_|HW-)?NEM-(?:L22|TL00H)[);/ ]'
4398
4995
  model: 'Honor 5C Dual SIM'
@@ -4404,7 +5001,7 @@ Huawei:
4404
5001
  model: 'Honor 6C Pro'
4405
5002
  - regex: '(?:HONOR[ _]?)?BLN-(?:L2[124]|AL[1234]0|TL[01]0)'
4406
5003
  model: 'Honor 6X'
4407
- - regex: 'ATH-AL00'
5004
+ - regex: 'ATH-(?:AL00|UL00|TL00H)'
4408
5005
  model: 'Honor 7i'
4409
5006
  - regex: '(?:HONOR[ _]?)?BND-(?:AL[01]0|TL10|L2[14]|L31)'
4410
5007
  model: 'Honor 7X'
@@ -4418,21 +5015,23 @@ Huawei:
4418
5015
  model: 'Honor 8X'
4419
5016
  - regex: 'KSA-LX9'
4420
5017
  model: 'Honor 8S'
4421
- - regex: 'ARE-AL[10]0|ARE-L22HN'
5018
+ - regex: 'ARE-(?:AL[10]0|L22HN|TL00)'
4422
5019
  model: 'Honor 8X Max'
4423
5020
  - regex: 'PRA-(?:AL00X|AL00|TL10)'
4424
5021
  model: 'Honor 8 Lite'
4425
- - regex: 'DUK-L09'
5022
+ - regex: 'DUK-(?:L09|TL30)'
4426
5023
  model: 'Honor 8 Pro'
4427
5024
  - regex: 'JAT-L41'
4428
5025
  model: 'Honor 8A Pro'
4429
5026
  - regex: 'VEN-L22'
4430
5027
  model: 'Honor 8 Smart'
4431
- - regex: 'STF-(?:AL[10]0|L09)'
5028
+ - regex: 'STF-(?:AL[10]0|L09|TL10)'
4432
5029
  model: 'Honor 9'
5030
+ - regex: 'HLK-AL00'
5031
+ model: 'Honor 9X'
4433
5032
  - regex: 'LLD-AL[23]0'
4434
5033
  model: 'Honor 9i'
4435
- - regex: 'LLD-(?:AL[01]0|L[23]1)'
5034
+ - regex: 'LLD-(?:AL[01]0|L[23]1|TL10)'
4436
5035
  model: 'Honor 9 Lite'
4437
5036
  - regex: 'COL-(?:AL[01]0|TL[01]0|L29)'
4438
5037
  model: 'Honor 10'
@@ -4446,7 +5045,7 @@ Huawei:
4446
5045
  model: 'Honor Holly 4 Plus'
4447
5046
  - regex: 'TNY-AL00'
4448
5047
  model: 'Honor Magic 2'
4449
- - regex: 'COR-(?:AL[01]0|L29)'
5048
+ - regex: 'COR-(?:AL[01]0|L29|TL10)'
4450
5049
  model: 'Honor Play'
4451
5050
  - regex: 'EDI-AL10'
4452
5051
  model: 'Honor Note 8'
@@ -4454,7 +5053,7 @@ Huawei:
4454
5053
  model: 'Honor Note 10'
4455
5054
  - regex: 'GRA-(?:L09|UL00)'
4456
5055
  model: 'P8'
4457
- - regex: 'ALE-L(?:02|21|23)|ALE-UL00'
5056
+ - regex: 'ALE-L(?:02|21|23)|ALE-UL00|ALE-TL00'
4458
5057
  model: 'P8 Lite (2015)'
4459
5058
  - regex: 'PRA-L(?:A1|X2|X1|X3)|hi6210sft'
4460
5059
  model: 'P8 Lite (2017)'
@@ -4466,13 +5065,13 @@ Huawei:
4466
5065
  model: 'Nova 2'
4467
5066
  - regex: 'HWI-[AT]L00'
4468
5067
  model: 'Nova 2S'
4469
- - regex: 'BAC-L01'
5068
+ - regex: 'BAC-(?:L01|TL00)'
4470
5069
  model: 'Nova 2 Plus'
4471
5070
  - regex: 'BAC-(?:AL00|L2[12])'
4472
5071
  model: 'Nova 2 Plus Dual SIM'
4473
5072
  - regex: 'RNE-L[02]2'
4474
5073
  model: 'Nova 2I'
4475
- - regex: 'PAR-(?:AL00|LX[19])'
5074
+ - regex: 'PAR-(?:[AT]L00|LX[19]|TL20)'
4476
5075
  model: 'Nova 3'
4477
5076
  - regex: 'ANE-AL00'
4478
5077
  model: 'Nova 3e'
@@ -4480,7 +5079,7 @@ Huawei:
4480
5079
  model: 'Nova 3i'
4481
5080
  - regex: 'SEA-AL10'
4482
5081
  model: 'Nova 5 Pro'
4483
- - regex: 'VCE-L22'
5082
+ - regex: 'VCE-(L22|[AT]L00)'
4484
5083
  model: 'Nova 4'
4485
5084
  - regex: 'MAR-AL00'
4486
5085
  model: 'Nova 4e'
@@ -4490,7 +5089,7 @@ Huawei:
4490
5089
  model: 'Nova Smart'
4491
5090
  - regex: 'RIO-L03'
4492
5091
  model: 'GX8'
4493
- - regex: 'EVA-(?:AL10|L[012]9|TL00)'
5092
+ - regex: 'EVA-(?:AL[10]0|L[012]9|[TCD]L00)'
4494
5093
  model: 'P9'
4495
5094
  - regex: 'VNS-L(?:[23]1|62)'
4496
5095
  model: 'P9 Lite'
@@ -4508,15 +5107,15 @@ Huawei:
4508
5107
  model: 'P10 Selfie'
4509
5108
  - regex: 'VKY-(?:AL00|L09|L29)'
4510
5109
  model: 'P10 Plus'
4511
- - regex: 'EML-(?:AL00|L09|L29)'
5110
+ - regex: 'EML-(?:[TA]L00|L[02]9)'
4512
5111
  model: 'P20'
4513
- - regex: 'ANE-LX[123]'
5112
+ - regex: 'ANE-(?:LX[123]|TL00)'
4514
5113
  model: 'P20 Lite'
4515
- - regex: 'CLT-(?:AL0[01]|L(?:04|[02]9))'
5114
+ - regex: 'CLT-(?:AL0[01]|TL00|L(?:04|[02]9))'
4516
5115
  model: 'P20 Pro'
4517
5116
  - regex: 'ELE-L(?:04|09|29)|ELE-AL00'
4518
5117
  model: 'P30'
4519
- - regex: 'VOG-L(?:04|09|29)'
5118
+ - regex: 'VOG-L(?:04|09|29)|VOG-TL00'
4520
5119
  model: 'P30 Pro'
4521
5120
  - regex: 'MAR-LX(1M|2)'
4522
5121
  model: 'P30 Lite'
@@ -4542,13 +5141,13 @@ Huawei:
4542
5141
  model: 'Y5II'
4543
5142
  - regex: 'MYA-(?:L(?:02|03|2[23])|U29)'
4544
5143
  model: 'Y5 (2017)'
4545
- - regex: 'AMN-LX[19]'
5144
+ - regex: 'AMN-LX[129]'
4546
5145
  model: 'Y5 (2019)'
4547
5146
  - regex: 'CRO-L[02]3'
4548
5147
  model: 'Y5 Lite (2017)'
4549
5148
  - regex: 'CAG-L[02]3'
4550
5149
  model: 'Y5 Lite (2018)'
4551
- - regex: 'DRA-LX2'
5150
+ - regex: 'DRA-(?:LX2|AL00)'
4552
5151
  model: 'Y5 Prime (2018)'
4553
5152
  - regex: 'DRA-LX5'
4554
5153
  model: 'Y5 lite'
@@ -4564,7 +5163,7 @@ Huawei:
4564
5163
  model: 'Y6II'
4565
5164
  - regex: 'ATU-L(?:11|21|22|X3)'
4566
5165
  model: 'Y6 (2018)'
4567
- - regex: 'MRD-LX1[F]?'
5166
+ - regex: 'MRD-L(?:X1[F]?|X3)'
4568
5167
  model: 'Y6 (2019)'
4569
5168
  - regex: 'TIT-(?:AL00|L01)'
4570
5169
  model: 'Y6 Pro'
@@ -4576,17 +5175,19 @@ Huawei:
4576
5175
  model: 'Y7 (2017)'
4577
5176
  - regex: 'LDN-L(?:01|X3)'
4578
5177
  model: 'Y7 (2018)'
4579
- - regex: 'DUB-LX[13]'
5178
+ - regex: 'DUB-(?:LX[13]|TL00)'
4580
5179
  model: 'Y7 (2019)'
4581
- - regex: 'LDN-(?:AL00|L21)'
5180
+ - regex: 'DUB-AL20'
5181
+ model: 'Y7 Pro (2019)'
5182
+ - regex: 'LDN-(?:AL00|L21)|TRT-TL10'
4582
5183
  model: 'Y7 Prime'
4583
5184
  - regex: 'LDN-(?:LX2|TL10)|TRT-(?:L21A|L53)'
4584
5185
  model: 'Y7 Prime (2018)'
4585
- - regex: 'DUB-LX2'
5186
+ - regex: 'DUB-(?:LX2|AL00)'
4586
5187
  model: 'Y7 Pro (2019)'
4587
- - regex: 'FLA-LX[123]'
5188
+ - regex: 'FLA-(LX[123]|AL20|TL10)'
4588
5189
  model: 'Y9 (2018)'
4589
- - regex: 'JKM-(?:AL00|LX[123])'
5190
+ - regex: 'JKM-(?:[TA]L00|LX[123])'
4590
5191
  model: 'Y9 (2019)'
4591
5192
  - regex: 'STK-(L2[12]|LX3)'
4592
5193
  model: 'Y9 Prime (2019)'
@@ -4598,17 +5199,17 @@ Huawei:
4598
5199
  model: 'Y635 Dual SIM'
4599
5200
  - regex: 'NXT-(?:AL10|L29)'
4600
5201
  model: 'Mate 8'
4601
- - regex: 'MHA-(?:L[02]9|AL00)'
5202
+ - regex: 'MHA-(?:L[02]9|[AT]L00)'
4602
5203
  model: 'Mate 9'
4603
5204
  - regex: 'BLL-L23'
4604
5205
  model: 'Mate 9 Lite'
4605
5206
  - regex: 'LON-(?:AL00|L29)'
4606
5207
  model: 'Mate 9 Pro'
4607
- - regex: 'ALP-(?:AL00|L[02]9)'
5208
+ - regex: 'ALP-(?:[TA]L00|L[02]9)'
4608
5209
  model: 'Mate 10'
4609
5210
  - regex: 'RNE-(?:AL00|L(?:01|03|21|23))'
4610
5211
  model: 'Mate 10 Lite'
4611
- - regex: 'BLA-(?:A09|L[02]9|AL00)'
5212
+ - regex: 'BLA-(?:A09|L[02]9|[TA]L00)'
4612
5213
  model: 'Mate 10 Pro'
4613
5214
  - regex: 'HMA-(?:[AT]L00|L[02]9)'
4614
5215
  model: 'Mate 20'
@@ -4616,11 +5217,11 @@ Huawei:
4616
5217
  model: 'P30 Pro'
4617
5218
  - regex: 'LYA-AL00P'
4618
5219
  model: 'Mate 20 RS'
4619
- - regex: 'LYA-(?:AL[01]0|L[02]9)'
5220
+ - regex: 'LYA-(?:AL[01]0|L[02]9|L0C|TL00)'
4620
5221
  model: 'Mate 20 Pro'
4621
5222
  - regex: 'SNE-(?:AL00|LX[0-3])'
4622
5223
  model: 'Mate 20 Lite'
4623
- - regex: 'EVR-(?:AL00|L29)'
5224
+ - regex: 'EVR-(?:[TA]L00|L29)'
4624
5225
  model: 'Mate 20 X'
4625
5226
  - regex: 'CRR-(?:L09|UL00)'
4626
5227
  model: 'Mate S'
@@ -4642,25 +5243,31 @@ Huawei:
4642
5243
  - regex: 'CMR-(?:AL[01]9|W09)'
4643
5244
  device: 'tablet'
4644
5245
  model: 'MediaPad M5 10.8'
4645
- - regex: 'JDN2-L09'
5246
+ - regex: 'GEM-70[1-3]L'
5247
+ device: 'tablet'
5248
+ model: 'MediaPad X2'
5249
+ - regex: 'JDN2-(:?L09|AL00)|BAH2-(?:L09|W19)'
4646
5250
  device: 'tablet'
4647
5251
  model: 'MediaPad M5 lite'
4648
5252
  - regex: 'SHT-(?:AL|W)09'
4649
5253
  device: 'tablet'
4650
5254
  model: 'MediaPad M5 8.4'
5255
+ - regex: 'VRD-(AL|W)09'
5256
+ device: 'tablet'
5257
+ model: 'MediaPad M6 8.4'
4651
5258
  - regex: 'BTV-W09'
4652
5259
  device: 'tablet'
4653
5260
  model: 'MediaPad M3 8'
4654
- - regex: 'BAH-W09|CPN-(?:L|W)09'
5261
+ - regex: 'BAH-W09|CPN-(?:L|W)09|CPN-AL00'
4655
5262
  device: 'tablet'
4656
5263
  model: 'MediaPad M3 Lite'
4657
- - regex: 'BAH-L09'
5264
+ - regex: 'BAH-(?:L09|AL00)'
4658
5265
  device: 'tablet'
4659
5266
  model: 'MediaPad M3 Lite 10'
4660
5267
  - regex: 'BTV-DL09'
4661
5268
  device: 'tablet'
4662
5269
  model: 'MediaPad M3'
4663
- - regex: 'AGS2-(?:L|W)09'
5270
+ - regex: 'AGS2-(?:[LW]09|L03)'
4664
5271
  device: 'tablet'
4665
5272
  model: 'MediaPad T5 10'
4666
5273
  - regex: 'AGS-(?:L0[39]|W09)'
@@ -4678,6 +5285,9 @@ Huawei:
4678
5285
  - regex: '(?:BGO-DL09|PLE-70[13]L)'
4679
5286
  device: 'tablet'
4680
5287
  model: 'MediaPad T2 7.0 Pro'
5288
+ - regex: 'JDN-L01'
5289
+ device: 'tablet'
5290
+ model: 'MediaPad T2 8.0 Pro'
4681
5291
  - regex: 'FDR-A01(?:L|w)'
4682
5292
  device: 'tablet'
4683
5293
  model: 'MediaPad T2 10.0 Pro'
@@ -4773,10 +5383,10 @@ iRola:
4773
5383
 
4774
5384
  # Irbis
4775
5385
  Irbis:
4776
- regex: 'TZ(753|85[47]|86[45]|88[124]|89[12]|49)|T(?:Zone|Zart)|(SP(?:0[56]|2[01]|4[1-36]|45[45]|50))[;)\ ]'
5386
+ regex: 'TZ(150|165|17[5-8]|77[17]|753|794|8[34]1|85[47]|86[45]|88[124]|89[12]|49|716|772)|T(?:Zone|Zart)|(SP(?:0[56]|2[01]|4[1-36]|45[45]|50))[;)\ ]'
4777
5387
  device: 'tablet'
4778
5388
  models:
4779
- - regex: '(TZ(?:753|85[47]|86[45]|88[124]|89[12]|49)|T(?:Zone|Zart))[;)\ ]'
5389
+ - regex: '(TZ(?:150|165|17[5-8]|77[17]|753|794|8[34]1|85[47]|86[45]|88[124]|89[12]|49|716|772)|T(?:Zone|Zart))[;)\ ]'
4780
5390
  model: '$1'
4781
5391
  - regex: '(SP(?:0[56]|2[01]|4[1-36]|45[45]|50))[;)\ ]'
4782
5392
  device: 'smartphone'
@@ -4794,11 +5404,13 @@ iBerry:
4794
5404
 
4795
5405
  # iHunt
4796
5406
  iHunt:
4797
- regex: 'iHunt|One_ Love_|TITAN_P11000_PRO|Like_(3|4U|3_Pro)|X300 Elite'
5407
+ regex: 'iHunt|One_ Love_|TITAN_P11000_PRO|Like_(3|4U|3_Pro)|X300 Elite|S10_Tank_2019'
4798
5408
  device: 'smartphone'
4799
5409
  models:
4800
5410
  - regex: 'iHunt_Like'
4801
5411
  model: 'Like'
5412
+ - regex: 'S10_Tank_2019'
5413
+ model: 'S10 Tank 2019'
4802
5414
  - regex: 'One_ Love_'
4803
5415
  model: 'One Love'
4804
5416
  - regex: 'TITAN_P11000_PRO'
@@ -4924,6 +5536,12 @@ LYF:
4924
5536
  - regex: 'LYF/([^/]+)/'
4925
5537
  model: '$1'
4926
5538
 
5539
+ # Lumus
5540
+ Lumus:
5541
+ regex: 'NEOSR620[;)/ ]'
5542
+ device: 'smartphone'
5543
+ model: 'Neo SR620'
5544
+
4927
5545
  # M4tel
4928
5546
  M4tel:
4929
5547
  regex: 'M4 SS[0-9]{4}(?:-R)?|M4_B[23]'
@@ -4982,6 +5600,12 @@ IMO Mobile:
4982
5600
  - regex: 'IMO Q2'
4983
5601
  model: 'Q2'
4984
5602
 
5603
+ # iLA
5604
+ iLA:
5605
+ regex: 'iLA[-_ ](Silk|X)[);/ ]'
5606
+ device: 'smartphone'
5607
+ model: '$1'
5608
+
4985
5609
  # iNew
4986
5610
  iNew:
4987
5611
  regex: 'iNew|(?:V7A|V3 Plus|V3-?E|V3C)(?: Build|[;/\)])'
@@ -5130,11 +5754,17 @@ Infinix:
5130
5754
 
5131
5755
  # InFocus
5132
5756
  InFocus:
5133
- regex: '(IF9007) Build'
5757
+ regex: 'IF(9001|9007|9021|9035) Build'
5134
5758
  device: 'smartphone'
5135
5759
  models:
5136
- - regex: '(IF9007)'
5137
- model: '$1'
5760
+ - regex: 'IF9001'
5761
+ model: 'Turbo 5'
5762
+ - regex: 'IF9007'
5763
+ model: 'A3'
5764
+ - regex: 'IF9021'
5765
+ model: 'Turbo 5 Plus'
5766
+ - regex: 'IF9035'
5767
+ model: 'A2'
5138
5768
 
5139
5769
  # InnJoo
5140
5770
  InnJoo:
@@ -5156,6 +5786,24 @@ Innostream:
5156
5786
  device: 'feature phone'
5157
5787
  model: 'INNO$1'
5158
5788
 
5789
+ # Insignia
5790
+ Insignia:
5791
+ regex: 'NS-(P11A8100|P10A8100|P10A6100|P16AT08|P16AT10|P16AT785HD|P08A7100|P10A7100)[);/ ]'
5792
+ device: 'tablet'
5793
+ models:
5794
+ - regex: 'NS-P11A8100'
5795
+ model: '11.6"'
5796
+ - regex: 'NS-(P10A6100|P16AT10)'
5797
+ model: 'Flex 10.1"'
5798
+ - regex: 'NS-P16AT08'
5799
+ model: 'Flex 8"'
5800
+ - regex: 'NS-P08A7100'
5801
+ model: '8"'
5802
+ - regex: 'NS-(P10A8100|P10A7100)'
5803
+ model: '10.1"'
5804
+ - regex: 'NS-P16AT785HD'
5805
+ model: 'Flex Elite 7.85"'
5806
+
5159
5807
  # Inq
5160
5808
  INQ:
5161
5809
  regex: 'INQ[/ ]'
@@ -5169,11 +5817,13 @@ INQ:
5169
5817
 
5170
5818
  # Intex
5171
5819
  Intex:
5172
- regex: 'Intex|(Aqua|Cloud[ _][XY][0-9]{1})'
5820
+ regex: 'Intex|(Aqua|Cloud[ _][XY][0-9]{1}|Cloud (?:Fame|Glory) 4G)'
5173
5821
  device: 'smartphone'
5174
5822
  models:
5175
5823
  - regex: 'Intex[ _]([^/;]*)[ _]Build'
5176
5824
  model: '$1'
5825
+ - regex: '(Cloud (?:Fame|Glory) 4G)'
5826
+ model: '$1'
5177
5827
  - regex: '(Aqua|Cloud)[ _\.]([^/;\)]+)(?:[ _]Build|(?<!Build)/|\))'
5178
5828
  model: '$1 $2'
5179
5829
  - regex: 'Intex[ _]([a-z0-9_+\-]+)'
@@ -5277,11 +5927,13 @@ iTel:
5277
5927
 
5278
5928
  # JAY-Tech
5279
5929
  JAY-Tech:
5280
- regex: 'TPC-[A-Z0-9]+'
5930
+ regex: 'TPC-[A-Z0-9]+|TPCY-TX[TE][^);/ ]+'
5281
5931
  device: 'tablet'
5282
5932
  models:
5283
5933
  - regex: 'TPC-([A-Z0-9]+)'
5284
5934
  model: 'Tablet PC $1'
5935
+ - regex: '(TPCY-TX[TE][^);/ ]+)'
5936
+ model: '$1'
5285
5937
 
5286
5938
  # Jiayu
5287
5939
  Jiayu:
@@ -5325,6 +5977,12 @@ Kalley:
5325
5977
  - regex: 'ELEMENT Q'
5326
5978
  model: 'Element Q'
5327
5979
 
5980
+ # Kaan
5981
+ Kaan:
5982
+ regex: 'KAAN[ _](N[12]|A1)[);/ ]'
5983
+ device: 'smartphone'
5984
+ model: '$1'
5985
+
5328
5986
  # Kazam
5329
5987
  Kazam:
5330
5988
  regex: 'Kazam ([^;/]+) Build|Trooper_X[0-9][0-9][);/ ]|Tornado 348'
@@ -5493,13 +6151,18 @@ KDDI:
5493
6151
 
5494
6152
  # Kodak
5495
6153
  Kodak:
5496
- regex: 'KODAK'
6154
+ regex: 'KODAK|IM5[);/ ]'
5497
6155
  device: 'smartphone'
5498
6156
  models:
6157
+ - regex: 'IM5'
6158
+ model: 'IM5'
5499
6159
  - regex: 'KODAK_SMARTWAY_((M|T)1)'
5500
6160
  model: 'Smartway $1'
5501
6161
  - regex: 'SMARTWAY X1'
5502
6162
  model: 'Smartway X1'
6163
+ - regex: 'Tablet (7|10)'
6164
+ device: 'tablet'
6165
+ model: 'Tablet $1'
5503
6166
 
5504
6167
  # KOPO
5505
6168
  KOPO:
@@ -5537,7 +6200,7 @@ K-Touch:
5537
6200
 
5538
6201
  # kyocera
5539
6202
  Kyocera:
5540
- regex: 'Kyocera|KWC-|QC-|C5120|C5170|C5155|C5215|C6730|C6750|C6522N?|C6530N|C6740|C6743|E6810|KYL21|KYY23|S2151|KC-S701'
6203
+ regex: 'Kyocera|KWC-|QC-|C5120|C5170|C5155|C5215|C6730|C6750|C6522N?|C6530N|C6740|C6743|E6[89]10|KYL21|KYY23|S2151|KC-S701'
5541
6204
  device: 'smartphone'
5542
6205
  models:
5543
6206
  # explicit smartphone models
@@ -5563,12 +6226,16 @@ Kyocera:
5563
6226
  model: 'Hydro Reach'
5564
6227
  - regex: 'E6810'
5565
6228
  model: 'DuraForce Pro'
6229
+ - regex: 'E6910'
6230
+ model: 'DuraForce Pro 2'
5566
6231
  - regex: 'KC-S701'
5567
6232
  model: 'Torque'
5568
6233
  - regex: 'KYL21'
5569
6234
  model: 'Digno S'
5570
6235
  - regex: 'KYY23'
5571
6236
  model: 'Urbano L03'
6237
+ - regex: '(?:Kyocera-)?E6790'
6238
+ model: 'DuraForce XD'
5572
6239
 
5573
6240
  # explicit feature phone models
5574
6241
  - regex: 'S2151'
@@ -5602,6 +6269,14 @@ LAIQ:
5602
6269
  - regex: '(Glam|New York)'
5603
6270
  model: '$1'
5604
6271
 
6272
+ # AIS
6273
+ AIS:
6274
+ regex: 'iris708'
6275
+ device: 'smartphone'
6276
+ models:
6277
+ - regex: 'iris708'
6278
+ model: 'LAVA PRO 4.5'
6279
+
5605
6280
  # Lava
5606
6281
  Lava:
5607
6282
  regex: 'Lava[ _]|iris[ _]?([^/;]+)(?:\)| Build)|A(?:67|76) Build|X1 Selfie Build|X41 Plus Build|Flair Z1|PixelV1|Z61_2GB'
@@ -5656,7 +6331,7 @@ Lanix:
5656
6331
  device: 'tablet'
5657
6332
  - regex: 'X120C'
5658
6333
  model: 'Ilium X120C'
5659
- - regex: 'Ilium[ _](Alpha 3|L(?:200|6[12]0|9[125]0|1[0124]00|1050|1120)|LT5[012]0|M[139]|S(?:106|520|6[27]0)|X(?:1[12]0|2[0126]0|5[12]0|500B|710))'
6334
+ - regex: 'Ilium[ _](Alpha 3|L(?:200|6[12]0|9[125]0|1[0124]00|1050|1120)|LT5[012]0|M[1379]|S(?:106|520|6[27]0)|X(?:1[12]0|2[0126]0|5[12]0|500B|710))'
5660
6335
  model: 'Ilium $1'
5661
6336
  - regex: 'ILIUM[ _]([^;/]+) Build'
5662
6337
  model: 'Ilium $1'
@@ -5784,6 +6459,19 @@ Leotec:
5784
6459
  - regex: 'LESPH5014'
5785
6460
  model: 'Krypton K150'
5786
6461
 
6462
+ # Lephone
6463
+ Lephone:
6464
+ regex: 'lephone[ _]'
6465
+ device: 'smartphone'
6466
+ models:
6467
+ - regex: 'lephone[ _](K7|K10)'
6468
+ device: 'feature phone'
6469
+ model: '$1'
6470
+ - regex: 'lephone[ _](W(1[0125]|[279])|T2)[/;) ]'
6471
+ model: '$1'
6472
+ - regex: 'lephone_W7_plus'
6473
+ model: 'W7 Plus'
6474
+
5787
6475
  # lenco
5788
6476
  Lenco:
5789
6477
  regex: 'Lenco ([^/;]*) Build'
@@ -5877,6 +6565,12 @@ Lenovo:
5877
6565
  - regex: 'TB-X304F'
5878
6566
  model: 'TAB 4 10'
5879
6567
  device: 'tablet'
6568
+ - regex: 'Lenovo TB-X505F'
6569
+ model: 'M10'
6570
+ device: 'tablet'
6571
+ - regex: 'Lenovo TB-X104[FXL]'
6572
+ model: 'E10'
6573
+ device: 'tablet'
5880
6574
  - regex: 'Tab2A([0-9]-[0-9]{2}[a-z]?)'
5881
6575
  model: 'TAB 2 A$1'
5882
6576
  device: 'tablet'
@@ -5908,6 +6602,8 @@ Lenovo:
5908
6602
  model: 'K3 Note'
5909
6603
  - regex: 'A7010a48 Build'
5910
6604
  model: 'K4 Note'
6605
+ - regex: 'A7010a48(?: Build|\))'
6606
+ model: 'K4 Vibe'
5911
6607
  - regex: 'A7020a4[08](?: Build|\))'
5912
6608
  model: 'K5 Note'
5913
6609
  - regex: '(?:Lenovo-)?A6020(?:a40|l36)(?: Build|\))'
@@ -6026,7 +6722,7 @@ Lexibook:
6026
6722
 
6027
6723
  # LG
6028
6724
  LG:
6029
- regex: 'LG|portalmmm/2\.0 (?:KE|KG|KP|L3)|(?:VX[0-9]+|L-0[12]D|L-07C|P713|LM-(V350|V409N|X510WM|X525|Q815[SL]|X410([KL]|UM|PM)|X510[KLS]|X415[KLS]|Q850|Q925L|Q725[KL]|Q710(?:FGN|\(FGN\)|\.FGN?)?|X2[12]0(?:APM|\(G\)|CM|G)?|G710N?|V405|V500N|G820(N|QM[0127]|UMB)?|(X410|Q610)(?:\(FGN?\)|\.FN|\.F(?:GN?)?)))[);/ ]|NetCast|RS987|RS500|VS(?:501|988|99[56]|(410|415|425|500)PP)|Nexsus 5|LML211BL|LML212VL|LM-X625N'
6725
+ regex: 'LG|portalmmm/2\.0 (?:KE|KG|KP|L3)|(?:VX[0-9]+|L-0[12]D|L-07C|P713|LM-(Q910|V350[N]?|V409N|X510WM|X525|Q815[SL]|X410([KL]|UM|PM)|X420N|X510[KLS]|X415[KLS]|Q850|Q925L|Q725[KL]|Q710(?:FGN|\(FGN\)|\.FGN?)?|X2[12]0(?:APM|\(G\)|CM|G)?|G710(N|VM)?|V405|V500N|G820(N|QM[0127]|UMB)?|(X410|Q610)(?:\(FGN?\)|\.FN|\.F(?:GN?)?)))[);/ ]|NetCast|RS987|RS500|VS(?:50[01]|835|98[78]|99[56]|(410|415|425|500)PP)|Nexsus 5|LML(414D|211B|713D|212V)L|LM-X(625N|210K|212\(G\)|410S)|VK810 4G|VK815'
6030
6726
  device: 'smartphone'
6031
6727
  models:
6032
6728
  - regex: 'LG-D325'
@@ -6045,7 +6741,7 @@ LG:
6045
6741
  model: 'G4 Stylus'
6046
6742
  - regex: 'LG-H735'
6047
6743
  model: 'G4 Beat'
6048
- - regex: 'LG-H8(?:20|30|5[08]|60)'
6744
+ - regex: 'LG-H8(?:20|30|5[08]|60)|VS987'
6049
6745
  model: 'G5'
6050
6746
  - regex: 'LG-H84[05]'
6051
6747
  model: 'G5 SE'
@@ -6053,6 +6749,8 @@ LG:
6053
6749
  model: 'G6'
6054
6750
  - regex: 'LM-Q850'
6055
6751
  model: 'G7 Fit'
6752
+ - regex: 'LM-Q910'
6753
+ model: 'G7 One'
6056
6754
  - regex: 'LM-G820(N|QM[0127]|UMB)?'
6057
6755
  model: 'G8'
6058
6756
  - regex: 'VS501'
@@ -6087,21 +6785,27 @@ LG:
6087
6785
  model: 'Q8+'
6088
6786
  - regex: 'LM-Q925L'
6089
6787
  model: 'Q9'
6090
- - regex: 'LM-Q710'
6788
+ - regex: 'VS835'
6789
+ model: 'Stylo 2 V'
6790
+ - regex: 'LM-Q710|LML713DL'
6091
6791
  model: 'Stylo 4'
6092
- - regex: 'LM-G710N?'
6792
+ - regex: 'LM-G710(N|VM)?'
6093
6793
  model: 'G7 ThinQ'
6094
6794
  - regex: 'LM-X210CM'
6095
6795
  model: 'Fortune 2'
6096
6796
  - regex: 'LM-X410\.F[);/ ]'
6097
6797
  model: 'Premier Pro'
6798
+ - regex: 'LML414DL[);/ ]'
6799
+ model: 'Premier Pro LTE'
6098
6800
  - regex: 'LM-X525'
6099
6801
  model: 'Q60'
6802
+ - regex: 'LM-X210K'
6803
+ model: 'X2'
6100
6804
  - regex: 'LM-X510WM'
6101
6805
  model: 'X Power 3'
6102
- - regex: 'LM-X41[05]K'
6806
+ - regex: 'LM-X(?:41[05]K|410S)'
6103
6807
  model: 'X4'
6104
- - regex: 'LM-(X415[LS]|X410L)'
6808
+ - regex: 'LM-X(415[LS]|410L)'
6105
6809
  model: 'X4+'
6106
6810
  - regex: 'LM-X410\.FN'
6107
6811
  model: 'K11'
@@ -6109,8 +6813,8 @@ LG:
6109
6813
  model: 'K30'
6110
6814
  - regex: 'LM-X410'
6111
6815
  model: 'LM-X410'
6112
- - regex: 'LM-V350'
6113
- model: 'V35'
6816
+ - regex: 'LM-X420N'
6817
+ model: 'X4 (2019)'
6114
6818
  - regex: 'LM-X510[KLS]'
6115
6819
  model: 'X5'
6116
6820
  - regex: 'LM-X625N1'
@@ -6123,10 +6827,14 @@ LG:
6123
6827
  model: 'V40 ThinQ'
6124
6828
  - regex: 'LM-V500N'
6125
6829
  model: 'V50'
6126
- - regex: '(?:LG-)?(?:RS987|H901)'
6830
+ - regex: '(?:LG-)?(?:RS987|H901|H96[0128]|VS990)'
6127
6831
  model: 'V10'
6128
6832
  - regex: '(?:LG-)?RS500'
6129
6833
  model: 'K8 4G'
6834
+ - regex: '(?:LG-)?VS500'
6835
+ model: 'K8 V'
6836
+ - regex: 'LM-X212\(G\)'
6837
+ model: 'K8 (2018)'
6130
6838
  - regex: '(?:LG-)?H91[058]'
6131
6839
  model: 'V20'
6132
6840
  - regex: '(?:LG-)?H990(?:DS|N|T)?'
@@ -6141,6 +6849,8 @@ LG:
6141
6849
  model: 'V30'
6142
6850
  - regex: '(?:LG-)?VS410PP'
6143
6851
  model: 'Optimus Zone'
6852
+ - regex: 'LM-V350[N]?'
6853
+ model: 'V35'
6144
6854
  - regex: '(?:LG-)?VS415PP'
6145
6855
  model: 'Optimus Zone 2'
6146
6856
  - regex: '(?:LG-)?VS425PP'
@@ -6181,6 +6891,8 @@ LG:
6181
6891
  model: 'Optimus 4X HD'
6182
6892
  - regex: '(?:LG-)?H340n?'
6183
6893
  model: 'Leon'
6894
+ - regex: '(?:LG-)?H422'
6895
+ model: 'Spirit'
6184
6896
  - regex: '(?:LG)?C660'
6185
6897
  model: 'Optimus Pro'
6186
6898
  - regex: 'LML211BL|LML212VL'
@@ -6201,6 +6913,12 @@ LG:
6201
6913
  - regex: 'LG-V521'
6202
6914
  model: 'G Pad X 8.0'
6203
6915
  device: 'tablet'
6916
+ - regex: 'VK810'
6917
+ model: 'G Pad 8.3 LTE'
6918
+ device: 'tablet'
6919
+ - regex: 'VK815'
6920
+ model: 'G Pad X 8.3'
6921
+ device: 'tablet'
6204
6922
 
6205
6923
  - regex: 'webOS.TV'
6206
6924
  device: 'tv'
@@ -6393,9 +7111,38 @@ Majestic:
6393
7111
 
6394
7112
  # Manta Multimedia
6395
7113
  Manta Multimedia:
6396
- regex: '((?<!/)MID713|MID(?:06[SN]|08[S]?|12|13|14|15|701|702|703|704|705(?:DC)?|706[AS]?|707|708|709|711|712|714|717|781|801|802|901|1001|1002|1003|1004(?: 3G)?|1005|1009|1010|7802|9701|9702))[);/ ]'
6397
- device: 'tablet'
6398
- model: '$1'
7114
+ regex: 'MSP950(1[45]|2[01])|MSP96017|((?<!/)MID713|MID(?:06[SN]|08[S]?|12|13|14|15|701|702|703|704|705(?:DC)?|706[AS]?|707|708|709|711|712|714|717|781|801|802|901|1001|1002|1003|1004(?: 3G)?|1005|1009|1010|7802|9701|9702))[);/ ]'
7115
+ device: 'smartphone'
7116
+ models:
7117
+ - regex: '((?<!/)MID713|MID(?:06[SN]|08[S]?|12|13|14|15|701|702|703|704|705(?:DC)?|706[AS]?|707|708|709|711|712|714|717|781|801|802|901|1001|1002|1003|1004(?: 3G)?|1005|1009|1010|7802|9701|9702))[);/ ]'
7118
+ device: 'tablet'
7119
+ model: '$1'
7120
+ - regex: 'MSP95014'
7121
+ model: 'Titano 3'
7122
+ - regex: 'MSP95015'
7123
+ model: 'Mezo 2'
7124
+ - regex: 'MSP95020'
7125
+ model: 'Rocky 2'
7126
+ - regex: 'MSP95021'
7127
+ model: 'Rocky 3 Pro'
7128
+ - regex: 'MSP96017'
7129
+ model: 'Forto 2'
7130
+
7131
+ # Masstel
7132
+ Masstel:
7133
+ regex: 'Masstel'
7134
+ device: 'smartphone'
7135
+ models:
7136
+ - regex: 'Masstel[_ ](Juno[_ ]Q3|X9|N4[56]0|N5[2458]0|N536|M05|M1[29]0|M1[125]|M250|M25)[);/ ]'
7137
+ model: '$1'
7138
+ - regex: 'Masstel[_ ]\((M18)\)'
7139
+ model: '$1'
7140
+ - regex: 'Masstel_Tab7LTE[);/ ]'
7141
+ model: 'Tab 7 LTE'
7142
+ device: 'tablet'
7143
+ - regex: 'Masstel Tab (840|700i)[);/ ]'
7144
+ model: 'Tab $1'
7145
+ device: 'tablet'
6399
7146
 
6400
7147
  # Maxwest
6401
7148
  Maxwest:
@@ -6521,7 +7268,7 @@ Mediacom:
6521
7268
 
6522
7269
  # Medion
6523
7270
  Medion:
6524
- regex: 'Medion|(?:MD_)?LIFETAB|X5001[);/ ]|[SPX]10[0-9]{2}X[);/ ]'
7271
+ regex: 'Medion|(?:MD_)?LIFETAB|X5001[);/ ]|([SPX]10[0-9]{2}X|E10[45]1X)[);/ ]'
6525
7272
  device: 'smartphone'
6526
7273
  models:
6527
7274
  - regex: '(?:MD_)?LIFETAB_([a-z0-9]+)'
@@ -6529,6 +7276,9 @@ Medion:
6529
7276
  model: 'Lifetab $1'
6530
7277
  - regex: 'X5001'
6531
7278
  model: 'Life X5001'
7279
+ - regex: '(E10[45]1X)[);/ ]'
7280
+ device: 'tablet'
7281
+ model: '$1'
6532
7282
  - regex: '([SPX]10[0-9]{2}X)[);/ ]'
6533
7283
  model: 'Lifetab $1'
6534
7284
  device: 'tablet'
@@ -6597,6 +7347,28 @@ Meizu:
6597
7347
  - regex: 'MZ-([^/;]+) Build'
6598
7348
  model: '$1'
6599
7349
 
7350
+ # Meitu
7351
+ Meitu:
7352
+ regex: '(Meitu[2]?|MP1503|MP1512|MP160[23]|MP170[19])[ ;/)]'
7353
+ device: 'smartphone'
7354
+ models:
7355
+ - regex: 'MP1503[ ;/)]'
7356
+ model: 'M6'
7357
+ - regex: 'MP1512[ ;/)]'
7358
+ model: 'M6s'
7359
+ - regex: 'MP1602[ ;/)]'
7360
+ model: 'T8'
7361
+ - regex: 'MP1701[ ;/)]'
7362
+ model: 'T8s'
7363
+ - regex: 'MP1603[ ;/)]'
7364
+ model: 'M8'
7365
+ - regex: 'MP1709[ ;/)]'
7366
+ model: 'M8s'
7367
+ - regex: 'Meitu2[ ;/)]'
7368
+ model: '2'
7369
+ - regex: 'Meitu (Kiss|M4)[ ;/)]'
7370
+ model: '$1'
7371
+
6600
7372
  # Memup
6601
7373
  Memup:
6602
7374
  regex: 'SlidePad ?([^;/]*) Build|SPNG?[0-9]{2,4}[a-z]{0,2}[ ;/)]|SP704CE?'
@@ -6700,6 +7472,12 @@ Mobiola:
6700
7472
  - regex: 'Wave5'
6701
7473
  model: 'Wave 5'
6702
7474
 
7475
+ # Mobicel
7476
+ Mobicel:
7477
+ regex: 'Mobicel_(R1)'
7478
+ device: 'smartphone'
7479
+ model: '$1'
7480
+
6703
7481
  # Mobiistar
6704
7482
  Mobiistar:
6705
7483
  regex: 'Mobiistar|Zumbo_|PRIME X MAX'
@@ -6719,6 +7497,8 @@ Mobiistar:
6719
7497
  model: 'Lai Zumbo J (2017)'
6720
7498
  - regex: 'Mobiistar_Zumbo_J2'
6721
7499
  model: 'Lai Zumbo J2'
7500
+ - regex: 'Mobiistar[_ ]Zumbo[_ ]S2'
7501
+ model: 'Zumbo S2'
6722
7502
  - regex: 'mobiistar ZUMBO Power'
6723
7503
  model: 'Zumbo Power'
6724
7504
  - regex: 'mobiistar[ _]LAI[ _]YUNA[ _]([1XCS])'
@@ -6783,6 +7563,18 @@ Mobistel:
6783
7563
  device: 'smartphone'
6784
7564
  model: '$1'
6785
7565
 
7566
+ # Mecool
7567
+ Mecool:
7568
+ regex: '(KM9PRO|BB2 PRO|KII PRO)[);/ ]'
7569
+ device: 'tv'
7570
+ models:
7571
+ - regex: 'KM9PRO'
7572
+ model: 'KM9 Pro'
7573
+ - regex: 'BB2 PRO'
7574
+ model: 'BB2 Pro'
7575
+ - regex: 'KII PRO'
7576
+ model: 'KII Pro'
7577
+
6786
7578
  # Modecom
6787
7579
  Modecom:
6788
7580
  regex: 'Modecom|Free(?:Way )?Tab|xino z[\d]+ x[\d]+'
@@ -6813,7 +7605,7 @@ Mofut:
6813
7605
 
6814
7606
  # motorola
6815
7607
  Motorola:
6816
- regex: 'MOT|(?<!AN)DROID ?(?:Build|[a-z0-9]+)|portalmmm/2.0 (?:E378i|L6|L7|v3)|XOOM [^;/]*Build|XT1021|(?:XT|MZ|MB|ME)[0-9]{3,4}[a-z]?(?:\(Defy\)|-0[1-5])?(?: Build|\))'
7608
+ regex: 'MOT(?!TO)|(?<!AN)DROID ?(?:Build|[a-z0-9]+)|portalmmm/2.0 (?:E378i|L6|L7|v3)|XOOM [^;/]*Build|XT1021|XT180[3-5]|(?:XT|MZ|MB|ME)[0-9]{3,4}[a-z]?(?:\(Defy\)|-0[1-5])?(?: Build|\))'
6817
7609
  device: 'smartphone'
6818
7610
  models:
6819
7611
  # Explicit feature phone models
@@ -6898,6 +7690,12 @@ Motorola:
6898
7690
  model: 'Droid Turbo'
6899
7691
  - regex: '(?:MOT-|Motorola-)?XT10(?:28|3[1234]|68|69)'
6900
7692
  model: 'Moto G'
7693
+ - regex: '(?:MOT-|Motorola-)?XT180[3-5]'
7694
+ model: 'Moto G5s Plus'
7695
+ - regex: '(?:MOT-|Motorola-)?XT168[57]'
7696
+ model: 'Moto G5 Plus'
7697
+ - regex: '(?:MOT-|Motorola-)?XT1670' #XT1671 XT1677
7698
+ model: 'Moto G5'
6901
7699
  - regex: '(?:MOT-|Motorola-)?XT10(?:49|5[23568]|60|9[23457])'
6902
7700
  model: 'Moto X'
6903
7701
  - regex: '(?:MOT-|Motorola-)?XT1562'
@@ -7039,7 +7837,7 @@ Navon:
7039
7837
 
7040
7838
  # NOA
7041
7839
  NOA:
7042
- regex: 'NOA[ _]|HummerLE'
7840
+ regex: 'NOA[ _]|HummerLE|NextSE'
7043
7841
  device: 'smartphone'
7044
7842
  models:
7045
7843
  - regex: 'NOA[_ ]CORE[_ ]FORTE'
@@ -7050,6 +7848,8 @@ NOA:
7050
7848
  model: 'Hummer Lite'
7051
7849
  - regex: 'NOA[_ ]MOVEse'
7052
7850
  model: 'Move SE'
7851
+ - regex: 'NextSE'
7852
+ model: 'Next SE'
7053
7853
  - regex: 'NOA[_ ]NEXT'
7054
7854
  model: 'Next'
7055
7855
  - regex: 'NOA[_ ]VISION[_ ]H3SE'
@@ -7069,6 +7869,11 @@ NOA:
7069
7869
  - regex: 'NOA[_ ]([^;)/ ]+)'
7070
7870
  model: '$1'
7071
7871
 
7872
+ Nobby:
7873
+ regex: 'Nobby[ ]S500[;/) ]'
7874
+ device: 'smartphone'
7875
+ model: 'S500'
7876
+
7072
7877
  # nec
7073
7878
  NEC:
7074
7879
  regex: 'NEC[ _\-]|KGT/2\.0|portalmmm/1\.0 (?:DB|N)|(?:portalmmm|o2imode)/2.0[ ,]N'
@@ -7186,9 +7991,12 @@ Noblex:
7186
7991
 
7187
7992
  # Nomi
7188
7993
  Nomi:
7189
- regex: 'Nomi[ _-]'
7994
+ regex: 'Nomi[ _-]|C101010 Ultra2[;/) ]'
7190
7995
  device: 'smartphone'
7191
7996
  models:
7997
+ - regex: 'C101010 Ultra2'
7998
+ model: 'Ultra 2'
7999
+ device: 'tablet'
7192
8000
  - regex: 'Nomi[ _-]([^;/]+) Build'
7193
8001
  model: '$1'
7194
8002
  - regex: 'Nomi[ _-]([^;/)]+)[;/)]'
@@ -7445,19 +8253,23 @@ OnePlus:
7445
8253
 
7446
8254
  # oppo
7447
8255
  OPPO:
7448
- regex: '(?:OB-)?OPPO[ _]?([a-z0-9]+)|N1T|(?:X90[07][0679]|U707T?|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|A33f|A33fw|A37fw?|PAAM00|PAC[T|M]00|PBAM00)[);/ ]|R7kf|R7plusf|R7Plusm|A1601|CPH[0-9]{4}|PCAM10|PADM00|RMX18(0[1579]|11|3[13]|2[15]|[45]1|45)|CPH19(69|79|23|1[179])|RMX194[15]|PCCM00|PBAT00|PBCM30|PBEM00|PBFM00|PAFM00'
8256
+ regex: '(?:OB-)?OPPO[ _]?([a-z0-9]+)|N1T|(?:X90[07][0679]|U707T?|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|A33f|A33fw|A37fw?|PAAM00|PAC[T|M]00|PBAM00)[);/ ]|R7kf|R7plusf|R7Plusm|A1601|CPH[0-9]{4}|PCAM10|PADM00|PBBT00|PBBM[03]0|RMX18(0[1579]|11|3[13]|2[15]|[45]1|45)|CPH19(69|79|23|1[179])|RMX(1827|194[135]|19[01]1|1971)|PC[CD]M00|PBAT00|PBCM[13]0|PBE[MT]00|PBFM00|PAFM00'
7449
8257
  device: 'smartphone'
7450
8258
  models:
7451
8259
  - regex: '(?:OPPO[ _]?)?U707T?[);/ ]'
7452
8260
  model: 'Find Way S'
7453
8261
  - regex: '(?:OPPO[ _]?)?CPH1979[);/ ]'
7454
8262
  model: 'Reno Z'
8263
+ - regex: 'CPH1945'
8264
+ model: 'Reno2 Z'
7455
8265
  - regex: 'CPH1969'
7456
8266
  model: 'F11 Pro'
7457
8267
  - regex: 'CPH1911'
7458
8268
  model: 'F11'
7459
8269
  - regex: 'CPH1917'
7460
8270
  model: 'Reno'
8271
+ - regex: 'CPH1921'
8272
+ model: 'Reno 5G'
7461
8273
  - regex: 'PCCM00'
7462
8274
  model: 'Reno 10X'
7463
8275
  - regex: 'CPH1919'
@@ -7546,6 +8358,12 @@ OPPO:
7546
8358
  model: 'A3s'
7547
8359
  - regex: '(?:OPPO[ _]?)?(?:CPH1809|PBAT00)[);/ ]'
7548
8360
  model: 'A5'
8361
+ - regex: 'CPH1933'
8362
+ model: 'A5 (2020)'
8363
+ - regex: '(?:OPPO[ _]?)?CPH1938[);/ ]'
8364
+ model: 'A9 (EN)'
8365
+ - regex: 'CPH1937'
8366
+ model: 'A9 (2020)'
7549
8367
  - regex: '(?:OPPO[ _]?)?CPH18(19|21)[);/ ]'
7550
8368
  model: 'F7'
7551
8369
  - regex: '(?:OPPO[ _]?)?CPH1823[);/ ]'
@@ -7560,6 +8378,8 @@ OPPO:
7560
8378
  model: 'A3'
7561
8379
  - regex: '(?:OPPO[ _]?)?CPH1851[);/ ]'
7562
8380
  model: 'AX5'
8381
+ - regex: 'CPH1920'
8382
+ model: 'AX5s'
7563
8383
  - regex: '(?:OPPO[ _]?)?CPH1859[);/ ]'
7564
8384
  model: 'F7'
7565
8385
  - regex: '(?:OPPO[ _]?)?CPH1861[);/ ]'
@@ -7568,7 +8388,7 @@ OPPO:
7568
8388
  model: 'K1'
7569
8389
  - regex: 'RMX1811'
7570
8390
  model: 'RealMe C1'
7571
- - regex: 'RMX194[15]'
8391
+ - regex: 'RMX194[135]'
7572
8392
  model: 'RealMe C2'
7573
8393
  - regex: 'RMX1831'
7574
8394
  model: 'RealMe U1'
@@ -7576,9 +8396,9 @@ OPPO:
7576
8396
  model: 'Find X'
7577
8397
  - regex: '(?:OPPO[ _]?)?CPH1877[);/ ]'
7578
8398
  model: 'R17 Pro'
7579
- - regex: '(?:OPPO[ _]?)?(?:CPH1879|PBEM00)[);/ ]'
8399
+ - regex: '(?:OPPO[ _]?)?(?:CPH1879|PBE[MT]00)[);/ ]'
7580
8400
  model: 'R17'
7581
- - regex: '(?:OPPO[ _]?)?CPH1881[);/ ]'
8401
+ - regex: '(?:OPPO[ _]?)?(?:CPH1825|CPH1881)[);/ ]'
7582
8402
  model: 'F9'
7583
8403
  - regex: '(?:OPPO[ _]?)?CPH1893[);/ ]'
7584
8404
  model: 'R17 Neo'
@@ -7586,26 +8406,42 @@ OPPO:
7586
8406
  model: 'A7'
7587
8407
  - regex: '(?:OPPO[ _]?)?CPH1903[);/ ]'
7588
8408
  model: 'AX7'
7589
- - regex: '(?:OPPO[ _]?)?A37f(w)? Build'
8409
+ - regex: '(?:OPPO[ _]?)?A37f(w)?(?: Build|\))'
7590
8410
  model: 'A37f$1'
7591
8411
  - regex: '(?:OPPO[ _]?)?PADM00'
7592
8412
  model: 'A3'
7593
8413
  - regex: '(?:OPPO[ _]?)?PBAM00'
7594
8414
  model: 'A5'
7595
- - regex: '(?:OPPO[ _]?)?A1601 Build'
8415
+ - regex: '(?:OPPO[ _]?)?A1601[);/ ]'
7596
8416
  model: 'F1s'
7597
8417
  - regex: '(?:OPPO[ _]?)?R1011 Build'
7598
8418
  model: 'Joy Plus'
7599
- - regex: '(?:OPPO[ _]?)?(?:PAC[TM]00|PAAM00) Build'
8419
+ - regex: '(?:OPPO[ _]?)?(?:PAC[TM]00|PAAM00)[);/ ]'
7600
8420
  model: 'R15'
8421
+ - regex: 'PBCM10[);/ ]'
8422
+ model: 'R15x'
7601
8423
  - regex: 'RMX180[59]'
7602
8424
  model: 'Realme 2'
7603
8425
  - regex: 'RMX180[17]'
7604
8426
  model: 'Realme 2 Pro'
7605
8427
  - regex: 'RMX1833|RMX182[15]'
7606
8428
  model: 'Realme 3'
8429
+ - regex: 'RMX1827'
8430
+ model: 'Realme 3i'
7607
8431
  - regex: 'RMX1851'
7608
8432
  model: 'Realme 3 Pro'
8433
+ - regex: 'RMX1901'
8434
+ model: 'Realme X'
8435
+ - regex: 'RMX1911'
8436
+ model: 'Realme 5'
8437
+ - regex: 'RMX1971'
8438
+ model: 'Realme 5 Pro'
8439
+ - regex: '(PBBT00|PBBM00)[);/ ]'
8440
+ model: 'A7x'
8441
+ - regex: 'PCDM00[);/ ]'
8442
+ model: 'A7n'
8443
+ - regex: 'PBBM30[);/ ]'
8444
+ model: 'A3s'
7609
8445
  - regex: 'N1T?[);/ ]'
7610
8446
  model: 'N1T'
7611
8447
  device: 'phablet'
@@ -7633,7 +8469,7 @@ Opsson:
7633
8469
 
7634
8470
  # orange
7635
8471
  Orange:
7636
- regex: 'SPV[ \-]?([a-z0-9]+)|Orange[ _-]([^/;]+) Build|SC/IHD92|FunTab ([^/;]+) Build'
8472
+ regex: 'SPV[ \-]?([a-z0-9]+)|Orange[ _-](?!Tahiti-LS\))([^/;]+)( Build|\))(?<!Tahiti-LS\))|SC/IHD92|FunTab ([^/;]+) Build'
7637
8473
  device: 'smartphone'
7638
8474
  models:
7639
8475
  - regex: 'SC/IHD92'
@@ -7645,7 +8481,11 @@ Orange:
7645
8481
  - regex: 'FunTab ([^/;]+) Build'
7646
8482
  model: 'FunTab $1'
7647
8483
  device: 'tablet'
7648
- - regex: 'Orange[ _-]([^/;]+) Build'
8484
+ - regex: 'Orange[ _-](Rise)(3[12]|5[12])[ ;/)]'
8485
+ model: '$1 $2'
8486
+ - regex: 'Orange[ _-](Dive)72[ ;/)]'
8487
+ model: '$1 72'
8488
+ - regex: 'Orange[ _-](Daytona|Dive (30|7[13])|Dublin|Fova|Gova|Hi 4G|Hiro|Kivo|Monte Carlo|Neva 80|Neva play|Nura|Reyo|Rise[_ ](3[034]|40|5[34])|Rono|Roya|San Francisco|Tactile internet 2|Tado|Yomi|Yumo|Zali)[ ;/)]'
7649
8489
  model: '$1'
7650
8490
  - regex: 'SPV[ \-]?([a-z0-9]+)'
7651
8491
  model: 'SPV $1'
@@ -7806,7 +8646,7 @@ Pentagram:
7806
8646
 
7807
8647
  # philips
7808
8648
  Philips:
7809
- regex: 'Philips|AND1E[);/ ]|NETTV/|PI3210G|TLE821L'
8649
+ regex: 'Philips|AND1E[);/ ]|NETTV/|PI3210G|TLE(821L|722G)'
7810
8650
  device: 'smartphone'
7811
8651
  models:
7812
8652
  - regex: 'AND1E(?: TV)?[);/ ]'
@@ -7818,6 +8658,9 @@ Philips:
7818
8658
  - regex: '(TLE821L)[);/ ]'
7819
8659
  model: '$1 4G LTE'
7820
8660
  device: 'tablet'
8661
+ - regex: '(TLE722G)[);/ ]'
8662
+ model: '$1'
8663
+ device: 'tablet'
7821
8664
  - regex: 'Philips, BDP([0-9]{4})'
7822
8665
  model: 'Blu-ray Player (BDP$1)'
7823
8666
  device: 'tv'
@@ -7972,6 +8815,12 @@ Rokit:
7972
8815
  - regex: 'IO Pro'
7973
8816
  model: 'IO Pro'
7974
8817
 
8818
+ # Rombica
8819
+ Rombica:
8820
+ regex: 'SSQ-A0500[);/ ]'
8821
+ device: 'tv'
8822
+ model: 'Smart Stick 4K'
8823
+
7975
8824
  # Rover
7976
8825
  Rover:
7977
8826
  regex: 'Rover ([0-9]+)'
@@ -8012,7 +8861,7 @@ Siemens:
8012
8861
  model: '$1'
8013
8862
  - regex: 'SIE(?:MENS )?[\-]?([a-z0-9]+)'
8014
8863
  model: '$1'
8015
- - regex: '(S55|SL45i)'
8864
+ - regex: '(?:SIE-)?(S55|SL45i)'
8016
8865
  model: '$1'
8017
8866
  - regex: 'portalmmm/2.0 (SI[a-z0-9]+)'
8018
8867
  model: '$1'
@@ -8205,10 +9054,10 @@ Samsung:
8205
9054
  - regex: '(?:SAMSUNG-)?SM-T285'
8206
9055
  device: 'tablet'
8207
9056
  model: 'GALAXY Tab A 7.0" LTE'
8208
- - regex: '(?:SAMSUNG-)?SM-T350'
9057
+ - regex: '(?:SAMSUNG-)?SM-T3[58]0'
8209
9058
  device: 'tablet'
8210
9059
  model: 'GALAXY Tab A 8.0" WiFi'
8211
- - regex: '(?:SAMSUNG-)?SM-(?:P350|T3[58]5(?:Y)?)'
9060
+ - regex: '(?:SAMSUNG-)?SM-(?:P350|T3[58]5)'
8212
9061
  device: 'tablet'
8213
9062
  model: 'GALAXY Tab A 8.0" LTE'
8214
9063
  - regex: '(?:SAMSUNG-)?SM-T295'
@@ -8241,6 +9090,12 @@ Samsung:
8241
9090
  - regex: '(?:SAMSUNG-)?SM-T39[57]'
8242
9091
  device: 'tablet'
8243
9092
  model: 'GALAXY Tab Active 2'
9093
+ - regex: '(?:SAMSUNG-)?SM-M305'
9094
+ device: 'tablet'
9095
+ model: 'GALAXY M30'
9096
+ - regex: '(?:SAMSUNG-)?SM-M405'
9097
+ device: 'tablet'
9098
+ model: 'GALAXY M40'
8244
9099
 
8245
9100
  # explicit smartphone models
8246
9101
  - regex: '(?:SAMSUNG-)?SM-G850[AMSWY]'
@@ -8509,6 +9364,8 @@ Samsung:
8509
9364
  model: 'GALAXY A9 Pro'
8510
9365
  - regex: '(?:SAMSUNG-)?SM-A105[FGM]'
8511
9366
  model: 'GALAXY A10'
9367
+ - regex: '(?:SAMSUNG-)?SM-A107[FM]'
9368
+ model: 'GALAXY A10s'
8512
9369
  - regex: '(?:SAMSUNG-)?SM-A205[FG]'
8513
9370
  model: 'GALAXY A20'
8514
9371
  - regex: '(?:SAMSUNG-)?SM-A202[FG]'
@@ -8517,6 +9374,8 @@ Samsung:
8517
9374
  model: 'GALAXY A30'
8518
9375
  - regex: '(?:SAMSUNG-)?SM-A405FN'
8519
9376
  model: 'GALAXY A40'
9377
+ - regex: '(?:SAMSUNG-)?SM-A3051'
9378
+ model: 'GALAXY A40s'
8520
9379
  - regex: '(?:SAMSUNG-)?SM-A505(?:FN|[FG])'
8521
9380
  model: 'GALAXY A50'
8522
9381
  - regex: '(?:SAMSUNG-)?SM-A705(?:FN|[FG])'
@@ -8537,6 +9396,10 @@ Samsung:
8537
9396
  model: 'GALAXY J1 Ace'
8538
9397
  - regex: '(?:SAMSUNG-)?SM-J200[FGHY]'
8539
9398
  model: 'GALAXY J2'
9399
+ - regex: '(?:SAMSUNG-)?SM-J260AZ'
9400
+ model: 'GALAXY J2 Pure'
9401
+ - regex: '(?:SAMSUNG-)?SM-J260([AFGM]|T1)'
9402
+ model: 'GALAXY J2 Core'
8540
9403
  - regex: '(?:SAMSUNG-)?SM-J(?:210F|250[FM])'
8541
9404
  model: 'GALAXY J2 Pro'
8542
9405
  - regex: '(?:SAMSUNG-)?SM-J320(?:FN|[AFGHMNPV])'
@@ -8561,7 +9424,7 @@ Samsung:
8561
9424
  model: 'GALAXY J6+'
8562
9425
  - regex: '(?:SAMSUNG-)?SM-J410F'
8563
9426
  model: 'GALAXY J4 Core'
8564
- - regex: '(?:SAMSUNG-)?SM-J415FN'
9427
+ - regex: '(?:SAMSUNG-)?SM-J415(?:F|FN)'
8565
9428
  model: 'GALAXY J4+'
8566
9429
  - regex: '(?:SAMSUNG-)?SM-J7[01]0(?:8|F|FN|H|K|M|MN)'
8567
9430
  model: 'GALAXY J7'
@@ -8599,6 +9462,8 @@ Samsung:
8599
9462
  model: 'GALAXY M10'
8600
9463
  - regex: '(?:SAMSUNG-)?SM-M205[FG]'
8601
9464
  model: 'GALAXY M20'
9465
+ - regex: '(?:SAMSUNG-)?SM-M307(F|FN)'
9466
+ model: 'GALAXY M30s'
8602
9467
  - regex: '(?:SAMSUNG-)?SM-G850F'
8603
9468
  model: 'GALAXY Alpha'
8604
9469
  - regex: '(?:SAMSUNG-)?SM-G910S'
@@ -8711,7 +9576,7 @@ Samsung:
8711
9576
  - regex: '(?:SAMSUNG-)?GT-I920[05]'
8712
9577
  model: 'GALAXY Mega 6.3'
8713
9578
  device: 'phablet'
8714
- - regex: '(?:SAMSUNG-)?SM-N930F|SCV34'
9579
+ - regex: '(?:SAMSUNG-)?(?:SM-N930F|SCV34)'
8715
9580
  model: 'GALAXY Note 7'
8716
9581
  device: 'phablet'
8717
9582
  - regex: '(?:SAMSUNG[- ])?SM-N950|SCV37'
@@ -8720,6 +9585,12 @@ Samsung:
8720
9585
  - regex: '(?:SAMSUNG[- ])?SM-N960'
8721
9586
  model: 'GALAXY Note 9'
8722
9587
  device: 'phablet'
9588
+ - regex: '(?:SAMSUNG[- ])?SM-N970(?:0|8|9|D|F|J|K|L|S|U1|U|W8|X)'
9589
+ model: 'GALAXY Note 10'
9590
+ device: 'phablet'
9591
+ - regex: '(?:SAMSUNG[- ])?(?:SM-N975(?:0|F|U|U1|W|X|Xu)|SM-N976[BV])'
9592
+ model: 'GALAXY Note 10+'
9593
+ device: 'phablet'
8723
9594
 
8724
9595
  # explicit feature phones
8725
9596
  - regex: '(?:SAMSUNG-)?GT-E2152'
@@ -9232,9 +10103,14 @@ Prestigio:
9232
10103
  models:
9233
10104
  - regex: 'PMT3277_3G'
9234
10105
  model: 'MultiPad Ranger 7.0 3G'
10106
+ - regex: 'PMT3201_4G'
10107
+ model: 'Grace 4G'
9235
10108
  - regex: 'PMT3287_3G'
9236
10109
  model: 'MultiPad Ranger 8.0 3G'
9237
-
10110
+ - regex: 'PSP7546DUO([ _][A-Z]{2})?'
10111
+ model: 'X Pro'
10112
+ - regex: 'PSP7610DUO([ _][A-Z]{2})?'
10113
+ model: 'S Max'
9238
10114
  - regex: '(PM[PT][0-9]+[a-z0-9_]+)[);/ ]'
9239
10115
  model: '$1'
9240
10116
  - regex: '((?:PAP|PSP)[0-9]+[a-z0-9_]+(?: DUO)?)[);/ ]'
@@ -9259,13 +10135,24 @@ Sanyo:
9259
10135
  - regex: 'MobilePhone ([a-z0-9\-]+)'
9260
10136
  model: '$1'
9261
10137
 
9262
- # Qilive
10138
+ # Qilive (Auchan)
9263
10139
  Qilive:
9264
- regex: 'Qilive [0-9][^;/]*|Q8S55IN4G2'
10140
+ regex: 'Qilive [0-9][^;/]*|Q(8S55IN4G2|10S5[37]IN4G|10S5IN4GR|10S6IN4G|6T7IN)'
9265
10141
  device: 'smartphone'
9266
10142
  models:
9267
10143
  - regex: 'Q8S55IN4G2'
9268
- model: 'Q8S55IN4G2'
10144
+ model: 'Q8 5.5" 4G'
10145
+ - regex: 'Q10S53IN4G'
10146
+ model: 'Q10 5.3" 4G'
10147
+ - regex: 'Q10S57IN4G'
10148
+ model: 'Q10 5.7" 4G'
10149
+ - regex: 'Q10S5IN4GR'
10150
+ model: 'Q10 5.0" 4G'
10151
+ - regex: 'Q10S6IN4G'
10152
+ model: 'Q10 6.0" 4G'
10153
+ - regex: 'Q6T7IN'
10154
+ model: 'Q6'
10155
+ device: 'tablet'
9269
10156
  - regex: 'Qilive ([0-5][^;/]*) Build'
9270
10157
  model: '$1'
9271
10158
  - regex: 'Qilive ([0-5][^;/]*)/'
@@ -9453,7 +10340,7 @@ Star:
9453
10340
 
9454
10341
  # Kindle
9455
10342
  Amazon:
9456
- regex: 'KF(?:OT|TT|JWI|JWA|[DFS]OWI|A[PRSU]WI|T[BH]WI|SAW[IA]|GIWI|SUWI)[);/ ]|Kindle|Silk/\d+\.\d+|Amazon (?:Tate|Jem)|AFT[BMST]|SD4930UR'
10343
+ regex: 'KF(?:OT|TT|JWI|JWA|[DFS]OWI|A[PRSU]WI|T[BH]WI|SAW[IA]|GIWI|SUWI)[);/ ]|Kindle|Silk/\d+\.\d+|Amazon (?:Tate|Jem)|AFT[BMST]|SD4930UR|AEO(BC|KN)[);/ ]'
9457
10344
  device: 'tablet'
9458
10345
  models:
9459
10346
  - regex: 'AFTB'
@@ -9508,10 +10395,26 @@ Amazon:
9508
10395
  - regex: 'Kindle'
9509
10396
  model: 'Kindle'
9510
10397
 
10398
+ - regex: 'AEO(BC|KN)[);/ ]'
10399
+ model: 'Echo'
10400
+ device: 'smart speaker'
10401
+
9511
10402
  # Symphony
9512
10403
  Symphony:
9513
- regex: 'SYMPHONY[ \_]([a-z0-9]+)'
10404
+ regex: 'SYMPHONY[ \_]([a-z0-9]+)|roar (V20|E80)'
9514
10405
  device: 'smartphone'
10406
+ models:
10407
+ - regex: 'roar V20'
10408
+ model: 'Roar V20'
10409
+ - regex: 'roar E80'
10410
+ model: 'Roar E80'
10411
+ - regex: 'SYMPHONY[ \_]([a-z0-9]+)'
10412
+ model: '$1'
10413
+
10414
+ # Syrox
10415
+ Syrox:
10416
+ regex: '(SYX-(?:T70[04]|T10[12]))[;)/ ]'
10417
+ device: 'tablet'
9515
10418
  model: '$1'
9516
10419
 
9517
10420
  # Qtek
@@ -9548,14 +10451,14 @@ T-Mobile:
9548
10451
 
9549
10452
  # Tcl
9550
10453
  TCL:
9551
- regex: 'TCL[ -][a-z0-9]+|(TCL[_ -][^;/]+|7040N) Build|TCLGalaG60|A502DL'
10454
+ regex: 'TCL[_ -][a-z0-9]+|(TCL[_ -][^;/]+|7040N) Build|TCLGalaG60|A502DL'
9552
10455
  device: 'smartphone'
9553
10456
  models:
9554
10457
  - regex: 'TCLGalaG60'
9555
10458
  model: 'Gala G60'
9556
10459
  - regex: 'TCL[_ -]([^;/]+) Build'
9557
10460
  model: '$1'
9558
- - regex: 'TCL[ -]([a-z0-9]+)'
10461
+ - regex: 'TCL[_ -]([a-z0-9]+)'
9559
10462
  model: '$1'
9560
10463
  - regex: '(7040N)'
9561
10464
  model: '$1'
@@ -9574,13 +10477,34 @@ Teclast:
9574
10477
 
9575
10478
  # Tecno Mobile
9576
10479
  Tecno Mobile:
9577
- regex: 'Tecno|Phantom6|Phantom6-Plus'
10480
+ regex: 'Tecno|Phantom6|Phantom6-Plus|DP7C Pro-SGA1'
9578
10481
  device: 'smartphone'
9579
10482
  models:
9580
10483
  - regex: 'Phantom6-Plus'
9581
10484
  model: 'Phantom 6 Plus'
9582
10485
  - regex: 'Phantom6'
9583
10486
  model: 'Phantom 6'
10487
+ - regex: 'TECNO[ _]ID6[);/ ]'
10488
+ model: 'Camon iClick 2'
10489
+ - regex: 'Tecno[ _]7C[);/ ]'
10490
+ model: 'DroidPad 7C'
10491
+ device: 'tablet'
10492
+ - regex: 'DP7C Pro-SGA1[);/ ]'
10493
+ model: 'DroidPad 7C Pro'
10494
+ device: 'tablet'
10495
+ - regex: 'TECNO[ _]DP10A Pro[);/ ]'
10496
+ model: 'DroidPad 10A Pro'
10497
+ device: 'tablet'
10498
+ - regex: 'TECNO[ _]P904[);/ ]'
10499
+ model: 'DroidPad 10D 4G'
10500
+ device: 'tablet'
10501
+ - regex: 'Tecno[ _]CB7[j]?'
10502
+ model: 'Camon i4'
10503
+ - regex: 'Tecno[ _]DP8D[);/ ]'
10504
+ model: 'DroidPad 8D'
10505
+ device: 'tablet'
10506
+ - regex: 'Tecno[ _]LB8'
10507
+ model: 'Pouvoir 3 Plus'
9584
10508
  - regex: 'Tecno ([^;/]+) Build'
9585
10509
  model: '$1'
9586
10510
  - regex: 'Tecno[ _]?([a-z0-9_\-]+)'
@@ -9613,7 +10537,7 @@ Tesco:
9613
10537
 
9614
10538
  # teXet
9615
10539
  teXet:
9616
- regex: 'Texet|(NaviPad [^/;]*) Build|TM-(?:1046|1058|1057|1067|3000|3200R|3500|4003|4071|450[34]|451[30]|4377|4082R|550[83]|5010|5017|5075|5[23]77|6003|6906|702[13]|7055HD|709[69]|9747BT|9758|9751HD|9767|5513|520[410]|5505|507[13]|5581|7859|8044|9748[ _]3G|9720|7047HD[ _]3G|9757|9740|4982|4515|4083|500[3567]|5571|3204R|5016|8043|7047HD[ _]3G|8041HD|8066|705[23]|7041|8041HD|8051|8048|974[96]|973[78]W|974[10]|9743W|9750HD|7043XD|7049|7887|7037W|702[46])|TB-(771A|711A)|X-Force[\(-]?TM-5009\)?|X-Plus[\(-]?TM-5577\)?|X-pad (?:AIR 8|iX 7) 3G'
10540
+ regex: 'Texet|(NaviPad [^/;]*) Build|TM-(?:1046|1058|1057|1067|3000|3200R|3500|4003|4071|450[34]|451[30]|4377|4082R|550[83]|5010|5017|507[4-7]|5[23]77|6003|6906|702[13]|7055HD|709[69]|9747BT|9758|9751HD|9767|5513|520[410]|5505|507[13]|5581|7859|8044|9748[ _]3G|9720|7047HD[ _]3G|9757|9740|4982|4515|4083|500[3567]|5571|3204R|5016|8043|7047HD[ _]3G|8041HD|8066|705[23]|7041|8041HD|8051|8048|974[96]|973[78]W|974[10]|9743W|9750HD|7043XD|7049|7887|7037W|702[46])|TB-(771A|711A)|X-Force[\(-]?TM-5009\)?|X-Plus[\(-]?TM-5577\)?|X-pad (?:AIR 8|iX 7) 3G'
9617
10541
  device: 'tablet'
9618
10542
  models:
9619
10543
  - regex: 'TM-9749'
@@ -9653,7 +10577,7 @@ teXet:
9653
10577
  - regex: 'TM-4503'
9654
10578
  device: 'smartphone'
9655
10579
  model: 'X-Quad'
9656
- - regex: '(TM-(?:3000|3200R|4003|4083|4377|4504|451[30]|500[35]|5[23]77|5571|3204R|520[04]|5581|5505|5075|507[13]|5017|6003|5513))'
10580
+ - regex: '(TM-(?:3000|3200R|4003|4083|4377|4504|451[30]|500[35]|5[23]77|5571|3204R|520[04]|5581|5505|507[13]|5017|507[4-7]|6003|5513))'
9657
10581
  device: 'smartphone'
9658
10582
  model: '$1'
9659
10583
  - regex: 'TM-5006'
@@ -9771,6 +10695,16 @@ Timovi:
9771
10695
  - regex: 'Infinit_Lite_2'
9772
10696
  model: 'Infinit Lite 2'
9773
10697
 
10698
+ # Tooky
10699
+ Tooky:
10700
+ regex: 'TOOKY'
10701
+ device: 'smartphone'
10702
+ models:
10703
+ - regex: 'TOOKY (A19|W1|T8[368]|T1982)[);/ ]'
10704
+ model: '$1'
10705
+ - regex: 'TOOKY A9PLUS[);/ ]'
10706
+ model: 'A9 Plus'
10707
+
9774
10708
  # Tolino
9775
10709
  Tolino:
9776
10710
  regex: 'Tolino Tab ([^/;]+) Build'
@@ -9902,9 +10836,9 @@ Uhappy:
9902
10836
 
9903
10837
  # Unimax
9904
10838
  Unimax:
9905
- regex: 'U(67[013]|680)C'
10839
+ regex: 'U((?:67[013]|680)C|(?:452|504)TL|683CL)[);/ ]'
9906
10840
  device: 'smartphone'
9907
- model: 'U$1C'
10841
+ model: 'U$1'
9908
10842
 
9909
10843
  # Unowhy
9910
10844
  Unowhy:
@@ -10009,6 +10943,11 @@ Unonu:
10009
10943
  - regex: 'Unonu[ _-]?([^;/)]+)[);/ ]'
10010
10944
  model: '$1'
10011
10945
 
10946
+ # UTOK
10947
+ UTOK:
10948
+ regex: 'UTOK (45[01]D)'
10949
+ device: 'smartphone'
10950
+ model: '$1'
10012
10951
 
10013
10952
  # Vastking
10014
10953
  Vastking:
@@ -10045,9 +10984,15 @@ Vitelcom:
10045
10984
  - regex: 'portalmmm/[12].0 (TSM[a-z0-9 ]+)'
10046
10985
  model: '$1'
10047
10986
 
10987
+ # Fengxiang
10988
+ Fengxiang:
10989
+ regex: '(vKB011B|vKB004L)'
10990
+ device: 'tablet'
10991
+ model: '$1'
10992
+
10048
10993
  # VK Mobile
10049
10994
  VK Mobile:
10050
- regex: 'VK(?!share)[\-]?([a-z0-9 ]+)[ ;\)/]'
10995
+ regex: 'VK(?!share)[\-]?([a-z0-9 ]+)([;\)/ ]| Build)'
10051
10996
  device: 'feature phone'
10052
10997
  model: '$1'
10053
10998
 
@@ -10079,6 +11024,12 @@ Vertu:
10079
11024
  device: 'feature phone'
10080
11025
  model: '$1'
10081
11026
 
11027
+ # Venso mobile
11028
+ Venso:
11029
+ regex: '(CX-508)[/;) ]'
11030
+ device: 'smartphone'
11031
+ model: '$1'
11032
+
10082
11033
  # Verizon
10083
11034
  Verizon:
10084
11035
  regex: 'QTA(SUN[12]|XIA1|QZ3|QZ3KID|IR7)|QMV7B'
@@ -10175,8 +11126,12 @@ Vodafone:
10175
11126
  model: 'Smart X9'
10176
11127
  - regex: 'VFD 610'
10177
11128
  model: 'Smart N8'
11129
+ - regex: 'Smart ultra 6'
11130
+ model: 'Smart Ultra 6'
10178
11131
  - regex: 'VFD 700'
10179
11132
  model: 'Smart Ultra 7'
11133
+ - regex: 'VFD 720'
11134
+ model: 'Smart N9'
10180
11135
  - regex: 'VFD 900'
10181
11136
  model: 'Smart Platinum 7'
10182
11137
  - regex: 'Vodafone[ _]875[);/ ]'
@@ -10210,6 +11165,9 @@ Vodafone:
10210
11165
  - regex: 'Smart ?Tab ?4G'
10211
11166
  device: 'tablet'
10212
11167
  model: 'Smart Tab 4G' # Alcatel
11168
+ - regex: 'Smart ?Tab ?4'
11169
+ model: 'Smart Tab 4' # ZTE
11170
+ device: 'tablet'
10213
11171
  - regex: 'SmartTab7[);/ -]'
10214
11172
  model: 'Smart Tab 7' # ZTE
10215
11173
  device: 'tablet'
@@ -10238,7 +11196,7 @@ Vodafone:
10238
11196
 
10239
11197
  # Vonino
10240
11198
  Vonino:
10241
- regex: 'Vonino|Zun[ _]X[OS]?|Xylo[ _][XSP]|Volt[ _][XS]|Gyga[ _](?:X|S|QS|XS)|Pluri[ _](?:[BCMQ]7|[CQ]8)|Magnet[ _]M[19]|Jax[ _](?:Q|QS|S|X|Mini)|Navo_QS|Xavy_T7'
11199
+ regex: 'Vonino|Epic (?:E8|P7)|Gyga[ _](?:X|S|QS|XS)|Jax[ _](?:Q|QS|S|X|Mini)|Magnet[ _]M[19]|Navo_QS|Onyx_(QS|Z)|Orin_QS|Pluri[ _](?:[BCMQ]7|[CQ]8)|Sirius_QS|Volt[ _][XS]|Xavy_T7|Xylo[ _][XSP]|Zun[ _]X[OS]?'
10242
11200
  device: 'smartphone'
10243
11201
  models:
10244
11202
  - regex: 'Zun[ _]XO'
@@ -10269,6 +11227,9 @@ Vonino:
10269
11227
  model: 'Jax $1'
10270
11228
  - regex: 'Jax[ _]Mini'
10271
11229
  model: 'Jax Mini'
11230
+ - regex: 'Epic (E8|P7)'
11231
+ model: 'Epic $1'
11232
+ device: 'tablet'
10272
11233
  - regex: 'Pluri[ _](B|C|M|Q)7'
10273
11234
  model: 'Pluri $17'
10274
11235
  device: 'tablet'
@@ -10281,6 +11242,15 @@ Vonino:
10281
11242
  - regex: 'Navo_QS'
10282
11243
  model: 'Navo QS'
10283
11244
  device: 'tablet'
11245
+ - regex: 'Onyx_(QS|Z)'
11246
+ model: 'Onyx $1'
11247
+ device: 'tablet'
11248
+ - regex: 'Orin_QS'
11249
+ model: 'Orin QS'
11250
+ device: 'tablet'
11251
+ - regex: 'Sirius_QS'
11252
+ model: 'Sirius QS'
11253
+ device: 'tablet'
10284
11254
  - regex: 'Xavy_T7'
10285
11255
  model: 'Xavy T7'
10286
11256
  device: 'tablet'
@@ -10582,13 +11552,13 @@ X-View:
10582
11552
 
10583
11553
  # Xiaomi
10584
11554
  Xiaomi:
10585
- regex: 'Xiaomi(?!/MiuiBrowser)|(?:MI [a-z0-9]+|Mi-4c|MI-One[ _]?[a-z0-9]+|MIX(?: 2S?)?)[);/ ]|HM (?:[^/;]+) (?:Build|MIUI)|(?:2014501|2014011|201481[138]|201302[23]|2013061) Build|Redmi|POCOPHONE|SKR-[AH]0|SKW-H0'
11555
+ regex: 'Xiaomi(?!/MiuiBrowser)|(?:MI [a-z0-9]+|Mi-4c|MI-One[ _]?[a-z0-9]+|MIX(?: 2S?)?)[);/ ]|HM (?:[^/;]+) (?:Build|MIUI)|(?:2014501|2014011|201481[12378]|201302[23]|2013061) Build|Redmi|POCOPHONE|SKR-[AH]0|SKW-[AH]0|POCO F1'
10586
11556
  device: 'smartphone'
10587
11557
  models:
10588
11558
  # specific smartphone models
10589
11559
  - regex: 'SKR-[AH]0'
10590
11560
  model: 'Black Shark'
10591
- - regex: 'SKW-H0'
11561
+ - regex: 'SKW-[AH]0'
10592
11562
  model: 'Black Shark 2'
10593
11563
  - regex: 'Xiaomi_2014501|2014501 Build'
10594
11564
  model: 'Hongmi 4G'
@@ -10596,27 +11566,86 @@ Xiaomi:
10596
11566
  model: 'Hongmi 1S'
10597
11567
  - regex: 'Xiaomi_201302[23]|201302[23] Build'
10598
11568
  model: 'Hongmi'
10599
- - regex: 'Xiaomi_201481[138]|201481[138] Build'
11569
+ - regex: 'Xiaomi_2014818|2014818 Build'
11570
+ model: 'Hongmi 2 3G'
11571
+ - regex: 'Xiaomi_2014817|2014817 Build'
10600
11572
  model: 'Hongmi 2'
11573
+ - regex: 'Xiaomi_201481[123]|201481[123] Build'
11574
+ model: 'Hongmi 2 4G'
11575
+ - regex: 'Mi 9 SE[);/ ]'
11576
+ model: 'MI 9 SE'
11577
+ - regex: 'MI 8 Lite[);/ ]'
11578
+ model: 'MI 8 Lite'
11579
+ - regex: 'MI 5s Plus[);/ ]'
11580
+ model: 'MI 5s Plus'
10601
11581
  - regex: 'Xiaomi_2013061|2013061 Build'
10602
11582
  model: 'MI 3'
10603
11583
  - regex: 'Mi-4c[);/ ]'
10604
11584
  model: 'MI 4C'
11585
+ - regex: 'MI MAX 3[);/ ]'
11586
+ model: 'MI MAX 3'
11587
+ - regex: 'MI MAX 2[);/ ]'
11588
+ model: 'MI MAX 2'
11589
+ - regex: 'Mi A2 Lite[);/ ]'
11590
+ model: 'MI A2 Lite'
11591
+ - regex: 'MIX 3[);/ ]'
11592
+ model: 'MI MIX 3'
10605
11593
  - regex: 'MIX 2S[);/ ]'
10606
11594
  model: 'MI MIX 2S'
10607
11595
  - regex: 'MIX 2[);/ ]'
10608
11596
  model: 'MI MIX 2'
10609
11597
  - regex: 'MIX[);/ ]'
10610
11598
  model: 'MI MIX'
10611
- - regex: 'POCOPHONE F1'
11599
+ - regex: 'POCOPHONE F1|POCO F1'
10612
11600
  model: 'Pocophone F1'
11601
+ - regex: 'Redmi 5 Plus'
11602
+ model: 'Redmi 5 Plus'
11603
+ - regex: 'HM 2A[);/ ]'
11604
+ model: 'Redmi 2A'
11605
+ - regex: 'HM 1S[CW]?[);/ ]'
11606
+ model: 'Redmi 1S'
11607
+ - regex: 'HM 1[);/ ]'
11608
+ model: 'Redmi 1'
11609
+ - regex: 'MI PAD 4 PLUS[);/ ]'
11610
+ model: 'Mi Pad 4 Plus'
11611
+ device: 'tablet'
11612
+ - regex: 'MI PAD 4[);/ ]'
11613
+ model: 'Mi Pad 4'
11614
+ device: 'tablet'
11615
+ - regex: 'MI PAD 3[);/ ]'
11616
+ model: 'Mi Pad 3'
11617
+ device: 'tablet'
11618
+ - regex: 'MI PAD 2[);/ ]'
11619
+ model: 'Mi Pad 2'
11620
+ device: 'tablet'
11621
+ - regex: 'MI PAD[);/ ]'
11622
+ model: 'Mi Pad'
11623
+ device: 'tablet'
11624
+ - regex: 'HM NOTE 1W (?:Build|MIUI)'
11625
+ device: 'phablet'
11626
+ model: 'Redmi Note'
11627
+ - regex: 'HM NOTE 1TD (?:Build|MIUI)'
11628
+ device: 'phablet'
11629
+ model: 'Hongmi Note 1TD'
11630
+ - regex: 'HM NOTE 1(?:LTE|S)(?:W|GLOBAL|TD)? (?:Build|MIUI)'
11631
+ device: 'phablet'
11632
+ model: 'Redmi Note 4G'
11633
+ - regex: 'Redmi Note 6 Pro'
11634
+ model: 'Redmi Note 6 Pro'
11635
+ device: 'phablet'
11636
+ - regex: 'Redmi Note 5 Pro'
11637
+ model: 'Redmi Note 5 Pro'
11638
+ device: 'phablet'
11639
+ - regex: 'Redmi Note 5A Prime'
11640
+ model: 'Redmi Note 5A Prime'
11641
+ device: 'phablet'
10613
11642
 
10614
- - regex: 'Redmi Note ([^;/) ]+)?'
11643
+ - regex: 'Redmi[ _]Note[ _]([^;/) ]+)?'
10615
11644
  model: 'Redmi Note $1'
10616
11645
  device: 'phablet'
10617
- - regex: 'Redmi ([^;/) ]+)?'
11646
+ - regex: 'Redmi[ _]([^;/) ]+)?'
10618
11647
  model: 'Redmi $1'
10619
- - regex: 'MI Note ([^;/) ]+)?'
11648
+ - regex: 'MI[ _]Note[ _]([^;/) ]+)?'
10620
11649
  model: 'MI Note $1'
10621
11650
  device: 'phablet'
10622
11651
  - regex: '(MI(?:-One)?[ _](?:[^;/]*))Build'
@@ -10646,7 +11675,7 @@ Xolo:
10646
11675
  models:
10647
11676
  - regex: 'BLACK-1XM'
10648
11677
  model: 'Black 1X'
10649
- - regex: '(Q600|Q700s?|Q800|Q1000s|Q1000[ _]Opus|Q1010i|Q2000|Omega[ _]5.[05])[);/ ]'
11678
+ - regex: '(Q600 Club|Q600|Q700s?|Q800|Q1000s Plus|Q1000s|Q1000[ _]Opus|Q1010i|Q2000|Omega[ _]5.[05])[);/ ]'
10650
11679
  model: '$1'
10651
11680
  - regex: 'Xolo[ _]?([^;/]+) Build'
10652
11681
  model: '$1'
@@ -10915,6 +11944,18 @@ Toshiba:
10915
11944
  - regex: 'portalmmm/[12].0 (TS[a-z0-9 ]+)'
10916
11945
  model: '$1'
10917
11946
 
11947
+ # Vivax
11948
+ Vivax:
11949
+ regex: 'VIVAX|(Fly5[_ ]Lite)[;)/ ]'
11950
+ device: 'smartphone'
11951
+ models:
11952
+ - regex: 'Fly5[_ ]Lite'
11953
+ model: 'Fly 5 Lite'
11954
+ - regex: 'VIVAX[ _]Fly3'
11955
+ model: 'Fly 3'
11956
+ - regex: 'SMART Point X5010'
11957
+ model: 'Smart Point X5010'
11958
+
10918
11959
  # Fly
10919
11960
  Fly:
10920
11961
  regex: 'Fly(?!Flow|touch)|FS50[1-9]|FS51[0-8]|FS52[0-9]|FS530|FS55[134]|FS40[1-9]|FS45[1-9]|4FS06|MERIDIAN-|(?:IQ[0-9]{3,})[ _]?(?:Quad|Firebird|Quattro|Turbo|Magic)?(?: Build|[;/\)])'
@@ -11184,22 +12225,53 @@ Zenek:
11184
12225
  Zopo:
11185
12226
  regex: '(?:ZOPO[_ ])?(Flash X3|ZP[0-9]{2,}[^/;]+) Build'
11186
12227
  device: 'smartphone'
11187
- model: '$1'
12228
+ models:
12229
+ - regex: 'ZP998[);/ ]'
12230
+ model: 'C2 II'
12231
+ - regex: '(?:ZOPO_)?ZP980[+][);/ ]'
12232
+ model: 'ZP980+'
12233
+ - regex: '(?:ZOPO_)?ZP980[);/ ]'
12234
+ model: 'Scorpio'
12235
+ - regex: 'ZP952[);/ ]'
12236
+ model: 'Speed 7 Plus'
12237
+ - regex: 'ZP951[);/ ]'
12238
+ model: 'Speed 7'
12239
+ - regex: 'ZP950[+h]?[);/ ]'
12240
+ model: 'Leader Max'
12241
+ - regex: 'ZP(?:900H?|910)[);/ ]'
12242
+ model: 'Leader'
12243
+ - regex: 'ZP(?:800H|810)[);/ ]'
12244
+ model: 'Libero HD'
12245
+ - regex: 'ZP500[+]?[);/ ]'
12246
+ model: 'Libero'
12247
+ - regex: 'ZP330[);/ ]'
12248
+ model: 'Color C'
12249
+ - regex: 'ZP300[S+]?[);/ ]'
12250
+ model: 'Field'
12251
+ - regex: 'ZP200[+]?[);/ ]'
12252
+ model: 'Shining'
12253
+ - regex: 'ZP100[);/ ]'
12254
+ model: 'Pilot'
12255
+
12256
+ - regex: '(Flash X3|ZP[0-9]{2,}[^/;]+) Build'
12257
+ model: '$1'
11188
12258
 
11189
12259
  # ZTE
11190
12260
  ZTE:
11191
- regex: 'ZTE|AxonPhone|([a-z0-9]+)_USA_Cricket|(?:Blade (?:L110|L[2357]|L7A|S6|V[6789]|V8Q|V8 SE|V9 VITA|X7|A(310|460|465|475|520|530|602)|V580)|N9[15]8St|NX(?:403A|404H|406E|40[X2]|507J|503A|505J|506J|508J|510J|512J|511J|513J|521J|523J_V1|529J|531J|541J|549J|551J|563J|569[HJ]|573J|575J|591J|595J|597J|601J|907J|616J)|N951[0579]|N9180|N9101|N913[67]|N952[01]|N9560|N9810|N799D|[UV]9180|[UV]9815|Z(?:233V|331|667T|768G|792|81[25]|82[08]|83[12359]|85[125]|851M|(557|717|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)|Apex2|G (LTE|Lux)|Vec)[);/ ]|KIS II Max|Kis 3'
12261
+ regex: 'ZTE|AxonPhone|([a-z0-9]+)_USA_Cricket|(?:Blade (?:L110|L[2357]|L7A|S6|V[6789]|V8Q|V8 SE|V9 VITA|X7|A(310|460|465|475|520|530|602)|V580)|N9[15]8St|NX(?:403A|404H|406E|40[X2]|507J|503A|505J|506J|508J|510J|512J|511J|513J|521J|523J_V1|529J|531J|541J|549J|551J|563J|569[HJ]|573J|575J|591J|595J|597J|601J|907J|616J)|N951[0579]|N9180|N9101|N913[67]|N952[01]|N9560|N9810|N799D|[UV]9180|[UV]9815|Z(?:233V|331|667T|768G|792|81[25]|82[08]|83[12359]|85[125]|851M|(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)|Apex2|G (LTE|Lux)|Vec)[);/ ]|KIS II Max|Kis 3|Z930L'
11192
12262
  device: 'smartphone'
11193
12263
  models:
11194
12264
  # explicit smartphone models
11195
12265
  - regex: 'N799D[);/ ]'
11196
- model: 'MTS Blaze 4'
12266
+ model: 'Blade Eg'
11197
12267
  - regex: 'N918St[);/ ]'
11198
12268
  model: 'V5S'
11199
12269
  - regex: 'N958St[);/ ]'
11200
12270
  model: 'V5 Max'
11201
12271
  - regex: 'N9101[);/ ]'
11202
12272
  model: 'Imperial'
12273
+ - regex: 'N9120[);/ ]'
12274
+ model: 'Avid'
11203
12275
  - regex: 'N9136[);/ ]'
11204
12276
  model: 'Prestige 2'
11205
12277
  - regex: 'N9137[);/ ]'
@@ -11207,11 +12279,11 @@ ZTE:
11207
12279
  - regex: 'N9180[);/ ]'
11208
12280
  model: 'V5'
11209
12281
  - regex: 'N9510[);/ ]'
11210
- model: 'Wrap 4G'
12282
+ model: 'Warp 4G'
11211
12283
  - regex: 'N9517[);/ ]'
11212
12284
  model: 'Blade Force'
11213
12285
  - regex: 'N9515[);/ ]'
11214
- model: 'Wrap Sync'
12286
+ model: 'Warp Sync'
11215
12287
  - regex: 'N9519[);/ ]'
11216
12288
  model: 'Warp 7'
11217
12289
  - regex: 'N9520[);/ ]'
@@ -11224,8 +12296,8 @@ ZTE:
11224
12296
  model: 'Vital'
11225
12297
  - regex: 'NX40[X2][);/ ]'
11226
12298
  model: 'Nubia Z5 mini'
11227
- - regex: 'NX(403A|404H)[);/ ]'
11228
- model: 'Nubia Z5S mini'
12299
+ - regex: 'NX(403[AE]|406E|404H)[);/ ]'
12300
+ model: 'Nubia Z5S Mini'
11229
12301
  - regex: 'NX503A[);/ ]'
11230
12302
  model: 'Nubia Z5S'
11231
12303
  - regex: 'NX506J[);/ ]'
@@ -11254,8 +12326,10 @@ ZTE:
11254
12326
  model: 'Nubia Z18S'
11255
12327
  - regex: 'NX551J[);/ ]'
11256
12328
  model: 'Nubia M2'
11257
- - regex: '(?:NX569H|NX563J)[);/ ]'
12329
+ - regex: 'NX563J[);/ ]'
11258
12330
  model: 'Nubia Z17'
12331
+ - regex: 'NX569H[);/ ]'
12332
+ model: 'Nubia Z17 Mini'
11259
12333
  - regex: 'NX595J'
11260
12334
  model: 'Nubia Z17S'
11261
12335
  - regex: 'NX513J[);/ ]'
@@ -11279,12 +12353,34 @@ ZTE:
11279
12353
  - regex: '[UV]9180[);/ ]'
11280
12354
  model: 'V5 Red Bull'
11281
12355
  - regex: '[UV]9815[);/ ]'
11282
- model: 'Grand Memo'
12356
+ model: 'Grand Memo LTE'
12357
+ - regex: 'V779M'
12358
+ model: 'Joey Jump 2'
12359
+ - regex: 'V807'
12360
+ model: 'Blade C'
12361
+ - regex: 'V809'
12362
+ model: 'Blade C2'
12363
+ - regex: '(?:ZTE_)?V829'
12364
+ model: 'Blade G Pro'
12365
+ - regex: 'V882'
12366
+ model: 'Lord'
12367
+ - regex: 'V967S'
12368
+ model: 'Grand X2'
12369
+ - regex: 'V970M?|V987'
12370
+ model: 'Grand X'
12371
+ - regex: 'V8000'
12372
+ model: 'Nova 4'
12373
+ - regex: 'Z95[67]'
12374
+ model: 'Grand X4'
11283
12375
  - regex: 'Z987'
11284
12376
  model: 'Grand X Max+'
12377
+ - regex: '(?:ZTE_)?Grand[ _]Era'
12378
+ model: 'Grand Era'
12379
+ - regex: 'V788D'
12380
+ model: 'Kis Plus'
11285
12381
  - regex: 'Z331[);/ ]'
11286
12382
  model: 'Z331'
11287
- - regex: 'Blade (A(310|460|465|475|520|530|602)|L110|V580)[);/ ]'
12383
+ - regex: 'Blade (A(0620|310|452|460|462|465|475|510|512|520|530|602|612|910)|L110|V0730|V0800|V580|V1000)[);/ ]'
11288
12384
  model: 'Blade $1'
11289
12385
  - regex: 'Blade L2 Plus[);/ ]'
11290
12386
  model: 'Blade L2 Plus'
@@ -11292,24 +12388,36 @@ ZTE:
11292
12388
  model: 'Blade L2'
11293
12389
  - regex: 'Blade L3 Plus[);/ ]'
11294
12390
  model: 'Blade L3 Plus'
12391
+ - regex: 'Blade L3 Apex[);/ ]'
12392
+ model: 'Blade L3 Apex'
11295
12393
  - regex: 'Blade L3[);/ ]'
11296
12394
  model: 'Blade L3'
12395
+ - regex: 'Blade L5 Plus[);/ ]'
12396
+ model: 'Blade L5 Plus'
11297
12397
  - regex: 'Blade L5[);/ ]'
11298
12398
  model: 'Blade L5'
12399
+ - regex: 'Blade L6[);/ ]'
12400
+ model: 'Blade L6'
12401
+ - regex: 'Blade L7A[);/ ]'
12402
+ model: 'Blade L7A'
12403
+ - regex: 'Blade L7[);/ ]'
12404
+ model: 'Blade L7'
11299
12405
  - regex: 'Blade L8[);/ ]'
11300
12406
  model: 'Blade L8'
12407
+ - regex: 'Blade S6 Plus[);/ ]'
12408
+ model: 'Blade S6 Plus'
11301
12409
  - regex: 'Blade S6[);/ ]'
11302
12410
  model: 'Blade S6'
12411
+ - regex: 'T920[);/ ]'
12412
+ model: 'Blade S7'
11303
12413
  - regex: 'Blade V6 MAX[);/ ]'
11304
12414
  model: 'Blade V6 Max'
11305
12415
  - regex: 'Blade V6 Plus[);/ ]'
11306
12416
  model: 'Blade V6 Plus'
11307
12417
  - regex: 'Blade V6[);/ ]'
11308
12418
  model: 'Blade V6'
11309
- - regex: 'Blade L7A[);/ ]'
11310
- model: 'Blade L7A'
11311
- - regex: 'Blade L7[);/ ]'
11312
- model: 'Blade L7'
12419
+ - regex: 'Blade (?:V7 Lite|V0720)[);/ ]'
12420
+ model: 'Blade V7 Lite'
11313
12421
  - regex: 'Blade V7[);/ ]'
11314
12422
  model: 'Blade V7'
11315
12423
  - regex: 'Blade X7[);/ ]'
@@ -11322,6 +12430,12 @@ ZTE:
11322
12430
  model: 'Blade V9 Vita'
11323
12431
  - regex: 'Blade V9[);/ ]'
11324
12432
  model: 'Blade V9'
12433
+ - regex: 'Blade V10 Vita[);/ ]'
12434
+ model: 'Blade V10 Vita'
12435
+ - regex: 'BLADE V0820[);/ ]'
12436
+ model: 'Blade V8 Lite'
12437
+ - regex: 'BLADE V0850[);/ ]'
12438
+ model: 'Blade V8 Mini'
11325
12439
  - regex: '(Apex2|G (LTE|Lux)|Vec)'
11326
12440
  model: 'Blade $1'
11327
12441
  - regex: 'Z768G[);/ ]'
@@ -11336,6 +12450,8 @@ ZTE:
11336
12450
  model: 'Blade V8 Pro'
11337
12451
  - regex: 'Z839'
11338
12452
  model: 'Blade Vantage'
12453
+ - regex: 'Z930L'
12454
+ model: 'Unico LTE'
11339
12455
  - regex: 'Z965'
11340
12456
  model: 'Blade X'
11341
12457
  - regex: 'Z981'
@@ -11346,16 +12462,14 @@ ZTE:
11346
12462
  model: 'Blade X Max'
11347
12463
  - regex: 'Z717[BV]L[);/ ]'
11348
12464
  model: 'Citrine LTE'
11349
- - regex: 'Z233V'
11350
- model: 'Cymbal LTE'
11351
12465
  - regex: 'Z233VL'
11352
12466
  model: 'Cymbal-C LTE'
12467
+ - regex: 'Z233V'
12468
+ model: 'Cymbal LTE'
11353
12469
  - regex: 'Z232TL'
11354
12470
  model: 'Cymbal-G LTE'
11355
12471
  - regex: 'Z353VL'
11356
12472
  model: 'Cymbal-T LTE'
11357
- - regex: 'Z95[67]'
11358
- model: 'Grand X 4'
11359
12473
  - regex: 'Z718TL'
11360
12474
  model: 'Jasper LTE'
11361
12475
  - regex: 'KIS II Max'
@@ -11368,8 +12482,6 @@ ZTE:
11368
12482
  model: 'Majesty Pro Plus LTE'
11369
12483
  - regex: 'Z828TL'
11370
12484
  model: 'Midnight Pro LTE'
11371
- - regex: 'NX406E[);/ ]'
11372
- model: 'Nubia Z5S'
11373
12485
  - regex: 'Z792'
11374
12486
  model: 'Fanfare'
11375
12487
  - regex: 'Z812'
@@ -11383,7 +12495,7 @@ ZTE:
11383
12495
  - regex: 'Z835'
11384
12496
  model: 'Maven 3'
11385
12497
  - regex: 'Z851[);/ ]'
11386
- model: 'Prelude+'
12498
+ model: 'Prelude Plus'
11387
12499
  - regex: 'Z851M'
11388
12500
  model: 'Overture 3'
11389
12501
  - regex: 'Z852'
@@ -11414,15 +12526,37 @@ ZTE:
11414
12526
  model: 'ZMax Z970'
11415
12527
  - regex: 'Z986DL'
11416
12528
  model: 'MAX Blue LTE'
12529
+ - regex: 'Z992'
12530
+ model: 'Avail 2'
11417
12531
  - regex: 'Z999'
11418
12532
  model: 'Axon M'
11419
- - regex: 'A2017U'
12533
+ - regex: 'B2016'
12534
+ model: 'Axon Mini'
12535
+ - regex: 'A2015'
12536
+ model: 'Axon Tianji'
12537
+ - regex: 'A2017[GU]?'
11420
12538
  model: 'Axon 7'
12539
+ - regex: 'A2019G Pro'
12540
+ model: 'Axon Pro'
11421
12541
  - regex: 'B2017G'
11422
12542
  model: 'Axon 7 Mini'
12543
+ - regex: 'A2020G? Pro[);/ ]'
12544
+ model: 'Axon 10 Pro'
11423
12545
  - regex: 'Z667T'
11424
12546
  model: 'Zinger'
11425
-
12547
+ - regex: 'V?975|geek'
12548
+ model: 'Geek'
12549
+ - regex: 'Z716BL'
12550
+ model: 'Citrine LTE'
12551
+ - regex: 'X500'
12552
+ model: 'Score'
12553
+ - regex: 'X501'
12554
+ model: 'Groove'
12555
+ - regex: 'G-X991'
12556
+ model: 'Rio'
12557
+ - regex: 'F-450'
12558
+ model: 'Adamant'
12559
+
11426
12560
  - regex: 'AxonPhone ([^;/]+) Build'
11427
12561
  model: 'AxonPhone $1'
11428
12562
  - regex: '([a-z0-9]+)_USA_Cricket'
@@ -11504,11 +12638,19 @@ MTC:
11504
12638
 
11505
12639
  # MegaFon
11506
12640
  MegaFon:
11507
- regex: 'MFLoginPh'
12641
+ regex: 'MFLoginPh|(MFLogin4|MS3B|SP-A5|SP-A20i)[)\; ]'
11508
12642
  device: 'smartphone'
11509
12643
  models:
11510
12644
  - regex: 'MFLoginPh'
11511
12645
  model: 'Login+'
12646
+ - regex: 'MFLogin4'
12647
+ model: 'Login 4 LTE'
12648
+ - regex: 'MS3B'
12649
+ model: 'Optima'
12650
+ - regex: 'SP-A20i'
12651
+ model: 'Mint'
12652
+ - regex: '(SP-A5)'
12653
+ model: '$1'
11512
12654
 
11513
12655
  # Inoi
11514
12656
  Inoi:
@@ -11569,6 +12711,12 @@ Simbans:
11569
12711
  - regex: 'SX2W'
11570
12712
  model: 'SX2W'
11571
12713
 
12714
+ # MYFON
12715
+ MYFON:
12716
+ regex: 'MYPAD7s'
12717
+ device: 'tablet'
12718
+ model: 'My Pad 7s'
12719
+
11572
12720
  # X-TIGI
11573
12721
  X-TIGI:
11574
12722
  regex: 'X[-_]TIGI'
@@ -11585,6 +12733,24 @@ X-TIGI:
11585
12733
  - regex: 'X[-_]TIGI[ _-]([^/;)]+) Build'
11586
12734
  model: '$1'
11587
12735
 
12736
+ # Xiaolajiao
12737
+ Xiaolajiao:
12738
+ regex: '(LA2-(?:L|S[N]?))[);/ ]'
12739
+ device: 'smartphone'
12740
+ model: '$1'
12741
+
12742
+ # Ritmix
12743
+ Ritmix:
12744
+ regex: 'RMD[-_](10(?:2[68]|5[89])|726)[);/ ]'
12745
+ device: 'tablet'
12746
+ model: 'RMD-$1'
12747
+
12748
+ # Ross&Moor
12749
+ 'Ross&Moor':
12750
+ regex: 'RMD[-_](974R|600)[);/ ]'
12751
+ device: 'tablet'
12752
+ model: 'RMD-$1'
12753
+
11588
12754
  # R-TV
11589
12755
  R-TV:
11590
12756
  regex: 'R-TV BOX[ _]?(MINI\+|X99|X10 PRO|[RXS]10)'
@@ -11618,7 +12784,17 @@ Yandex:
11618
12784
  device: 'smartphone'
11619
12785
  model: '$1'
11620
12786
 
12787
+ # FORME
12788
+ FORME:
12789
+ regex: 'FORME[ _-]'
12790
+ device: 'smartphone'
12791
+ models:
12792
+ - regex: 'FORME[ _-]F520[;)\ ]'
12793
+ model: 'Forever'
12794
+ - regex: 'FORME[ _-](A37|R7S)[;)\ ]'
12795
+ model: '$1'
12796
+
11621
12797
  Shuttle:
11622
12798
  regex: '(PNT-704[025])[;)/ ]'
11623
12799
  device: 'tablet'
11624
- model: '$1'
12800
+ model: '$1'