device_detector 1.1.0 → 1.1.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -22,6 +22,7 @@ class DeviceDetector
22
22
 
23
23
  DEVICE_BRANDS = {
24
24
  '5E' => '2E',
25
+ '5IV' => '5IVE',
25
26
  '2F' => 'F2 Mobile',
26
27
  '3Q' => '3Q',
27
28
  'J7' => '7 Mobile',
@@ -31,22 +32,27 @@ class DeviceDetector
31
32
  '04' => '4ife',
32
33
  '36' => '360',
33
34
  '88' => '8848',
35
+ '10M' => '10moons',
34
36
  '41' => 'A1',
35
37
  '00' => 'Accent',
38
+ 'ACC' => 'Accesstyle',
36
39
  'AE' => 'Ace',
37
40
  'AC' => 'Acer',
38
41
  '3K' => 'Acteck',
39
42
  'ACT' => 'actiMirror',
40
43
  'A9' => 'Advan',
41
44
  'AD' => 'Advance',
45
+ 'ADV' => 'Advantage Air',
42
46
  '76' => 'Adronix',
43
47
  'AF' => 'AfriOne',
44
48
  'FY' => 'AFFIX',
45
49
  'A3' => 'AGM',
50
+ 'AEE' => 'AEEZO',
46
51
  'J0' => 'AG Mobile',
47
52
  'AZ' => 'Ainol',
48
53
  'AIR' => 'Airis',
49
54
  'AI' => 'Airness',
55
+ 'ARP' => 'Airpha',
50
56
  'AT' => 'Airties',
51
57
  '7U' => 'Airtel',
52
58
  'U0' => 'AIRON',
@@ -60,6 +66,7 @@ class DeviceDetector
60
66
  'AL' => 'Alcatel',
61
67
  '20' => 'Alcor',
62
68
  'XY' => 'Alps',
69
+ 'XYA' => 'XY Auto',
63
70
  '7L' => 'ALDI NORD',
64
71
  '6L' => 'ALDI SÜD',
65
72
  '3L' => 'Alfawise',
@@ -67,17 +74,20 @@ class DeviceDetector
67
74
  'AA' => 'AllCall',
68
75
  '3A' => 'AllDocube',
69
76
  'A2' => 'Allview',
77
+ 'ALI' => 'ALLINmobile',
70
78
  'A7' => 'Allwinner',
71
79
  'A1' => 'Altech UEC',
72
80
  '66' => 'Altice',
73
81
  'A5' => 'altron',
74
82
  'KN' => 'Amazon',
83
+ 'AMA' => 'AMA',
75
84
  'AG' => 'AMGOO',
76
85
  '9A' => 'Amigoo',
77
86
  'AO' => 'Amoi',
78
87
  '3J' => 'Amino',
79
88
  '54' => 'AMCV',
80
89
  '60' => 'Andowl',
90
+ 'ANX' => 'ANXONIT',
81
91
  '6J' => 'Angelcare',
82
92
  '7A' => 'Anry',
83
93
  'A0' => 'ANS',
@@ -105,6 +115,7 @@ class DeviceDetector
105
115
  '1U' => 'Astro',
106
116
  'A4' => 'Ask',
107
117
  'A8' => 'Assistant',
118
+ 'ASS' => 'ASSE',
108
119
  'AU' => 'Asus',
109
120
  '6A' => 'AT&T',
110
121
  'ATH' => 'Athesi',
@@ -113,6 +124,7 @@ class DeviceDetector
113
124
  '2A' => 'Atom',
114
125
  'ATO' => 'ATOL',
115
126
  'Z2' => 'Atvio',
127
+ 'ATI' => 'Attila',
116
128
  'AX' => 'Audiovox',
117
129
  'AJ' => 'AURIS',
118
130
  'YZ' => 'Autan',
@@ -128,13 +140,16 @@ class DeviceDetector
128
140
  'WW' => 'Awow',
129
141
  'XU' => 'AUX',
130
142
  'BAC' => 'Backcell',
143
+ 'BFF' => 'BAFF',
131
144
  'BO' => 'BangOlufsen',
132
145
  'BN' => 'Barnes & Noble',
146
+ 'BAR' => 'BARTEC',
133
147
  'BB' => 'BBK',
134
148
  '0B' => 'BB Mobile',
135
149
  'B6' => 'BDF',
136
150
  'QD' => 'BDQ',
137
151
  '8Z' => 'BDsharing',
152
+ 'BEF' => 'Beafon',
138
153
  'BE' => 'Becker',
139
154
  'B5' => 'Beeline',
140
155
  'B0' => 'Beelink',
@@ -144,6 +159,7 @@ class DeviceDetector
144
159
  'BS' => 'BenQ-Siemens',
145
160
  '4Y' => 'Benzo',
146
161
  'XJ' => 'Benesse',
162
+ 'BEN' => 'BenWee',
147
163
  'YB' => 'Beista',
148
164
  'BY' => 'BS Mobile',
149
165
  'BZ' => 'Bezkam',
@@ -163,10 +179,12 @@ class DeviceDetector
163
179
  'BK' => 'Bkav',
164
180
  '5B' => 'Black Bear',
165
181
  'BF' => 'Black Fox',
182
+ 'BPC' => 'Blackpcs',
166
183
  'B2' => 'Blackview',
167
184
  '2Y' => 'b2m',
168
185
  'BP' => 'Blaupunkt',
169
186
  'BU' => 'Blu',
187
+ 'BUS' => 'BluSlate',
170
188
  'BUZ' => 'BuzzTV',
171
189
  'B3' => 'Bluboo',
172
190
  '2B' => 'Bluedot',
@@ -180,14 +198,19 @@ class DeviceDetector
180
198
  'BLI' => 'BLISS',
181
199
  'BM' => 'Bmobile',
182
200
  'Y5' => 'BMAX',
201
+ 'BMX' => 'BMXC',
183
202
  'B9' => 'Bobarry',
184
203
  'B4' => 'bogo',
204
+ 'BOL' => 'Bolva',
185
205
  'BW' => 'Boway',
186
206
  'BOO' => 'Boost',
207
+ 'BOK' => 'Bookeen',
187
208
  'BX' => 'bq',
188
209
  '8B' => 'Brandt',
189
210
  'BRA' => 'BrandCode',
190
211
  'BV' => 'Bravis',
212
+ 'BRV' => 'BRAVE',
213
+ 'BRG' => 'Brigmton',
191
214
  'BR' => 'Brondi',
192
215
  'XF' => 'BROR',
193
216
  'BJ' => 'BrightSign',
@@ -207,6 +230,7 @@ class DeviceDetector
207
230
  'BC' => 'Camfone',
208
231
  'CJ' => 'Cavion',
209
232
  '4D' => 'Canal Digital',
233
+ 'CNG' => 'Canguro',
210
234
  'CEI' => 'Ceibal',
211
235
  '02' => 'Cell-C',
212
236
  'CEL' => 'Cellacom',
@@ -223,6 +247,7 @@ class DeviceDetector
223
247
  'U9' => 'China Telecom',
224
248
  'CI' => 'Chico Mobile',
225
249
  'CIP' => 'CipherLab',
250
+ 'CIT' => 'Citycall',
226
251
  '1C' => 'Chuwi',
227
252
  'L8' => 'Clarmin',
228
253
  '25' => 'Claresta',
@@ -246,6 +271,7 @@ class DeviceDetector
246
271
  '3C' => 'Contixo',
247
272
  '8C' => 'Connex',
248
273
  '53' => 'Connectce',
274
+ 'CON' => 'Conceptum',
249
275
  '9C' => 'Colors',
250
276
  'CO' => 'Coolpad',
251
277
  'COO' => 'Coopers',
@@ -263,13 +289,16 @@ class DeviceDetector
263
289
  '0C' => 'Crony',
264
290
  'C1' => 'Crosscall',
265
291
  '4W' => 'Crown',
292
+ 'CTR' => 'Ctroniq',
266
293
  'CU' => 'Cube',
267
294
  'CB' => 'CUBOT',
268
295
  'CV' => 'CVTE',
296
+ 'CWO' => 'Cwowdefu',
269
297
  'C4' => 'Cyrus',
270
298
  'D5' => 'Daewoo',
271
299
  'DA' => 'Danew',
272
300
  'DAN' => 'Dany',
301
+ 'DA1' => 'DangcapHD',
273
302
  'DT' => 'Datang',
274
303
  'D7' => 'Datawind',
275
304
  '7D' => 'Datamini',
@@ -284,9 +313,12 @@ class DeviceDetector
284
313
  'DL0' => 'DL',
285
314
  'DE' => 'Denver',
286
315
  'DS' => 'Desay',
316
+ 'DSI' => 'DSIC',
287
317
  'DW' => 'DeWalt',
288
318
  'DX' => 'DEXP',
319
+ 'DEY' => 'DEYI',
289
320
  'DEN' => 'Denali',
321
+ 'DEA' => 'DEALDIG',
290
322
  '8D' => 'DF',
291
323
  'DGT' => 'DGTEC',
292
324
  'DG' => 'Dialog',
@@ -296,16 +328,19 @@ class DeviceDetector
296
328
  'DDG' => 'Digidragon',
297
329
  'DH' => 'Digihome',
298
330
  'DD' => 'Digiland',
331
+ 'DIJ' => 'DIJITSU',
299
332
  'DIG' => 'Digit4G',
300
333
  'DIC' => 'DIGICOM',
301
334
  'Q0' => 'DIGIFORS',
302
335
  'DQ' => 'DISH',
336
+ 'DIS' => 'Disney',
303
337
  '9D' => 'Ditecma',
304
338
  'D2' => 'Digma',
305
339
  '1D' => 'Diva',
306
340
  'DIV' => 'DiverMax',
307
341
  'D6' => 'Divisat',
308
342
  'X6' => 'DIXON',
343
+ 'DIM' => 'DIMO',
309
344
  '5D' => 'DING DING',
310
345
  'DIN' => 'Dinax',
311
346
  'DM' => 'DMM',
@@ -318,21 +353,26 @@ class DeviceDetector
318
353
  'DV' => 'Doov',
319
354
  'DOM' => 'Dom.ru',
320
355
  'DP' => 'Dopod',
356
+ 'DPA' => 'DPA',
321
357
  'JQ' => 'Doppio',
322
358
  'DR' => 'Doro',
323
359
  'ZD' => 'DORLAND',
324
360
  'D8' => 'Droxio',
325
361
  'DJ' => 'Dragon Touch',
362
+ 'DRA' => 'DRAGON',
326
363
  'DY' => 'Dreamgate',
327
364
  'DRE' => 'DreamTab',
328
365
  'DR1' => 'DreamStar',
329
366
  'DTA' => 'Dtac',
330
367
  'DU' => 'Dune HD',
331
368
  'UD' => 'DUNNS Mobile',
369
+ 'DUU' => 'Duubee',
370
+ 'DUR' => 'Durabook',
332
371
  'DTE' => 'D-Tech',
333
372
  'DLI' => 'D-Link',
334
373
  'ENO' => 'eNOVA',
335
374
  'IN2' => 'iNOVA',
375
+ 'INH' => 'Inhon',
336
376
  'EB' => 'E-Boda',
337
377
  'EJ' => 'Engel',
338
378
  'ENA' => 'ENACOM',
@@ -358,6 +398,7 @@ class DeviceDetector
358
398
  'UE' => 'Ematic',
359
399
  'EMR' => 'Emporia',
360
400
  '4K' => 'EKT',
401
+ 'EKI' => 'EKINOX',
361
402
  '7E' => 'ELARI',
362
403
  '03' => 'Electroneum',
363
404
  'Z8' => 'ELECTRONIA',
@@ -372,9 +413,12 @@ class DeviceDetector
372
413
  'ED' => 'Energizer',
373
414
  'E1' => 'Energy Sistem',
374
415
  '3E' => 'Enot',
416
+ 'ENT' => 'Entity',
375
417
  'ENV' => 'Envizen',
376
418
  '8E' => 'Epik One',
419
+ 'EPK' => 'Epic',
377
420
  'XP' => 'Epson',
421
+ 'EPH' => 'Ephone',
378
422
  'E7' => 'Ergo',
379
423
  'EC' => 'Ericsson',
380
424
  '05' => 'Erisson',
@@ -389,6 +433,8 @@ class DeviceDetector
389
433
  '4J' => 'Eurocase',
390
434
  'E9' => 'Evercoss',
391
435
  'EV' => 'Evertek',
436
+ 'EVE' => 'Everest',
437
+ 'EV1' => 'Everex',
392
438
  'E3' => 'Evolio',
393
439
  'EO' => 'Evolveo',
394
440
  '0Q' => 'Evoo',
@@ -404,7 +450,9 @@ class DeviceDetector
404
450
  'EI' => 'Ezio',
405
451
  'EZ' => 'Ezze',
406
452
  'UF' => 'EYU',
453
+ 'UE1' => 'UE',
407
454
  '5F' => 'F150',
455
+ 'FPS' => 'F+',
408
456
  'F6' => 'Facebook',
409
457
  'FAC' => 'Facetel',
410
458
  'FA1' => 'Facime',
@@ -413,12 +461,14 @@ class DeviceDetector
413
461
  'FAM' => 'Famous',
414
462
  '17' => 'FarEasTone',
415
463
  '9R' => 'FaRao Pro',
464
+ 'FAR' => 'Farassoo',
416
465
  'FB' => 'Fantec',
417
466
  'FE' => 'Fengxiang',
418
467
  'F7' => 'Fero',
419
468
  '67' => 'FEONAL',
420
469
  'FI' => 'FiGO',
421
470
  'J9' => 'FiGi',
471
+ 'FIG' => 'Figgers',
422
472
  'F9' => 'FiiO',
423
473
  'F1' => 'FinePower',
424
474
  'FX' => 'Finlux',
@@ -427,6 +477,7 @@ class DeviceDetector
427
477
  'FIL' => 'FILIX',
428
478
  'FL' => 'Fly',
429
479
  'QC' => 'FLYCAT',
480
+ 'FLU' => 'Fluo',
430
481
  'FN' => 'FNB',
431
482
  'FD' => 'Fondi',
432
483
  '0F' => 'Fourel',
@@ -437,8 +488,11 @@ class DeviceDetector
437
488
  'FR' => 'Forstar',
438
489
  'RF' => 'Fortis',
439
490
  'FO' => 'Foxconn',
491
+ 'FOD' => 'FoxxD',
440
492
  'FJ' => 'FOODO',
493
+ 'FOS' => 'FOSSiBOT',
441
494
  'FT' => 'Freetel',
495
+ 'FRU' => 'Frunsi',
442
496
  'F4' => 'F&U',
443
497
  '1F' => 'FMT',
444
498
  'FPT' => 'FPT',
@@ -447,15 +501,22 @@ class DeviceDetector
447
501
  '4F' => 'Funai',
448
502
  '5J' => 'Fusion5',
449
503
  'FF' => 'Future Mobile Technology',
504
+ 'FFF' => 'FFF SmartLife',
450
505
  'FW' => 'FNF',
506
+ 'FXT' => 'Fxtec',
451
507
  'GT' => 'G-TiDE',
452
508
  'G9' => 'G-Touch',
509
+ 'GFO' => 'Gfone',
510
+ 'GTM' => 'GTMEDIA',
453
511
  '0G' => 'GFive',
454
512
  'GM' => 'Garmin-Asus',
455
513
  'GA' => 'Gateway',
456
514
  '99' => 'Galaxy Innovations',
515
+ 'GA1' => 'Galactic',
516
+ 'GAM' => 'Gamma',
457
517
  'GAZ' => 'Gazer',
458
518
  'GEA' => 'Geanee',
519
+ 'GEN' => 'Geant',
459
520
  'GD' => 'Gemini',
460
521
  'GN' => 'General Mobile',
461
522
  '2G' => 'Genesis',
@@ -472,6 +533,7 @@ class DeviceDetector
472
533
  'GZ' => 'Ginzzu',
473
534
  '1G' => 'Gini',
474
535
  'GI' => 'Gionee',
536
+ 'GIR' => 'GIRASOLE',
475
537
  'G4' => 'Globex',
476
538
  '38' => 'GLONYX',
477
539
  'U6' => 'Glofiish',
@@ -487,40 +549,51 @@ class DeviceDetector
487
549
  'GO' => 'Google',
488
550
  'G0' => 'Goophone',
489
551
  '6G' => 'Gooweel',
552
+ 'GOO' => 'GOODTEL',
490
553
  '8G' => 'Gplus',
491
554
  'GR' => 'Gradiente',
492
555
  'GP' => 'Grape',
493
556
  'G6' => 'Gree',
557
+ 'GRA' => 'Great Asia',
494
558
  '3G' => 'Greentel',
559
+ 'GRO' => 'Green Orange',
560
+ 'GR1' => 'GroBerwert',
495
561
  'GF' => 'Gretel',
496
562
  '82' => 'Gresso',
497
563
  'GU' => 'Grundig',
498
564
  'GV' => 'Gtel',
565
+ 'CUO' => 'Guophone',
499
566
  'H13' => 'H133',
500
567
  '9Z' => 'H96',
501
568
  'HF' => 'Hafury',
502
569
  '9F' => 'HAOVM',
570
+ 'HAQ' => 'HAOQIN',
503
571
  'HA' => 'Haier',
504
572
  'XH' => 'Haipai',
505
573
  'HAN' => 'Handheld',
506
574
  'HE' => 'HannSpree',
507
575
  'HK' => 'Hardkernel',
508
576
  'HAR' => 'Harper',
577
+ 'HA1' => 'Hartens',
509
578
  'HS' => 'Hasee',
510
579
  '8H' => 'Hamlet',
511
580
  'HAM' => 'Hammer',
581
+ 'HAT' => 'Hathway',
512
582
  'H6' => 'Helio',
513
583
  'HQ' => 'HERO',
514
584
  'ZH' => 'Hezire',
515
585
  'HEX' => 'HexaByte',
586
+ 'HEW' => 'HeadWolf',
516
587
  'HL' => 'Hi-Level',
517
588
  '3H' => 'Hi',
589
+ 'HIB' => 'Hiberg',
518
590
  'HIH' => 'HiHi',
519
591
  'HIK' => 'HiKing',
520
592
  'H2' => 'Highscreen',
521
593
  'Q1' => 'High Q',
522
594
  '1H' => 'Hipstreet',
523
595
  'HI' => 'Hisense',
596
+ 'HIP' => 'HIPER',
524
597
  'HC' => 'Hitachi',
525
598
  'H8' => 'Hitech',
526
599
  'W3' => 'HiMax',
@@ -555,6 +628,7 @@ class DeviceDetector
555
628
  'HN' => 'Hyundai',
556
629
  '7H' => 'Hyve',
557
630
  'HYT' => 'Hytera',
631
+ 'HYK' => 'Hykker',
558
632
  '3I' => 'i-Cherry',
559
633
  'IJ' => 'i-Joy',
560
634
  'IM' => 'i-mate',
@@ -564,12 +638,15 @@ class DeviceDetector
564
638
  'IB' => 'iBall',
565
639
  'IY' => 'iBerry',
566
640
  '7I' => 'iBrit',
641
+ 'IBO' => 'ibowin',
567
642
  'I2' => 'IconBIT',
568
643
  'IC' => 'iDroid',
644
+ 'IDI' => 'iDino',
569
645
  '6Z' => 'iData',
570
646
  'IG' => 'iGet',
571
647
  'IH' => 'iHunt',
572
648
  'IA' => 'Ikea',
649
+ 'IYO' => 'iYou',
573
650
  '8I' => 'IKU Mobile',
574
651
  '2K' => 'IKI Mobile',
575
652
  'IK' => 'iKoMo',
@@ -579,6 +656,7 @@ class DeviceDetector
579
656
  '1I' => 'iMars',
580
657
  'IMI' => 'iMI',
581
658
  'U4' => 'iMan',
659
+ 'ILE' => 'iLepo',
582
660
  'IL' => 'IMO Mobile',
583
661
  'IM1' => 'Imose',
584
662
  'I3' => 'Impression',
@@ -619,6 +697,7 @@ class DeviceDetector
619
697
  'IRE' => 'iReplace',
620
698
  'IR' => 'iRola',
621
699
  'IU' => 'iRulu',
700
+ 'IRO' => 'iRobot',
622
701
  '9I' => 'iSWAG',
623
702
  '9J' => 'iSafe Mobile',
624
703
  'IST' => 'iStar',
@@ -645,6 +724,7 @@ class DeviceDetector
645
724
  'JR1' => 'JREN',
646
725
  'JO' => 'Jolla',
647
726
  'JP' => 'Joy',
727
+ 'JOY' => 'JoySurf',
648
728
  'UJ' => 'Juniper Systems',
649
729
  'J5' => 'Just5',
650
730
  '7J' => 'Jumper',
@@ -653,29 +733,35 @@ class DeviceDetector
653
733
  'JXD' => 'JXD',
654
734
  'JS' => 'Jesy',
655
735
  'KT' => 'K-Touch',
736
+ 'KLT' => 'K-Lite',
656
737
  'K4' => 'Kaan',
657
738
  'K7' => 'Kaiomy',
658
739
  'KL' => 'Kalley',
659
740
  'K6' => 'Kanji',
660
741
  'KA' => 'Karbonn',
661
742
  'K5' => 'KATV1',
743
+ 'KAP' => 'Kapsys',
662
744
  'K0' => 'Kata',
663
745
  'KZ' => 'Kazam',
664
746
  '9K' => 'Kazuna',
665
747
  'KD' => 'KDDI',
748
+ 'KHA' => 'Khadas',
666
749
  'KS' => 'Kempler & Strauss',
667
750
  'K3' => 'Keneksi',
668
751
  'KX' => 'Kenxinda',
669
752
  'KEN' => 'Kenbo',
753
+ 'KZG' => 'KZG',
670
754
  'K1' => 'Kiano',
671
755
  '5W' => 'Kingbox',
672
756
  'KI' => 'Kingsun',
757
+ 'KIS' => 'Kinstone',
673
758
  'KF' => 'KINGZONE',
674
759
  'KIN' => 'Kingstar',
675
760
  '46' => 'Kiowa',
676
761
  'KV' => 'Kivi',
677
762
  '64' => 'Kvant',
678
763
  '0K' => 'Klipad',
764
+ 'KNM' => 'KN Mobile',
679
765
  'KC' => 'Kocaso',
680
766
  'KK' => 'Kodak',
681
767
  'KG' => 'Kogan',
@@ -692,8 +778,10 @@ class DeviceDetector
692
778
  'KE' => 'Krüger&Matz',
693
779
  '5K' => 'KREZ',
694
780
  'WK' => 'KRIP',
781
+ 'KRA' => 'Kraft',
695
782
  'KH' => 'KT-Tech',
696
783
  'Z6' => 'KUBO',
784
+ 'KUG' => 'KuGou',
697
785
  'K8' => 'Kuliao',
698
786
  '8K' => 'Kult',
699
787
  'KU' => 'Kumai',
@@ -708,10 +796,12 @@ class DeviceDetector
708
796
  'LA1' => 'Lanin',
709
797
  'LK' => 'Lark',
710
798
  'Z3' => 'Laurus',
799
+ 'LEC' => 'Lectrus',
711
800
  'LV' => 'Lava',
712
801
  'LC' => 'LCT',
713
802
  'L5' => 'Leagoo',
714
803
  'U3' => 'Leben',
804
+ 'LEB' => 'LeBest',
715
805
  'LD' => 'Ledstar',
716
806
  'LEE' => 'Leelbox',
717
807
  'L1' => 'LeEco',
@@ -731,8 +821,10 @@ class DeviceDetector
731
821
  'LG' => 'LG',
732
822
  '39' => 'Liberton',
733
823
  '5L' => 'Linsar',
824
+ 'LIN' => 'Linsay',
734
825
  'LF' => 'Lifemaxx',
735
826
  'LI' => 'Lingwin',
827
+ 'LIM' => 'Lime',
736
828
  'LJ' => 'L-Max',
737
829
  'LW' => 'Linnex',
738
830
  'JJ' => 'Listo',
@@ -744,6 +836,7 @@ class DeviceDetector
744
836
  'LH' => 'Logic Instrument',
745
837
  'LM' => 'Logicom',
746
838
  'GY' => 'LOKMAT',
839
+ 'LPX' => 'LPX-G',
747
840
  '0L' => 'Lumigon',
748
841
  'LU' => 'Lumus',
749
842
  'LUM' => 'Lumitel',
@@ -768,10 +861,13 @@ class DeviceDetector
768
861
  'J4' => 'Mara',
769
862
  'MAR' => 'Marshal',
770
863
  '8Y' => 'Massgo',
864
+ 'MA1' => 'Mascom',
771
865
  '2M' => 'Masstel',
772
866
  '3X' => 'Mastertech',
867
+ 'MAS' => 'Master-G',
773
868
  '50' => 'Matrix',
774
869
  '7M' => 'Maxcom',
870
+ '7M1' => 'Maxfone',
775
871
  'ZM' => 'Maximus',
776
872
  '6X' => 'Maxtron',
777
873
  '0D' => 'MAXVI',
@@ -805,6 +901,7 @@ class DeviceDetector
805
901
  '6Q' => 'Microtech',
806
902
  '1X' => 'Minix',
807
903
  'OM' => 'Mintt',
904
+ 'MIN' => 'Mint',
808
905
  'MO' => 'Mio',
809
906
  'X7' => 'Mione',
810
907
  'M7' => 'Miray',
@@ -814,20 +911,29 @@ class DeviceDetector
814
911
  'M5' => 'MIXC',
815
912
  '2D' => 'MIVO',
816
913
  '1Z' => 'MiXzo',
914
+ 'MIW' => 'MIWANG',
817
915
  'ML' => 'MLLED',
818
916
  'LS' => 'MLS',
917
+ 'MLA' => 'MLAB',
819
918
  '5H' => 'MMI',
820
919
  '4M' => 'Mobicel',
821
920
  'M6' => 'Mobiistar',
921
+ 'MOK' => 'Mobile Kingdom',
822
922
  'MH' => 'Mobiola',
823
923
  'MB' => 'Mobistel',
824
924
  'ID' => 'MobiIoT',
825
925
  '6W' => 'MobiWire',
826
926
  '9M' => 'Mobo',
927
+ 'MOB' => 'Mobell',
827
928
  'M4' => 'Modecom',
828
929
  'MF' => 'Mofut',
829
930
  'MR' => 'Motorola',
931
+ 'MIV' => 'Motiv',
830
932
  'MV' => 'Movic',
933
+ 'MOV' => 'Movitel',
934
+ 'MO1' => 'MOVISUN',
935
+ 'MOS' => 'Mosimosi',
936
+ 'MOX' => 'Moxee',
831
937
  'MM' => 'Mpman',
832
938
  'MZ' => 'MSI',
833
939
  '3R' => 'MStar',
@@ -836,6 +942,7 @@ class DeviceDetector
836
942
  '72' => 'M-Tech',
837
943
  '9H' => 'M-Horse',
838
944
  '1R' => 'Multilaser',
945
+ 'MPS' => 'MultiPOS',
839
946
  '1M' => 'MYFON',
840
947
  'MY' => 'MyPhone',
841
948
  '51' => 'Myros',
@@ -846,6 +953,8 @@ class DeviceDetector
846
953
  'J3' => 'Mymaga',
847
954
  'MYM' => 'MyMobile',
848
955
  '07' => 'MyGica',
956
+ 'MYG' => 'MygPad',
957
+ 'MWA' => 'MwalimuPlus',
849
958
  'NEO' => 'neoCore',
850
959
  '08' => 'Nabi',
851
960
  'N7' => 'National',
@@ -856,15 +965,20 @@ class DeviceDetector
856
965
  '7R' => 'NavRoad',
857
966
  'NAS' => 'NASCO',
858
967
  'NP' => 'Naomi Phone',
968
+ 'NAN' => 'Nanho',
859
969
  'NE' => 'NEC',
970
+ 'NDP' => 'Nedaphone',
860
971
  '8N' => 'Necnot',
861
972
  'NF' => 'Neffos',
862
973
  '9X' => 'Neo',
974
+ 'NEK' => 'NEKO',
863
975
  '1N' => 'Neomi',
864
976
  '7Q' => 'Neon IQ',
865
977
  '8F' => 'Neolix',
866
978
  'NA' => 'Netgear',
979
+ 'NEM' => 'Netmak',
867
980
  'NU' => 'NeuImage',
981
+ 'NEU' => 'NeuTab',
868
982
  'NW' => 'Newgen',
869
983
  'N9' => 'Newland',
870
984
  '0N' => 'Newman',
@@ -884,6 +998,7 @@ class DeviceDetector
884
998
  'NJO' => 'nJoy',
885
999
  'NG' => 'NGM',
886
1000
  'NZ' => 'NG Optics',
1001
+ 'NZP' => 'NGpon',
887
1002
  'NN' => 'Nikon',
888
1003
  'NI' => 'Nintendo',
889
1004
  'NIN' => 'NINETEC',
@@ -891,6 +1006,7 @@ class DeviceDetector
891
1006
  'N1' => 'Noain',
892
1007
  'N6' => 'Nobby',
893
1008
  'NOV' => 'Novey',
1009
+ 'NO1' => 'NOVO',
894
1010
  '57' => 'Nubia',
895
1011
  'JN' => 'NOBUX',
896
1012
  'NB' => 'Noblex',
@@ -905,9 +1021,11 @@ class DeviceDetector
905
1021
  '5N' => 'Nos',
906
1022
  'NO' => 'Nous',
907
1023
  'NQ' => 'Novex',
1024
+ 'NOD' => 'noDROPOUT',
908
1025
  'NJ' => 'NuAns',
909
1026
  'NL' => 'NUU Mobile',
910
1027
  'N0' => 'Nuvo',
1028
+ 'NUV' => 'NuVision',
911
1029
  'NV' => 'Nvidia',
912
1030
  'NY' => 'NYX Mobile',
913
1031
  'O3' => 'O+',
@@ -915,15 +1033,23 @@ class DeviceDetector
915
1033
  'O7' => 'Oale',
916
1034
  'OC' => 'OASYS',
917
1035
  'OB' => 'Obi',
1036
+ 'OBR' => 'Ober',
918
1037
  'OQ' => 'Meta',
919
1038
  'O1' => 'Odys',
920
1039
  'ODP' => 'Odotpad',
921
1040
  'O9' => 'Ok',
922
1041
  'OA' => 'Okapia',
1042
+ 'OKI' => 'Oking',
1043
+ 'OLA' => 'Olax',
1044
+ 'OLK' => 'Olkya',
1045
+ 'OLY' => 'Olympia',
1046
+ 'OLT' => 'OLTO',
923
1047
  'OJ' => 'Ookee',
924
1048
  'OD' => 'Onda',
925
1049
  'ON' => 'OnePlus',
926
1050
  'ONC' => 'OneClick',
1051
+ 'ONL' => 'OneLern',
1052
+ 'OAN' => 'Oangcc',
927
1053
  'OX' => 'Onix',
928
1054
  '3O' => 'ONYX BOOX',
929
1055
  'O4' => 'ONN',
@@ -934,6 +1060,7 @@ class DeviceDetector
934
1060
  'OP' => 'OPPO',
935
1061
  'OO' => 'Opsson',
936
1062
  'OPT' => 'Optoma',
1063
+ 'OPH' => 'Ophone',
937
1064
  'OR' => 'Orange',
938
1065
  'O5' => 'Orbic',
939
1066
  'Y6' => 'Orbita',
@@ -952,6 +1079,7 @@ class DeviceDetector
952
1079
  'OV' => 'Overmax',
953
1080
  '30' => 'Ovvi',
954
1081
  'O2' => 'Owwo',
1082
+ 'OSC' => 'OSCAL',
955
1083
  'OY' => 'Oysters',
956
1084
  'QF' => 'OYSIN',
957
1085
  'O6' => 'Oyyu',
@@ -963,11 +1091,15 @@ class DeviceDetector
963
1091
  'PN' => 'Panacom',
964
1092
  'PA' => 'Panasonic',
965
1093
  'PT' => 'Pantech',
1094
+ 'PAN' => 'Pano',
1095
+ 'PA1' => 'Panoramic',
1096
+ 'PLT' => 'Platoon',
966
1097
  '94' => 'Packard Bell',
967
1098
  'H9' => 'Parrot Mobile',
968
1099
  'PAR' => 'Partner Mobile',
969
1100
  'PAP' => 'PAPYRE',
970
1101
  'PB' => 'PCBOX',
1102
+ 'PCS' => 'PC Smart',
971
1103
  'PC' => 'PCD',
972
1104
  'PD' => 'PCD Argentina',
973
1105
  'PE' => 'PEAQ',
@@ -1011,8 +1143,10 @@ class DeviceDetector
1011
1143
  '3F' => 'Porsche',
1012
1144
  'P3' => 'PPTV',
1013
1145
  'FP' => 'Premio',
1146
+ 'PR1' => 'Premier',
1014
1147
  'PR' => 'Prestigio',
1015
1148
  'P9' => 'Primepad',
1149
+ 'PRM' => 'PRIME',
1016
1150
  '6P' => 'Primux',
1017
1151
  '2P' => 'Prixton',
1018
1152
  'PRI' => 'Pritom',
@@ -1025,6 +1159,7 @@ class DeviceDetector
1025
1159
  '7O' => 'Polestar',
1026
1160
  'PU' => 'PULID',
1027
1161
  'UP' => 'Purism',
1162
+ 'PUN' => 'Punos',
1028
1163
  'QFX' => 'QFX',
1029
1164
  'Q7' => 'Q-Box',
1030
1165
  'QH' => 'Q-Touch',
@@ -1035,6 +1170,7 @@ class DeviceDetector
1035
1170
  'Q9' => 'QTECH',
1036
1171
  'QA' => 'Quantum',
1037
1172
  'QUE' => 'Quest',
1173
+ 'QUA' => 'Quatro',
1038
1174
  'QU' => 'Quechua',
1039
1175
  'QUI' => 'Quipus',
1040
1176
  'QO' => 'Qumo',
@@ -1051,16 +1187,19 @@ class DeviceDetector
1051
1187
  'RAY' => 'Raylandz',
1052
1188
  'RC' => 'RCA Tablets',
1053
1189
  '2R' => 'Reach',
1190
+ 'REL' => 'RelNAT',
1054
1191
  'RB' => 'Readboy',
1055
1192
  'RE' => 'Realme',
1056
1193
  'RE1' => 'Redbean',
1057
1194
  'R8' => 'RED',
1058
1195
  'REW' => 'Redway',
1059
1196
  '6F' => 'Redfox',
1197
+ 'RE2' => 'RedLine',
1060
1198
  'RD' => 'Reeder',
1061
1199
  'Z9' => 'REGAL',
1062
1200
  'RH' => 'Remdun',
1063
1201
  'RP' => 'Revo',
1202
+ 'REV' => 'Revomovil',
1064
1203
  '8R' => 'Retroid Pocket',
1065
1204
  'RIC' => 'Ricoh',
1066
1205
  'RI' => 'Rikomagic',
@@ -1073,7 +1212,9 @@ class DeviceDetector
1073
1212
  'RIZ' => 'Rizzen',
1074
1213
  'RR' => 'Roadrover',
1075
1214
  'QR' => 'ROADMAX',
1215
+ 'ROC' => 'Roam Cat',
1076
1216
  'R1' => 'Rokit',
1217
+ 'ROI' => 'ROiK',
1077
1218
  'RK' => 'Roku',
1078
1219
  'R3' => 'Rombica',
1079
1220
  'R5' => 'Ross&Moor',
@@ -1083,23 +1224,32 @@ class DeviceDetector
1083
1224
  'RJ' => 'Royole',
1084
1225
  'RT' => 'RT Project',
1085
1226
  'RG' => 'RugGear',
1227
+ 'RUG' => 'Ruggex',
1228
+ 'RUT' => 'RuggeTech',
1086
1229
  'RU' => 'Runbo',
1230
+ 'RUP' => 'Rupa',
1087
1231
  'RL' => 'Ruio',
1088
1232
  'RY' => 'Ryte',
1089
1233
  'X5' => 'Saba',
1090
1234
  '8L' => 'S-TELL',
1091
1235
  '4O' => 'S2Tel',
1092
1236
  '89' => 'Seatel',
1237
+ 'SEW' => 'Sewoo',
1238
+ 'SE1' => 'SEEWO',
1093
1239
  'Y7' => 'Saiet',
1094
1240
  'X1' => 'Safaricom',
1095
1241
  'SG' => 'Sagem',
1096
1242
  '4L' => 'Salora',
1097
1243
  'SA' => 'Samsung',
1244
+ 'SAT' => 'Samtech',
1245
+ 'SAM' => 'Samtron',
1098
1246
  'SNA' => 'SNAMI',
1099
1247
  'S0' => 'Sanei',
1100
1248
  '12' => 'Sansui',
1249
+ 'SAK' => 'Sankey',
1101
1250
  'SQ' => 'Santin',
1102
1251
  'SY' => 'Sanyo',
1252
+ 'SAN' => 'SANY',
1103
1253
  'S9' => 'Savio',
1104
1254
  'Y4' => 'SCBC',
1105
1255
  'CZ' => 'Schneider',
@@ -1118,8 +1268,10 @@ class DeviceDetector
1118
1268
  'S6' => 'Senseit',
1119
1269
  'EW' => 'Senwa',
1120
1270
  '24' => 'Seeken',
1271
+ 'SEB' => 'SEBBE',
1121
1272
  '61' => 'Seuic',
1122
1273
  'SX' => 'SFR',
1274
+ 'SGI' => 'SGIN',
1123
1275
  'SH' => 'Sharp',
1124
1276
  'JU' => 'Shanling',
1125
1277
  '7S' => 'Shift Phones',
@@ -1140,6 +1292,9 @@ class DeviceDetector
1140
1292
  'GK' => 'SKG',
1141
1293
  'SW' => 'Sky',
1142
1294
  'SK' => 'Skyworth',
1295
+ 'SKY' => 'Skyline',
1296
+ 'SK1' => 'SkyStream',
1297
+ 'SKK' => 'SKK Mobile',
1143
1298
  '14' => 'Smadl',
1144
1299
  '19' => 'Smailo',
1145
1300
  'SR' => 'Smart Electronic',
@@ -1148,15 +1303,18 @@ class DeviceDetector
1148
1303
  '47' => 'SmartBook',
1149
1304
  '3B' => 'Smartab',
1150
1305
  '80' => 'SMARTEC',
1306
+ 'SM1' => 'Smartex',
1151
1307
  'SC' => 'Smartfren',
1152
1308
  'S7' => 'Smartisan',
1153
1309
  'JR' => 'Sylvania',
1310
+ 'SYH' => 'SYH',
1154
1311
  '3Y' => 'Smarty',
1155
1312
  'HH' => 'Smooth Mobile',
1156
1313
  '1Q' => 'Smotreshka',
1157
1314
  'SF' => 'Softbank',
1158
1315
  '9L' => 'SOLE',
1159
1316
  'JL' => 'SOLO',
1317
+ 'SOS' => 'SOSH',
1160
1318
  'SOD' => 'Soda',
1161
1319
  '16' => 'Solone',
1162
1320
  'OI' => 'Sonim',
@@ -1166,6 +1324,7 @@ class DeviceDetector
1166
1324
  '8S' => 'Soyes',
1167
1325
  '77' => 'SONOS',
1168
1326
  '68' => 'Soho Style',
1327
+ 'SOB' => 'SobieTech',
1169
1328
  'PK' => 'Spark',
1170
1329
  'FS' => 'SPC',
1171
1330
  '6S' => 'Spectrum',
@@ -1188,6 +1347,7 @@ class DeviceDetector
1188
1347
  '96' => 'STRONG',
1189
1348
  '69' => 'Stylo',
1190
1349
  '9S' => 'Sugar',
1350
+ 'SUR' => 'Surge',
1191
1351
  '06' => 'Subor',
1192
1352
  'SZ' => 'Sumvision',
1193
1353
  '0H' => 'Sunstech',
@@ -1195,15 +1355,21 @@ class DeviceDetector
1195
1355
  '5S' => 'Sunvell',
1196
1356
  '5Y' => 'Sunny',
1197
1357
  'W8' => 'SUNWIND',
1358
+ 'SBX' => 'SuperBOX',
1198
1359
  'SU' => 'SuperSonic',
1199
1360
  '79' => 'SuperTab',
1200
1361
  'S5' => 'Supra',
1362
+ 'SUP' => 'Supraim',
1201
1363
  'ZS' => 'Suzuki',
1202
1364
  '2J' => 'Sunmi',
1365
+ 'SUN' => 'Sunmax',
1203
1366
  '0W' => 'Swipe',
1367
+ 'SWI' => 'Switel',
1204
1368
  'SS' => 'SWISSMOBILITY',
1205
1369
  '1W' => 'Swisstone',
1206
1370
  'W7' => 'SWTV',
1371
+ 'SSK' => 'SSKY',
1372
+ 'SYC' => 'Syco',
1207
1373
  'SM' => 'Symphony',
1208
1374
  '4S' => 'Syrox',
1209
1375
  'TM' => 'T-Mobile',
@@ -1221,13 +1387,16 @@ class DeviceDetector
1221
1387
  'H4' => 'Technicolor',
1222
1388
  'TEA' => 'TeachTouch',
1223
1389
  'Z5' => 'Technika',
1390
+ 'TE1' => 'TechSmart',
1224
1391
  'TX' => 'TechniSat',
1225
1392
  'TT' => 'TechnoTrend',
1226
1393
  'TP' => 'TechPad',
1394
+ 'TPS' => 'TPS',
1227
1395
  '9E' => 'Techwood',
1228
1396
  '7F' => 'Technopc',
1229
1397
  'T7' => 'Teclast',
1230
1398
  'TB' => 'Tecno Mobile',
1399
+ 'TEC' => 'TecToy',
1231
1400
  '91' => 'TEENO',
1232
1401
  '2L' => 'Tele2',
1233
1402
  'TL' => 'Telefunken',
@@ -1237,10 +1406,12 @@ class DeviceDetector
1237
1406
  '65' => 'Telia',
1238
1407
  'TEL' => 'Telma',
1239
1408
  'PW' => 'Telpo',
1409
+ 'TLS' => 'TeloSystems',
1240
1410
  'TER' => 'Teracube',
1241
1411
  'TD' => 'Tesco',
1242
1412
  'TA' => 'Tesla',
1243
1413
  '9T' => 'Tetratab',
1414
+ 'TET' => 'TETC',
1244
1415
  'TZ' => 'teXet',
1245
1416
  '29' => 'Teknosa',
1246
1417
  'JZ' => 'TJC',
@@ -1263,11 +1434,14 @@ class DeviceDetector
1263
1434
  'T1' => 'Tolino',
1264
1435
  '0T' => 'Tone',
1265
1436
  'TY' => 'Tooky',
1437
+ 'TOO' => 'TOOGO',
1266
1438
  'T9' => 'Top House',
1267
1439
  'DK' => 'Topelotek',
1268
1440
  '42' => 'Topway',
1269
1441
  'TO' => 'Toplux',
1270
1442
  'TOD' => 'TOPDON',
1443
+ 'TOP' => 'TopDevice',
1444
+ 'TO2' => 'TOPSHOWS',
1271
1445
  '7T' => 'Torex',
1272
1446
  'TOR' => 'Torque',
1273
1447
  '6O' => 'TOSCIDO',
@@ -1306,17 +1480,21 @@ class DeviceDetector
1306
1480
  'UL' => 'Ulefone',
1307
1481
  'UA' => 'Umax',
1308
1482
  'UM' => 'UMIDIGI',
1483
+ 'UNT' => 'Unitech',
1309
1484
  'UZ' => 'Unihertz',
1310
1485
  '3Z' => 'UZ Mobile',
1311
1486
  'UX' => 'Unimax',
1487
+ 'UNQ' => 'Uniqcell',
1312
1488
  'US' => 'Uniscope',
1313
1489
  'UNI' => 'Unistrong',
1314
1490
  'U2' => 'UNIWA',
1491
+ 'UND' => 'Uniden',
1315
1492
  'UO' => 'Unnecto',
1316
1493
  'UNN' => 'Unnion Technologies',
1317
1494
  'UU' => 'Unonu',
1318
1495
  'UN' => 'Unowhy',
1319
1496
  'UY' => 'UNNO',
1497
+ 'UOO' => 'UOOGOU',
1320
1498
  'UNB' => 'Unblock Tech',
1321
1499
  'UK' => 'UTOK',
1322
1500
  '3U' => 'IUNI',
@@ -1330,6 +1508,7 @@ class DeviceDetector
1330
1508
  'VP' => 'Vargo',
1331
1509
  'VC' => 'Vankyo',
1332
1510
  'VAL' => 'VALEM',
1511
+ 'VAT' => 'VALTECH',
1333
1512
  'VB' => 'VC',
1334
1513
  'VN' => 'Venso',
1335
1514
  'VEN' => 'Venstar',
@@ -1341,9 +1520,12 @@ class DeviceDetector
1341
1520
  'VR' => 'Vernee',
1342
1521
  'VX' => 'Vertex',
1343
1522
  'VE' => 'Vertu',
1523
+ 'VET' => 'VETAS',
1344
1524
  'VL' => 'Verykool',
1345
1525
  'QV' => 'Verssed',
1526
+ 'VER' => 'Versus',
1346
1527
  'V8' => 'Vesta',
1528
+ 'VEK' => 'Vekta',
1347
1529
  'VT' => 'Vestel',
1348
1530
  '48' => 'Vexia',
1349
1531
  'V6' => 'VGO TEL',
@@ -1358,17 +1540,26 @@ class DeviceDetector
1358
1540
  'FV' => 'Vios',
1359
1541
  '0V' => 'Vipro',
1360
1542
  'ZV' => 'Virzo',
1543
+ 'VIP' => 'Viper',
1361
1544
  'VI' => 'Vitelcom',
1545
+ 'VIB' => 'ViBox',
1362
1546
  '8V' => 'Viumee',
1363
1547
  'V5' => 'Vivax',
1548
+ 'VIV' => 'VIVIMAGE',
1364
1549
  'VV' => 'Vivo',
1365
1550
  '6V' => 'VIWA',
1551
+ 'VII' => 'VIIPOO',
1366
1552
  'VID' => 'VIDA',
1367
1553
  'VZ' => 'Vizio',
1554
+ 'VIZ' => 'Vizmo',
1555
+ 'VIT' => 'Vityaz',
1368
1556
  '9V' => 'Vision Touch',
1557
+ 'VIL' => 'Visual Land',
1369
1558
  'VK' => 'VK Mobile',
1370
1559
  'JM' => 'v-mobile',
1371
1560
  'VHO' => 'V-HOPE',
1561
+ 'VHM' => 'V-HOME',
1562
+ 'VGE' => 'V-Gen',
1372
1563
  'V0' => 'VKworld',
1373
1564
  'VM' => 'Vodacom',
1374
1565
  'VF' => 'Vodafone',
@@ -1379,11 +1570,13 @@ class DeviceDetector
1379
1570
  '2V' => 'Vorke',
1380
1571
  '8U' => 'Vorcom',
1381
1572
  'JW' => 'Vortex',
1573
+ 'VOR' => 'Vormor',
1382
1574
  'V1' => 'Voto',
1383
1575
  'Z7' => 'VOX',
1384
1576
  'VO' => 'Voxtel',
1385
1577
  'VY' => 'Voyo',
1386
1578
  'VOL' => 'Völfen',
1579
+ 'VO1' => 'Volt',
1387
1580
  'VH' => 'Vsmart',
1388
1581
  'V9' => 'Vsun',
1389
1582
  'VU' => 'Vulcan',
@@ -1391,14 +1584,19 @@ class DeviceDetector
1391
1584
  'ZC' => 'VUCATIMES',
1392
1585
  'VUE' => 'Vue Micro',
1393
1586
  'WA' => 'Walton',
1587
+ 'WAF' => 'WAF',
1588
+ 'WAL' => 'Waltter',
1589
+ 'WHI' => 'White Mobile',
1394
1590
  'WM' => 'Weimei',
1395
1591
  'WE' => 'WellcoM',
1396
1592
  'W6' => 'WELLINGTON',
1397
1593
  'WD' => 'Western Digital',
1398
1594
  'WT' => 'Westpoint',
1399
1595
  'WAN' => 'Wanmukang',
1596
+ 'WA1' => 'WANSA',
1400
1597
  'WY' => 'Wexler',
1401
1598
  '3W' => 'WE',
1599
+ 'WEC' => 'Wecool',
1402
1600
  'WEE' => 'Weelikeit',
1403
1601
  'WP' => 'Wieppo',
1404
1602
  'W2' => 'Wigor',
@@ -1409,6 +1607,7 @@ class DeviceDetector
1409
1607
  '9W' => 'Winmax',
1410
1608
  'W5' => 'Winnovo',
1411
1609
  'WU' => 'Wintouch',
1610
+ 'WIS' => 'Winstar',
1412
1611
  'W0' => 'Wiseasy',
1413
1612
  '2W' => 'Wizz',
1414
1613
  'W4' => 'WIWA',
@@ -1421,13 +1620,16 @@ class DeviceDetector
1421
1620
  'WR' => 'Wortmann',
1422
1621
  'WX' => 'Woxter',
1423
1622
  'XQ' => 'X-AGE',
1623
+ 'XEL' => 'XElectron',
1424
1624
  'X3' => 'X-BO',
1625
+ 'XMO' => 'X-Mobile',
1425
1626
  'XT' => 'X-TIGI',
1426
1627
  'XV' => 'X-View',
1427
1628
  'X4' => 'X.Vision',
1428
1629
  'X88' => 'X88',
1429
1630
  'X96' => 'X96',
1430
1631
  '96Q' => 'X96Q',
1632
+ 'A95' => 'A95X',
1431
1633
  'XG' => 'Xgody',
1432
1634
  'QX' => 'XGIMI',
1433
1635
  'XL' => 'Xiaolajiao',
@@ -1439,13 +1641,21 @@ class DeviceDetector
1439
1641
  'XS' => 'Xshitou',
1440
1642
  '4X' => 'Xtouch',
1441
1643
  'X8' => 'Xtratech',
1644
+ 'XCR' => 'Xcruiser',
1645
+ 'XCO' => 'XCOM',
1646
+ 'XCL' => 'Xcell',
1647
+ 'XWA' => 'Xwave',
1442
1648
  'YD' => 'Yandex',
1443
1649
  'YA' => 'Yarvik',
1444
1650
  'Y2' => 'Yes',
1651
+ 'YES' => 'Yestel',
1445
1652
  'YE' => 'Yezz',
1446
1653
  'YG' => 'YEPEN',
1654
+ 'YEL' => 'YELLYOUTH',
1447
1655
  'YK' => 'Yoka TV',
1448
1656
  'YO' => 'Yota',
1657
+ 'YOU' => 'Youin',
1658
+ 'YO1' => 'Youwei',
1449
1659
  'YOO' => 'Yooz',
1450
1660
  'YT' => 'Ytone',
1451
1661
  'Y9' => 'YOTOPT',
@@ -1454,6 +1664,7 @@ class DeviceDetector
1454
1664
  'Y0' => 'YUHO',
1455
1665
  'YN' => 'Yuno',
1456
1666
  'YUN' => 'YUNDOO',
1667
+ 'YUS' => 'YunSong',
1457
1668
  'YUM' => 'YUMKEM',
1458
1669
  'YU' => 'Yuandao',
1459
1670
  'YS' => 'Yusun',
@@ -1461,8 +1672,10 @@ class DeviceDetector
1461
1672
  'YX' => 'Yxtel',
1462
1673
  '0Z' => 'Zatec',
1463
1674
  '2Z' => 'Zaith',
1675
+ 'ZAM' => 'Zamolxe',
1464
1676
  'ZEA' => 'Zealot',
1465
1677
  'PZ' => 'Zebra',
1678
+ 'ZE1' => 'Zeblaze',
1466
1679
  'ZE' => 'Zeemi',
1467
1680
  'WZ' => 'Zeeker',
1468
1681
  'ZN' => 'Zen',
@@ -1473,10 +1686,13 @@ class DeviceDetector
1473
1686
  'FZ' => 'ZIFRO',
1474
1687
  'ZX' => 'Ziox',
1475
1688
  'ZIK' => 'ZIK',
1689
+ 'ZIG' => 'Zigo',
1476
1690
  'ZIN' => 'Zinox',
1477
1691
  'ZO' => 'Zonda',
1478
1692
  'ZW' => 'Zonko',
1479
1693
  'ZP' => 'Zopo',
1694
+ 'ZOO' => 'ZoomSmart',
1695
+ 'ZO1' => 'Zoom',
1480
1696
  'ZT' => 'ZTE',
1481
1697
  'ZU' => 'Zuum',
1482
1698
  'ZY' => 'Zync',
@@ -1484,6 +1700,7 @@ class DeviceDetector
1484
1700
  'ZQ' => 'ZYQ',
1485
1701
  'Z4' => 'ZH&K',
1486
1702
  'OW' => 'öwn',
1703
+ 'WBF' => 'Webfleet',
1487
1704
 
1488
1705
  # legacy brands, might be removed in future versions
1489
1706
  'WB' => 'Web TV',
@@ -1507,11 +1724,24 @@ class DeviceDetector
1507
1724
  end
1508
1725
 
1509
1726
  def brand
1510
- regex_meta[:brand]
1727
+ return regex_meta[:brand] if regex_meta[:brand] == 'Sony Ericsson'
1728
+
1729
+ brand = regex_meta[:regex_name] || regex_meta[:brand] || vendor_fragment.name || fix_for_x_music
1730
+ return if brand == 'Unknown'
1731
+
1732
+ brand
1511
1733
  end
1512
1734
 
1513
1735
  private
1514
1736
 
1737
+ def fix_for_x_music
1738
+ user_agent&.include?('X-music Ⅲ') ? 'OneClick' : nil
1739
+ end
1740
+
1741
+ def vendor_fragment
1742
+ ::DeviceDetector::VendorFragment.new(user_agent)
1743
+ end
1744
+
1515
1745
  # The order of files needs to be the same as the order of device
1516
1746
  # parser classes used in the piwik project.
1517
1747
  def filenames