independent-analytics
/
vendor
/
matomo
/
device-detector
/
Parser
/
Device
/
AbstractDeviceParser.php
AbstractDeviceParser.php
1 month ago
Camera.php
2 years ago
CarBrowser.php
2 years ago
Console.php
2 years ago
HbbTv.php
3 months ago
Mobile.php
2 years ago
Notebook.php
2 years ago
PortableMediaPlayer.php
2 years ago
ShellTv.php
3 months ago
AbstractDeviceParser.php
2423 lines
| 1 | <?php |
| 2 | |
| 3 | /** |
| 4 | * Device Detector - The Universal Device Detection library for parsing User Agents |
| 5 | * |
| 6 | * @link https://matomo.org |
| 7 | * |
| 8 | * @license http://www.gnu.org/licenses/lgpl.html LGPL v3 or later |
| 9 | */ |
| 10 | declare (strict_types=1); |
| 11 | namespace IAWPSCOPED\DeviceDetector\Parser\Device; |
| 12 | |
| 13 | use IAWPSCOPED\DeviceDetector\Parser\AbstractParser; |
| 14 | /** |
| 15 | * Class AbstractDeviceParser |
| 16 | * |
| 17 | * Abstract class for all device parsers |
| 18 | * @internal |
| 19 | */ |
| 20 | abstract class AbstractDeviceParser extends AbstractParser |
| 21 | { |
| 22 | /** |
| 23 | * @var ?int |
| 24 | */ |
| 25 | protected $deviceType = null; |
| 26 | /** |
| 27 | * @var string |
| 28 | */ |
| 29 | protected $model = ''; |
| 30 | /** |
| 31 | * @var string |
| 32 | */ |
| 33 | protected $brand = ''; |
| 34 | public const DEVICE_TYPE_DESKTOP = 0; |
| 35 | public const DEVICE_TYPE_SMARTPHONE = 1; |
| 36 | public const DEVICE_TYPE_TABLET = 2; |
| 37 | public const DEVICE_TYPE_FEATURE_PHONE = 3; |
| 38 | public const DEVICE_TYPE_CONSOLE = 4; |
| 39 | public const DEVICE_TYPE_TV = 5; |
| 40 | // including set top boxes, blu-ray players,... |
| 41 | public const DEVICE_TYPE_CAR_BROWSER = 6; |
| 42 | public const DEVICE_TYPE_SMART_DISPLAY = 7; |
| 43 | public const DEVICE_TYPE_CAMERA = 8; |
| 44 | public const DEVICE_TYPE_PORTABLE_MEDIA_PAYER = 9; |
| 45 | public const DEVICE_TYPE_PHABLET = 10; |
| 46 | public const DEVICE_TYPE_SMART_SPEAKER = 11; |
| 47 | public const DEVICE_TYPE_WEARABLE = 12; |
| 48 | // including set watches, headsets |
| 49 | public const DEVICE_TYPE_PERIPHERAL = 13; |
| 50 | // including portable terminal, portable projector |
| 51 | /** |
| 52 | * Detectable device types |
| 53 | * |
| 54 | * @var array |
| 55 | */ |
| 56 | protected static $deviceTypes = ['desktop' => self::DEVICE_TYPE_DESKTOP, 'smartphone' => self::DEVICE_TYPE_SMARTPHONE, 'tablet' => self::DEVICE_TYPE_TABLET, 'feature phone' => self::DEVICE_TYPE_FEATURE_PHONE, 'console' => self::DEVICE_TYPE_CONSOLE, 'tv' => self::DEVICE_TYPE_TV, 'car browser' => self::DEVICE_TYPE_CAR_BROWSER, 'smart display' => self::DEVICE_TYPE_SMART_DISPLAY, 'camera' => self::DEVICE_TYPE_CAMERA, 'portable media player' => self::DEVICE_TYPE_PORTABLE_MEDIA_PAYER, 'phablet' => self::DEVICE_TYPE_PHABLET, 'smart speaker' => self::DEVICE_TYPE_SMART_SPEAKER, 'wearable' => self::DEVICE_TYPE_WEARABLE, 'peripheral' => self::DEVICE_TYPE_PERIPHERAL]; |
| 57 | /** |
| 58 | * Known device brands |
| 59 | * |
| 60 | * Note: Before using a new brand in on of the regex files, it needs to be added here |
| 61 | * |
| 62 | * @var array |
| 63 | */ |
| 64 | public static $deviceBrands = [ |
| 65 | '5E' => '2E', |
| 66 | '5IV' => '5IVE', |
| 67 | '2F' => 'F2 Mobile', |
| 68 | '3Q' => '3Q', |
| 69 | 'J7' => '7 Mobile', |
| 70 | '2Q' => '3GNET', |
| 71 | '4G' => '4Good', |
| 72 | '27' => '3GO', |
| 73 | '04' => '4ife', |
| 74 | '36' => '360', |
| 75 | '88' => '8848', |
| 76 | '10M' => '10moons', |
| 77 | '41' => 'A1', |
| 78 | 'AK1' => 'A&K', |
| 79 | '00' => 'Accent', |
| 80 | 'ACC' => 'Accesstyle', |
| 81 | 'ACD' => 'ACD', |
| 82 | 'AE' => 'Ace', |
| 83 | 'AC' => 'Acer', |
| 84 | 'ACL' => 'Aceline', |
| 85 | 'ACP' => 'Acepad', |
| 86 | '3K' => 'Acteck', |
| 87 | 'ACT' => 'actiMirror', |
| 88 | 'A9' => 'Advan', |
| 89 | 'AD' => 'Advance', |
| 90 | 'ADV' => 'Advantage Air', |
| 91 | '76' => 'Adronix', |
| 92 | 'ADR' => 'Adreamer', |
| 93 | 'AF' => 'AfriOne', |
| 94 | 'FY' => 'AFFIX', |
| 95 | 'A3' => 'AGM', |
| 96 | 'AEE' => 'AEEZO', |
| 97 | 'J0' => 'AG Mobile', |
| 98 | 'AJI' => 'Ajib', |
| 99 | 'AZ' => 'Ainol', |
| 100 | 'AIR' => 'Airis', |
| 101 | 'AI' => 'Airness', |
| 102 | 'ARP' => 'Airpha', |
| 103 | 'AT' => 'Airties', |
| 104 | '7U' => 'Airtel', |
| 105 | 'AIT' => 'AirTouch', |
| 106 | 'U0' => 'AIRON', |
| 107 | '0A' => 'AIS', |
| 108 | 'AW' => 'Aiwa', |
| 109 | '85' => 'Aiuto', |
| 110 | 'U7' => 'AIDATA', |
| 111 | 'AL1' => 'AileTV', |
| 112 | 'AL2' => 'AI+', |
| 113 | 'AK' => 'Akai', |
| 114 | 'Q3' => 'AKIRA', |
| 115 | '1A' => 'Alba', |
| 116 | 'AL' => 'Alcatel', |
| 117 | 'AL0' => 'Alienware', |
| 118 | '20' => 'Alcor', |
| 119 | 'XY' => 'Alps', |
| 120 | 'XYA' => 'XY Auto', |
| 121 | 'AAU' => 'AAUW', |
| 122 | '7L' => 'ALDI NORD', |
| 123 | '6L' => 'ALDI SÜD', |
| 124 | '3L' => 'Alfawise', |
| 125 | '4A' => 'Aligator', |
| 126 | 'ALS' => 'All Star', |
| 127 | 'AA' => 'AllCall', |
| 128 | '3A' => 'AllDocube', |
| 129 | 'ALL' => 'allente', |
| 130 | 'A2' => 'Allview', |
| 131 | 'ALI' => 'ALLINmobile', |
| 132 | 'A7' => 'Allwinner', |
| 133 | 'ALP' => 'alpsmart', |
| 134 | 'A1' => 'Altech UEC', |
| 135 | '66' => 'Altice', |
| 136 | 'ALM' => 'Altimo', |
| 137 | 'A5' => 'altron', |
| 138 | 'ALB' => 'Altibox', |
| 139 | 'ALT' => 'Altus', |
| 140 | 'KN' => 'Amazon', |
| 141 | 'AMZ' => 'Amazon Basics', |
| 142 | 'AMA' => 'AMA', |
| 143 | 'AG' => 'AMGOO', |
| 144 | '9A' => 'Amigoo', |
| 145 | 'AO' => 'Amoi', |
| 146 | '3J' => 'Amino', |
| 147 | '54' => 'AMCV', |
| 148 | '60' => 'Andowl', |
| 149 | 'ANX' => 'ANXONIT', |
| 150 | 'ANL' => 'ANCEL', |
| 151 | 'ANC' => 'ANBERNIC', |
| 152 | 'AND' => 'andersson', |
| 153 | '6J' => 'Angelcare', |
| 154 | 'ANG' => 'AngelTech', |
| 155 | '7A' => 'Anry', |
| 156 | 'A0' => 'ANS', |
| 157 | '74' => 'Anker', |
| 158 | '3N' => 'Aoson', |
| 159 | 'O8' => 'AOC', |
| 160 | 'J2' => 'AOYODKG', |
| 161 | '55' => 'AOpen', |
| 162 | 'RW' => 'Aoro', |
| 163 | '9Y' => 'Aocos', |
| 164 | 'AOW' => 'Aocwei', |
| 165 | 'AP' => 'Apple', |
| 166 | 'APS' => 'ApoloSign', |
| 167 | 'ARC' => 'Arçelik', |
| 168 | 'AR' => 'Archos', |
| 169 | 'AB' => 'Arian Space', |
| 170 | 'ARI' => 'Arival', |
| 171 | 'A6' => 'Ark', |
| 172 | '5A' => 'ArmPhone', |
| 173 | 'AN' => 'Arnova', |
| 174 | 'AS' => 'ARRIS', |
| 175 | 'AQ' => 'Aspera', |
| 176 | 'HJ' => 'Aquarius', |
| 177 | '40' => 'Artel', |
| 178 | '21' => 'Artizlee', |
| 179 | '59' => 'ArtLine', |
| 180 | '8A' => 'Asano', |
| 181 | '90' => 'Asanzo', |
| 182 | '1U' => 'Astro (UA)', |
| 183 | 'AST' => 'astro (MY)', |
| 184 | 'A4' => 'Ask', |
| 185 | 'A8' => 'Assistant', |
| 186 | 'ASS' => 'ASSE', |
| 187 | 'AU' => 'Asus', |
| 188 | '6A' => 'AT&T', |
| 189 | 'ATH' => 'Athesi', |
| 190 | 'ATE' => 'Atlantic Electrics', |
| 191 | '5Q' => 'Atmaca Elektronik', |
| 192 | 'YH' => 'ATMAN', |
| 193 | 'ATM' => 'ATMPC', |
| 194 | '2A' => 'Atom', |
| 195 | 'AT1' => 'Atozee', |
| 196 | 'ATO' => 'ATOL', |
| 197 | 'Z2' => 'Atvio', |
| 198 | 'ATI' => 'Attila', |
| 199 | 'ATU' => 'Atouch', |
| 200 | 'AX' => 'Audiovox', |
| 201 | 'AJ' => 'AURIS', |
| 202 | 'YZ' => 'Autan', |
| 203 | 'AUP' => 'AUPO', |
| 204 | 'ZA' => 'Avenzo', |
| 205 | 'AH' => 'AVH', |
| 206 | 'AV' => 'Avvio', |
| 207 | 'AVA' => 'Avaya', |
| 208 | 'AXE' => 'AXEN', |
| 209 | 'AY' => 'Axxion', |
| 210 | 'AXX' => 'AXXA', |
| 211 | 'AYA' => 'AYA', |
| 212 | 'YR' => 'AYYA', |
| 213 | 'XA' => 'Axioo', |
| 214 | 'AM' => 'Azumi Mobile', |
| 215 | 'AZE' => 'Azeyou', |
| 216 | 'AZU' => 'Azupik', |
| 217 | 'AZO' => 'AZOM', |
| 218 | 'WW' => 'Awow', |
| 219 | 'AWO' => 'AWOX', |
| 220 | 'XU' => 'AUX', |
| 221 | 'BAC' => 'Backcell', |
| 222 | 'BFF' => 'BAFF', |
| 223 | 'BNC' => 'BNCF', |
| 224 | 'BO' => 'BangOlufsen', |
| 225 | 'BN' => 'Barnes & Noble', |
| 226 | 'BAR' => 'BARTEC', |
| 227 | 'BAU' => 'BAUHN', |
| 228 | 'BB' => 'BBK', |
| 229 | '0B' => 'BB Mobile', |
| 230 | 'B6' => 'BDF', |
| 231 | 'QD' => 'BDQ', |
| 232 | '8Z' => 'BDsharing', |
| 233 | 'BEF' => 'Beafon', |
| 234 | 'BE' => 'Becker', |
| 235 | 'B5' => 'Beeline', |
| 236 | 'B0' => 'Beelink', |
| 237 | 'BL' => 'Beetel', |
| 238 | 'BEK' => 'Beko', |
| 239 | '2X' => 'Benco', |
| 240 | 'BQ' => 'BenQ', |
| 241 | 'BQL' => 'Bqeel', |
| 242 | 'BS' => 'BenQ-Siemens', |
| 243 | '4Y' => 'Benzo', |
| 244 | 'XJ' => 'Benesse', |
| 245 | 'BEN' => 'BenWee', |
| 246 | 'YB' => 'Beista', |
| 247 | 'BY' => 'BS Mobile', |
| 248 | 'BZ' => 'Bezkam', |
| 249 | 'BEL' => 'Bell', |
| 250 | '9B' => 'Bellphone', |
| 251 | '63' => 'Beyond', |
| 252 | 'BG' => 'BGH', |
| 253 | '6B' => 'Bigben', |
| 254 | 'B8' => 'BIHEE', |
| 255 | '1B' => 'Billion', |
| 256 | 'BA' => 'BilimLand', |
| 257 | 'BIL' => 'Billow', |
| 258 | 'BH' => 'BioRugged', |
| 259 | 'BI' => 'Bird', |
| 260 | 'BT' => 'Bitel', |
| 261 | 'B7' => 'Bitmore', |
| 262 | 'ZB' => 'Bittium', |
| 263 | 'BIE' => 'Biegedy', |
| 264 | 'BK' => 'Bkav', |
| 265 | '5B' => 'Black Bear', |
| 266 | 'BLK' => 'Black Box', |
| 267 | 'BF' => 'Black Fox', |
| 268 | 'BPC' => 'Blackpcs', |
| 269 | 'BLP' => 'Blackphone', |
| 270 | 'BLT' => 'Blackton', |
| 271 | 'B2' => 'Blackview', |
| 272 | '2Y' => 'b2m', |
| 273 | 'BP' => 'Blaupunkt', |
| 274 | 'BU' => 'Blu', |
| 275 | 'BUS' => 'BluSlate', |
| 276 | 'BUZ' => 'BuzzTV', |
| 277 | 'B3' => 'Bluboo', |
| 278 | '2B' => 'Bluedot', |
| 279 | 'BD' => 'Bluegood', |
| 280 | 'LB' => 'Bluewave', |
| 281 | 'J8' => 'Bluebird', |
| 282 | 'BSS' => 'BlueSky', |
| 283 | '7B' => 'Blloc', |
| 284 | 'UB' => 'Bleck', |
| 285 | 'Q2' => 'Blow', |
| 286 | 'BLI' => 'BLISS', |
| 287 | 'BM' => 'Bmobile', |
| 288 | 'Y5' => 'BMAX', |
| 289 | 'BMX' => 'BMXC', |
| 290 | 'B9' => 'Bobarry', |
| 291 | 'B4' => 'bogo', |
| 292 | 'BOL' => 'Bolva', |
| 293 | 'BW' => 'Boway', |
| 294 | 'BOO' => 'Boost', |
| 295 | 'BOK' => 'Bookeen', |
| 296 | 'BOT' => 'Botech', |
| 297 | 'BX' => 'bq', |
| 298 | '8B' => 'Brandt', |
| 299 | 'BRA' => 'BrandCode', |
| 300 | 'BV' => 'Bravis', |
| 301 | 'BRV' => 'BRAVE', |
| 302 | 'BRG' => 'Brigmton', |
| 303 | 'BR' => 'Brondi', |
| 304 | 'XF' => 'BROR', |
| 305 | 'BJ' => 'BrightSign', |
| 306 | 'B1' => 'Bush', |
| 307 | '4Q' => 'Bundy', |
| 308 | 'Y8' => 'Bubblegum', |
| 309 | 'BMW' => 'BMW', |
| 310 | 'BYJ' => 'BYJU\'S', |
| 311 | 'BYY' => 'BYYBUO', |
| 312 | 'BYD' => 'BYD', |
| 313 | 'C9' => 'CAGI', |
| 314 | 'CAD' => 'CADENA', |
| 315 | 'CAL' => 'CALME', |
| 316 | 'CAI' => 'Caixun', |
| 317 | 'CT' => 'Capitel', |
| 318 | 'GRD' => 'G-Guard', |
| 319 | 'GVL' => 'G-Vill', |
| 320 | 'G3' => 'CG Mobile', |
| 321 | '37' => 'CGV', |
| 322 | 'CP' => 'Captiva', |
| 323 | 'CPD' => 'CPDEVICE', |
| 324 | 'CF' => 'Carrefour', |
| 325 | 'CA1' => 'Carbon Mobile', |
| 326 | 'CS' => 'Casio', |
| 327 | 'R4' => 'Casper', |
| 328 | 'CA' => 'Cat', |
| 329 | 'BC' => 'Camfone', |
| 330 | 'CJ' => 'Cavion', |
| 331 | 'CNM' => 'Canaima', |
| 332 | 'CAN' => 'Canal+', |
| 333 | '4D' => 'Canal Digital', |
| 334 | 'CNG' => 'Canguro', |
| 335 | 'CNT' => 'CCIT', |
| 336 | 'CEC' => 'Cecotec', |
| 337 | 'CEP' => 'CEPTER', |
| 338 | 'CEI' => 'Ceibal', |
| 339 | '02' => 'Cell-C', |
| 340 | 'CEL' => 'Cellacom', |
| 341 | '34' => 'CellAllure', |
| 342 | '7C' => 'Celcus', |
| 343 | 'CE' => 'Celkon', |
| 344 | 'CG' => 'Cellution', |
| 345 | '62' => 'Centric', |
| 346 | 'CEN' => 'CENTEK', |
| 347 | 'C2' => 'Changhong', |
| 348 | 'CHA' => 'Chainway', |
| 349 | 'CHG' => 'ChiliGreen', |
| 350 | 'CH' => 'Cherry Mobile', |
| 351 | 'C3' => 'China Mobile', |
| 352 | 'U9' => 'China Telecom', |
| 353 | 'CI' => 'Chico Mobile', |
| 354 | 'CHC' => 'CHCNAV', |
| 355 | 'CIA' => 'C Idea', |
| 356 | 'CIP' => 'CipherLab', |
| 357 | 'CIT' => 'Citycall', |
| 358 | '1C' => 'Chuwi', |
| 359 | 'L8' => 'Clarmin', |
| 360 | '25' => 'Claresta', |
| 361 | 'CLA' => 'CLAYTON', |
| 362 | 'CLT' => 'Clovertek', |
| 363 | '1J' => 'Cloud Mobile', |
| 364 | 'CD' => 'Cloudfone', |
| 365 | 'C0' => 'Clout', |
| 366 | 'CN' => 'CnM', |
| 367 | 'CY' => 'Coby Kyros', |
| 368 | 'XC' => 'Cobalt', |
| 369 | 'C6' => 'Comio', |
| 370 | 'COM' => 'CommScope', |
| 371 | 'CL' => 'Compal', |
| 372 | 'CQ' => 'Compaq', |
| 373 | 'C7' => 'ComTrade Tesla', |
| 374 | '7Z' => 'COMPUMAX', |
| 375 | 'C8' => 'Concord', |
| 376 | 'CC' => 'ConCorde', |
| 377 | 'C5' => 'Condor', |
| 378 | 'C5M' => 'C5 Mobile', |
| 379 | 'COE' => 'Cogeco', |
| 380 | '4C' => 'Conquest', |
| 381 | 'COG' => 'CONSUNG', |
| 382 | '3C' => 'Contixo', |
| 383 | '8C' => 'Connex', |
| 384 | '53' => 'Connectce', |
| 385 | 'CON' => 'Conceptum', |
| 386 | 'CED' => 'Continental Edison', |
| 387 | '9C' => 'Colors', |
| 388 | 'COL' => 'COLORROOM', |
| 389 | 'CAA' => 'coocaa', |
| 390 | 'CO' => 'Coolpad', |
| 391 | 'COO' => 'Coopers', |
| 392 | 'CDE' => 'COOD-E', |
| 393 | '4R' => 'CORN', |
| 394 | '1O' => 'Cosmote', |
| 395 | 'CW' => 'Cowon', |
| 396 | '75' => 'Covia', |
| 397 | 'QG' => 'COYOTE', |
| 398 | 'CKK' => 'CKK Mobile', |
| 399 | 'YW' => 'ClearPHONE', |
| 400 | '33' => 'Clementoni', |
| 401 | 'CR' => 'CreNova', |
| 402 | 'CX' => 'Crescent', |
| 403 | 'CRE' => 'Crestron', |
| 404 | 'CK' => 'Cricket', |
| 405 | 'CM' => 'Crius Mea', |
| 406 | 'CMF' => 'CMF', |
| 407 | '0C' => 'Crony', |
| 408 | 'C1' => 'Crosscall', |
| 409 | '4W' => 'Crown', |
| 410 | 'CTR' => 'Ctroniq', |
| 411 | 'CU' => 'Cube', |
| 412 | 'CB' => 'CUBOT', |
| 413 | 'CUI' => 'Cuiud', |
| 414 | 'CUL' => 'Cultraview', |
| 415 | 'CV' => 'CVTE', |
| 416 | 'CWO' => 'Cwowdefu', |
| 417 | 'CX0' => 'CX', |
| 418 | 'C4' => 'Cyrus', |
| 419 | 'D5' => 'Daewoo', |
| 420 | 'DA' => 'Danew', |
| 421 | 'DAN' => 'Dany', |
| 422 | 'DA1' => 'DangcapHD', |
| 423 | 'DAR' => 'Daria', |
| 424 | 'DT' => 'Datang', |
| 425 | 'D7' => 'Datawind', |
| 426 | '7D' => 'Datamini', |
| 427 | '6D' => 'Datalogic', |
| 428 | 'D1' => 'Datsun', |
| 429 | 'DAS' => 'DASS', |
| 430 | 'DAW' => 'Dawlance', |
| 431 | 'DB' => 'Dbtel', |
| 432 | 'DBP' => 'DbPhone', |
| 433 | 'DCO' => 'Dcode', |
| 434 | 'DEC' => 'DEC', |
| 435 | 'DL' => 'Dell', |
| 436 | 'DL0' => 'DL', |
| 437 | 'DE' => 'Denver', |
| 438 | 'DS' => 'Desay', |
| 439 | 'DSD' => 'DSDevices', |
| 440 | 'DSI' => 'DSIC', |
| 441 | 'DW' => 'DeWalt', |
| 442 | 'DX' => 'DEXP', |
| 443 | 'DEY' => 'DEYI', |
| 444 | 'DEN' => 'Denali', |
| 445 | 'DEA' => 'DEALDIG', |
| 446 | 'DNK' => 'Denka', |
| 447 | '8D' => 'DF', |
| 448 | 'DGT' => 'DGTEC', |
| 449 | 'DG' => 'Dialog', |
| 450 | 'DIA' => 'DIALN', |
| 451 | 'DI' => 'Dicam', |
| 452 | 'D4' => 'Digi', |
| 453 | 'D3' => 'Digicel', |
| 454 | 'DDG' => 'Digidragon', |
| 455 | 'DH' => 'Digihome', |
| 456 | 'DD' => 'Digiland', |
| 457 | 'DIJ' => 'DIJITSU', |
| 458 | 'DIG' => 'Digit', |
| 459 | 'DIC' => 'DIGICOM', |
| 460 | 'Q0' => 'DIGIFORS', |
| 461 | 'DIK' => 'DIKOM', |
| 462 | 'DQ' => 'DISH', |
| 463 | 'DIS' => 'Disney', |
| 464 | 'D2' => 'Digma', |
| 465 | '1D' => 'Diva', |
| 466 | 'DIV' => 'DiverMax', |
| 467 | 'D6' => 'Divisat', |
| 468 | 'DIO' => 'DIORA', |
| 469 | 'DIF' => 'Diofox', |
| 470 | 'DIM' => 'DIMO', |
| 471 | 'DIN' => 'Dinax', |
| 472 | 'DNA' => 'Dinalink', |
| 473 | '5D' => 'DING DING', |
| 474 | '9D' => 'Ditecma', |
| 475 | 'X6' => 'DIXON', |
| 476 | 'DM' => 'Dream Multimedia', |
| 477 | 'DMO' => 'DMOAO', |
| 478 | 'DN' => 'DNS', |
| 479 | 'DC' => 'DoCoMo', |
| 480 | 'DF' => 'Doffler', |
| 481 | 'D9' => 'Dolamee', |
| 482 | 'DO' => 'Doogee', |
| 483 | 'D0' => 'Doopro', |
| 484 | 'DV' => 'Doov', |
| 485 | 'DOM' => 'Dom.ru', |
| 486 | 'DP' => 'Dopod', |
| 487 | 'DPA' => 'DPA', |
| 488 | 'JQ' => 'Doppio', |
| 489 | 'DR' => 'Doro', |
| 490 | 'DOR' => 'Dora', |
| 491 | 'ZD' => 'DORLAND', |
| 492 | 'DRO' => 'Droidlogic', |
| 493 | 'D8' => 'Droxio', |
| 494 | 'DJ' => 'Dragon Touch', |
| 495 | 'DRA' => 'DRAGON', |
| 496 | 'DY' => 'Dreamgate', |
| 497 | 'DR1' => 'DreamStar', |
| 498 | 'DTA' => 'Dtac', |
| 499 | 'DU' => 'Dune HD', |
| 500 | 'DUO' => 'DuoTV', |
| 501 | 'UD' => 'DUNNS Mobile', |
| 502 | 'DUU' => 'Duubee', |
| 503 | 'DUR' => 'Durabook', |
| 504 | 'DUD' => 'DUDU AUTO', |
| 505 | 'DYO' => 'Dyon', |
| 506 | 'DYM' => 'Dykemann', |
| 507 | 'DTE' => 'D-Tech', |
| 508 | 'DLI' => 'D-Link', |
| 509 | 'ENO' => 'eNOVA', |
| 510 | 'IN4' => 'Inno Hit', |
| 511 | 'IN2' => 'iNOVA', |
| 512 | 'IN3' => 'inovo', |
| 513 | 'INH' => 'Inhon', |
| 514 | 'IND' => 'Indurama', |
| 515 | 'EB' => 'E-Boda', |
| 516 | 'EJ' => 'Engel', |
| 517 | 'ENA' => 'ENACOM', |
| 518 | 'END' => 'ENDURO', |
| 519 | 'ENI' => 'ENIE', |
| 520 | '2E' => 'E-Ceros', |
| 521 | 'E8' => 'E-tel', |
| 522 | 'ETH' => 'E-TACHI', |
| 523 | 'EAS' => 'EAS Electric', |
| 524 | 'EP' => 'Easypix', |
| 525 | 'EQ' => 'Eagle', |
| 526 | 'EGS' => 'EagleSoar', |
| 527 | 'EA' => 'EBEST', |
| 528 | 'YC' => 'EBEN', |
| 529 | 'E4' => 'Echo Mobiles', |
| 530 | 'EQ1' => 'Equator', |
| 531 | 'ES' => 'ECS', |
| 532 | '35' => 'ECON', |
| 533 | 'ECC' => 'ECOO', |
| 534 | 'ZZ' => 'ecom', |
| 535 | 'ECS' => 'EcoStar', |
| 536 | 'EDE' => 'Edenwood', |
| 537 | 'EDX' => 'Edanix', |
| 538 | 'E6' => 'EE', |
| 539 | 'GW' => 'EGL', |
| 540 | 'EGO' => 'EGOTEK', |
| 541 | 'EFT' => 'EFT', |
| 542 | 'EK' => 'EKO', |
| 543 | 'EY' => 'Einstein', |
| 544 | 'EM' => 'Eks Mobility', |
| 545 | 'UE' => 'Ematic', |
| 546 | 'EMR' => 'Emporia', |
| 547 | '4K' => 'EKT', |
| 548 | '7E' => 'ELARI', |
| 549 | '03' => 'Electroneum', |
| 550 | 'Z8' => 'ELECTRONIA', |
| 551 | 'ELG' => 'ELE-GATE', |
| 552 | 'EL1' => 'Elecson', |
| 553 | 'ELK' => 'Elektroland', |
| 554 | 'L0' => 'Element', |
| 555 | 'EG' => 'Elenberg', |
| 556 | 'EL' => 'Elephone', |
| 557 | 'JE' => 'Elekta', |
| 558 | 'ELE' => 'Elevate', |
| 559 | 'ELS' => 'Elista', |
| 560 | 'ELT' => 'elit', |
| 561 | '4E' => 'Eltex', |
| 562 | 'ELM' => 'Elong Mobile', |
| 563 | 'ED' => 'Energizer', |
| 564 | 'E1' => 'Energy Sistem', |
| 565 | '3E' => 'Enot', |
| 566 | 'ENT' => 'Entity', |
| 567 | 'ENV' => 'Envizen', |
| 568 | 'Q1' => 'EPIK Learning', |
| 569 | '8E' => 'Epik One', |
| 570 | 'EPK' => 'Epic', |
| 571 | 'XP' => 'Epson', |
| 572 | 'EPH' => 'Ephone', |
| 573 | 'EPL' => 'Eplutus', |
| 574 | 'E7' => 'Ergo', |
| 575 | 'EC' => 'Ericsson', |
| 576 | '05' => 'Erisson', |
| 577 | 'EE' => 'Essential', |
| 578 | 'E2' => 'Essentielb', |
| 579 | '6E' => 'eSTAR', |
| 580 | 'ETO' => 'ETOE', |
| 581 | 'EN' => 'Eton', |
| 582 | 'ET' => 'eTouch', |
| 583 | '1E' => 'Etuline', |
| 584 | 'EHL' => 'Ehlel', |
| 585 | 'EU' => 'Eurostar', |
| 586 | '4J' => 'Eurocase', |
| 587 | 'EUR' => 'EUROLUX', |
| 588 | 'EUD' => 'Eudora', |
| 589 | 'E9' => 'Evercoss', |
| 590 | 'EV' => 'Evertek', |
| 591 | 'EVE' => 'Everest', |
| 592 | 'EV1' => 'Everex', |
| 593 | 'EVR' => 'Everis', |
| 594 | 'EVF' => 'Everfine', |
| 595 | 'E3' => 'Evolio', |
| 596 | 'EO' => 'Evolveo', |
| 597 | '0Q' => 'Evoo', |
| 598 | '5U' => 'EVPAD', |
| 599 | 'EVV' => 'evvoli', |
| 600 | 'E0' => 'EvroMedia', |
| 601 | 'EXR' => 'Exertis', |
| 602 | 'XE' => 'ExMobile', |
| 603 | '4Z' => 'Exmart', |
| 604 | 'EH' => 'EXO', |
| 605 | 'EX' => 'Explay', |
| 606 | 'EXP' => 'Express LUCK', |
| 607 | 'E5' => 'Extrem', |
| 608 | 'EXL' => 'ExtraLink', |
| 609 | 'EF' => 'EXCEED', |
| 610 | 'QE' => 'EWIS', |
| 611 | 'EI' => 'Ezio', |
| 612 | 'EZ' => 'Ezze', |
| 613 | 'UF' => 'EYU', |
| 614 | 'EYE' => 'Eyemoo', |
| 615 | '5F' => 'F150', |
| 616 | 'FPS' => 'F+', |
| 617 | 'F6' => 'Facebook', |
| 618 | 'FAC' => 'Facetel', |
| 619 | 'FA1' => 'Facime', |
| 620 | 'FA' => 'Fairphone', |
| 621 | 'FM' => 'Famoco', |
| 622 | 'FAM' => 'Famous', |
| 623 | '17' => 'FarEasTone', |
| 624 | '9R' => 'FaRao Pro', |
| 625 | 'FAR' => 'Farassoo', |
| 626 | 'FB' => 'Fantec', |
| 627 | 'FAN' => 'Fanvace', |
| 628 | 'FE' => 'Fengxiang', |
| 629 | 'FEN' => 'Fenoti', |
| 630 | 'F7' => 'Fero', |
| 631 | '67' => 'FEONAL', |
| 632 | 'FI' => 'FiGO', |
| 633 | 'J9' => 'FiGi', |
| 634 | 'FIG' => 'Figgers', |
| 635 | 'F9' => 'FiiO', |
| 636 | 'F1' => 'FinePower', |
| 637 | 'FX' => 'Finlux', |
| 638 | 'F3' => 'FireFly Mobile', |
| 639 | 'F8' => 'FISE', |
| 640 | 'FIS' => 'Fision', |
| 641 | 'FIT' => 'FITCO', |
| 642 | 'FLM' => 'Filimo', |
| 643 | 'FIL' => 'FILIX', |
| 644 | 'FIN' => 'FINIX', |
| 645 | 'FL' => 'Fly', |
| 646 | 'QC' => 'FLYCAT', |
| 647 | 'FLY' => 'FLYCOAY', |
| 648 | 'FLU' => 'Fluo', |
| 649 | 'FN' => 'FNB', |
| 650 | 'FOB' => 'Fobem', |
| 651 | 'FD' => 'Fondi', |
| 652 | '0F' => 'Fourel', |
| 653 | '44' => 'Four Mobile', |
| 654 | 'F0' => 'Fonos', |
| 655 | 'F0N' => 'FONTEL', |
| 656 | 'F2' => 'FORME', |
| 657 | 'FRM' => 'Formovie', |
| 658 | 'F5' => 'Formuler', |
| 659 | 'FR' => 'Forstar', |
| 660 | 'RF' => 'Fortis', |
| 661 | 'FRT' => 'FortuneShip', |
| 662 | 'FOX' => 'FOX', |
| 663 | 'FO' => 'Foxconn', |
| 664 | 'FOD' => 'FoxxD', |
| 665 | 'FJ' => 'FOODO', |
| 666 | 'FOS' => 'FOSSiBOT', |
| 667 | 'FRE' => 'free', |
| 668 | 'FT' => 'Freetel', |
| 669 | 'FTH' => 'FRESH', |
| 670 | 'FEY' => 'FreeYond', |
| 671 | 'FRU' => 'Frunsi', |
| 672 | 'F4' => 'F&U', |
| 673 | '1F' => 'FMT', |
| 674 | 'FPT' => 'FPT', |
| 675 | 'FG' => 'Fuego', |
| 676 | 'FUJ' => 'FUJICOM', |
| 677 | 'FU' => 'Fujitsu', |
| 678 | '4F' => 'Funai', |
| 679 | '5J' => 'Fusion5', |
| 680 | 'FF' => 'Future Mobile Technology', |
| 681 | 'FFF' => 'FFF SmartLife', |
| 682 | 'FW' => 'FNF', |
| 683 | 'FXT' => 'Fxtec', |
| 684 | 'GT' => 'G-TiDE', |
| 685 | 'G9' => 'G-Touch', |
| 686 | 'GTB' => 'G-Tab', |
| 687 | 'GFO' => 'Gfone', |
| 688 | 'GTM' => 'GTMEDIA', |
| 689 | 'GTX' => 'GTX', |
| 690 | 'GDL' => 'GDL', |
| 691 | '0G' => 'GFive', |
| 692 | 'GM' => 'Garmin-Asus', |
| 693 | 'GA' => 'Gateway', |
| 694 | '99' => 'Galaxy Innovations', |
| 695 | 'GA1' => 'Galactic', |
| 696 | 'GAT' => 'Galatec', |
| 697 | 'GAM' => 'Gamma', |
| 698 | 'GAZ' => 'Gazer', |
| 699 | 'GAL' => 'Gazal', |
| 700 | 'GEA' => 'Geanee', |
| 701 | 'GEN' => 'Geant', |
| 702 | 'GD' => 'Gemini', |
| 703 | 'GN' => 'General Mobile', |
| 704 | 'GD1' => 'Genius Devices', |
| 705 | '2G' => 'Genesis', |
| 706 | 'GEP' => 'Geo Phone', |
| 707 | 'G2' => 'GEOFOX', |
| 708 | 'GE' => 'Geotel', |
| 709 | 'Q4' => 'Geotex', |
| 710 | 'GEO' => 'GEOZON', |
| 711 | 'GNO' => 'Getnord', |
| 712 | 'GER' => 'Gear Mobile', |
| 713 | 'GH' => 'Ghia', |
| 714 | '2C' => 'Ghong', |
| 715 | 'GJ' => 'Ghost', |
| 716 | 'GG' => 'Gigabyte', |
| 717 | 'GS' => 'Gigaset', |
| 718 | '1G' => 'Gini', |
| 719 | 'GZ' => 'Ginzzu', |
| 720 | 'GI' => 'Gionee', |
| 721 | 'GIR' => 'GIRASOLE', |
| 722 | 'G4' => 'Globex', |
| 723 | 'GL2' => 'GlobalSec', |
| 724 | 'GLB' => 'Globmall', |
| 725 | 'GME' => 'GlocalMe', |
| 726 | '38' => 'GLONYX', |
| 727 | 'U6' => 'Glofiish', |
| 728 | 'GLO' => 'Glory Star', |
| 729 | 'GNE' => 'GN Electronics', |
| 730 | 'G7' => 'GoGEN', |
| 731 | 'GC' => 'GOCLEVER', |
| 732 | '5G' => 'Gocomma', |
| 733 | 'GB' => 'Gol Mobile', |
| 734 | 'GL' => 'Goly', |
| 735 | 'GOL' => 'GoldMaster', |
| 736 | 'GOS' => 'GoldStar', |
| 737 | 'GOB' => 'GOLDBERG', |
| 738 | 'GX' => 'GLX', |
| 739 | 'G5' => 'Gome', |
| 740 | 'G1' => 'GoMobile', |
| 741 | 'GO' => 'Google', |
| 742 | 'G0' => 'Goophone', |
| 743 | '6G' => 'Gooweel', |
| 744 | 'GOO' => 'GOODTEL', |
| 745 | 'GO1' => 'GOtv', |
| 746 | 'GPL' => 'G-PLUS', |
| 747 | '8G' => 'Gplus', |
| 748 | 'GR' => 'Gradiente', |
| 749 | 'GRE' => 'Graetz', |
| 750 | 'GP' => 'Grape', |
| 751 | 'G6' => 'Gree', |
| 752 | 'GRA' => 'Great Asia', |
| 753 | '3G' => 'Greentel', |
| 754 | 'GRO' => 'Green Orange', |
| 755 | 'GRL' => 'Green Lion', |
| 756 | 'GR1' => 'GroBerwert', |
| 757 | 'GF' => 'Gretel', |
| 758 | '82' => 'Gresso', |
| 759 | 'GRB' => 'Grünberg', |
| 760 | 'GU' => 'Grundig', |
| 761 | 'GV' => 'Gtel', |
| 762 | 'CUO' => 'Guophone', |
| 763 | 'CUD' => 'CUD', |
| 764 | 'GVC' => 'GVC Pro', |
| 765 | 'H13' => 'H133', |
| 766 | '9Z' => 'H96', |
| 767 | 'HF' => 'Hafury', |
| 768 | '9F' => 'HAOVM', |
| 769 | 'HAQ' => 'HAOQIN', |
| 770 | 'HA' => 'Haier', |
| 771 | 'HEC' => 'HEC', |
| 772 | 'XH' => 'Haipai', |
| 773 | 'XHU' => 'Haixu', |
| 774 | 'HAN' => 'Handheld', |
| 775 | 'HE' => 'HannSpree', |
| 776 | 'HNS' => 'Hanseatic', |
| 777 | 'HA2' => 'Hanson', |
| 778 | 'HK' => 'Hardkernel', |
| 779 | 'HAR' => 'Harper', |
| 780 | 'HA1' => 'Hartens', |
| 781 | 'HS' => 'Hasee', |
| 782 | '8H' => 'Hamlet', |
| 783 | 'HAM' => 'Hammer', |
| 784 | 'HAT' => 'Hathway', |
| 785 | 'HAV' => 'HAVIT', |
| 786 | 'HEM' => 'Hemilton', |
| 787 | 'H6' => 'Helio', |
| 788 | 'HQ' => 'HERO', |
| 789 | 'ZH' => 'Hezire', |
| 790 | 'HEX' => 'HexaByte', |
| 791 | 'HEW' => 'HeadWolf', |
| 792 | 'HEI' => 'Heimat', |
| 793 | 'HL' => 'Hi-Level', |
| 794 | '3H' => 'Hi', |
| 795 | 'HIB' => 'Hiberg', |
| 796 | 'HBY' => 'HiBy', |
| 797 | 'HIH' => 'HiHi', |
| 798 | 'HIK' => 'HiKing', |
| 799 | 'H2' => 'Highscreen', |
| 800 | 'HI1' => 'HIGH1ONE', |
| 801 | 'HIG' => 'HiGrace', |
| 802 | '1H' => 'Hipstreet', |
| 803 | 'HIR' => 'Hiremco', |
| 804 | 'HI' => 'Hisense', |
| 805 | 'HIP' => 'HIPER', |
| 806 | 'HC' => 'Hitachi', |
| 807 | 'H8' => 'Hitech', |
| 808 | 'W3' => 'HiMax', |
| 809 | '8X' => 'Hi Nova', |
| 810 | 'HKC' => 'HKC', |
| 811 | 'HMD' => 'HMD', |
| 812 | '8W' => 'HKPro', |
| 813 | 'HOF' => 'HOFER', |
| 814 | 'HOC' => 'hoco', |
| 815 | 'H1' => 'Hoffmann', |
| 816 | 'HOM' => 'Homatics', |
| 817 | 'H0' => 'Hometech', |
| 818 | 'HLB' => 'HOLLEBERG', |
| 819 | 'HM' => 'Homtom', |
| 820 | 'HM1' => 'HOMII', |
| 821 | 'HOP' => 'Hopeland', |
| 822 | 'HZ' => 'Hoozo', |
| 823 | 'HOR' => 'Horion', |
| 824 | 'H7' => 'Horizon', |
| 825 | '4H' => 'Horizont', |
| 826 | 'HO' => 'Hosin', |
| 827 | 'H3' => 'Hotel TV Company', |
| 828 | 'HV' => 'Hotwav', |
| 829 | 'U8' => 'Hot Pepper', |
| 830 | 'HOT' => 'HOTACK', |
| 831 | 'JH' => 'HOTREALS', |
| 832 | 'HW' => 'How', |
| 833 | 'WH' => 'Honeywell', |
| 834 | 'HNR' => 'Honor', |
| 835 | 'HON' => 'HongTop', |
| 836 | 'HOG' => 'HONKUAHG', |
| 837 | 'HP' => 'HP', |
| 838 | 'HDC' => 'HDC', |
| 839 | 'HT' => 'HTC', |
| 840 | 'QZ' => 'Huagan', |
| 841 | 'HD' => 'Huadoo', |
| 842 | 'HG' => 'Huavi', |
| 843 | 'HU' => 'Huawei', |
| 844 | 'HX' => 'Humax', |
| 845 | 'HUM' => 'Humanware', |
| 846 | 'HME' => 'HUMElab', |
| 847 | 'HR' => 'Hurricane', |
| 848 | 'H5' => 'Huskee', |
| 849 | 'HUG' => 'Hugerock', |
| 850 | 'HY' => 'Hyrican', |
| 851 | 'HN' => 'Hyundai', |
| 852 | '7H' => 'Hyve', |
| 853 | 'HYT' => 'Hytera', |
| 854 | 'HYK' => 'Hykker', |
| 855 | 'HYA' => 'Hyatta', |
| 856 | 'IKL' => 'I KALL', |
| 857 | '3I' => 'i-Cherry', |
| 858 | 'IJ' => 'i-Joy', |
| 859 | 'IM' => 'i-mate', |
| 860 | 'IO' => 'i-mobile', |
| 861 | 'INN' => 'I-INN', |
| 862 | 'IPL' => 'I-Plus', |
| 863 | 'OF' => 'iOutdoor', |
| 864 | 'IB' => 'iBall', |
| 865 | 'IY' => 'iBerry', |
| 866 | '7I' => 'iBrit', |
| 867 | 'IBO' => 'ibowin', |
| 868 | 'I2' => 'IconBIT', |
| 869 | 'ING' => 'Icone Gold', |
| 870 | 'IC' => 'iDroid', |
| 871 | 'IDI' => 'iDino', |
| 872 | '6Z' => 'iData', |
| 873 | 'IDC' => 'IDC', |
| 874 | 'IG' => 'iGet', |
| 875 | 'IHL' => 'iHome Life', |
| 876 | 'IH' => 'iHunt', |
| 877 | 'IA' => 'Ikea', |
| 878 | 'IYO' => 'iYou', |
| 879 | '8I' => 'IKU Mobile', |
| 880 | '2K' => 'IKI Mobile', |
| 881 | 'IK' => 'iKoMo', |
| 882 | '58' => 'iKon', |
| 883 | '588' => 'iKonia', |
| 884 | 'I7' => 'iLA', |
| 885 | '2I' => 'iLife', |
| 886 | '1I' => 'iMars', |
| 887 | 'IMI' => 'iMI', |
| 888 | 'U4' => 'iMan', |
| 889 | 'ILE' => 'iLepo', |
| 890 | 'IL' => 'IMO Mobile', |
| 891 | 'IMA' => 'Imaq', |
| 892 | 'IM1' => 'Imose', |
| 893 | 'I3' => 'Impression', |
| 894 | 'FC' => 'INCAR', |
| 895 | '2H' => 'Inch', |
| 896 | '6I' => 'Inco', |
| 897 | 'INK' => 'Inka', |
| 898 | 'IW' => 'iNew', |
| 899 | 'IF' => 'Infinix', |
| 900 | 'INF' => 'Infiniton', |
| 901 | 'IPR' => 'InfinityPro', |
| 902 | 'I0' => 'InFocus', |
| 903 | 'IN1' => 'InFone', |
| 904 | 'II' => 'Inkti', |
| 905 | 'MIR' => 'Infomir', |
| 906 | '81' => 'InfoKit', |
| 907 | 'I5' => 'InnJoo', |
| 908 | '26' => 'Innos', |
| 909 | 'IN' => 'Innostream', |
| 910 | 'I4' => 'Inoi', |
| 911 | 'INO' => 'iNo Mobile', |
| 912 | 'IQ' => 'INQ', |
| 913 | 'QN' => 'iQ&T', |
| 914 | 'IS' => 'Insignia', |
| 915 | 'YI' => 'INSYS', |
| 916 | 'IT' => 'Intek', |
| 917 | 'INT' => 'Intel', |
| 918 | 'IX' => 'Intex', |
| 919 | 'IV' => 'Inverto', |
| 920 | '32' => 'Invens', |
| 921 | '4I' => 'Invin', |
| 922 | 'IFT' => 'iFIT', |
| 923 | 'INA' => 'iNavi', |
| 924 | 'I1' => 'iOcean', |
| 925 | 'IMU' => 'iMuz', |
| 926 | 'IP' => 'iPro', |
| 927 | 'X9' => 'iPEGTOP', |
| 928 | '8Q' => 'IQM', |
| 929 | 'Q8' => 'IRA', |
| 930 | 'I6' => 'Irbis', |
| 931 | '5I' => 'Iris', |
| 932 | 'IRE' => 'iReplace', |
| 933 | 'IR' => 'iRola', |
| 934 | 'IU' => 'iRulu', |
| 935 | 'IRO' => 'iRobot', |
| 936 | '9I' => 'iSWAG', |
| 937 | '9J' => 'iSafe Mobile', |
| 938 | 'IST' => 'iStar', |
| 939 | '86' => 'IT', |
| 940 | 'IZ' => 'iTel', |
| 941 | '0I' => 'iTruck', |
| 942 | 'I8' => 'iVA', |
| 943 | 'IE' => 'iView', |
| 944 | '0J' => 'iVooMi', |
| 945 | 'UI' => 'ivvi', |
| 946 | 'QW' => 'iWaylink', |
| 947 | 'I9' => 'iZotron', |
| 948 | 'IXT' => 'iXTech', |
| 949 | 'IOT' => 'IOTWE', |
| 950 | 'JA' => 'JAY-Tech', |
| 951 | 'JAM' => 'Jambo', |
| 952 | 'JCK' => 'Jckkcfug', |
| 953 | 'KJ' => 'Jiake', |
| 954 | 'JD' => 'Jide', |
| 955 | 'JEE' => 'Jeep', |
| 956 | 'J6' => 'Jeka', |
| 957 | 'JF' => 'JFone', |
| 958 | 'JI' => 'Jiayu', |
| 959 | 'JG' => 'Jinga', |
| 960 | 'JIN' => 'Jin Tu', |
| 961 | 'JX' => 'Jio', |
| 962 | 'VJ' => 'Jivi', |
| 963 | 'JK' => 'JKL', |
| 964 | 'JR1' => 'JREN', |
| 965 | 'JO' => 'Jolla', |
| 966 | 'JP' => 'Joy', |
| 967 | 'JOY' => 'JoySurf', |
| 968 | 'UJ' => 'Juniper Systems', |
| 969 | 'J5' => 'Just5', |
| 970 | 'JUS' => 'JUSYEA', |
| 971 | '7J' => 'Jumper', |
| 972 | 'JPA' => 'JPay', |
| 973 | 'JV' => 'JVC', |
| 974 | 'JXD' => 'JXD', |
| 975 | 'JS' => 'Jesy', |
| 976 | 'KT' => 'K-Touch', |
| 977 | 'KLT' => 'K-Lite', |
| 978 | 'K4' => 'Kaan', |
| 979 | 'K7' => 'Kaiomy', |
| 980 | 'KL' => 'Kalley', |
| 981 | 'K6' => 'Kanji', |
| 982 | 'KA' => 'Karbonn', |
| 983 | 'K5' => 'KATV1', |
| 984 | 'ROI' => 'KAP', |
| 985 | 'KAP' => 'Kapsys', |
| 986 | 'K0' => 'Kata', |
| 987 | 'KZ' => 'Kazam', |
| 988 | '9K' => 'Kazuna', |
| 989 | 'KD' => 'KDDI', |
| 990 | 'KHA' => 'Khadas', |
| 991 | 'KS' => 'Kempler & Strauss', |
| 992 | 'K3' => 'Keneksi', |
| 993 | 'KHI' => 'KENSHI', |
| 994 | 'KNW' => 'KENWOOD', |
| 995 | 'KX' => 'Kenxinda', |
| 996 | 'KEN' => 'Kenbo', |
| 997 | 'KND' => 'Kendo', |
| 998 | 'KZG' => 'KZG', |
| 999 | 'K1' => 'Kiano', |
| 1000 | 'KID' => 'kidiby', |
| 1001 | '5W' => 'Kingbox', |
| 1002 | 'S4' => 'Kingelon', |
| 1003 | 'KI' => 'Kingsun', |
| 1004 | 'KIS' => 'Kinstone', |
| 1005 | 'KF' => 'KINGZONE', |
| 1006 | 'KIN' => 'Kingstar', |
| 1007 | '46' => 'Kiowa', |
| 1008 | 'KV' => 'Kivi', |
| 1009 | '64' => 'Kvant', |
| 1010 | 'KVA' => 'KVADRA', |
| 1011 | '0K' => 'Klipad', |
| 1012 | 'KNM' => 'KN Mobile', |
| 1013 | 'KC' => 'Kocaso', |
| 1014 | 'KK' => 'Kodak', |
| 1015 | 'KG' => 'Kogan', |
| 1016 | 'KGT' => 'KGTEL', |
| 1017 | 'KM' => 'Komu', |
| 1018 | 'KMC' => 'KMC', |
| 1019 | 'KO' => 'Konka', |
| 1020 | 'KW' => 'Konrow', |
| 1021 | 'KB' => 'Koobee', |
| 1022 | '7K' => 'Koolnee', |
| 1023 | 'K9' => 'Kooper', |
| 1024 | 'KP' => 'KOPO', |
| 1025 | 'KR' => 'Koridy', |
| 1026 | 'XK' => 'Koslam', |
| 1027 | 'K2' => 'KRONO', |
| 1028 | 'KRX' => 'Korax', |
| 1029 | 'KE' => 'Krüger&Matz', |
| 1030 | '5K' => 'KREZ', |
| 1031 | 'WK' => 'KRIP', |
| 1032 | 'KRA' => 'Kraft', |
| 1033 | 'KH' => 'KT-Tech', |
| 1034 | 'KTC' => 'KTC', |
| 1035 | 'Z6' => 'KUBO', |
| 1036 | 'KUG' => 'KuGou', |
| 1037 | 'K8' => 'Kuliao', |
| 1038 | '8K' => 'Kult', |
| 1039 | 'KU' => 'Kumai', |
| 1040 | '6K' => 'Kurio', |
| 1041 | 'KYD' => 'Kydos', |
| 1042 | 'KY' => 'Kyocera', |
| 1043 | 'KQ' => 'Kyowon', |
| 1044 | '1K' => 'Kzen', |
| 1045 | 'LQ' => 'LAIQ', |
| 1046 | 'LAG' => 'LAGENIO', |
| 1047 | 'L6' => 'Land Rover', |
| 1048 | 'L2' => 'Landvo', |
| 1049 | 'LA' => 'Lanix', |
| 1050 | 'LA1' => 'Lanin', |
| 1051 | 'LK' => 'Lark', |
| 1052 | 'Z3' => 'Laurus', |
| 1053 | 'LEC' => 'Lectrus', |
| 1054 | 'LAS' => 'Laser', |
| 1055 | 'LV' => 'Lava', |
| 1056 | 'LVI' => 'Lville', |
| 1057 | 'LC' => 'LCT', |
| 1058 | 'L5' => 'Leagoo', |
| 1059 | 'U3' => 'Leben', |
| 1060 | 'LEB' => 'LeBest', |
| 1061 | 'LD' => 'Ledstar', |
| 1062 | 'LEE' => 'Leelbox', |
| 1063 | 'L1' => 'LeEco', |
| 1064 | '4B' => 'Leff', |
| 1065 | 'LEG' => 'Legend', |
| 1066 | 'L4' => 'Lemhoov', |
| 1067 | 'W9' => 'LEMFO', |
| 1068 | 'LEM' => 'Lemco', |
| 1069 | 'LN' => 'Lenco', |
| 1070 | 'LE' => 'Lenovo', |
| 1071 | 'LT' => 'Leotec', |
| 1072 | 'LP' => 'Le Pan', |
| 1073 | 'ZJ' => 'Leke', |
| 1074 | 'L7' => 'Lephone', |
| 1075 | 'LZ' => 'Lesia', |
| 1076 | 'L3' => 'Lexand', |
| 1077 | 'LX' => 'Lexibook', |
| 1078 | 'LG' => 'LG', |
| 1079 | '39' => 'Liberton', |
| 1080 | '5L' => 'Linsar', |
| 1081 | 'LIN' => 'Linsay', |
| 1082 | 'LF' => 'Lifemaxx', |
| 1083 | 'LI' => 'Lingwin', |
| 1084 | 'LIB' => 'Lingbo', |
| 1085 | 'LIM' => 'Lime', |
| 1086 | 'LJ' => 'L-Max', |
| 1087 | 'LW' => 'Linnex', |
| 1088 | 'JJ' => 'Listo', |
| 1089 | 'LNM' => 'LNMBBS', |
| 1090 | 'LO' => 'Loewe', |
| 1091 | 'LNG' => 'LongTV', |
| 1092 | 'YL' => 'Loview', |
| 1093 | 'LOV' => 'Lovme', |
| 1094 | 'LGN' => 'LOGAN', |
| 1095 | '1L' => 'Logic', |
| 1096 | 'LH' => 'Logic Instrument', |
| 1097 | 'LM' => 'Logicom', |
| 1098 | 'LOG' => 'Logik', |
| 1099 | 'LGT' => 'Logitech', |
| 1100 | 'GY' => 'LOKMAT', |
| 1101 | '0L' => 'Lumigon', |
| 1102 | 'LU' => 'Lumus', |
| 1103 | 'LUM' => 'Lumitel', |
| 1104 | 'L9' => 'Luna', |
| 1105 | 'LNN' => 'LUNNEN', |
| 1106 | 'LUO' => 'LUO', |
| 1107 | 'LR' => 'Luxor', |
| 1108 | 'LY' => 'LYF', |
| 1109 | 'LL' => 'Leader Phone', |
| 1110 | 'LTL' => 'LYOTECH LABS', |
| 1111 | 'QL' => 'LT Mobile', |
| 1112 | 'LW1' => 'LW', |
| 1113 | 'MQ' => 'M.T.T.', |
| 1114 | 'MN' => 'M4tel', |
| 1115 | 'XM' => 'Macoox', |
| 1116 | '92' => 'MAC AUDIO', |
| 1117 | 'MJ' => 'Majestic', |
| 1118 | 'FQ' => 'Mafe', |
| 1119 | 'MAG' => 'MAG', |
| 1120 | 'MA2' => 'MAGCH', |
| 1121 | '6Y' => 'Magicsee', |
| 1122 | 'MA4' => 'Magenta', |
| 1123 | '23' => 'Magnus', |
| 1124 | 'NH' => 'Manhattan', |
| 1125 | 'MAN' => 'Mango', |
| 1126 | '5M' => 'Mann', |
| 1127 | 'MA' => 'Manta Multimedia', |
| 1128 | 'Z0' => 'Mantra', |
| 1129 | 'J4' => 'Mara', |
| 1130 | 'MAR' => 'Marshal', |
| 1131 | '8Y' => 'Massgo', |
| 1132 | 'MA1' => 'Mascom', |
| 1133 | '2M' => 'Masstel', |
| 1134 | '3X' => 'Mastertech', |
| 1135 | 'MAS' => 'Master-G', |
| 1136 | '50' => 'Matrix', |
| 1137 | 'MAT' => 'Matco Tools', |
| 1138 | '7M' => 'Maxcom', |
| 1139 | '7M1' => 'Maxfone', |
| 1140 | 'ZM' => 'Maximus', |
| 1141 | '6X' => 'Maxtron', |
| 1142 | '0D' => 'MAXVI', |
| 1143 | 'MAX' => 'Maxwell', |
| 1144 | 'XZ' => 'MAXX', |
| 1145 | 'MW' => 'Maxwest', |
| 1146 | 'M0' => 'Maze', |
| 1147 | 'YM' => 'Maze Speed', |
| 1148 | '87' => 'Malata', |
| 1149 | 'MAU' => 'Maunfeld', |
| 1150 | 'MCL' => 'McLaut', |
| 1151 | '28' => 'MBOX', |
| 1152 | 'FK' => 'MBI', |
| 1153 | 'MBK' => 'MBK', |
| 1154 | '3D' => 'MDC Store', |
| 1155 | '1Y' => 'OTT', |
| 1156 | '09' => 'meanIT', |
| 1157 | 'M3' => 'Mecer', |
| 1158 | 'M3M' => 'M3 Mobile', |
| 1159 | '0M' => 'Mecool', |
| 1160 | 'MEC' => 'MECHEN', |
| 1161 | 'MEM' => 'MeMobile', |
| 1162 | 'MC' => 'Mediacom', |
| 1163 | 'MD' => 'Medion', |
| 1164 | 'M2' => 'MEEG', |
| 1165 | 'MEG' => 'MEGA VISION', |
| 1166 | 'MCA' => 'Megacable', |
| 1167 | 'MP' => 'MegaFon', |
| 1168 | 'MGX' => 'MEGAMAX', |
| 1169 | 'X0' => 'mPhone', |
| 1170 | '3M' => 'Meitu', |
| 1171 | 'M1' => 'Meizu', |
| 1172 | '0E' => 'Melrose', |
| 1173 | 'MU' => 'Memup', |
| 1174 | 'ME' => 'Metz', |
| 1175 | 'MEO' => 'MEO', |
| 1176 | 'MX' => 'MEU', |
| 1177 | 'MES' => 'MESWAO', |
| 1178 | 'MII' => 'MIIA', |
| 1179 | 'MI' => 'MicroMax', |
| 1180 | 'MIP' => 'mipo', |
| 1181 | 'MS' => 'Microsoft', |
| 1182 | '6Q' => 'Microtech', |
| 1183 | 'MIG' => 'Mightier', |
| 1184 | '1X' => 'Minix', |
| 1185 | 'OM' => 'Mintt', |
| 1186 | 'MIN' => 'Mint', |
| 1187 | 'MO' => 'Mio', |
| 1188 | 'MOD' => 'Moondrop', |
| 1189 | 'MOR' => 'MORTAL', |
| 1190 | 'X7' => 'Mione', |
| 1191 | 'M7' => 'Miray', |
| 1192 | 'MIT' => 'Mitchell & Brown', |
| 1193 | '8M' => 'Mito', |
| 1194 | 'MT' => 'Mitsubishi', |
| 1195 | '0Y' => 'Mitsui', |
| 1196 | 'M5' => 'MIXC', |
| 1197 | '2D' => 'MIVO', |
| 1198 | '1Z' => 'MiXzo', |
| 1199 | 'MIW' => 'MIWANG', |
| 1200 | 'ML' => 'MLLED', |
| 1201 | 'LS' => 'MLS', |
| 1202 | 'MLA' => 'Microlab', |
| 1203 | '4M' => 'Mobicel', |
| 1204 | 'M6' => 'Mobiistar', |
| 1205 | 'MOK' => 'Mobile Kingdom', |
| 1206 | 'MH' => 'Mobiola', |
| 1207 | 'MB' => 'Mobistel', |
| 1208 | 'ID' => 'MobiIoT', |
| 1209 | '6W' => 'MobiWire', |
| 1210 | '9M' => 'Mobo', |
| 1211 | 'MOB' => 'Mobell', |
| 1212 | 'MVO' => 'Mobvoi', |
| 1213 | 'M4' => 'Modecom', |
| 1214 | 'MEP' => 'Mode Mobile', |
| 1215 | 'MF' => 'Mofut', |
| 1216 | 'MR' => 'Motorola', |
| 1217 | 'MTS' => 'Motorola Solutions', |
| 1218 | 'MIV' => 'Motiv', |
| 1219 | 'MV' => 'Movic', |
| 1220 | 'MOV' => 'Movitel', |
| 1221 | 'MO1' => 'MOVISUN', |
| 1222 | 'MOS' => 'Mosimosi', |
| 1223 | 'MOX' => 'Moxee', |
| 1224 | 'MM' => 'Mpman', |
| 1225 | 'MZ' => 'MSI', |
| 1226 | '3R' => 'MStar', |
| 1227 | 'M9' => 'MTC', |
| 1228 | 'N4' => 'MTN', |
| 1229 | '72' => 'M-Tech', |
| 1230 | '9H' => 'M-Horse', |
| 1231 | 'MKP' => 'M-KOPA', |
| 1232 | 'MLB' => 'multibox', |
| 1233 | '1R' => 'Multilaser', |
| 1234 | 'MPS' => 'MultiPOS', |
| 1235 | 'MLT' => 'MULTYNET', |
| 1236 | '1M' => 'MYFON', |
| 1237 | 'MY1' => 'myPhone (PL)', |
| 1238 | 'MY' => 'MyPhone (PH)', |
| 1239 | '51' => 'Myros', |
| 1240 | 'M8' => 'Myria', |
| 1241 | '6M' => 'Mystery', |
| 1242 | '3T' => 'MyTab', |
| 1243 | 'MG' => 'MyWigo', |
| 1244 | 'J3' => 'Mymaga', |
| 1245 | 'MYM' => 'MyMobile', |
| 1246 | '07' => 'MyGica', |
| 1247 | 'MYG' => 'MygPad', |
| 1248 | 'MWA' => 'MwalimuPlus', |
| 1249 | 'NEO' => 'neoCore', |
| 1250 | 'NER' => 'Neoregent', |
| 1251 | '08' => 'Nabi', |
| 1252 | 'N7' => 'National', |
| 1253 | 'NC' => 'Navcity', |
| 1254 | '6N' => 'Navitech', |
| 1255 | '7V' => 'Navitel', |
| 1256 | 'N3' => 'Navon', |
| 1257 | '7R' => 'NavRoad', |
| 1258 | 'NAB' => 'NABO', |
| 1259 | 'NAS' => 'NASCO', |
| 1260 | 'NP' => 'Naomi Phone', |
| 1261 | 'NAN' => 'Nanho', |
| 1262 | 'NE' => 'NEC', |
| 1263 | 'NDP' => 'Nedaphone', |
| 1264 | '8N' => 'Necnot', |
| 1265 | 'NF' => 'Neffos', |
| 1266 | '9X' => 'Neo', |
| 1267 | 'NEK' => 'NEKO', |
| 1268 | '1N' => 'Neomi', |
| 1269 | '7Q' => 'Neon IQ', |
| 1270 | '8F' => 'Neolix', |
| 1271 | 'NES' => 'Nesons', |
| 1272 | 'NET' => 'NetBox', |
| 1273 | 'NWT' => 'NETWIT', |
| 1274 | 'NA' => 'Netgear', |
| 1275 | 'NEM' => 'Netmak', |
| 1276 | 'NU' => 'NeuImage', |
| 1277 | 'NEU' => 'NeuTab', |
| 1278 | 'NEV' => 'NEVIR', |
| 1279 | 'NW' => 'Newgen', |
| 1280 | 'N9' => 'Newland', |
| 1281 | '0N' => 'Newman', |
| 1282 | 'NS' => 'NewsMy', |
| 1283 | 'ND' => 'Newsday', |
| 1284 | 'HB' => 'New Balance', |
| 1285 | 'BRI' => 'New Bridge', |
| 1286 | 'NEW' => 'Newal', |
| 1287 | 'XB' => 'NEXBOX', |
| 1288 | 'NX' => 'Nexian', |
| 1289 | '7X' => 'Nexa', |
| 1290 | '7XR' => 'Nexar', |
| 1291 | 'N8' => 'NEXON', |
| 1292 | 'N2' => 'Nextbit', |
| 1293 | 'NT' => 'NextBook', |
| 1294 | 'NTT' => 'NTT West', |
| 1295 | '4N' => 'NextTab', |
| 1296 | 'NEX' => 'NEXT', |
| 1297 | 'NST' => 'Next & NextStar', |
| 1298 | 'NJO' => 'nJoy', |
| 1299 | 'NG' => 'NGM', |
| 1300 | 'NZ' => 'NG Optics', |
| 1301 | 'NZP' => 'NGpon', |
| 1302 | 'NN' => 'Nikon', |
| 1303 | 'NIL' => 'NILAIT', |
| 1304 | 'NI' => 'Nintendo', |
| 1305 | 'NIN' => 'NINETEC', |
| 1306 | 'NI1' => 'NINETOLOGY', |
| 1307 | 'N5' => 'NOA', |
| 1308 | 'N1' => 'Noain', |
| 1309 | 'N6' => 'Nobby', |
| 1310 | 'NOC' => 'Novacom', |
| 1311 | 'NOS' => 'NoviSea', |
| 1312 | 'NO2' => 'NOVIS', |
| 1313 | 'NOV' => 'Novey', |
| 1314 | 'NO1' => 'NOVO', |
| 1315 | '57' => 'Nubia', |
| 1316 | 'JN' => 'NOBUX', |
| 1317 | 'NB' => 'Noblex', |
| 1318 | 'OG' => 'NOGA', |
| 1319 | 'NK' => 'Nokia', |
| 1320 | 'NM' => 'Nomi', |
| 1321 | '2N' => 'Nomu', |
| 1322 | '6H' => 'Noontec', |
| 1323 | 'NR' => 'Nordmende', |
| 1324 | 'NRD' => 'Nordfrost', |
| 1325 | 'NOR' => 'NORMANDE', |
| 1326 | '7N' => 'NorthTech', |
| 1327 | 'NOT' => 'Nothing', |
| 1328 | '5N' => 'Nos', |
| 1329 | 'NO' => 'Nous', |
| 1330 | 'NQ' => 'Novex', |
| 1331 | 'NOD' => 'noDROPOUT', |
| 1332 | 'NJ' => 'NuAns', |
| 1333 | 'NL' => 'NUU Mobile', |
| 1334 | 'N0' => 'Nuvo', |
| 1335 | 'NUV' => 'NuVision', |
| 1336 | 'NV' => 'Nvidia', |
| 1337 | 'NY' => 'NYX Mobile', |
| 1338 | 'NON' => 'N-one', |
| 1339 | 'O3' => 'O+', |
| 1340 | 'OT' => 'O2', |
| 1341 | 'O7' => 'Oale', |
| 1342 | 'OC' => 'OASYS', |
| 1343 | 'OB' => 'Obi', |
| 1344 | 'OBR' => 'Ober', |
| 1345 | 'OQ' => 'Meta', |
| 1346 | 'O1' => 'Odys', |
| 1347 | 'ODP' => 'Odotpad', |
| 1348 | 'O9' => 'ok.', |
| 1349 | 'OKA' => 'Okapi', |
| 1350 | 'OA' => 'Okapia', |
| 1351 | 'OKI' => 'Oking', |
| 1352 | 'OLA' => 'Olax', |
| 1353 | 'OLK' => 'Olkya', |
| 1354 | 'OLY' => 'Olympia', |
| 1355 | 'OCE' => 'OCEANIC', |
| 1356 | 'OLT' => 'OLTO', |
| 1357 | 'OJ' => 'Ookee', |
| 1358 | 'OD' => 'Onda', |
| 1359 | 'ON' => 'OnePlus', |
| 1360 | 'ONC' => 'OneClick', |
| 1361 | 'ONL' => 'OneLern', |
| 1362 | 'OAN' => 'Oangcc', |
| 1363 | 'OX' => 'Onix', |
| 1364 | 'OIN' => 'Onida', |
| 1365 | '3O' => 'ONYX BOOX', |
| 1366 | 'O4' => 'ONN', |
| 1367 | '9Q' => 'Onkyo', |
| 1368 | 'ONV' => 'ONVO', |
| 1369 | 'OOR' => 'Ooredoo', |
| 1370 | '2O' => 'OpelMobile', |
| 1371 | 'OH' => 'Openbox', |
| 1372 | '7Y' => 'Obabox', |
| 1373 | 'OP' => 'OPPO', |
| 1374 | 'OO' => 'Opsson', |
| 1375 | 'OPT' => 'Optoma', |
| 1376 | 'OPH' => 'Ophone', |
| 1377 | 'OR' => 'Orange', |
| 1378 | 'ORP' => 'Orange Pi', |
| 1379 | 'ORA' => 'Orava', |
| 1380 | 'O5' => 'Orbic', |
| 1381 | 'Y6' => 'Orbita', |
| 1382 | 'ORB' => 'Orbsmart', |
| 1383 | 'OS' => 'Ordissimo', |
| 1384 | '8O' => 'Orion', |
| 1385 | 'OTT' => 'OTTO', |
| 1386 | 'OK' => 'Ouki', |
| 1387 | '0O' => 'OINOM', |
| 1388 | 'OIL' => 'Oilsky', |
| 1389 | 'QK' => 'OKWU', |
| 1390 | 'QQ' => 'OMIX', |
| 1391 | '56' => 'OKSI', |
| 1392 | 'OE' => 'Oukitel', |
| 1393 | 'OU' => 'OUYA', |
| 1394 | 'JB' => 'OUJIA', |
| 1395 | 'OV' => 'Overmax', |
| 1396 | '30' => 'Ovvi', |
| 1397 | 'O2' => 'Owwo', |
| 1398 | 'OSC' => 'OSCAL', |
| 1399 | 'OXT' => 'OX TAB', |
| 1400 | 'OY' => 'Oysters', |
| 1401 | 'QF' => 'OYSIN', |
| 1402 | 'O6' => 'Oyyu', |
| 1403 | 'OZ' => 'OzoneHD', |
| 1404 | 'OLL' => 'Ollee', |
| 1405 | '7P' => 'Mode 1', |
| 1406 | 'PRA' => 'Pacific Research Alliance', |
| 1407 | 'PAG' => 'PAGRAER', |
| 1408 | 'PAD' => '7Ke tree', |
| 1409 | 'YP' => 'Paladin', |
| 1410 | 'PM' => 'Palm', |
| 1411 | 'PN' => 'Panacom', |
| 1412 | 'PA' => 'Panasonic', |
| 1413 | 'PNV' => 'Panavox', |
| 1414 | 'PT' => 'Pantech', |
| 1415 | 'PAN' => 'Pano', |
| 1416 | 'PND' => 'Panodic', |
| 1417 | 'PA1' => 'Panoramic', |
| 1418 | 'PLT' => 'Platoon', |
| 1419 | 'PLD' => 'PLDT', |
| 1420 | '94' => 'Packard Bell', |
| 1421 | 'H9' => 'Parrot Mobile', |
| 1422 | 'PAR' => 'Partner Mobile', |
| 1423 | 'PAP' => 'PAPYRE', |
| 1424 | 'PB' => 'PCBOX', |
| 1425 | 'PCS' => 'PC Smart', |
| 1426 | 'PC' => 'PCD', |
| 1427 | 'PD' => 'PCD Argentina', |
| 1428 | 'PE' => 'PEAQ', |
| 1429 | '8J' => 'Pelitt', |
| 1430 | 'PEN' => 'Penta', |
| 1431 | 'PG' => 'Pentagram', |
| 1432 | 'PQ' => 'Pendoo', |
| 1433 | '93' => 'Perfeo', |
| 1434 | '1P' => 'Phicomm', |
| 1435 | '4P' => 'Philco', |
| 1436 | 'PH' => 'Philips', |
| 1437 | '5P' => 'Phonemax', |
| 1438 | 'PO' => 'phoneOne', |
| 1439 | 'PI' => 'Pioneer', |
| 1440 | 'PIC' => 'Pioneer Computers', |
| 1441 | 'PJ' => 'PiPO', |
| 1442 | '8P' => 'Pixelphone', |
| 1443 | '9O' => 'Pixela', |
| 1444 | 'PX' => 'Pixus', |
| 1445 | 'PIX' => 'PIXPRO', |
| 1446 | 'QP' => 'Pico', |
| 1447 | 'PIR' => 'PIRANHA', |
| 1448 | 'PIN' => 'PINE64', |
| 1449 | '9P' => 'Planet Computers', |
| 1450 | 'PLA' => 'Play Now', |
| 1451 | 'PY' => 'Ployer', |
| 1452 | 'P4' => 'Plum', |
| 1453 | 'PLU' => 'PlusStyle', |
| 1454 | '22' => 'Pluzz', |
| 1455 | 'P8' => 'PocketBook', |
| 1456 | '0P' => 'POCO', |
| 1457 | 'FH' => 'Point Mobile', |
| 1458 | 'PV' => 'Point of View', |
| 1459 | 'PVB' => 'PVBox', |
| 1460 | 'PL' => 'Polaroid', |
| 1461 | 'Q6' => 'Polar', |
| 1462 | '97' => 'PolarLine', |
| 1463 | 'PP' => 'PolyPad', |
| 1464 | 'P5' => 'Polytron', |
| 1465 | 'P2' => 'Pomp', |
| 1466 | 'P0' => 'Poppox', |
| 1467 | '0X' => 'POPTEL', |
| 1468 | 'PS' => 'Positivo', |
| 1469 | '3P' => 'Positivo BGH', |
| 1470 | '3F' => 'Porsche', |
| 1471 | 'PRT' => 'Portfolio', |
| 1472 | 'DRE' => 'Powerway', |
| 1473 | 'PPD' => 'PPDS', |
| 1474 | 'P3' => 'PPTV', |
| 1475 | 'FP' => 'Premio', |
| 1476 | 'PR2' => 'PREMIER', |
| 1477 | 'PR1' => 'Premier Star', |
| 1478 | 'PR' => 'Prestigio', |
| 1479 | 'P9' => 'Primepad', |
| 1480 | 'PRM' => 'PRIME', |
| 1481 | '6P' => 'Primux', |
| 1482 | '2P' => 'Prixton', |
| 1483 | 'PRI' => 'Pritom', |
| 1484 | 'PRP' => 'PRISM+', |
| 1485 | 'PF' => 'PROFiLO', |
| 1486 | 'P6' => 'Proline', |
| 1487 | '5O' => 'Prology', |
| 1488 | 'P1' => 'ProScan', |
| 1489 | 'PRO' => 'PROSONIC', |
| 1490 | 'P7' => 'Protruly', |
| 1491 | 'R0' => 'ProVision', |
| 1492 | '7O' => 'Polestar', |
| 1493 | 'PU' => 'PULID', |
| 1494 | 'UP' => 'Purism', |
| 1495 | 'PUN' => 'Punos', |
| 1496 | 'QFX' => 'QFX', |
| 1497 | 'Q7' => 'Q-Box', |
| 1498 | 'QH' => 'Q-Touch', |
| 1499 | 'QB' => 'Q.Bell', |
| 1500 | 'QI' => 'Qilive', |
| 1501 | 'QIN' => 'QIN', |
| 1502 | 'QIW' => 'Qiuwoky', |
| 1503 | 'QM' => 'QMobile', |
| 1504 | 'QT' => 'Qtek', |
| 1505 | 'Q9' => 'QTECH', |
| 1506 | '84' => 'Quanta Computer', |
| 1507 | 'QA' => 'Quantum', |
| 1508 | 'QUA' => 'Quatro', |
| 1509 | 'QU' => 'Quechua', |
| 1510 | 'QUE' => 'Quest', |
| 1511 | 'QUI' => 'Quipus', |
| 1512 | 'QO' => 'Qumo', |
| 1513 | 'UQ' => 'Qubo', |
| 1514 | 'QUP' => 'Qupi', |
| 1515 | 'YQ' => 'QLink', |
| 1516 | 'QY' => 'Qnet Mobile', |
| 1517 | 'WJ' => 'Qware', |
| 1518 | 'QWT' => 'QWATT', |
| 1519 | 'R2' => 'R-TV', |
| 1520 | 'R3D' => 'R3Di', |
| 1521 | 'RA' => 'Ramos', |
| 1522 | '0R' => 'Raspberry', |
| 1523 | 'R9' => 'Ravoz', |
| 1524 | 'RZ' => 'Razer', |
| 1525 | 'RAZ' => 'RAZZ', |
| 1526 | '95' => 'Rakuten', |
| 1527 | 'RAY' => 'Raylandz', |
| 1528 | 'RC' => 'RCA Tablets', |
| 1529 | 'RCT' => 'RCT', |
| 1530 | '2R' => 'Reach', |
| 1531 | 'RLX' => 'Realix', |
| 1532 | 'REL' => 'RelNAT', |
| 1533 | 'RE4' => 'Relndoo', |
| 1534 | 'RB' => 'Readboy', |
| 1535 | 'RE' => 'Realme', |
| 1536 | 'RE1' => 'Redbean', |
| 1537 | 'R8' => 'RED', |
| 1538 | 'RDX' => 'RED-X', |
| 1539 | 'REW' => 'Redway', |
| 1540 | '6F' => 'Redfox', |
| 1541 | 'RE2' => 'RedLine', |
| 1542 | 'RD' => 'Reeder', |
| 1543 | 'Z9' => 'REGAL', |
| 1544 | 'RH' => 'Remdun', |
| 1545 | 'RP' => 'Revo', |
| 1546 | 'REV' => 'Revomovil', |
| 1547 | '8R' => 'Retroid Pocket', |
| 1548 | 'REN' => 'Renova', |
| 1549 | 'RE3' => 'RENSO', |
| 1550 | 'REP' => 'rephone', |
| 1551 | 'RHI' => 'Rhino', |
| 1552 | 'RIC' => 'Ricoh', |
| 1553 | 'RI' => 'Rikomagic', |
| 1554 | 'RM' => 'RIM', |
| 1555 | 'RN' => 'Rinno', |
| 1556 | 'RNB' => 'Ringing Bells', |
| 1557 | 'RX' => 'Ritmix', |
| 1558 | 'R7' => 'Ritzviva', |
| 1559 | 'RV' => 'Riviera', |
| 1560 | '6R' => 'Rivo', |
| 1561 | 'RIZ' => 'Rizzen', |
| 1562 | 'RR' => 'Roadrover', |
| 1563 | 'QR' => 'ROADMAX', |
| 1564 | 'ROH' => 'ROCH', |
| 1565 | 'ROC' => 'Roam Cat', |
| 1566 | 'ROT' => 'Rocket', |
| 1567 | 'R1' => 'Rokit', |
| 1568 | 'RK' => 'Roku', |
| 1569 | 'R3' => 'Rombica', |
| 1570 | 'RUA' => 'Romsat', |
| 1571 | 'R5' => 'Ross&Moor', |
| 1572 | 'RO' => 'Rover', |
| 1573 | 'R6' => 'Rover Computers', |
| 1574 | 'RQ' => 'RoyQueen', |
| 1575 | 'RJ' => 'Royole', |
| 1576 | 'RT' => 'RT Project', |
| 1577 | 'RTK' => 'RTK', |
| 1578 | 'RG' => 'RugGear', |
| 1579 | 'RUG' => 'Ruggex', |
| 1580 | 'RUT' => 'RuggeTech', |
| 1581 | 'RU' => 'Runbo', |
| 1582 | 'RUN' => 'RunGee', |
| 1583 | 'RUP' => 'Rupa', |
| 1584 | 'RL' => 'Ruio', |
| 1585 | 'RY' => 'Ryte', |
| 1586 | 'X5' => 'Saba', |
| 1587 | '8L' => 'S-TELL', |
| 1588 | '8L1' => 'S-Color', |
| 1589 | '4O' => 'S2Tel', |
| 1590 | '89' => 'Seatel', |
| 1591 | 'SEW' => 'Sewoo', |
| 1592 | 'SE1' => 'SEEWO', |
| 1593 | 'SEN' => 'SENNA', |
| 1594 | 'SER' => 'SERVO', |
| 1595 | 'Y7' => 'Saiet', |
| 1596 | 'SLF' => 'SAILF', |
| 1597 | 'X1' => 'Safaricom', |
| 1598 | 'SG' => 'Sagem', |
| 1599 | 'SAG' => 'Sagemcom', |
| 1600 | '4L' => 'Salora', |
| 1601 | 'SA' => 'Samsung', |
| 1602 | 'SAT' => 'Samtech', |
| 1603 | 'SAM' => 'Samtron', |
| 1604 | 'SAB' => 'Sambox', |
| 1605 | 'SNA' => 'SNAMI', |
| 1606 | 'S0' => 'Sanei', |
| 1607 | '12' => 'Sansui', |
| 1608 | 'SAK' => 'Sankey', |
| 1609 | 'SQ' => 'Santin', |
| 1610 | 'SY' => 'Sanyo', |
| 1611 | 'SAN' => 'SANY', |
| 1612 | 'S9' => 'Savio', |
| 1613 | 'Y4' => 'TCL SCBC', |
| 1614 | 'SCH' => 'SCHAUB LORENZ', |
| 1615 | 'CZ' => 'Schneider', |
| 1616 | 'SHO' => 'SCHONTECH', |
| 1617 | 'SCO' => 'Scosmos', |
| 1618 | 'SC1' => 'Scoole', |
| 1619 | 'ZG' => 'Schok', |
| 1620 | 'G8' => 'SEG', |
| 1621 | 'SEX' => 'SEHMAX', |
| 1622 | 'SD' => 'Sega', |
| 1623 | '0U' => 'Selecline', |
| 1624 | '9G' => 'Selenga', |
| 1625 | 'SV' => 'Selevision', |
| 1626 | 'SL' => 'Selfix', |
| 1627 | '0S' => 'SEMP TCL', |
| 1628 | 'S1' => 'Sencor', |
| 1629 | 'SNM' => 'Sencrom', |
| 1630 | 'SN' => 'Sendo', |
| 1631 | '01' => 'Senkatel', |
| 1632 | 'S6' => 'Senseit', |
| 1633 | 'EW' => 'Senwa', |
| 1634 | '24' => 'Seeken', |
| 1635 | 'SEB' => 'SEBBE', |
| 1636 | '61' => 'Seuic', |
| 1637 | 'SX' => 'SFR', |
| 1638 | 'SGI' => 'SGIN', |
| 1639 | 'SH' => 'Sharp', |
| 1640 | 'JU' => 'Shanling', |
| 1641 | '7S' => 'Shift Phones', |
| 1642 | '78' => 'Shivaki', |
| 1643 | 'RS' => 'Shtrikh-M', |
| 1644 | '3S' => 'Shuttle', |
| 1645 | '13' => 'Sico', |
| 1646 | 'SI' => 'Siemens', |
| 1647 | '1S' => 'Sigma', |
| 1648 | '70' => 'Silelis', |
| 1649 | 'SJ' => 'Silent Circle', |
| 1650 | 'SIL' => 'Silva Schneider', |
| 1651 | '10' => 'Simbans', |
| 1652 | '98' => 'Simply', |
| 1653 | 'SIM' => 'simfer', |
| 1654 | '52' => 'Singtech', |
| 1655 | 'SIN' => 'SINGER', |
| 1656 | '31' => 'Siragon', |
| 1657 | 'SIS' => 'Siswoo', |
| 1658 | '83' => 'Sirin Labs', |
| 1659 | '5Z' => 'SK Broadband', |
| 1660 | 'GK' => 'SKG', |
| 1661 | 'SW' => 'Sky', |
| 1662 | 'SK' => 'Skyworth', |
| 1663 | 'SKY' => 'Skyline', |
| 1664 | 'SK1' => 'SkyStream', |
| 1665 | 'SKT' => 'Skytech', |
| 1666 | 'SKK' => 'SKK Mobile', |
| 1667 | '14' => 'Smadl', |
| 1668 | '19' => 'Smailo', |
| 1669 | 'SR' => 'Smart Electronic', |
| 1670 | 'SMA' => 'Smart Kassel', |
| 1671 | 'STE' => 'Smart Tech', |
| 1672 | '49' => 'Smart', |
| 1673 | '47' => 'SmartBook', |
| 1674 | '3B' => 'Smartab', |
| 1675 | '80' => 'SMARTEC', |
| 1676 | 'SM1' => 'Smartex', |
| 1677 | 'SC' => 'Smartfren', |
| 1678 | 'S7' => 'Smartisan', |
| 1679 | 'SMU' => 'SMUX', |
| 1680 | 'SMT' => 'SMT Telecom', |
| 1681 | 'JR' => 'Sylvania', |
| 1682 | 'SYH' => 'SYH', |
| 1683 | '3Y' => 'Smarty', |
| 1684 | 'HH' => 'Smooth Mobile', |
| 1685 | '1Q' => 'Smotreshka', |
| 1686 | 'SF' => 'Softbank', |
| 1687 | '9L' => 'SOLE', |
| 1688 | 'JL' => 'SOLO', |
| 1689 | 'SOS' => 'SOSH', |
| 1690 | 'SOD' => 'Soda', |
| 1691 | 'SOL' => 'Solas', |
| 1692 | '16' => 'Solone', |
| 1693 | 'OI' => 'Sonim', |
| 1694 | 'SVE' => 'Sveon', |
| 1695 | 'SO' => 'Sony', |
| 1696 | 'SE' => 'Sony Ericsson', |
| 1697 | 'X2' => 'Soundmax', |
| 1698 | 'SUL' => 'SoulLink', |
| 1699 | '8S' => 'Soyes', |
| 1700 | '77' => 'SONOS', |
| 1701 | '68' => 'Soho Style', |
| 1702 | 'SOB' => 'SobieTech', |
| 1703 | 'SOW' => 'SOWLY', |
| 1704 | 'PK' => 'Spark NZ', |
| 1705 | 'SPX' => 'Sparx', |
| 1706 | 'FS' => 'SPC', |
| 1707 | '6S' => 'Spectrum', |
| 1708 | '43' => 'Spectralink', |
| 1709 | 'SP' => 'Spice', |
| 1710 | 'SPD' => 'Spider', |
| 1711 | 'SPU' => 'SPURT', |
| 1712 | 'QS' => 'SQOOL', |
| 1713 | 'OL' => 'Starlight', |
| 1714 | 'STA' => 'Star-Light', |
| 1715 | '18' => 'Starmobile', |
| 1716 | '2S' => 'Starway', |
| 1717 | '45' => 'Starwind', |
| 1718 | 'SB' => 'STF Mobile', |
| 1719 | 'S8' => 'STK', |
| 1720 | 'GQ' => 'STG Telecom', |
| 1721 | 'S2' => 'Stonex', |
| 1722 | 'ST' => 'Storex', |
| 1723 | 'STR' => 'StreamSystem', |
| 1724 | '71' => 'StrawBerry', |
| 1725 | '96' => 'STRONG', |
| 1726 | '69' => 'Stylo', |
| 1727 | 'STI' => 'Stilevs', |
| 1728 | '9S' => 'Sugar', |
| 1729 | 'SUA' => 'SUAAT', |
| 1730 | 'SUR' => 'Surge', |
| 1731 | 'SUF' => 'Surfans', |
| 1732 | '06' => 'Subor', |
| 1733 | 'SUT' => 'SULPICE TV', |
| 1734 | 'SZ' => 'Sumvision', |
| 1735 | 'SNG' => 'SUNGATE', |
| 1736 | '0H' => 'Sunstech', |
| 1737 | 'S3' => 'SunVan', |
| 1738 | '5S' => 'Sunvell', |
| 1739 | '5Y' => 'Sunny', |
| 1740 | 'W8' => 'SUNWIND', |
| 1741 | 'SBX' => 'SuperBOX', |
| 1742 | 'SBM' => 'Supermax', |
| 1743 | 'SBR' => 'Sber', |
| 1744 | 'SGE' => 'Super General', |
| 1745 | 'SU' => 'SuperSonic', |
| 1746 | '79' => 'SuperTab', |
| 1747 | 'STV' => 'SuperTV', |
| 1748 | 'S5' => 'Supra', |
| 1749 | 'SUP' => 'Supraim', |
| 1750 | 'ZS' => 'Suzuki', |
| 1751 | '2J' => 'Sunmi', |
| 1752 | 'SUN' => 'Sunmax', |
| 1753 | '0W' => 'Swipe', |
| 1754 | 'SWI' => 'Switel', |
| 1755 | 'SS' => 'SWISSMOBILITY', |
| 1756 | '1W' => 'Swisstone', |
| 1757 | 'SWO' => 'SWOFY', |
| 1758 | 'SSK' => 'SSKY', |
| 1759 | 'SSM' => 'Ssmart', |
| 1760 | 'SYC' => 'Syco', |
| 1761 | 'SM' => 'Symphony', |
| 1762 | '4S' => 'Syrox', |
| 1763 | 'SYS' => 'System76', |
| 1764 | 'TPS' => 'SZ TPS', |
| 1765 | 'TM' => 'T-Mobile', |
| 1766 | 'T96' => 'T96', |
| 1767 | 'TAD' => 'TADAAM', |
| 1768 | 'TK' => 'Takara', |
| 1769 | '73' => 'Tambo', |
| 1770 | '9N' => 'Tanix', |
| 1771 | 'U5' => 'Taiga System', |
| 1772 | 'TAL' => 'Talius', |
| 1773 | '7G' => 'TAG Tech', |
| 1774 | 'TLB' => 'TALBERG', |
| 1775 | 'TAU' => 'TAUBE', |
| 1776 | 'T5' => 'TB Touch', |
| 1777 | 'TC' => 'TCL', |
| 1778 | 'T0' => 'TD Systems', |
| 1779 | 'YY' => 'TD Tech', |
| 1780 | 'H4' => 'Technicolor', |
| 1781 | 'TEA' => 'TeachTouch', |
| 1782 | 'Z5' => 'Technika', |
| 1783 | 'TE1' => 'Techmade', |
| 1784 | 'TX' => 'TechniSat', |
| 1785 | 'TT' => 'TechnoTrend', |
| 1786 | 'TTS' => 'TECHNOSAT', |
| 1787 | 'TM1' => 'Temigereev', |
| 1788 | 'TP' => 'TechPad', |
| 1789 | '9E' => 'Techwood', |
| 1790 | '7F' => 'Technopc', |
| 1791 | 'TCH' => 'Techstorm', |
| 1792 | 'T7' => 'Teclast', |
| 1793 | 'TB' => 'Tecno Mobile', |
| 1794 | 'TEC' => 'TecToy', |
| 1795 | '91' => 'TEENO', |
| 1796 | 'TLK' => 'Telkom', |
| 1797 | '2L' => 'Tele2', |
| 1798 | 'TL' => 'Telefunken', |
| 1799 | 'TG' => 'Telego', |
| 1800 | 'T2' => 'Telenor', |
| 1801 | 'TE' => 'Telit', |
| 1802 | '65' => 'Telia', |
| 1803 | 'TLY' => 'Telly', |
| 1804 | 'TEL' => 'Telma', |
| 1805 | 'PW' => 'Telpo', |
| 1806 | 'TLS' => 'TeloSystems', |
| 1807 | 'TER' => 'Teracube', |
| 1808 | 'WR' => 'Terra', |
| 1809 | 'TD' => 'Tesco', |
| 1810 | 'TA' => 'Tesla', |
| 1811 | '9T' => 'Tetratab', |
| 1812 | 'TET' => 'TETC', |
| 1813 | 'TZ' => 'teXet', |
| 1814 | '29' => 'Teknosa', |
| 1815 | 'JZ' => 'TJC', |
| 1816 | 'TJD' => 'TJD', |
| 1817 | 'JC' => 'TENPLUS', |
| 1818 | 'T4' => 'ThL', |
| 1819 | 'TN' => 'Thomson', |
| 1820 | 'O0' => 'Thuraya', |
| 1821 | 'TI' => 'TIANYU', |
| 1822 | 'JY' => 'Tigers', |
| 1823 | '8T' => 'Time2', |
| 1824 | 'TQ' => 'Timovi', |
| 1825 | 'TIM' => 'TIMvision', |
| 1826 | '2T' => 'Tinai', |
| 1827 | 'TF' => 'Tinmo', |
| 1828 | 'TH' => 'TiPhone', |
| 1829 | 'YV' => 'TiVo', |
| 1830 | 'TIV' => 'Tivax', |
| 1831 | 'TIB' => 'Tibuta', |
| 1832 | 'Y3' => 'TOKYO', |
| 1833 | 'TOX' => 'TOX', |
| 1834 | 'T1' => 'Tolino', |
| 1835 | '0T' => 'Tone', |
| 1836 | 'TY' => 'Tooky', |
| 1837 | 'TYD' => 'TYD', |
| 1838 | 'TOO' => 'TOOGO', |
| 1839 | 'TPT' => 'Top-Tech', |
| 1840 | 'T9' => 'Top House', |
| 1841 | 'DK' => 'Topelotek', |
| 1842 | '42' => 'Topway', |
| 1843 | 'TO' => 'Toplux', |
| 1844 | 'TOD' => 'TOPDON', |
| 1845 | 'TOP' => 'TopDevice', |
| 1846 | 'TO2' => 'TOPSHOWS', |
| 1847 | '7T' => 'Torex', |
| 1848 | 'TOR' => 'Torque', |
| 1849 | 'TRN' => 'TORNADO', |
| 1850 | '6O' => 'TOSCIDO', |
| 1851 | 'TO1' => 'Topsion', |
| 1852 | 'TS' => 'Toshiba', |
| 1853 | 'T8' => 'Touchmate', |
| 1854 | 'TOU' => 'Touch Plus', |
| 1855 | '5R' => 'Transpeed', |
| 1856 | 'T6' => 'TrekStor', |
| 1857 | 'TRP' => 'Trecfone', |
| 1858 | 'T3' => 'Trevi', |
| 1859 | 'TRI' => 'TriaPlay', |
| 1860 | 'TJ' => 'Trifone', |
| 1861 | 'Q5' => 'Trident', |
| 1862 | 'TRB' => 'Trimble', |
| 1863 | '4T' => 'Tronsmart', |
| 1864 | '11' => 'True', |
| 1865 | 'JT' => 'True Slim', |
| 1866 | 'J1' => 'Trio', |
| 1867 | 'TRC' => 'Tricolor', |
| 1868 | 'THT' => 'Tsinghua Tongfang', |
| 1869 | '5C' => 'TTEC', |
| 1870 | 'TTF' => 'TTfone', |
| 1871 | 'TTK' => 'TTK-TV', |
| 1872 | 'TU' => 'Tunisie Telecom', |
| 1873 | '1T' => 'Turbo', |
| 1874 | 'TR' => 'Turbo-X', |
| 1875 | '5X' => 'TurboPad', |
| 1876 | '5T' => 'TurboKids', |
| 1877 | 'UR' => 'Turkcell', |
| 1878 | '4U' => 'TuCEL', |
| 1879 | 'TUV' => 'Tuvio', |
| 1880 | 'TUC' => 'TUCSON', |
| 1881 | '2U' => 'Türk Telekom', |
| 1882 | 'TUR' => 'Türksat', |
| 1883 | 'TV' => 'TVC', |
| 1884 | 'TVP' => 'TV+', |
| 1885 | 'TW' => 'TWM', |
| 1886 | 'Z1' => 'TWZ Corporation', |
| 1887 | 'TWN' => 'TwinMOS', |
| 1888 | '15' => 'Tymes', |
| 1889 | 'UC' => 'U.S. Cellular', |
| 1890 | 'UD1' => 'UD', |
| 1891 | 'UGI' => 'UGINE', |
| 1892 | 'UG' => 'Ugoos', |
| 1893 | 'U1' => 'Uhans', |
| 1894 | 'UH' => 'Uhappy', |
| 1895 | 'UL' => 'Ulefone', |
| 1896 | 'UA' => 'Umax', |
| 1897 | 'UM' => 'UMIDIGI', |
| 1898 | 'UM2' => 'Umiio', |
| 1899 | 'UNT' => 'Unitech', |
| 1900 | 'UZ' => 'Unihertz', |
| 1901 | '3Z' => 'UZ Mobile', |
| 1902 | 'UX' => 'Unimax', |
| 1903 | 'UNQ' => 'Uniqcell', |
| 1904 | 'US' => 'Uniscope', |
| 1905 | 'UNI' => 'Unistrong', |
| 1906 | 'U2' => 'UNIWA', |
| 1907 | 'UND' => 'Uniden', |
| 1908 | 'BAS' => 'Unikalne Smartphones', |
| 1909 | 'UNE' => 'UNITED', |
| 1910 | 'UGR' => 'United Group', |
| 1911 | 'UO' => 'Unnecto', |
| 1912 | 'UNN' => 'Unnion Technologies', |
| 1913 | 'UNP' => 'UnoPhone', |
| 1914 | 'UU' => 'Unonu', |
| 1915 | 'UN' => 'Unowhy', |
| 1916 | 'UY' => 'UNNO', |
| 1917 | 'UOO' => 'UOOGOU', |
| 1918 | 'UNB' => 'Unblock Tech', |
| 1919 | 'UK' => 'UTOK', |
| 1920 | '3U' => 'IUNI', |
| 1921 | 'UT' => 'UTStarcom', |
| 1922 | '6U' => 'UTime', |
| 1923 | '9U' => 'Urovo', |
| 1924 | 'UW' => 'U-Magic', |
| 1925 | '5V' => 'VAIO', |
| 1926 | 'WV' => 'VAVA', |
| 1927 | 'VA' => 'Vastking', |
| 1928 | 'VAS' => 'VASOUN', |
| 1929 | 'VP' => 'Vargo', |
| 1930 | 'VC' => 'Vankyo', |
| 1931 | 'VAL' => 'VALEM', |
| 1932 | 'VA2' => 'VALE', |
| 1933 | 'VAT' => 'VALTECH', |
| 1934 | 'VAN' => 'VANGUARD', |
| 1935 | 'VAW' => 'VANWIN', |
| 1936 | 'VB' => 'VC', |
| 1937 | 'VEI' => 'Veidoo', |
| 1938 | 'VN' => 'Venso', |
| 1939 | 'VNP' => 'VNPT Technology', |
| 1940 | 'VEN' => 'Venstar', |
| 1941 | 'UV' => 'Venturer', |
| 1942 | 'VQ' => 'Vega', |
| 1943 | 'WC' => 'VEON', |
| 1944 | '4V' => 'Verico', |
| 1945 | 'V4' => 'Verizon', |
| 1946 | 'VR' => 'Vernee', |
| 1947 | 'VX' => 'Vertex', |
| 1948 | 'VE' => 'Vertu', |
| 1949 | 'VET' => 'VETAS', |
| 1950 | 'VL' => 'Verykool', |
| 1951 | 'QV' => 'Verssed', |
| 1952 | 'VER' => 'Versus', |
| 1953 | 'V8' => 'Vesta', |
| 1954 | 'VEK' => 'Vekta', |
| 1955 | 'VT' => 'Vestel', |
| 1956 | '48' => 'Vexia', |
| 1957 | 'V6' => 'VGO TEL', |
| 1958 | 'QJ' => 'VDVD', |
| 1959 | 'VIC' => 'Victurio', |
| 1960 | 'VD' => 'Videocon', |
| 1961 | 'VW' => 'Videoweb', |
| 1962 | 'VS' => 'ViewSonic', |
| 1963 | 'VIE' => 'Viendo', |
| 1964 | 'VIK' => 'VIKUSHA', |
| 1965 | 'V7' => 'Vinga', |
| 1966 | 'V7T' => 'V7', |
| 1967 | 'V3' => 'Vinsoc', |
| 1968 | 'XD' => 'Vinabox', |
| 1969 | 'FV' => 'Vios', |
| 1970 | '0V' => 'Vipro', |
| 1971 | 'ZV' => 'Virzo', |
| 1972 | 'VIP' => 'Viper', |
| 1973 | 'VI' => 'Vitelcom', |
| 1974 | 'VIB' => 'ViBox', |
| 1975 | '8V' => 'Viumee', |
| 1976 | 'V5' => 'Vivax', |
| 1977 | 'VIV' => 'VIVIMAGE', |
| 1978 | 'VI2' => 'VIVIBright', |
| 1979 | 'VV' => 'Vivo', |
| 1980 | '6V' => 'VIWA', |
| 1981 | 'VII' => 'VIIPOO', |
| 1982 | 'VID' => 'VIDA', |
| 1983 | 'VZ' => 'Vizio', |
| 1984 | 'VIZ' => 'Vizmo', |
| 1985 | 'VIT' => 'Vityaz', |
| 1986 | 'VTM' => 'Vitumi', |
| 1987 | '9V' => 'Vision Touch', |
| 1988 | 'VIS' => 'Vision Technology', |
| 1989 | 'VST' => 'Visitech', |
| 1990 | 'VIL' => 'Visual Land', |
| 1991 | 'VI1' => 'VILLAON', |
| 1992 | 'VIM' => 'VIMOQ', |
| 1993 | 'VK' => 'VK Mobile', |
| 1994 | 'JM' => 'v-mobile', |
| 1995 | 'VHO' => 'V-HOPE', |
| 1996 | 'VHM' => 'V-HOME', |
| 1997 | 'VGE' => 'V-Gen', |
| 1998 | 'V0' => 'VKworld', |
| 1999 | 'VM' => 'Vodacom', |
| 2000 | 'VOC' => 'VOCAL', |
| 2001 | 'VF' => 'Vodafone', |
| 2002 | '7W' => 'VOGA', |
| 2003 | 'V2' => 'Vonino', |
| 2004 | '1V' => 'Vontar', |
| 2005 | 'VG' => 'Vorago', |
| 2006 | '2V' => 'Vorke', |
| 2007 | '8U' => 'Vorcom', |
| 2008 | 'JW' => 'Vortex', |
| 2009 | 'VRX' => 'VORTEX (RO)', |
| 2010 | 'VOR' => 'Vormor', |
| 2011 | 'V1' => 'Voto', |
| 2012 | 'Z7' => 'VOX Electronics', |
| 2013 | 'VOI' => 'VOIX', |
| 2014 | 'VO' => 'Voxtel', |
| 2015 | 'VY' => 'Voyo', |
| 2016 | 'VOL' => 'Völfen', |
| 2017 | 'VO1' => 'Volt', |
| 2018 | 'VOP' => 'Volla', |
| 2019 | 'V02' => 'VOLIA', |
| 2020 | 'VH' => 'Vsmart', |
| 2021 | 'V9' => 'Vsun', |
| 2022 | 'VU' => 'Vulcan', |
| 2023 | '3V' => 'VVETIME', |
| 2024 | 'ZC' => 'VUCATIMES', |
| 2025 | 'VO2' => 'VOLKANO', |
| 2026 | 'VUE' => 'Vue Micro', |
| 2027 | 'WAK' => 'Walker', |
| 2028 | 'WA' => 'Walton', |
| 2029 | 'WAF' => 'WAF', |
| 2030 | 'WAO' => 'W&O', |
| 2031 | 'WLT' => 'Waltham', |
| 2032 | 'WAL' => 'Waltter', |
| 2033 | 'WAI' => 'Wainyok', |
| 2034 | 'WAT' => 'waipu.tv', |
| 2035 | 'WHO' => 'Whoop', |
| 2036 | 'WBL' => 'We. by Loewe.', |
| 2037 | 'WCP' => 'WeChip', |
| 2038 | 'WM' => 'Weimei', |
| 2039 | 'WM1' => 'Weiimi', |
| 2040 | 'WE' => 'WellcoM', |
| 2041 | 'W6' => 'WELLINGTON', |
| 2042 | 'WD' => 'Western Digital', |
| 2043 | 'WST' => 'Weston', |
| 2044 | 'WT' => 'Westpoint', |
| 2045 | 'WAN' => 'Zhongyu Display', |
| 2046 | 'WA1' => 'WANSA', |
| 2047 | 'WY' => 'Wexler', |
| 2048 | '3W' => 'WE', |
| 2049 | 'WEC' => 'Wecool', |
| 2050 | 'WEE' => 'Weelikeit', |
| 2051 | 'WP' => 'Wieppo', |
| 2052 | 'W2' => 'Wigor', |
| 2053 | 'WI' => 'Wiko', |
| 2054 | 'WF' => 'Wileyfox', |
| 2055 | 'WLR' => 'WildRed', |
| 2056 | 'WS' => 'Winds', |
| 2057 | 'WN' => 'Wink', |
| 2058 | '9W' => 'Winmax', |
| 2059 | 'W5' => 'Winnovo', |
| 2060 | 'WU' => 'Wintouch', |
| 2061 | 'WIS' => 'Winstar', |
| 2062 | 'W0' => 'Wiseasy', |
| 2063 | '2W' => 'Wizz', |
| 2064 | 'W4' => 'WIWA', |
| 2065 | 'WIZ' => 'WizarPos', |
| 2066 | 'WL' => 'Wolder', |
| 2067 | 'WG' => 'Wolfgang', |
| 2068 | 'WQ' => 'Wolki', |
| 2069 | 'WON' => 'WONDER', |
| 2070 | 'WO' => 'Wonu', |
| 2071 | 'W1' => 'Woo', |
| 2072 | 'WX' => 'Woxter', |
| 2073 | 'WOZ' => 'WOZIFAN', |
| 2074 | 'XQ' => 'X-AGE', |
| 2075 | 'XEL' => 'XElectron', |
| 2076 | 'X3' => 'X-BO', |
| 2077 | 'XBI' => 'XB', |
| 2078 | 'XMO' => 'X-Mobile', |
| 2079 | 'XT' => 'X-TIGI', |
| 2080 | 'XV' => 'X-View', |
| 2081 | 'X4' => 'X.Vision', |
| 2082 | 'X88' => 'X88', |
| 2083 | 'X96' => 'X96', |
| 2084 | '96Q' => 'X96Q', |
| 2085 | 'A95' => 'A95X', |
| 2086 | 'XG' => 'Xgody', |
| 2087 | 'XGE' => 'XGEM', |
| 2088 | 'QX' => 'XGIMI', |
| 2089 | 'XL' => 'Xiaolajiao', |
| 2090 | 'XI' => 'Xiaomi', |
| 2091 | 'XW' => 'Xiaodu', |
| 2092 | 'XN' => 'Xion', |
| 2093 | 'XO' => 'Xolo', |
| 2094 | 'XR' => 'Xoro', |
| 2095 | 'XPP' => 'XPPen', |
| 2096 | 'XRL' => 'XREAL', |
| 2097 | 'XS' => 'Xshitou', |
| 2098 | 'XSM' => 'Xsmart', |
| 2099 | '4X' => 'Xtouch', |
| 2100 | 'X8' => 'Xtratech', |
| 2101 | 'XCR' => 'Xcruiser', |
| 2102 | 'XCO' => 'XCOM', |
| 2103 | 'XCL' => 'Xcell', |
| 2104 | 'XWA' => 'Xwave', |
| 2105 | 'YD' => 'Yandex', |
| 2106 | 'YA' => 'Yarvik', |
| 2107 | 'Y2' => 'Yes', |
| 2108 | 'YES' => 'Yestel', |
| 2109 | 'YE' => 'Yezz', |
| 2110 | 'YG' => 'YEPEN', |
| 2111 | 'YEL' => 'YELLYOUTH', |
| 2112 | 'YK' => 'Yoka TV', |
| 2113 | 'YO' => 'Yota', |
| 2114 | 'YOU' => 'Youin', |
| 2115 | 'YO1' => 'Youwei', |
| 2116 | 'YOO' => 'Yooz', |
| 2117 | 'YT' => 'Ytone', |
| 2118 | 'Y9' => 'YOTOPT', |
| 2119 | 'Y1' => 'Yu', |
| 2120 | 'YF' => 'YU Fly', |
| 2121 | 'Y0' => 'YUHO', |
| 2122 | 'YN' => 'Yuno', |
| 2123 | 'YUN' => 'YUNDOO', |
| 2124 | 'YUS' => 'YunSong', |
| 2125 | 'YUM' => 'YUMKEM', |
| 2126 | 'YIK' => 'YIKEMI', |
| 2127 | 'YU' => 'Yuandao', |
| 2128 | 'YS' => 'Yusun', |
| 2129 | 'YJ' => 'YASIN', |
| 2130 | 'YX' => 'Yxtel', |
| 2131 | '0Z' => 'Zatec', |
| 2132 | '2Z' => 'Zaith', |
| 2133 | 'ZAM' => 'Zamolxe', |
| 2134 | 'ZAL' => 'ZALA', |
| 2135 | 'ZZB' => 'ZZB', |
| 2136 | 'ZEA' => 'Zealot', |
| 2137 | 'PZ' => 'Zebra', |
| 2138 | 'ZE1' => 'Zeblaze', |
| 2139 | 'ZE' => 'Zeemi', |
| 2140 | 'WZ' => 'Zeeker', |
| 2141 | 'ZN' => 'Zen', |
| 2142 | 'ZK' => 'Zenek', |
| 2143 | 'ZL' => 'Zentality', |
| 2144 | 'ZF' => 'Zfiner', |
| 2145 | 'ZI' => 'Zidoo', |
| 2146 | 'FZ' => 'ZIFRO', |
| 2147 | 'ZIF' => 'ZIFFLER', |
| 2148 | 'ZIO' => 'ZIOVO', |
| 2149 | 'ZX' => 'Ziox', |
| 2150 | 'ZIK' => 'ZIK', |
| 2151 | 'ZKI' => 'Z-Kai', |
| 2152 | 'ZIG' => 'Zigo', |
| 2153 | 'ZIM' => 'Zimmer', |
| 2154 | 'ZIN' => 'Zinox', |
| 2155 | 'ZO' => 'Zonda', |
| 2156 | 'ZW' => 'Zonko', |
| 2157 | 'ZP' => 'Zopo', |
| 2158 | 'ZOO' => 'ZoomSmart', |
| 2159 | 'ZO1' => 'Zoom', |
| 2160 | 'ZT' => 'ZTE', |
| 2161 | 'ZU' => 'Zuum', |
| 2162 | 'ZY' => 'Zync', |
| 2163 | 'ZR' => 'Zyrex', |
| 2164 | 'ZQ' => 'ZYQ', |
| 2165 | 'Z4' => 'ZH&K', |
| 2166 | 'OW' => 'öwn', |
| 2167 | 'WBF' => 'Webfleet', |
| 2168 | 'WSS' => 'WS', |
| 2169 | // legacy brands, might be removed in future versions |
| 2170 | 'WB' => 'Web TV', |
| 2171 | 'XX' => 'Unknown', |
| 2172 | ]; |
| 2173 | /** |
| 2174 | * List of short names, that are not used due to brand being moved to another one. |
| 2175 | * Used only for `getShortCode()` call for backwards compatibility. |
| 2176 | * |
| 2177 | * @var array |
| 2178 | */ |
| 2179 | public static $legacyShortNames = [ |
| 2180 | // Is now '2E' |
| 2181 | '6T' => 'Twoe', |
| 2182 | // Is now 'ARRIS' |
| 2183 | '5H' => 'MMI', |
| 2184 | // Is now 'Cherry Mobile' |
| 2185 | 'WHI' => 'White Mobile', |
| 2186 | // Is now 'Cloudfone' |
| 2187 | '6C' => 'Cloudpad', |
| 2188 | // Is now 'Coolpad' |
| 2189 | 'DZ' => 'Dazen', |
| 2190 | // Is now 'Ericsson' |
| 2191 | 'ER' => 'Ericy', |
| 2192 | // Is now 'Exertis' |
| 2193 | 'HLL' => 'HLLO', |
| 2194 | // Is now 'iGet' |
| 2195 | 'EKI' => 'EKINOX', |
| 2196 | // Is now 'OTT' |
| 2197 | 'LPX' => 'LPX-G', |
| 2198 | // Is now 'Newman' |
| 2199 | 'UE1' => 'UE', |
| 2200 | ]; |
| 2201 | /** |
| 2202 | * Mapping formFactor types to parser device types |
| 2203 | * (not sort array the array priority result device type) |
| 2204 | * @var array |
| 2205 | */ |
| 2206 | protected static $clientHintFormFactorsMapping = ['automotive' => self::DEVICE_TYPE_CAR_BROWSER, 'xr' => self::DEVICE_TYPE_WEARABLE, 'watch' => self::DEVICE_TYPE_WEARABLE, 'mobile' => self::DEVICE_TYPE_SMARTPHONE, 'tablet' => self::DEVICE_TYPE_TABLET, 'desktop' => self::DEVICE_TYPE_DESKTOP, 'eink' => self::DEVICE_TYPE_TABLET]; |
| 2207 | /** |
| 2208 | * Returns the device type represented by one of the DEVICE_TYPE_* constants |
| 2209 | * |
| 2210 | * @return int|null |
| 2211 | */ |
| 2212 | public function getDeviceType() : ?int |
| 2213 | { |
| 2214 | return $this->deviceType; |
| 2215 | } |
| 2216 | /** |
| 2217 | * Returns available device types |
| 2218 | * |
| 2219 | * @see $deviceTypes |
| 2220 | * |
| 2221 | * @return array |
| 2222 | */ |
| 2223 | public static function getAvailableDeviceTypes() : array |
| 2224 | { |
| 2225 | return self::$deviceTypes; |
| 2226 | } |
| 2227 | /** |
| 2228 | * Returns names of all available device types |
| 2229 | * |
| 2230 | * @return array |
| 2231 | */ |
| 2232 | public static function getAvailableDeviceTypeNames() : array |
| 2233 | { |
| 2234 | return \array_keys(self::$deviceTypes); |
| 2235 | } |
| 2236 | /** |
| 2237 | * Returns the name of the given device type |
| 2238 | * |
| 2239 | * @param int $deviceType one of the DEVICE_TYPE_* constants |
| 2240 | * |
| 2241 | * @return string |
| 2242 | */ |
| 2243 | public static function getDeviceName(int $deviceType) : string |
| 2244 | { |
| 2245 | $deviceName = \array_search($deviceType, self::$deviceTypes, \true); |
| 2246 | if (\is_string($deviceName)) { |
| 2247 | return $deviceName; |
| 2248 | } |
| 2249 | return ''; |
| 2250 | } |
| 2251 | /** |
| 2252 | * Returns the detected device model |
| 2253 | * |
| 2254 | * @return string |
| 2255 | */ |
| 2256 | public function getModel() : string |
| 2257 | { |
| 2258 | return $this->model; |
| 2259 | } |
| 2260 | /** |
| 2261 | * Returns the detected device brand |
| 2262 | * |
| 2263 | * @return string |
| 2264 | */ |
| 2265 | public function getBrand() : string |
| 2266 | { |
| 2267 | return $this->brand; |
| 2268 | } |
| 2269 | /** |
| 2270 | * Returns the full brand name for the given short name |
| 2271 | * |
| 2272 | * @param string $brandId short brand name |
| 2273 | * |
| 2274 | * @return string |
| 2275 | */ |
| 2276 | public static function getFullName(string $brandId) : string |
| 2277 | { |
| 2278 | if (\array_key_exists($brandId, self::$deviceBrands)) { |
| 2279 | return self::$deviceBrands[$brandId]; |
| 2280 | } |
| 2281 | return ''; |
| 2282 | } |
| 2283 | /** |
| 2284 | * Returns the brand short code for the given name |
| 2285 | * |
| 2286 | * @param string $brand brand name |
| 2287 | * |
| 2288 | * @return string |
| 2289 | * |
| 2290 | * @deprecated since 4.0 - short codes might be removed in next major release |
| 2291 | */ |
| 2292 | public static function getShortCode(string $brand) : string |
| 2293 | { |
| 2294 | $shortcode = (string) \array_search($brand, self::$deviceBrands, \true) ?: ''; |
| 2295 | if ('' !== $shortcode) { |
| 2296 | return $shortcode; |
| 2297 | } |
| 2298 | return (string) \array_search($brand, self::$legacyShortNames, \true) ?: ''; |
| 2299 | } |
| 2300 | /** |
| 2301 | * Sets the useragent to be parsed |
| 2302 | * |
| 2303 | * @param string $userAgent |
| 2304 | */ |
| 2305 | public function setUserAgent(string $userAgent) : void |
| 2306 | { |
| 2307 | $this->reset(); |
| 2308 | parent::setUserAgent($userAgent); |
| 2309 | } |
| 2310 | /** |
| 2311 | * @inheritdoc |
| 2312 | */ |
| 2313 | public function parse() : ?array |
| 2314 | { |
| 2315 | $resultClientHint = $this->parseClientHints(); |
| 2316 | $deviceModel = $resultClientHint['model'] ?? ''; |
| 2317 | $this->restoreUserAgentFromClientHints(); |
| 2318 | if ('' === $deviceModel && $this->hasUserAgentClientHintsFragment()) { |
| 2319 | return $this->getResult(); |
| 2320 | } |
| 2321 | if ('' === $deviceModel && $this->hasDesktopFragment()) { |
| 2322 | return $this->getResult(); |
| 2323 | } |
| 2324 | $brand = ''; |
| 2325 | foreach ($this->getRegexes() as $brand => $regex) { |
| 2326 | $matches = $this->matchUserAgent($regex['regex']); |
| 2327 | if ($matches) { |
| 2328 | break; |
| 2329 | } |
| 2330 | } |
| 2331 | $brand = (string) $brand; |
| 2332 | if (empty($matches)) { |
| 2333 | $this->deviceType = $resultClientHint['deviceType'] ?? null; |
| 2334 | return $resultClientHint; |
| 2335 | } |
| 2336 | if ('Unknown' !== $brand) { |
| 2337 | if (!\in_array($brand, self::$deviceBrands, \true)) { |
| 2338 | // This Exception should never be thrown. If so a defined brand name is missing in $deviceBrands |
| 2339 | throw new \Exception(\sprintf("The brand with name '%s' should be listed in deviceBrands array. Tried to parse user agent: %s", $brand, $this->userAgent)); |
| 2340 | // @codeCoverageIgnore |
| 2341 | } |
| 2342 | $this->brand = $brand; |
| 2343 | } |
| 2344 | if (isset($regex['device']) && \array_key_exists($regex['device'], self::$deviceTypes)) { |
| 2345 | $this->deviceType = self::$deviceTypes[$regex['device']]; |
| 2346 | } |
| 2347 | $this->model = ''; |
| 2348 | if (isset($regex['model'])) { |
| 2349 | $this->model = $this->buildModel($regex['model'], $matches); |
| 2350 | } |
| 2351 | if (isset($regex['models'])) { |
| 2352 | $modelRegex = ''; |
| 2353 | foreach ($regex['models'] as $modelRegex) { |
| 2354 | $modelMatches = $this->matchUserAgent($modelRegex['regex']); |
| 2355 | if ($modelMatches) { |
| 2356 | break; |
| 2357 | } |
| 2358 | } |
| 2359 | if (empty($modelMatches)) { |
| 2360 | return $this->getResult(); |
| 2361 | } |
| 2362 | $this->model = $this->buildModel($modelRegex['model'], $modelMatches); |
| 2363 | if (isset($modelRegex['brand']) && \in_array($modelRegex['brand'], self::$deviceBrands, \true)) { |
| 2364 | $this->brand = (string) $modelRegex['brand']; |
| 2365 | } |
| 2366 | if (isset($modelRegex['device']) && \array_key_exists($modelRegex['device'], self::$deviceTypes)) { |
| 2367 | $this->deviceType = self::$deviceTypes[$modelRegex['device']]; |
| 2368 | } |
| 2369 | } |
| 2370 | return $this->getResult(); |
| 2371 | } |
| 2372 | /** |
| 2373 | * @param string $model |
| 2374 | * @param array $matches |
| 2375 | * |
| 2376 | * @return string |
| 2377 | */ |
| 2378 | protected function buildModel(string $model, array $matches) : string |
| 2379 | { |
| 2380 | $model = $this->buildByMatch($model, $matches); |
| 2381 | $model = \str_replace('_', ' ', $model); |
| 2382 | $model = \preg_replace('/ TD$/i', '', $model); |
| 2383 | if ('Build' === $model || empty($model)) { |
| 2384 | return ''; |
| 2385 | } |
| 2386 | return \trim($model); |
| 2387 | } |
| 2388 | /** |
| 2389 | * @return array|null |
| 2390 | */ |
| 2391 | protected function parseClientHints() : ?array |
| 2392 | { |
| 2393 | if ($this->clientHints && $this->clientHints->getModel()) { |
| 2394 | $detectedDeviceType = null; |
| 2395 | $formFactors = $this->clientHints->getFormFactors(); |
| 2396 | foreach (self::$clientHintFormFactorsMapping as $formFactor => $deviceType) { |
| 2397 | if (\in_array($formFactor, $formFactors, \true)) { |
| 2398 | $detectedDeviceType = $deviceType; |
| 2399 | break; |
| 2400 | } |
| 2401 | } |
| 2402 | return ['deviceType' => $detectedDeviceType, 'model' => $this->clientHints->getModel(), 'brand' => '']; |
| 2403 | } |
| 2404 | return null; |
| 2405 | } |
| 2406 | /** |
| 2407 | * Resets the stored values |
| 2408 | */ |
| 2409 | protected function reset() : void |
| 2410 | { |
| 2411 | $this->deviceType = null; |
| 2412 | $this->model = ''; |
| 2413 | $this->brand = ''; |
| 2414 | } |
| 2415 | /** |
| 2416 | * @return array |
| 2417 | */ |
| 2418 | protected function getResult() : array |
| 2419 | { |
| 2420 | return ['deviceType' => $this->deviceType, 'model' => $this->model, 'brand' => $this->brand]; |
| 2421 | } |
| 2422 | } |
| 2423 |