diff --git a/dist/index.js b/dist/index.js index 62746316..9d9d6bfd 100644 --- a/dist/index.js +++ b/dist/index.js @@ -87383,6 +87383,7 @@ const exec = (__nccwpck_require__(35317).exec); const execSync = (__nccwpck_require__(35317).execSync); const path = __nccwpck_require__(16928); const util = __nccwpck_require__(33225); +const bluetoothVendors = __nccwpck_require__(55848); const fs = __nccwpck_require__(79896); let _platform = process.platform; @@ -87429,6 +87430,11 @@ function parseBluetoothManufacturer(str) { return result; } +function parseBluetoothVendor(str) { + const id = parseInt(str); + if (!isNaN(id)) return bluetoothVendors[id]; +} + function parseLinuxBluetoothInfo(lines, macAddr1, macAddr2) { const result = {}; @@ -87450,7 +87456,7 @@ function parseDarwinBluetoothDevices(bluetoothObject, macAddr2) { result.device = bluetoothObject.device_services || ''; result.name = bluetoothObject.device_name || ''; - result.manufacturer = bluetoothObject.device_manufacturer || parseBluetoothManufacturer(bluetoothObject.device_name || '') || ''; + result.manufacturer = bluetoothObject.device_manufacturer || parseBluetoothVendor(bluetoothObject.device_vendorID) || parseBluetoothManufacturer(bluetoothObject.device_name || '') || ''; result.macDevice = (bluetoothObject.device_addr || bluetoothObject.device_address || '').toLowerCase().replace(/-/g, ':'); result.macHost = macAddr2; result.batteryPercent = bluetoothObject.device_batteryPercent || null; @@ -87597,6 +87603,1151 @@ function bluetoothDevices(callback) { exports.bluetoothDevices = bluetoothDevices; +/***/ }), + +/***/ 55848: +/***/ ((module) => { + + +// @ts-check +module.exports = { + 0x0000: 'Ericsson Technology Licensing', + 0x0001: 'Nokia Mobile Phones', + 0x0002: 'Intel Corp.', + 0x0003: 'IBM Corp.', + 0x0004: 'Toshiba Corp.', + 0x0005: '3Com', + 0x0006: 'Microsoft', + 0x0007: 'Lucent', + 0x0008: 'Motorola', + 0x0009: 'Infineon Technologies AG', + 0x000a: 'Cambridge Silicon Radio', + 0x000b: 'Silicon Wave', + 0x000c: 'Digianswer A/S', + 0x000d: 'Texas Instruments Inc.', + 0x000e: 'Ceva, Inc. (formerly Parthus Technologies, Inc.)', + 0x000f: 'Broadcom Corporation', + 0x0010: 'Mitel Semiconductor', + 0x0011: 'Widcomm, Inc', + 0x0012: 'Zeevo, Inc.', + 0x0013: 'Atmel Corporation', + 0x0014: 'Mitsubishi Electric Corporation', + 0x0015: 'RTX Telecom A/S', + 0x0016: 'KC Technology Inc.', + 0x0017: 'NewLogic', + 0x0018: 'Transilica, Inc.', + 0x0019: 'Rohde & Schwarz GmbH & Co. KG', + 0x001a: 'TTPCom Limited', + 0x001b: 'Signia Technologies, Inc.', + 0x001c: 'Conexant Systems Inc.', + 0x001d: 'Qualcomm', + 0x001e: 'Inventel', + 0x001f: 'AVM Berlin', + 0x0020: 'BandSpeed, Inc.', + 0x0021: 'Mansella Ltd', + 0x0022: 'NEC Corporation', + 0x0023: 'WavePlus Technology Co., Ltd.', + 0x0024: 'Alcatel', + 0x0025: 'NXP Semiconductors (formerly Philips Semiconductors)', + 0x0026: 'C Technologies', + 0x0027: 'Open Interface', + 0x0028: 'R F Micro Devices', + 0x0029: 'Hitachi Ltd', + 0x002a: 'Symbol Technologies, Inc.', + 0x002b: 'Tenovis', + 0x002c: 'Macronix International Co. Ltd.', + 0x002d: 'GCT Semiconductor', + 0x002e: 'Norwood Systems', + 0x002f: 'MewTel Technology Inc.', + 0x0030: 'ST Microelectronics', + 0x0031: 'Synopsis', + 0x0032: 'Red-M (Communications) Ltd', + 0x0033: 'Commil Ltd', + 0x0034: 'Computer Access Technology Corporation (CATC)', + 0x0035: 'Eclipse (HQ Espana) S.L.', + 0x0036: 'Renesas Electronics Corporation', + 0x0037: 'Mobilian Corporation', + 0x0038: 'Terax', + 0x0039: 'Integrated System Solution Corp.', + 0x003a: 'Matsushita Electric Industrial Co., Ltd.', + 0x003b: 'Gennum Corporation', + 0x003c: 'BlackBerry Limited (formerly Research In Motion)', + 0x003d: 'IPextreme, Inc.', + 0x003e: 'Systems and Chips, Inc.', + 0x003f: 'Bluetooth SIG, Inc.', + 0x0040: 'Seiko Epson Corporation', + 0x0041: 'Integrated Silicon Solution Taiwan, Inc.', + 0x0042: 'CONWISE Technology Corporation Ltd', + 0x0043: 'PARROT SA', + 0x0044: 'Socket Mobile', + 0x0045: 'Atheros Communications, Inc.', + 0x0046: 'MediaTek, Inc.', + 0x0047: 'Bluegiga', + 0x0048: 'Marvell Technology Group Ltd.', + 0x0049: '3DSP Corporation', + 0x004a: 'Accel Semiconductor Ltd.', + 0x004b: 'Continental Automotive Systems', + 0x004c: 'Apple, Inc.', + 0x004d: 'Staccato Communications, Inc.', + 0x004e: 'Avago Technologies', + 0x004f: 'APT Licensing Ltd.', + 0x0050: 'SiRF Technology', + 0x0051: 'Tzero Technologies, Inc.', + 0x0052: 'J&M Corporation', + 0x0053: 'Free2move AB', + 0x0054: '3DiJoy Corporation', + 0x0055: 'Plantronics, Inc.', + 0x0056: 'Sony Ericsson Mobile Communications', + 0x0057: 'Harman International Industries, Inc.', + 0x0058: 'Vizio, Inc.', + 0x0059: 'Nordic Semiconductor ASA', + 0x005a: 'EM Microelectronic-Marin SA', + 0x005b: 'Ralink Technology Corporation', + 0x005c: 'Belkin International, Inc.', + 0x005d: 'Realtek Semiconductor Corporation', + 0x005e: 'Stonestreet One, LLC', + 0x005f: 'Wicentric, Inc.', + 0x0060: 'RivieraWaves S.A.S', + 0x0061: 'RDA Microelectronics', + 0x0062: 'Gibson Guitars', + 0x0063: 'MiCommand Inc.', + 0x0064: 'Band XI International, LLC', + 0x0065: 'Hewlett-Packard Company', + 0x0066: '9Solutions Oy', + 0x0067: 'GN Netcom A/S', + 0x0068: 'General Motors', + 0x0069: 'A&D Engineering, Inc.', + 0x006a: 'MindTree Ltd.', + 0x006b: 'Polar Electro OY', + 0x006c: 'Beautiful Enterprise Co., Ltd.', + 0x006d: 'BriarTek, Inc.', + 0x006e: 'Summit Data Communications, Inc.', + 0x006f: 'Sound ID', + 0x0070: 'Monster, LLC', + 0x0071: 'connectBlue AB', + 0x0072: 'ShangHai Super Smart Electronics Co. Ltd.', + 0x0073: 'Group Sense Ltd.', + 0x0074: 'Zomm, LLC', + 0x0075: 'Samsung Electronics Co. Ltd.', + 0x0076: 'Creative Technology Ltd.', + 0x0077: 'Laird Technologies', + 0x0078: 'Nike, Inc.', + 0x0079: 'lesswire AG', + 0x007a: 'MStar Semiconductor, Inc.', + 0x007b: 'Hanlynn Technologies', + 0x007c: 'A & R Cambridge', + 0x007d: 'Seers Technology Co. Ltd', + 0x007e: 'Sports Tracking Technologies Ltd.', + 0x007f: 'Autonet Mobile', + 0x0080: 'DeLorme Publishing Company, Inc.', + 0x0081: 'WuXi Vimicro', + 0x0082: 'Sennheiser Communications A/S', + 0x0083: 'TimeKeeping Systems, Inc.', + 0x0084: 'Ludus Helsinki Ltd.', + 0x0085: 'BlueRadios, Inc.', + 0x0086: 'equinox AG', + 0x0087: 'Garmin International, Inc.', + 0x0088: 'Ecotest', + 0x0089: 'GN ReSound A/S', + 0x008a: 'Jawbone', + 0x008b: 'Topcorn Positioning Systems, LLC', + 0x008c: 'Gimbal Inc. (formerly Qualcomm Labs, Inc. and Qualcomm Retail Solutions, Inc.)', + 0x008d: 'Zscan Software', + 0x008e: 'Quintic Corp.', + 0x008f: 'Stollman E+V GmbH', + 0x0090: 'Funai Electric Co., Ltd.', + 0x0091: 'Advanced PANMOBIL Systems GmbH & Co. KG', + 0x0092: 'ThinkOptics, Inc.', + 0x0093: 'Universal Electronics, Inc.', + 0x0094: 'Airoha Technology Corp.', + 0x0095: 'NEC Lighting, Ltd.', + 0x0096: 'ODM Technology, Inc.', + 0x0097: 'ConnecteDevice Ltd.', + 0x0098: 'zer01.tv GmbH', + 0x0099: 'i.Tech Dynamic Global Distribution Ltd.', + 0x009a: 'Alpwise', + 0x009b: 'Jiangsu Toppower Automotive Electronics Co., Ltd.', + 0x009c: 'Colorfy, Inc.', + 0x009d: 'Geoforce Inc.', + 0x009e: 'Bose Corporation', + 0x009f: 'Suunto Oy', + 0x00a0: 'Kensington Computer Products Group', + 0x00a1: 'SR-Medizinelektronik', + 0x00a2: 'Vertu Corporation Limited', + 0x00a3: 'Meta Watch Ltd.', + 0x00a4: 'LINAK A/S', + 0x00a5: 'OTL Dynamics LLC', + 0x00a6: 'Panda Ocean Inc.', + 0x00a7: 'Visteon Corporation', + 0x00a8: 'ARP Devices Limited', + 0x00a9: 'Magneti Marelli S.p.A', + 0x00aa: 'CAEN RFID srl', + 0x00ab: 'Ingenieur-Systemgruppe Zahn GmbH', + 0x00ac: 'Green Throttle Games', + 0x00ad: 'Peter Systemtechnik GmbH', + 0x00ae: 'Omegawave Oy', + 0x00af: 'Cinetix', + 0x00b0: 'Passif Semiconductor Corp', + 0x00b1: 'Saris Cycling Group, Inc', + 0x00b2: 'Bekey A/S', + 0x00b3: 'Clarinox Technologies Pty. Ltd.', + 0x00b4: 'BDE Technology Co., Ltd.', + 0x00b5: 'Swirl Networks', + 0x00b6: 'Meso international', + 0x00b7: 'TreLab Ltd', + 0x00b8: 'Qualcomm Innovation Center, Inc. (QuIC)', + 0x00b9: 'Johnson Controls, Inc.', + 0x00ba: 'Starkey Laboratories Inc.', + 0x00bb: 'S-Power Electronics Limited', + 0x00bc: 'Ace Sensor Inc', + 0x00bd: 'Aplix Corporation', + 0x00be: 'AAMP of America', + 0x00bf: 'Stalmart Technology Limited', + 0x00c0: 'AMICCOM Electronics Corporation', + 0x00c1: 'Shenzhen Excelsecu Data Technology Co.,Ltd', + 0x00c2: 'Geneq Inc.', + 0x00c3: 'adidas AG', + 0x00c4: 'LG Electronics', + 0x00c5: 'Onset Computer Corporation', + 0x00c6: 'Selfly BV', + 0x00C7: 'Quuppa Oy.', + 0x00C8: 'GeLo Inc', + 0x00C9: 'Evluma', + 0x00CA: 'MC10', + 0x00CB: 'Binauric SE', + 0x00CC: 'Beats Electronics', + 0x00CD: 'Microchip Technology Inc.', + 0x00CE: 'Elgato Systems GmbH', + 0x00CF: 'ARCHOS SA', + 0x00D0: 'Dexcom, Inc.', + 0x00D1: 'Polar Electro Europe B.V.', + 0x00D2: 'Dialog Semiconductor B.V.', + 0x00D3: 'Taixingbang Technology (HK) Co,. LTD.', + 0x00D4: 'Kawantech', + 0x00D5: 'Austco Communication Systems', + 0x00D6: 'Timex Group USA, Inc.', + 0x00D7: 'Qualcomm Technologies, Inc.', + 0x00D8: 'Qualcomm Connected Experiences, Inc.', + 0x00D9: 'Voyetra Turtle Beach', + 0x00DA: 'txtr GmbH', + 0x00DB: 'Biosentronics', + 0x00DC: 'Procter & Gamble', + 0x00DD: 'Hosiden Corporation', + 0x00DE: 'Muzik LLC', + 0x00DF: 'Misfit Wearables Corp', + 0x00E0: 'Google', + 0x00E1: 'Danlers Ltd', + 0x00E2: 'Semilink Inc', + 0x00E3: 'inMusic Brands, Inc', + 0x00E4: 'L.S. Research Inc.', + 0x00E5: 'Eden Software Consultants Ltd.', + 0x00E6: 'Freshtemp', + 0x00e7: 'KS Technologies', + 0x00e8: 'ACTS Technologies', + 0x00e9: 'Vtrack Systems', + 0x00ea: 'Nielsen-Kellerman Company', + 0x00eb: 'Server Technology, Inc.', + 0x00ec: 'BioResearch Associates', + 0x00ed: 'Jolly Logic, LLC', + 0x00ee: 'Above Average Outcomes, Inc.', + 0x00ef: 'Bitsplitters GmbH', + 0x00f0: 'PayPal, Inc.', + 0x00f1: 'Witron Technology Limited', + 0x00f2: 'Aether Things Inc. (formerly Morse Project Inc.)', + 0x00f3: 'Kent Displays Inc.', + 0x00f4: 'Nautilus Inc.', + 0x00f5: 'Smartifier Oy', + 0x00f6: 'Elcometer Limited', + 0x00f7: 'VSN Technologies Inc.', + 0x00f8: 'AceUni Corp., Ltd.', + 0x00f9: 'StickNFind', + 0x00fa: 'Crystal Code AB', + 0x00fb: 'KOUKAAM a.s.', + 0x00fc: 'Delphi Corporation', + 0x00fd: 'ValenceTech Limited', + 0x00fe: 'Reserved', + 0x00ff: 'Typo Products, LLC', + 0x0100: 'TomTom International BV', + 0x0101: 'Fugoo, Inc', + 0x0102: 'Keiser Corporation', + 0x0103: 'Bang & Olufsen A/S', + 0x0104: 'PLUS Locations Systems Pty Ltd', + 0x0105: 'Ubiquitous Computing Technology Corporation', + 0x0106: 'Innovative Yachtter Solutions', + 0x0107: 'William Demant Holding A/S', + 0x0108: 'Chicony Electronics Co., Ltd.', + 0x0109: 'Atus BV', + 0x010a: 'Codegate Ltd.', + 0x010b: 'ERi, Inc.', + 0x010c: 'Transducers Direct, LLC', + 0x010d: 'Fujitsu Ten Limited', + 0x010e: 'Audi AG', + 0x010f: 'HiSilicon Technologies Co., Ltd.', + 0x0110: 'Nippon Seiki Co., Ltd.', + 0x0111: 'Steelseries ApS', + 0x0112: 'vyzybl Inc.', + 0x0113: 'Openbrain Technologies, Co., Ltd.', + 0x0114: 'Xensr', + 0x0115: 'e.solutions', + 0x0116: '1OAK Technologies', + 0x0117: 'Wimoto Technologies Inc', + 0x0118: 'Radius Networks, Inc.', + 0x0119: 'Wize Technology Co., Ltd.', + 0x011a: 'Qualcomm Labs, Inc.', + 0x011b: 'Aruba Networks', + 0x011c: 'Baidu', + 0x011d: 'Arendi AG', + 0x011e: 'Skoda Auto a.s.', + 0x011f: 'Volkswagon AG', + 0x0120: 'Porsche AG', + 0x0121: 'Sino Wealth Electronic Ltd.', + 0x0122: 'AirTurn, Inc.', + 0x0123: 'Kinsa, Inc.', + 0x0124: 'HID Global', + 0x0125: 'SEAT es', + 0x0126: 'Promethean Ltd.', + 0x0127: 'Salutica Allied Solutions', + 0x0128: 'GPSI Group Pty Ltd', + 0x0129: 'Nimble Devices Oy', + 0x012a: 'Changzhou Yongse Infotech Co., Ltd', + 0x012b: 'SportIQ', + 0x012c: 'TEMEC Instruments B.V.', + 0x012d: 'Sony Corporation', + 0x012e: 'ASSA ABLOY', + 0x012f: 'Clarion Co., Ltd.', + 0x0130: 'Warehouse Innovations', + 0x0131: 'Cypress Semiconductor Corporation', + 0x0132: 'MADS Inc', + 0x0133: 'Blue Maestro Limited', + 0x0134: 'Resolution Products, Inc.', + 0x0135: 'Airewear LLC', + 0x0136: 'Seed Labs, Inc. (formerly ETC sp. z.o.o.)', + 0x0137: 'Prestigio Plaza Ltd.', + 0x0138: 'NTEO Inc.', + 0x0139: 'Focus Systems Corporation', + 0x013a: 'Tencent Holdings Limited', + 0x013b: 'Allegion', + 0x013c: 'Murata Manufacuring Co., Ltd.', + 0x013e: 'Nod, Inc.', + 0x013f: 'B&B Manufacturing Company', + 0x0140: 'Alpine Electronics (China) Co., Ltd', + 0x0141: 'FedEx Services', + 0x0142: 'Grape Systems Inc.', + 0x0143: 'Bkon Connect', + 0x0144: 'Lintech GmbH', + 0x0145: 'Novatel Wireless', + 0x0146: 'Ciright', + 0x0147: 'Mighty Cast, Inc.', + 0x0148: 'Ambimat Electronics', + 0x0149: 'Perytons Ltd.', + 0x014a: 'Tivoli Audio, LLC', + 0x014b: 'Master Lock', + 0x014c: 'Mesh-Net Ltd', + 0x014d: 'Huizhou Desay SV Automotive CO., LTD.', + 0x014e: 'Tangerine, Inc.', + 0x014f: 'B&W Group Ltd.', + 0x0150: 'Pioneer Corporation', + 0x0151: 'OnBeep', + 0x0152: 'Vernier Software & Technology', + 0x0153: 'ROL Ergo', + 0x0154: 'Pebble Technology', + 0x0155: 'NETATMO', + 0x0156: 'Accumulate AB', + 0x0157: 'Anhui Huami Information Technology Co., Ltd.', + 0x0158: 'Inmite s.r.o.', + 0x0159: 'ChefSteps, Inc.', + 0x015a: 'micas AG', + 0x015b: 'Biomedical Research Ltd.', + 0x015c: 'Pitius Tec S.L.', + 0x015d: 'Estimote, Inc.', + 0x015e: 'Unikey Technologies, Inc.', + 0x015f: 'Timer Cap Co.', + 0x0160: 'AwoX', + 0x0161: 'yikes', + 0x0162: 'MADSGlobal NZ Ltd.', + 0x0163: 'PCH International', + 0x0164: 'Qingdao Yeelink Information Technology Co., Ltd.', + 0x0165: 'Milwaukee Tool (formerly Milwaukee Electric Tools)', + 0x0166: 'MISHIK Pte Ltd', + 0x0167: 'Bayer HealthCare', + 0x0168: 'Spicebox LLC', + 0x0169: 'emberlight', + 0x016a: 'Cooper-Atkins Corporation', + 0x016b: 'Qblinks', + 0x016c: 'MYSPHERA', + 0x016d: 'LifeScan Inc', + 0x016e: 'Volantic AB', + 0x016f: 'Podo Labs, Inc', + 0x0170: 'Roche Diabetes Care AG', + 0x0171: 'Amazon Fulfillment Service', + 0x0172: 'Connovate Technology Private Limited', + 0x0173: 'Kocomojo, LLC', + 0x0174: 'Everykey LLC', + 0x0175: 'Dynamic Controls', + 0x0176: 'SentriLock', + 0x0177: 'I-SYST inc.', + 0x0178: 'CASIO COMPUTER CO., LTD.', + 0x0179: 'LAPIS Semiconductor Co., Ltd.', + 0x017a: 'Telemonitor, Inc.', + 0x017b: 'taskit GmbH', + 0x017c: 'Daimler AG', + 0x017d: 'BatAndCat', + 0x017e: 'BluDotz Ltd', + 0x017f: 'XTel ApS', + 0x0180: 'Gigaset Communications GmbH', + 0x0181: 'Gecko Health Innovations, Inc.', + 0x0182: 'HOP Ubiquitous', + 0x0183: 'To Be Assigned', + 0x0184: 'Nectar', + 0x0185: 'bel’apps LLC', + 0x0186: 'CORE Lighting Ltd', + 0x0187: 'Seraphim Sense Ltd', + 0x0188: 'Unico RBC', + 0x0189: 'Physical Enterprises Inc.', + 0x018a: 'Able Trend Technology Limited', + 0x018b: 'Konica Minolta, Inc.', + 0x018c: 'Wilo SE', + 0x018d: 'Extron Design Services', + 0x018e: 'Fitbit, Inc.', + 0x018f: 'Fireflies Systems', + 0x0190: 'Intelletto Technologies Inc.', + 0x0191: 'FDK CORPORATION', + 0x0192: 'Cloudleaf, Inc', + 0x0193: 'Maveric Automation LLC', + 0x0194: 'Acoustic Stream Corporation', + 0x0195: 'Zuli', + 0x0196: 'Paxton Access Ltd', + 0x0197: 'WiSilica Inc', + 0x0198: 'Vengit Limited', + 0x0199: 'SALTO SYSTEMS S.L.', + 0x019a: 'TRON Forum (formerly T-Engine Forum)', + 0x019b: 'CUBETECH s.r.o.', + 0x019c: 'Cokiya Incorporated', + 0x019d: 'CVS Health', + 0x019e: 'Ceruus', + 0x019f: 'Strainstall Ltd', + 0x01a0: 'Channel Enterprises (HK) Ltd.', + 0x01a1: 'FIAMM', + 0x01a2: 'GIGALANE.CO.,LTD', + 0x01a3: 'EROAD', + 0x01a4: 'Mine Safety Appliances', + 0x01a5: 'Icon Health and Fitness', + 0x01a6: 'Asandoo GmbH', + 0x01a7: 'ENERGOUS CORPORATION', + 0x01a8: 'Taobao', + 0x01a9: 'Canon Inc.', + 0x01aa: 'Geophysical Technology Inc.', + 0x01ab: 'Facebook, Inc.', + 0x01ac: 'Nipro Diagnostics, Inc.', + 0x01ad: 'FlightSafety International', + 0x01ae: 'Earlens Corporation', + 0x01af: 'Sunrise Micro Devices, Inc.', + 0x01b0: 'Star Micronics Co., Ltd.', + 0x01b1: 'Netizens Sp. z o.o.', + 0x01b2: 'Nymi Inc.', + 0x01b3: 'Nytec, Inc.', + 0x01b4: 'Trineo Sp. z o.o.', + 0x01b5: 'Nest Labs Inc.', + 0x01b6: 'LM Technologies Ltd', + 0x01b7: 'General Electric Company', + 0x01b8: 'i+D3 S.L.', + 0x01b9: 'HANA Micron', + 0x01ba: 'Stages Cycling LLC', + 0x01bb: 'Cochlear Bone Anchored Solutions AB', + 0x01bc: 'SenionLab AB', + 0x01bd: 'Syszone Co., Ltd', + 0x01be: 'Pulsate Mobile Ltd.', + 0x01bf: 'Hong Kong HunterSun Electronic Limited', + 0x01c0: 'pironex GmbH', + 0x01c1: 'BRADATECH Corp.', + 0x01c2: 'Transenergooil AG', + 0x01c3: 'Bunch', + 0x01c4: 'DME Microelectronics', + 0x01c5: 'Bitcraze AB', + 0x01c6: 'HASWARE Inc.', + 0x01c7: 'Abiogenix Inc.', + 0x01c8: 'Poly-Control ApS', + 0x01c9: 'Avi-on', + 0x01ca: 'Laerdal Medical AS', + 0x01cb: 'Fetch My Pet', + 0x01cc: 'Sam Labs Ltd.', + 0x01cd: 'Chengdu Synwing Technology Ltd', + 0x01ce: 'HOUWA SYSTEM DESIGN, k.k.', + 0x01cf: 'BSH', + 0x01d0: 'Primus Inter Pares Ltd', + 0x01d1: 'August', + 0x01d2: 'Gill Electronics', + 0x01d3: 'Sky Wave Design', + 0x01d4: 'Newlab S.r.l.', + 0x01d5: 'ELAD srl', + 0x01d6: 'G-wearables inc.', + 0x01d7: 'Squadrone Systems Inc.', + 0x01d8: 'Code Corporation', + 0x01d9: 'Savant Systems LLC', + 0x01da: 'Logitech International SA', + 0x01db: 'Innblue Consulting', + 0x01dc: 'iParking Ltd.', + 0x01dd: 'Koninklijke Philips Electronics N.V.', + 0x01de: 'Minelab Electronics Pty Limited', + 0x01df: 'Bison Group Ltd.', + 0x01e0: 'Widex A/S', + 0x01e1: 'Jolla Ltd', + 0x01e2: 'Lectronix, Inc.', + 0x01e3: 'Caterpillar Inc', + 0x01e4: 'Freedom Innovations', + 0x01e5: 'Dynamic Devices Ltd', + 0x01e6: 'Technology Solutions (UK) Ltd', + 0x01e7: 'IPS Group Inc.', + 0x01e8: 'STIR', + 0x01e9: 'Sano, Inc', + 0x01ea: 'Advanced Application Design, Inc.', + 0x01eb: 'AutoMap LLC', + 0x01ec: 'Spreadtrum Communications Shanghai Ltd', + 0x01ed: 'CuteCircuit LTD', + 0x01ee: 'Valeo Service', + 0x01ef: 'Fullpower Technologies, Inc.', + 0x01f0: 'KloudNation', + 0x01f1: 'Zebra Technologies Corporation', + 0x01f2: 'Itron, Inc.', + 0x01f3: 'The University of Tokyo', + 0x01f4: 'UTC Fire and Security', + 0x01f5: 'Cool Webthings Limited', + 0x01f6: 'DJO Global', + 0x01f7: 'Gelliner Limited', + 0x01f8: 'Anyka (Guangzhou) Microelectronics Technology Co, LTD', + 0x01f9: 'Medtronic, Inc.', + 0x01fa: 'Gozio, Inc.', + 0x01fb: 'Form Lifting, LLC', + 0x01fc: 'Wahoo Fitness, LLC', + 0x01fd: 'Kontakt Micro-Location Sp. z o.o.', + 0x01fe: 'Radio System Corporation', + 0x01ff: 'Freescale Semiconductor, Inc.', + 0x0200: 'Verifone Systems PTe Ltd. Taiwan Branch', + 0x0201: 'AR Timing', + 0x0202: 'Rigado LLC', + 0x0203: 'Kemppi Oy', + 0x0204: 'Tapcentive Inc.', + 0x0205: 'Smartbotics Inc.', + 0x0206: 'Otter Products, LLC', + 0x0207: 'STEMP Inc.', + 0x0208: 'LumiGeek LLC', + 0x0209: 'InvisionHeart Inc.', + 0x020A: 'Macnica Inc. ', + 0x020b: 'Jaguar Land Rover Limited', + 0x020c: 'CoroWare Technologies, Inc', + 0x020d: 'Simplo Technology Co., LTD', + 0x020e: 'Omron Healthcare Co., LTD', + 0x020f: 'Comodule GMBH', + 0x0210: 'ikeGPS', + 0x0211: 'Telink Semiconductor Co. Ltd', + 0x0212: 'Interplan Co., Ltd', + 0x0213: 'Wyler AG', + 0x0214: 'IK Multimedia Production srl', + 0x0215: 'Lukoton Experience Oy', + 0x0216: 'MTI Ltd', + 0x0217: 'Tech4home, Lda', + 0x0218: 'Hiotech AB', + 0x0219: 'DOTT Limited', + 0x021A: 'Blue Speck Labs, LLC', + 0x021B: 'Cisco Systems, Inc', + 0x021C: 'Mobicomm Inc', + 0x021D: 'Edamic', + 0x021E: 'Goodnet, Ltd', + 0x021F: 'Luster Leaf Products Inc', + 0x0220: 'Manus Machina BV', + 0x0221: 'Mobiquity Networks Inc', + 0x0222: 'Praxis Dynamics', + 0x0223: 'Philip Morris Products S.A.', + 0x0224: 'Comarch SA', + 0x0225: 'Nestl Nespresso S.A.', + 0x0226: 'Merlinia A/S', + 0x0227: 'LifeBEAM Technologies', + 0x0228: 'Twocanoes Labs, LLC', + 0x0229: 'Muoverti Limited', + 0x022A: 'Stamer Musikanlagen GMBH', + 0x022B: 'Tesla Motors', + 0x022C: 'Pharynks Corporation', + 0x022D: 'Lupine', + 0x022E: 'Siemens AG', + 0x022F: 'Huami (Shanghai) Culture Communication CO., LTD', + 0x0230: 'Foster Electric Company, Ltd', + 0x0231: 'ETA SA', + 0x0232: 'x-Senso Solutions Kft', + 0x0233: 'Shenzhen SuLong Communication Ltd', + 0x0234: 'FengFan (BeiJing) Technology Co, Ltd', + 0x0235: 'Qrio Inc', + 0x0236: 'Pitpatpet Ltd', + 0x0237: 'MSHeli s.r.l.', + 0x0238: 'Trakm8 Ltd', + 0x0239: 'JIN CO, Ltd', + 0x023A: 'Alatech Tehnology', + 0x023B: 'Beijing CarePulse Electronic Technology Co, Ltd', + 0x023C: 'Awarepoint', + 0x023D: 'ViCentra B.V.', + 0x023E: 'Raven Industries', + 0x023F: 'WaveWare Technologies Inc.', + 0x0240: 'Argenox Technologies', + 0x0241: 'Bragi GmbH', + 0x0242: '16Lab Inc', + 0x0243: 'Masimo Corp', + 0x0244: 'Iotera Inc', + 0x0245: 'Endress+Hauser', + 0x0246: 'ACKme Networks, Inc.', + 0x0247: 'FiftyThree Inc.', + 0x0248: 'Parker Hannifin Corp', + 0x0249: 'Transcranial Ltd', + 0x024A: 'Uwatec AG', + 0x024B: 'Orlan LLC', + 0x024C: 'Blue Clover Devices', + 0x024D: 'M-Way Solutions GmbH', + 0x024E: 'Microtronics Engineering GmbH', + 0x024F: 'Schneider Schreibgerte GmbH', + 0x0250: 'Sapphire Circuits LLC', + 0x0251: 'Lumo Bodytech Inc.', + 0x0252: 'UKC Technosolution', + 0x0253: 'Xicato Inc.', + 0x0254: 'Playbrush', + 0x0255: 'Dai Nippon Printing Co., Ltd.', + 0x0256: 'G24 Power Limited', + 0x0257: 'AdBabble Local Commerce Inc.', + 0x0258: 'Devialet SA', + 0x0259: 'ALTYOR', + 0x025A: 'University of Applied Sciences Valais/Haute Ecole Valaisanne', + 0x025B: 'Five Interactive, LLC dba Zendo', + 0x025C: 'NetEaseHangzhouNetwork co.Ltd.', + 0x025D: 'Lexmark International Inc.', + 0x025E: 'Fluke Corporation', + 0x025F: 'Yardarm Technologies', + 0x0260: 'SensaRx', + 0x0261: 'SECVRE GmbH', + 0x0262: 'Glacial Ridge Technologies', + 0x0263: 'Identiv, Inc.', + 0x0264: 'DDS, Inc.', + 0x0265: 'SMK Corporation', + 0x0266: 'Schawbel Technologies LLC', + 0x0267: 'XMI Systems SA', + 0x0268: 'Cerevo', + 0x0269: 'Torrox GmbH & Co KG', + 0x026A: 'Gemalto', + 0x026B: 'DEKA Research & Development Corp.', + 0x026C: 'Domster Tadeusz Szydlowski', + 0x026D: 'Technogym SPA', + 0x026E: 'FLEURBAEY BVBA', + 0x026F: 'Aptcode Solutions', + 0x0270: 'LSI ADL Technology', + 0x0271: 'Animas Corp', + 0x0272: 'Alps Electric Co., Ltd.', + 0x0273: 'OCEASOFT', + 0x0274: 'Motsai Research', + 0x0275: 'Geotab', + 0x0276: 'E.G.O. Elektro-Gertebau GmbH', + 0x0277: 'bewhere inc', + 0x0278: 'Johnson Outdoors Inc', + 0x0279: 'steute Schaltgerate GmbH & Co. KG', + 0x027A: 'Ekomini inc.', + 0x027B: 'DEFA AS', + 0x027C: 'Aseptika Ltd', + 0x027D: 'HUAWEI Technologies Co., Ltd. ( )', + 0x027E: 'HabitAware, LLC', + 0x027F: 'ruwido austria gmbh', + 0x0280: 'ITEC corporation', + 0x0281: 'StoneL', + 0x0282: 'Sonova AG', + 0x0283: 'Maven Machines, Inc.', + 0x0284: 'Synapse Electronics', + 0x0285: 'Standard Innovation Inc.', + 0x0286: 'RF Code, Inc.', + 0x0287: 'Wally Ventures S.L.', + 0x0288: 'Willowbank Electronics Ltd', + 0x0289: 'SK Telecom', + 0x028A: 'Jetro AS', + 0x028B: 'Code Gears LTD', + 0x028C: 'NANOLINK APS', + 0x028D: 'IF, LLC', + 0x028E: 'RF Digital Corp', + 0x028F: 'Church & Dwight Co., Inc', + 0x0290: 'Multibit Oy', + 0x0291: 'CliniCloud Inc', + 0x0292: 'SwiftSensors', + 0x0293: 'Blue Bite', + 0x0294: 'ELIAS GmbH', + 0x0295: 'Sivantos GmbH', + 0x0296: 'Petzl', + 0x0297: 'storm power ltd', + 0x0298: 'EISST Ltd', + 0x0299: 'Inexess Technology Simma KG', + 0x029A: 'Currant, Inc.', + 0x029B: 'C2 Development, Inc.', + 0x029C: 'Blue Sky Scientific, LLC', + 0x029D: 'ALOTTAZS LABS, LLC', + 0x029E: 'Kupson spol. s r.o.', + 0x029F: 'Areus Engineering GmbH', + 0x02A0: 'Impossible Camera GmbH', + 0x02A1: 'InventureTrack Systems', + 0x02A2: 'LockedUp', + 0x02A3: 'Itude', + 0x02A4: 'Pacific Lock Company', + 0x02A5: 'Tendyron Corporation ( )', + 0x02A6: 'Robert Bosch GmbH', + 0x02A7: 'Illuxtron international B.V.', + 0x02A8: 'miSport Ltd.', + 0x02A9: 'Chargelib', + 0x02AA: 'Doppler Lab', + 0x02AB: 'BBPOS Limited', + 0x02AC: 'RTB Elektronik GmbH & Co. KG', + 0x02AD: 'Rx Networks, Inc.', + 0x02AE: 'WeatherFlow, Inc.', + 0x02AF: 'Technicolor USA Inc.', + 0x02B0: 'Bestechnic(Shanghai),Ltd', + 0x02B1: 'Raden Inc', + 0x02B2: 'JouZen Oy', + 0x02B3: 'CLABER S.P.A.', + 0x02B4: 'Hyginex, Inc.', + 0x02B5: 'HANSHIN ELECTRIC RAILWAY CO.,LTD.', + 0x02B6: 'Schneider Electric', + 0x02B7: 'Oort Technologies LLC', + 0x02B8: 'Chrono Therapeutics', + 0x02B9: 'Rinnai Corporation', + 0x02BA: 'Swissprime Technologies AG', + 0x02BB: 'Koha.,Co.Ltd', + 0x02BC: 'Genevac Ltd', + 0x02BD: 'Chemtronics', + 0x02BE: 'Seguro Technology Sp. z o.o.', + 0x02BF: 'Redbird Flight Simulations', + 0x02C0: 'Dash Robotics', + 0x02C1: 'LINE Corporation', + 0x02C2: 'Guillemot Corporation', + 0x02C3: 'Techtronic Power Tools Technology Limited', + 0x02C4: 'Wilson Sporting Goods', + 0x02C5: 'Lenovo (Singapore) Pte Ltd. ( )', + 0x02C6: 'Ayatan Sensors', + 0x02C7: 'Electronics Tomorrow Limited', + 0x02C8: 'VASCO Data Security International, Inc.', + 0x02C9: 'PayRange Inc.', + 0x02CA: 'ABOV Semiconductor', + 0x02CB: 'AINA-Wireless Inc.', + 0x02CC: 'Eijkelkamp Soil & Water', + 0x02CD: 'BMA ergonomics b.v.', + 0x02CE: 'Teva Branded Pharmaceutical Products R&D, Inc.', + 0x02CF: 'Anima', + 0x02D0: '3M', + 0x02D1: 'Empatica Srl', + 0x02D2: 'Afero, Inc.', + 0x02D3: 'Powercast Corporation', + 0x02D4: 'Secuyou ApS', + 0x02D5: 'OMRON Corporation', + 0x02D6: 'Send Solutions', + 0x02D7: 'NIPPON SYSTEMWARE CO.,LTD.', + 0x02D8: 'Neosfar', + 0x02D9: 'Fliegl Agrartechnik GmbH', + 0x02DA: 'Gilvader', + 0x02DB: 'Digi International Inc (R)', + 0x02DC: 'DeWalch Technologies, Inc.', + 0x02DD: 'Flint Rehabilitation Devices, LLC', + 0x02DE: 'Samsung SDS Co., Ltd.', + 0x02DF: 'Blur Product Development', + 0x02E0: 'University of Michigan', + 0x02E1: 'Victron Energy BV', + 0x02E2: 'NTT docomo', + 0x02E3: 'Carmanah Technologies Corp.', + 0x02E4: 'Bytestorm Ltd.', + 0x02E5: 'Espressif Incorporated ( () )', + 0x02E6: 'Unwire', + 0x02E7: 'Connected Yard, Inc.', + 0x02E8: 'American Music Environments', + 0x02E9: 'Sensogram Technologies, Inc.', + 0x02EA: 'Fujitsu Limited', + 0x02EB: 'Ardic Technology', + 0x02EC: 'Delta Systems, Inc', + 0x02ED: 'HTC Corporation', + 0x02EE: 'Citizen Holdings Co., Ltd.', + 0x02EF: 'SMART-INNOVATION.inc', + 0x02F0: 'Blackrat Software', + 0x02F1: 'The Idea Cave, LLC', + 0x02F2: 'GoPro, Inc.', + 0x02F3: 'AuthAir, Inc', + 0x02F4: 'Vensi, Inc.', + 0x02F5: 'Indagem Tech LLC', + 0x02F6: 'Intemo Technologies', + 0x02F7: 'DreamVisions co., Ltd.', + 0x02F8: 'Runteq Oy Ltd', + 0x02F9: 'IMAGINATION TECHNOLOGIES LTD', + 0x02FA: 'CoSTAR TEchnologies', + 0x02FB: 'Clarius Mobile Health Corp.', + 0x02FC: 'Shanghai Frequen Microelectronics Co., Ltd.', + 0x02FD: 'Uwanna, Inc.', + 0x02FE: 'Lierda Science & Technology Group Co., Ltd.', + 0x02FF: 'Silicon Laboratories', + 0x0300: 'World Moto Inc.', + 0x0301: 'Giatec Scientific Inc.', + 0x0302: 'Loop Devices, Inc', + 0x0303: 'IACA electronique', + 0x0304: 'Martians Inc', + 0x0305: 'Swipp ApS', + 0x0306: 'Life Laboratory Inc.', + 0x0307: 'FUJI INDUSTRIAL CO.,LTD.', + 0x0308: 'Surefire, LLC', + 0x0309: 'Dolby Labs', + 0x030A: 'Ellisys', + 0x030B: 'Magnitude Lighting Converters', + 0x030C: 'Hilti AG', + 0x030D: 'Devdata S.r.l.', + 0x030E: 'Deviceworx', + 0x030F: 'Shortcut Labs', + 0x0310: 'SGL Italia S.r.l.', + 0x0311: 'PEEQ DATA', + 0x0312: 'Ducere Technologies Pvt Ltd', + 0x0313: 'DiveNav, Inc.', + 0x0314: 'RIIG AI Sp. z o.o.', + 0x0315: 'Thermo Fisher Scientific', + 0x0316: 'AG Measurematics Pvt. Ltd.', + 0x0317: 'CHUO Electronics CO., LTD.', + 0x0318: 'Aspenta International', + 0x0319: 'Eugster Frismag AG', + 0x031A: 'Amber wireless GmbH', + 0x031B: 'HQ Inc', + 0x031C: 'Lab Sensor Solutions', + 0x031D: 'Enterlab ApS', + 0x031E: 'Eyefi, Inc.', + 0x031F: 'MetaSystem S.p.A.', + 0x0320: 'SONO ELECTRONICS. CO., LTD', + 0x0321: 'Jewelbots', + 0x0322: 'Compumedics Limited', + 0x0323: 'Rotor Bike Components', + 0x0324: 'Astro, Inc.', + 0x0325: 'Amotus Solutions', + 0x0326: 'Healthwear Technologies (Changzhou)Ltd', + 0x0327: 'Essex Electronics', + 0x0328: 'Grundfos A/S', + 0x0329: 'Eargo, Inc.', + 0x032A: 'Electronic Design Lab', + 0x032B: 'ESYLUX', + 0x032C: 'NIPPON SMT.CO.,Ltd', + 0x032D: 'BM innovations GmbH', + 0x032E: 'indoormap', + 0x032F: 'OttoQ Inc', + 0x0330: 'North Pole Engineering', + 0x0331: '3flares Technologies Inc.', + 0x0332: 'Electrocompaniet A.S.', + 0x0333: 'Mul-T-Lock', + 0x0334: 'Corentium AS', + 0x0335: 'Enlighted Inc', + 0x0336: 'GISTIC', + 0x0337: 'AJP2 Holdings, LLC', + 0x0338: 'COBI GmbH', + 0x0339: 'Blue Sky Scientific, LLC', + 0x033A: 'Appception, Inc.', + 0x033B: 'Courtney Thorne Limited', + 0x033C: 'Virtuosys', + 0x033D: 'TPV Technology Limited', + 0x033E: 'Monitra SA', + 0x033F: 'Automation Components, Inc.', + 0x0340: 'Letsense s.r.l.', + 0x0341: 'Etesian Technologies LLC', + 0x0342: 'GERTEC BRASIL LTDA.', + 0x0343: 'Drekker Development Pty. Ltd.', + 0x0344: 'Whirl Inc', + 0x0345: 'Locus Positioning', + 0x0346: 'Acuity Brands Lighting, Inc', + 0x0347: 'Prevent Biometrics', + 0x0348: 'Arioneo', + 0x0349: 'VersaMe', + 0x034A: 'Vaddio', + 0x034B: 'Libratone A/S', + 0x034C: 'HM Electronics, Inc.', + 0x034D: 'TASER International, Inc.', + 0x034E: 'SafeTrust Inc.', + 0x034F: 'Heartland Payment Systems', + 0x0350: 'Bitstrata Systems Inc.', + 0x0351: 'Pieps GmbH', + 0x0352: 'iRiding(Xiamen)Technology Co.,Ltd.', + 0x0353: 'Alpha Audiotronics, Inc.', + 0x0354: 'TOPPAN FORMS CO.,LTD.', + 0x0355: 'Sigma Designs, Inc.', + 0x0356: 'Spectrum Brands, Inc.', + 0x0357: 'Polymap Wireless', + 0x0358: 'MagniWare Ltd.', + 0x0359: 'Novotec Medical GmbH', + 0x035A: 'Medicom Innovation Partner a/s', + 0x035B: 'Matrix Inc.', + 0x035C: 'Eaton Corporation', + 0x035D: 'KYS', + 0x035E: 'Naya Health, Inc.', + 0x035F: 'Acromag', + 0x0360: 'Insulet Corporation', + 0x0361: 'Wellinks Inc.', + 0x0362: 'ON Semiconductor', + 0x0363: 'FREELAP SA', + 0x0364: 'Favero Electronics Srl', + 0x0365: 'BioMech Sensor LLC', + 0x0366: 'BOLTT Sports technologies Private limited', + 0x0367: 'Saphe International', + 0x0368: 'Metormote AB', + 0x0369: 'littleBits', + 0x036A: 'SetPoint Medical', + 0x036B: 'BRControls Products BV', + 0x036C: 'Zipcar', + 0x036D: 'AirBolt Pty Ltd', + 0x036E: 'KeepTruckin Inc', + 0x036F: 'Motiv, Inc.', + 0x0370: 'Wazombi Labs O', + 0x0371: 'ORBCOMM', + 0x0372: 'Nixie Labs, Inc.', + 0x0373: 'AppNearMe Ltd', + 0x0374: 'Holman Industries', + 0x0375: 'Expain AS', + 0x0376: 'Electronic Temperature Instruments Ltd', + 0x0377: 'Plejd AB', + 0x0378: 'Propeller Health', + 0x0379: 'Shenzhen iMCO Electronic Technology Co.,Ltd', + 0x037A: 'Algoria', + 0x037B: 'Apption Labs Inc.', + 0x037C: 'Cronologics Corporation', + 0x037D: 'MICRODIA Ltd.', + 0x037E: 'lulabytes S.L.', + 0x037F: 'Nestec S.A.', + 0x0380: 'LLC MEGA - F service', + 0x0381: 'Sharp Corporation', + 0x0382: 'Precision Outcomes Ltd', + 0x0383: 'Kronos Incorporated', + 0x0384: 'OCOSMOS Co., Ltd.', + 0x0385: 'Embedded Electronic Solutions Ltd. dba e2Solutions', + 0x0386: 'Aterica Inc.', + 0x0387: 'BluStor PMC, Inc.', + 0x0388: 'Kapsch TrafficCom AB', + 0x0389: 'ActiveBlu Corporation', + 0x038A: 'Kohler Mira Limited', + 0x038B: 'Noke', + 0x038C: 'Appion Inc.', + 0x038D: 'Resmed Ltd', + 0x038E: 'Crownstone B.V.', + 0x038F: 'Xiaomi Inc.', + 0x0390: 'INFOTECH s.r.o.', + 0x0391: 'Thingsquare AB', + 0x0392: 'T&D', + 0x0393: 'LAVAZZA S.p.A.', + 0x0394: 'Netclearance Systems, Inc.', + 0x0395: 'SDATAWAY', + 0x0396: 'BLOKS GmbH', + 0x0397: 'LEGO System A/S', + 0x0398: 'Thetatronics Ltd', + 0x0399: 'Nikon Corporation', + 0x039A: 'NeST', + 0x039B: 'South Silicon Valley Microelectronics', + 0x039C: 'ALE International', + 0x039D: 'CareView Communications, Inc.', + 0x039E: 'SchoolBoard Limited', + 0x039F: 'Molex Corporation', + 0x03A0: 'IVT Wireless Limited', + 0x03A1: 'Alpine Labs LLC', + 0x03A2: 'Candura Instruments', + 0x03A3: 'SmartMovt Technology Co., Ltd', + 0x03A4: 'Token Zero Ltd', + 0x03A5: 'ACE CAD Enterprise Co., Ltd. (ACECAD)', + 0x03A6: 'Medela, Inc', + 0x03A7: 'AeroScout', + 0x03A8: 'Esrille Inc.', + 0x03A9: 'THINKERLY SRL', + 0x03AA: 'Exon Sp. z o.o.', + 0x03AB: 'Meizu Technology Co., Ltd.', + 0x03AC: 'Smablo LTD', + 0x03AD: 'XiQ', + 0x03AE: 'Allswell Inc.', + 0x03AF: 'Comm-N-Sense Corp DBA Verigo', + 0x03B0: 'VIBRADORM GmbH', + 0x03B1: 'Otodata Wireless Network Inc.', + 0x03B2: 'Propagation Systems Limited', + 0x03B3: 'Midwest Instruments & Controls', + 0x03B4: 'Alpha Nodus, inc.', + 0x03B5: 'petPOMM, Inc', + 0x03B6: 'Mattel', + 0x03B7: 'Airbly Inc.', + 0x03B8: 'A-Safe Limited', + 0x03B9: 'FREDERIQUE CONSTANT SA', + 0x03BA: 'Maxscend Microelectronics Company Limited', + 0x03BB: 'Abbott Diabetes Care', + 0x03BC: 'ASB Bank Ltd', + 0x03BD: 'amadas', + 0x03BE: 'Applied Science, Inc.', + 0x03BF: 'iLumi Solutions Inc.', + 0x03C0: 'Arch Systems Inc.', + 0x03C1: 'Ember Technologies, Inc.', + 0x03C2: 'Snapchat Inc', + 0x03C3: 'Casambi Technologies Oy', + 0x03C4: 'Pico Technology Inc.', + 0x03C5: 'St. Jude Medical, Inc.', + 0x03C6: 'Intricon', + 0x03C7: 'Structural Health Systems, Inc.', + 0x03C8: 'Avvel International', + 0x03C9: 'Gallagher Group', + 0x03CA: 'In2things Automation Pvt. Ltd.', + 0x03CB: 'SYSDEV Srl', + 0x03CC: 'Vonkil Technologies Ltd', + 0x03CD: 'Wynd Technologies, Inc.', + 0x03CE: 'CONTRINEX S.A.', + 0x03CF: 'MIRA, Inc.', + 0x03D0: 'Watteam Ltd', + 0x03D1: 'Density Inc.', + 0x03D2: 'IOT Pot India Private Limited', + 0x03D3: 'Sigma Connectivity AB', + 0x03D4: 'PEG PEREGO SPA', + 0x03D5: 'Wyzelink Systems Inc.', + 0x03D6: 'Yota Devices LTD', + 0x03D7: 'FINSECUR', + 0x03D8: 'Zen-Me Labs Ltd', + 0x03D9: '3IWare Co., Ltd.', + 0x03DA: 'EnOcean GmbH', + 0x03DB: 'Instabeat, Inc', + 0x03DC: 'Nima Labs', + 0x03DD: 'Andreas Stihl AG & Co. KG', + 0x03DE: 'Nathan Rhoades LLC', + 0x03DF: 'Grob Technologies, LLC', + 0x03E0: 'Actions (Zhuhai) Technology Co., Limited', + 0x03E1: 'SPD Development Company Ltd', + 0x03E2: 'Sensoan Oy', + 0x03E3: 'Qualcomm Life Inc', + 0x03E4: 'Chip-ing AG', + 0x03E5: 'ffly4u', + 0x03E6: 'IoT Instruments Oy', + 0x03E7: 'TRUE Fitness Technology', + 0x03E8: 'Reiner Kartengeraete GmbH & Co. KG.', + 0x03E9: 'SHENZHEN LEMONJOY TECHNOLOGY CO., LTD.', + 0x03EA: 'Hello Inc.', + 0x03EB: 'Evollve Inc.', + 0x03EC: 'Jigowatts Inc.', + 0x03ED: 'BASIC MICRO.COM,INC.', + 0x03EE: 'CUBE TECHNOLOGIES', + 0x03EF: 'foolography GmbH', + 0x03F0: 'CLINK', + 0x03F1: 'Hestan Smart Cooking Inc.', + 0x03F2: 'WindowMaster A/S', + 0x03F3: 'Flowscape AB', + 0x03F4: 'PAL Technologies Ltd', + 0x03F5: 'WHERE, Inc.', + 0x03F6: 'Iton Technology Corp.', + 0x03F7: 'Owl Labs Inc.', + 0x03F8: 'Rockford Corp.', + 0x03F9: 'Becon Technologies Co.,Ltd.', + 0x03FA: 'Vyassoft Technologies Inc', + 0x03FB: 'Nox Medical', + 0x03FC: 'Kimberly-Clark', + 0x03FD: 'Trimble Navigation Ltd.', + 0x03FE: 'Littelfuse', + 0x03FF: 'Withings', + 0x0400: 'i-developer IT Beratung UG', + 0x0402: 'Sears Holdings Corporation', + 0x0403: 'Gantner Electronic GmbH', + 0x0404: 'Authomate Inc', + 0x0405: 'Vertex International, Inc.', + 0x0406: 'Airtago', + 0x0407: 'Swiss Audio SA', + 0x0408: 'ToGetHome Inc.', + 0x0409: 'AXIS', + 0x040A: 'Openmatics', + 0x040B: 'Jana Care Inc.', + 0x040C: 'Senix Corporation', + 0x040D: 'NorthStar Battery Company, LLC', + 0x040E: 'SKF (U.K.) Limited', + 0x040F: 'CO-AX Technology, Inc.', + 0x0410: 'Fender Musical Instruments', + 0x0411: 'Luidia Inc', + 0x0412: 'SEFAM', + 0x0413: 'Wireless Cables Inc', + 0x0414: 'Lightning Protection International Pty Ltd', + 0x0415: 'Uber Technologies Inc', + 0x0416: 'SODA GmbH', + 0x0417: 'Fatigue Science', + 0x0418: 'Alpine Electronics Inc.', + 0x0419: 'Novalogy LTD', + 0x041A: 'Friday Labs Limited', + 0x041B: 'OrthoAccel Technologies', + 0x041C: 'WaterGuru, Inc.', + 0x041D: 'Benning Elektrotechnik und Elektronik GmbH & Co. KG', + 0x041E: 'Dell Computer Corporation', + 0x041F: 'Kopin Corporation', + 0x0420: 'TecBakery GmbH', + 0x0421: 'Backbone Labs, Inc.', + 0x0422: 'DELSEY SA', + 0x0423: 'Chargifi Limited', + 0x0424: 'Trainesense Ltd.', + 0x0425: 'Unify Software and Solutions GmbH & Co. KG', + 0x0426: 'Husqvarna AB', + 0x0427: 'Focus fleet and fuel management inc', + 0x0428: 'SmallLoop, LLC', + 0x0429: 'Prolon Inc.', + 0x042A: 'BD Medical', + 0x042B: 'iMicroMed Incorporated', + 0x042C: 'Ticto N.V.', + 0x042D: 'Meshtech AS', + 0x042E: 'MemCachier Inc.', + 0x042F: 'Danfoss A/S', + 0x0430: 'SnapStyk Inc.', + 0x0431: 'Amyway Corporation', + 0x0432: 'Silk Labs, Inc.', + 0x0433: 'Pillsy Inc.', + 0x0434: 'Hatch Baby, Inc.', + 0x0435: 'Blocks Wearables Ltd.', + 0x0436: 'Drayson Technologies (Europe) Limited', + 0x0437: 'eBest IOT Inc.', + 0x0438: 'Helvar Ltd', + 0x0439: 'Radiance Technologies', + 0x043A: 'Nuheara Limited', + 0x043B: 'Appside co., ltd.', + 0x043C: 'DeLaval', + 0x043D: 'Coiler Corporation', + 0x043E: 'Thermomedics, Inc.', + 0x043F: 'Tentacle Sync GmbH', + 0x0440: 'Valencell, Inc.', + 0x0441: 'iProtoXi Oy', + 0x0442: 'SECOM CO., LTD.', + 0x0443: 'Tucker International LLC', + 0x0444: 'Metanate Limited', + 0x0445: 'Kobian Canada Inc.', + 0x0446: 'NETGEAR, Inc.', + 0x0447: 'Fabtronics Australia Pty Ltd', + 0x0448: 'Grand Centrix GmbH', + 0x0449: '1UP USA.com llc', + 0x044A: 'SHIMANO INC.', + 0x044B: 'Nain Inc.', + 0x044C: 'LifeStyle Lock, LLC', + 0x044D: 'VEGA Grieshaber KG', + 0x044E: 'Xtrava Inc.', + 0x044F: 'TTS Tooltechnic Systems AG & Co. KG', + 0x0450: 'Teenage Engineering AB', + 0x0451: 'Tunstall Nordic AB', + 0x0452: 'Svep Design Center AB', + 0x0453: 'GreenPeak Technologies BV', + 0x0454: 'Sphinx Electronics GmbH & Co KG', + 0x0455: 'Atomation', + 0x0456: 'Nemik Consulting Inc', + 0x0457: 'RF INNOVATION', + 0x0458: 'Mini Solution Co., Ltd.', + 0x0459: 'Lumenetix, Inc', + 0x045A: '2048450 Ontario Inc', + 0x045B: 'SPACEEK LTD', + 0x045C: 'Delta T Corporation', + 0x045D: 'Boston Scientific Corporation', + 0x045E: 'Nuviz, Inc.', + 0x045F: 'Real Time Automation, Inc.', + 0x0460: 'Kolibree', + 0x0461: 'vhf elektronik GmbH', + 0x0462: 'Bonsai Systems GmbH', + 0x0463: 'Fathom Systems Inc.', + 0x0464: 'Bellman & Symfon', + 0x0465: 'International Forte Group LLC', + 0x0466: 'CycleLabs Solutions inc.', + 0x0467: 'Codenex Oy', + 0x0468: 'Kynesim Ltd', + 0x0469: 'Palago AB', + 0x046A: 'INSIGMA INC.', + 0x046B: 'PMD Solutions', + 0x046C: 'Qingdao Realtime Technology Co., Ltd.', + 0x046D: 'BEGA Gantenbrink-Leuchten KG', + 0x046E: 'Pambor Ltd.', + 0xFFFF: 'SPECIAL USE/DEFAULT' +}; + + /***/ }), /***/ 93739: @@ -88209,6 +89360,9 @@ function cpuManufacturer(str) { if (str.indexOf('Xen') >= 0) { result = 'Xen Hypervisor'; } if (str.indexOf('tcg') >= 0) { result = 'QEMU'; } if (str.indexOf('apple') >= 0) { result = 'Apple'; } + if (str.indexOf('sifive') >= 0) { result = 'SiFive'; } + if (str.indexOf('thead') >= 0) { result = 'T-Head'; } + if (str.indexOf('andestech') >= 0) { result = 'Andes Technology'; } return result; } @@ -88392,6 +89546,17 @@ function getCpu() { } } + // Test RISC-V + if (util.getValue(lines, 'architecture') === 'riscv64') { + const linesRiscV = fs.readFileSync('/proc/cpuinfo').toString().split('\n'); + const uarch = util.getValue(linesRiscV, 'uarch') || ''; + if (uarch.indexOf(',') > -1) { + const split = uarch.split(','); + result.manufacturer = cpuManufacturer(split[0]); + result.brand = split[1]; + } + } + // socket type let lines2 = []; exec('export LC_ALL=C; dmidecode –t 4 2>/dev/null | grep "Upgrade: Socket"; unset LC_ALL', function (error2, stdout2) { @@ -93766,52 +94931,14 @@ function inetChecksite(url, callback) { if (callback) { callback(result); } return resolve(result); } - let t = Date.now(); - if (_linux || _freebsd || _openbsd || _netbsd || _darwin || _sunos) { - let args = ['-I', '--connect-timeout', '5', '-m', '5']; - args.push(urlSanitized); - let cmd = 'curl'; - util.execSafe(cmd, args).then((stdout) => { - const lines = stdout.split('\n'); - let statusCode = lines[0] && lines[0].indexOf(' ') >= 0 ? parseInt(lines[0].split(' ')[1], 10) : 404; - result.status = statusCode || 404; - result.ok = (statusCode === 200 || statusCode === 301 || statusCode === 302 || statusCode === 304); - result.ms = (result.ok ? Date.now() - t : null); - if (callback) { callback(result); } - resolve(result); - }); - } - if (_windows) { // if this is stable, this can be used for all OS types - const http = (urlSanitized.startsWith('https:') ? __nccwpck_require__(65692) : __nccwpck_require__(58611)); - try { - http.get(urlSanitized, (res) => { - const statusCode = res.statusCode; - - result.status = statusCode || 404; - result.ok = (statusCode === 200 || statusCode === 301 || statusCode === 302 || statusCode === 304); - if (statusCode !== 200) { - res.resume(); - result.ms = (result.ok ? Date.now() - t : null); - if (callback) { callback(result); } - resolve(result); - } else { - res.on('data', () => { }); - res.on('end', () => { - result.ms = (result.ok ? Date.now() - t : null); - if (callback) { callback(result); } - resolve(result); - }); - } - }).on('error', () => { - if (callback) { callback(result); } - resolve(result); - }); - } catch (err) { - if (callback) { callback(result); } - resolve(result); - } - } + util.checkWebsite(urlSanitized).then((res) => { + result.status = res.statusCode; + result.ok = res.statusCode >= 200 && res.statusCode <= 399;; + result.ms = (result.ok ? res.time : null); + if (callback) { callback(result); } + resolve(result); + }); } else { if (callback) { callback(result); } resolve(result); @@ -94446,15 +95573,16 @@ function memLayout(callback) { const lines = stdout.toString().split('\n'); const size = parseInt(util.getValue(lines, ' Memory:')); const type = util.getValue(lines, ' Type:'); + const manufacturerId = util.getValue(lines, ' Manufacturer:'); if (size && type) { result.push({ size: size * 1024 * 1024 * 1024, bank: '0', type, ecc: false, - clockSpeed: 0, - formFactor: '', - manufacturer: 'Apple', + clockSpeed: null, + formFactor: 'SOC', + manufacturer: getManufacturerDarwin(manufacturerId), partNum: '', serialNum: '', voltageConfigured: null, @@ -94742,33 +95870,42 @@ exports.networkInterfaceDefault = networkInterfaceDefault; function parseLinesWindowsNics(sections, nconfigsections) { let nics = []; for (let i in sections) { - if ({}.hasOwnProperty.call(sections, i)) { - - if (sections[i].trim() !== '') { - - let lines = sections[i].trim().split('\r\n'); - let linesNicConfig = nconfigsections && nconfigsections[i] ? nconfigsections[i].trim().split('\r\n') : []; - let netEnabled = util.getValue(lines, 'NetEnabled', ':'); - let adapterType = util.getValue(lines, 'AdapterTypeID', ':') === '9' ? 'wireless' : 'wired'; - let ifacename = util.getValue(lines, 'Name', ':').replace(/\]/g, ')').replace(/\[/g, '('); - let iface = util.getValue(lines, 'NetConnectionID', ':').replace(/\]/g, ')').replace(/\[/g, '('); - if (ifacename.toLowerCase().indexOf('wi-fi') >= 0 || ifacename.toLowerCase().indexOf('wireless') >= 0) { - adapterType = 'wireless'; - } - if (netEnabled !== '') { - const speed = parseInt(util.getValue(lines, 'speed', ':').trim(), 10) / 1000000; - nics.push({ - mac: util.getValue(lines, 'MACAddress', ':').toLowerCase(), - dhcp: util.getValue(linesNicConfig, 'dhcpEnabled', ':').toLowerCase() === 'true', - name: ifacename, - iface, - netEnabled: netEnabled === 'TRUE', - speed: isNaN(speed) ? null : speed, - operstate: util.getValue(lines, 'NetConnectionStatus', ':') === '2' ? 'up' : 'down', - type: adapterType - }); + try { + if ({}.hasOwnProperty.call(sections, i)) { + + if (sections[i].trim() !== '') { + + let lines = sections[i].trim().split('\r\n'); + let linesNicConfig = null; + try { + linesNicConfig = nconfigsections && nconfigsections[i] ? nconfigsections[i].trim().split('\r\n') : []; + } catch (e) { + util.noop(); + } + let netEnabled = util.getValue(lines, 'NetEnabled', ':'); + let adapterType = util.getValue(lines, 'AdapterTypeID', ':') === '9' ? 'wireless' : 'wired'; + let ifacename = util.getValue(lines, 'Name', ':').replace(/\]/g, ')').replace(/\[/g, '('); + let iface = util.getValue(lines, 'NetConnectionID', ':').replace(/\]/g, ')').replace(/\[/g, '('); + if (ifacename.toLowerCase().indexOf('wi-fi') >= 0 || ifacename.toLowerCase().indexOf('wireless') >= 0) { + adapterType = 'wireless'; + } + if (netEnabled !== '') { + const speed = parseInt(util.getValue(lines, 'speed', ':').trim(), 10) / 1000000; + nics.push({ + mac: util.getValue(lines, 'MACAddress', ':').toLowerCase(), + dhcp: util.getValue(linesNicConfig, 'dhcpEnabled', ':').toLowerCase() === 'true', + name: ifacename, + iface, + netEnabled: netEnabled === 'TRUE', + speed: isNaN(speed) ? null : speed, + operstate: util.getValue(lines, 'NetConnectionStatus', ':') === '2' ? 'up' : 'down', + type: adapterType + }); + } } } + } catch (e) { + util.noop(); } } return nics; @@ -94933,7 +96070,7 @@ function getWindowsIEEE8021x(connectionType, iface, ifaces) { let ifaceSanitized = ''; const s = util.isPrototypePolluted() ? '---' : util.sanitizeShellString(SSID); - const l = util.mathMin(s.length, 2000); + const l = util.mathMin(s.length, 32); for (let i = 0; i <= l; i++) { if (s[i] !== undefined) { @@ -96074,8 +97211,11 @@ function networkConnections(callback) { processes = processes.map((line => { return line.trim().replace(/ +/g, ' '); })); let lines = stdout.toString().split('\n'); lines.shift(); - const header = lines.shift().replace(/ Address/g, '_Address').replace(/ +/g, ' ').split(' '); - let pidPos = header.indexOf('pid'); + let pidPos = 8; + if (lines.length > 1 && lines[0].indexOf('pid') > 0) { + const header = (lines.shift() || '').replace(/ Address/g, '_Address').replace(/ +/g, ' ').split(' '); + pidPos = header.indexOf('pid'); + } lines.forEach(function (line) { line = line.replace(/ +/g, ' ').split(' '); if (line.length >= 8) { @@ -96522,17 +97662,10 @@ function getFQDN() { let fqdn = os.hostname; if (_linux || _darwin) { try { - const stdout = execSync('hostnamectl --json short 2>/dev/null', util.execOptsLinux); - const json = JSON.parse(stdout.toString()); - - fqdn = json['StaticHostname']; + const stdout = execSync('hostname -f 2>/dev/null', util.execOptsLinux); + fqdn = stdout.toString().split(os.EOL)[0]; } catch (e) { - try { - const stdout = execSync('hostname -f 2>/dev/null', util.execOptsLinux); - fqdn = stdout.toString().split(os.EOL)[0]; - } catch (e) { - util.noop(); - } + util.noop(); } } if (_freebsd || _openbsd || _netbsd) { @@ -101044,7 +102177,7 @@ function getCodepage() { if (_linux || _darwin || _freebsd || _openbsd || _netbsd) { if (!codepage) { try { - const stdout = execSync('echo $LANG', util.execOptsLinux); + const stdout = execSync('echo $LANG', execOptsLinux); const lines = stdout.toString().split('\r\n'); const parts = lines[0].split('.'); codepage = parts.length > 1 ? parts[1].trim() : ''; @@ -101621,7 +102754,7 @@ function linuxVersion() { let result = ''; if (_linux) { try { - result = execSync('uname -v', util.execOptsLinux).toString(); + result = execSync('uname -v', execOptsLinux).toString(); } catch (e) { result = ''; } @@ -102948,6 +104081,42 @@ function getAppleModel(key) { }; } +function checkWebsite(url, timeout = 5000) { + const http = ((url.startsWith('https:') || url.indexOf(':443/') > 0 || url.indexOf(':8443/') > 0) ? __nccwpck_require__(65692) : __nccwpck_require__(58611)); + const t = Date.now(); + return new Promise((resolve) => { + const request = http + .get(url, { rejectUnauthorized: false }, function (res) { + res.on('data', () => { }); + res.on('end', () => { + resolve({ + url, + statusCode: res.statusCode, + message: res.statusMessage, + time: Date.now() - t + }); + }); + }) + .on("error", function (e) { + resolve({ + url, + statusCode: 404, + message: e.message, + time: Date.now() - t + }); + }) + .setTimeout(timeout, () => { + request.close(); + resolve({ + url, + statusCode: 408, + message: 'Request Timeout', + time: Date.now() - t + }); + }); + }); +}; + function noop() { } exports.toInt = toInt; @@ -103001,6 +104170,7 @@ exports.WINDIR = WINDIR; exports.getFilesInPath = getFilesInPath; exports.semverCompare = semverCompare; exports.getAppleModel = getAppleModel; +exports.checkWebsite = checkWebsite; /***/ }), @@ -103736,7 +104906,7 @@ function wifiConnections(callback) { const network = networkList.filter(nw => nw.ssid === ssid); let ssidSanitized = ''; const t = util.isPrototypePolluted() ? '---' : util.sanitizeShellString(ssid, true); - const l = util.mathMin(t.length, 2000); + const l = util.mathMin(t.length, 32); for (let i = 0; i <= l; i++) { if (t[i] !== undefined) { ssidSanitized = ssidSanitized + t[i]; @@ -148058,7 +149228,7 @@ module.exports = /*#__PURE__*/JSON.parse('[["0","\\u0000",128],["a1","。",62],[ /***/ 15460: /***/ ((module) => { -module.exports = {"rE":"5.23.17"}; +module.exports = {"rE":"5.23.23"}; /***/ }), @@ -148162,6 +149332,7 @@ __nccwpck_require__.d(domutils_lib_esm_namespaceObject, { getChildren: () => (getChildren), getElementById: () => (getElementById), getElements: () => (getElements), + getElementsByClassName: () => (getElementsByClassName), getElementsByTagName: () => (getElementsByTagName), getElementsByTagType: () => (getElementsByTagType), getFeed: () => (feeds_getFeed), @@ -150847,7 +152018,7 @@ function filter(test, node, recurse = true, limit = Infinity) { function find(test, nodes, recurse, limit) { const result = []; /** Stack of the arrays we are looking at. */ - const nodeStack = [nodes]; + const nodeStack = [Array.isArray(nodes) ? nodes : [nodes]]; /** Stack of the indices within the arrays. */ const indexStack = [0]; for (;;) { @@ -150901,20 +152072,17 @@ function findOneChild(test, nodes) { * @returns The first node that passes `test`. */ function findOne(test, nodes, recurse = true) { - let elem = null; - for (let i = 0; i < nodes.length && !elem; i++) { - const node = nodes[i]; - if (!node_isTag(node)) { - continue; - } - else if (test(node)) { - elem = node; + const searchedNodes = Array.isArray(nodes) ? nodes : [nodes]; + for (let i = 0; i < searchedNodes.length; i++) { + const node = searchedNodes[i]; + if (node_isTag(node) && test(node)) { + return node; } - else if (recurse && node.children.length > 0) { - elem = findOne(test, node.children, true); + if (recurse && hasChildren(node) && node.children.length > 0) { + return findOne(test, node.children, true); } } - return elem; + return null; } /** * Checks if a tree of nodes contains at least one node passing a test. @@ -150925,8 +152093,8 @@ function findOne(test, nodes, recurse = true) { * @returns Whether a tree of nodes contains at least one node passing the test. */ function existsOne(test, nodes) { - return nodes.some((checked) => node_isTag(checked) && - (test(checked) || existsOne(test, checked.children))); + return (Array.isArray(nodes) ? nodes : [nodes]).some((node) => (node_isTag(node) && test(node)) || + (hasChildren(node) && existsOne(test, node.children))); } /** * Search an array of nodes and their children for elements passing a test function. @@ -150940,7 +152108,7 @@ function existsOne(test, nodes) { */ function findAll(test, nodes) { const result = []; - const nodeStack = [nodes]; + const nodeStack = [Array.isArray(nodes) ? nodes : [nodes]]; const indexStack = [0]; for (;;) { if (indexStack[0] >= nodeStack[0].length) { @@ -150954,11 +152122,9 @@ function findAll(test, nodes) { continue; } const elem = nodeStack[0][indexStack[0]++]; - if (!node_isTag(elem)) - continue; - if (test(elem)) + if (node_isTag(elem) && test(elem)) result.push(elem); - if (elem.children.length > 0) { + if (hasChildren(elem) && elem.children.length > 0) { indexStack.unshift(0); nodeStack.unshift(elem.children); } @@ -151091,6 +152257,19 @@ function getElementById(id, nodes, recurse = true) { function getElementsByTagName(tagName, nodes, recurse = true, limit = Infinity) { return filter(Checks["tag_name"](tagName), nodes, recurse, limit); } +/** + * Returns all nodes with the supplied `className`. + * + * @category Legacy Query Functions + * @param className Class name to search for. + * @param nodes Nodes to search through. + * @param recurse Also consider child nodes. + * @param limit Maximum number of nodes to return. + * @returns All nodes with the supplied `className`. + */ +function getElementsByClassName(className, nodes, recurse = true, limit = Infinity) { + return filter(getAttribCheck("class", className), nodes, recurse, limit); +} /** * Returns all nodes with the supplied `type`. * diff --git a/dist/post/index.js b/dist/post/index.js index f253e26b..e13902a0 100644 --- a/dist/post/index.js +++ b/dist/post/index.js @@ -53207,6 +53207,7 @@ const exec = (__nccwpck_require__(35317).exec); const execSync = (__nccwpck_require__(35317).execSync); const path = __nccwpck_require__(16928); const util = __nccwpck_require__(33225); +const bluetoothVendors = __nccwpck_require__(55848); const fs = __nccwpck_require__(79896); let _platform = process.platform; @@ -53253,6 +53254,11 @@ function parseBluetoothManufacturer(str) { return result; } +function parseBluetoothVendor(str) { + const id = parseInt(str); + if (!isNaN(id)) return bluetoothVendors[id]; +} + function parseLinuxBluetoothInfo(lines, macAddr1, macAddr2) { const result = {}; @@ -53274,7 +53280,7 @@ function parseDarwinBluetoothDevices(bluetoothObject, macAddr2) { result.device = bluetoothObject.device_services || ''; result.name = bluetoothObject.device_name || ''; - result.manufacturer = bluetoothObject.device_manufacturer || parseBluetoothManufacturer(bluetoothObject.device_name || '') || ''; + result.manufacturer = bluetoothObject.device_manufacturer || parseBluetoothVendor(bluetoothObject.device_vendorID) || parseBluetoothManufacturer(bluetoothObject.device_name || '') || ''; result.macDevice = (bluetoothObject.device_addr || bluetoothObject.device_address || '').toLowerCase().replace(/-/g, ':'); result.macHost = macAddr2; result.batteryPercent = bluetoothObject.device_batteryPercent || null; @@ -53421,6 +53427,1151 @@ function bluetoothDevices(callback) { exports.bluetoothDevices = bluetoothDevices; +/***/ }), + +/***/ 55848: +/***/ ((module) => { + + +// @ts-check +module.exports = { + 0x0000: 'Ericsson Technology Licensing', + 0x0001: 'Nokia Mobile Phones', + 0x0002: 'Intel Corp.', + 0x0003: 'IBM Corp.', + 0x0004: 'Toshiba Corp.', + 0x0005: '3Com', + 0x0006: 'Microsoft', + 0x0007: 'Lucent', + 0x0008: 'Motorola', + 0x0009: 'Infineon Technologies AG', + 0x000a: 'Cambridge Silicon Radio', + 0x000b: 'Silicon Wave', + 0x000c: 'Digianswer A/S', + 0x000d: 'Texas Instruments Inc.', + 0x000e: 'Ceva, Inc. (formerly Parthus Technologies, Inc.)', + 0x000f: 'Broadcom Corporation', + 0x0010: 'Mitel Semiconductor', + 0x0011: 'Widcomm, Inc', + 0x0012: 'Zeevo, Inc.', + 0x0013: 'Atmel Corporation', + 0x0014: 'Mitsubishi Electric Corporation', + 0x0015: 'RTX Telecom A/S', + 0x0016: 'KC Technology Inc.', + 0x0017: 'NewLogic', + 0x0018: 'Transilica, Inc.', + 0x0019: 'Rohde & Schwarz GmbH & Co. KG', + 0x001a: 'TTPCom Limited', + 0x001b: 'Signia Technologies, Inc.', + 0x001c: 'Conexant Systems Inc.', + 0x001d: 'Qualcomm', + 0x001e: 'Inventel', + 0x001f: 'AVM Berlin', + 0x0020: 'BandSpeed, Inc.', + 0x0021: 'Mansella Ltd', + 0x0022: 'NEC Corporation', + 0x0023: 'WavePlus Technology Co., Ltd.', + 0x0024: 'Alcatel', + 0x0025: 'NXP Semiconductors (formerly Philips Semiconductors)', + 0x0026: 'C Technologies', + 0x0027: 'Open Interface', + 0x0028: 'R F Micro Devices', + 0x0029: 'Hitachi Ltd', + 0x002a: 'Symbol Technologies, Inc.', + 0x002b: 'Tenovis', + 0x002c: 'Macronix International Co. Ltd.', + 0x002d: 'GCT Semiconductor', + 0x002e: 'Norwood Systems', + 0x002f: 'MewTel Technology Inc.', + 0x0030: 'ST Microelectronics', + 0x0031: 'Synopsis', + 0x0032: 'Red-M (Communications) Ltd', + 0x0033: 'Commil Ltd', + 0x0034: 'Computer Access Technology Corporation (CATC)', + 0x0035: 'Eclipse (HQ Espana) S.L.', + 0x0036: 'Renesas Electronics Corporation', + 0x0037: 'Mobilian Corporation', + 0x0038: 'Terax', + 0x0039: 'Integrated System Solution Corp.', + 0x003a: 'Matsushita Electric Industrial Co., Ltd.', + 0x003b: 'Gennum Corporation', + 0x003c: 'BlackBerry Limited (formerly Research In Motion)', + 0x003d: 'IPextreme, Inc.', + 0x003e: 'Systems and Chips, Inc.', + 0x003f: 'Bluetooth SIG, Inc.', + 0x0040: 'Seiko Epson Corporation', + 0x0041: 'Integrated Silicon Solution Taiwan, Inc.', + 0x0042: 'CONWISE Technology Corporation Ltd', + 0x0043: 'PARROT SA', + 0x0044: 'Socket Mobile', + 0x0045: 'Atheros Communications, Inc.', + 0x0046: 'MediaTek, Inc.', + 0x0047: 'Bluegiga', + 0x0048: 'Marvell Technology Group Ltd.', + 0x0049: '3DSP Corporation', + 0x004a: 'Accel Semiconductor Ltd.', + 0x004b: 'Continental Automotive Systems', + 0x004c: 'Apple, Inc.', + 0x004d: 'Staccato Communications, Inc.', + 0x004e: 'Avago Technologies', + 0x004f: 'APT Licensing Ltd.', + 0x0050: 'SiRF Technology', + 0x0051: 'Tzero Technologies, Inc.', + 0x0052: 'J&M Corporation', + 0x0053: 'Free2move AB', + 0x0054: '3DiJoy Corporation', + 0x0055: 'Plantronics, Inc.', + 0x0056: 'Sony Ericsson Mobile Communications', + 0x0057: 'Harman International Industries, Inc.', + 0x0058: 'Vizio, Inc.', + 0x0059: 'Nordic Semiconductor ASA', + 0x005a: 'EM Microelectronic-Marin SA', + 0x005b: 'Ralink Technology Corporation', + 0x005c: 'Belkin International, Inc.', + 0x005d: 'Realtek Semiconductor Corporation', + 0x005e: 'Stonestreet One, LLC', + 0x005f: 'Wicentric, Inc.', + 0x0060: 'RivieraWaves S.A.S', + 0x0061: 'RDA Microelectronics', + 0x0062: 'Gibson Guitars', + 0x0063: 'MiCommand Inc.', + 0x0064: 'Band XI International, LLC', + 0x0065: 'Hewlett-Packard Company', + 0x0066: '9Solutions Oy', + 0x0067: 'GN Netcom A/S', + 0x0068: 'General Motors', + 0x0069: 'A&D Engineering, Inc.', + 0x006a: 'MindTree Ltd.', + 0x006b: 'Polar Electro OY', + 0x006c: 'Beautiful Enterprise Co., Ltd.', + 0x006d: 'BriarTek, Inc.', + 0x006e: 'Summit Data Communications, Inc.', + 0x006f: 'Sound ID', + 0x0070: 'Monster, LLC', + 0x0071: 'connectBlue AB', + 0x0072: 'ShangHai Super Smart Electronics Co. Ltd.', + 0x0073: 'Group Sense Ltd.', + 0x0074: 'Zomm, LLC', + 0x0075: 'Samsung Electronics Co. Ltd.', + 0x0076: 'Creative Technology Ltd.', + 0x0077: 'Laird Technologies', + 0x0078: 'Nike, Inc.', + 0x0079: 'lesswire AG', + 0x007a: 'MStar Semiconductor, Inc.', + 0x007b: 'Hanlynn Technologies', + 0x007c: 'A & R Cambridge', + 0x007d: 'Seers Technology Co. Ltd', + 0x007e: 'Sports Tracking Technologies Ltd.', + 0x007f: 'Autonet Mobile', + 0x0080: 'DeLorme Publishing Company, Inc.', + 0x0081: 'WuXi Vimicro', + 0x0082: 'Sennheiser Communications A/S', + 0x0083: 'TimeKeeping Systems, Inc.', + 0x0084: 'Ludus Helsinki Ltd.', + 0x0085: 'BlueRadios, Inc.', + 0x0086: 'equinox AG', + 0x0087: 'Garmin International, Inc.', + 0x0088: 'Ecotest', + 0x0089: 'GN ReSound A/S', + 0x008a: 'Jawbone', + 0x008b: 'Topcorn Positioning Systems, LLC', + 0x008c: 'Gimbal Inc. (formerly Qualcomm Labs, Inc. and Qualcomm Retail Solutions, Inc.)', + 0x008d: 'Zscan Software', + 0x008e: 'Quintic Corp.', + 0x008f: 'Stollman E+V GmbH', + 0x0090: 'Funai Electric Co., Ltd.', + 0x0091: 'Advanced PANMOBIL Systems GmbH & Co. KG', + 0x0092: 'ThinkOptics, Inc.', + 0x0093: 'Universal Electronics, Inc.', + 0x0094: 'Airoha Technology Corp.', + 0x0095: 'NEC Lighting, Ltd.', + 0x0096: 'ODM Technology, Inc.', + 0x0097: 'ConnecteDevice Ltd.', + 0x0098: 'zer01.tv GmbH', + 0x0099: 'i.Tech Dynamic Global Distribution Ltd.', + 0x009a: 'Alpwise', + 0x009b: 'Jiangsu Toppower Automotive Electronics Co., Ltd.', + 0x009c: 'Colorfy, Inc.', + 0x009d: 'Geoforce Inc.', + 0x009e: 'Bose Corporation', + 0x009f: 'Suunto Oy', + 0x00a0: 'Kensington Computer Products Group', + 0x00a1: 'SR-Medizinelektronik', + 0x00a2: 'Vertu Corporation Limited', + 0x00a3: 'Meta Watch Ltd.', + 0x00a4: 'LINAK A/S', + 0x00a5: 'OTL Dynamics LLC', + 0x00a6: 'Panda Ocean Inc.', + 0x00a7: 'Visteon Corporation', + 0x00a8: 'ARP Devices Limited', + 0x00a9: 'Magneti Marelli S.p.A', + 0x00aa: 'CAEN RFID srl', + 0x00ab: 'Ingenieur-Systemgruppe Zahn GmbH', + 0x00ac: 'Green Throttle Games', + 0x00ad: 'Peter Systemtechnik GmbH', + 0x00ae: 'Omegawave Oy', + 0x00af: 'Cinetix', + 0x00b0: 'Passif Semiconductor Corp', + 0x00b1: 'Saris Cycling Group, Inc', + 0x00b2: 'Bekey A/S', + 0x00b3: 'Clarinox Technologies Pty. Ltd.', + 0x00b4: 'BDE Technology Co., Ltd.', + 0x00b5: 'Swirl Networks', + 0x00b6: 'Meso international', + 0x00b7: 'TreLab Ltd', + 0x00b8: 'Qualcomm Innovation Center, Inc. (QuIC)', + 0x00b9: 'Johnson Controls, Inc.', + 0x00ba: 'Starkey Laboratories Inc.', + 0x00bb: 'S-Power Electronics Limited', + 0x00bc: 'Ace Sensor Inc', + 0x00bd: 'Aplix Corporation', + 0x00be: 'AAMP of America', + 0x00bf: 'Stalmart Technology Limited', + 0x00c0: 'AMICCOM Electronics Corporation', + 0x00c1: 'Shenzhen Excelsecu Data Technology Co.,Ltd', + 0x00c2: 'Geneq Inc.', + 0x00c3: 'adidas AG', + 0x00c4: 'LG Electronics', + 0x00c5: 'Onset Computer Corporation', + 0x00c6: 'Selfly BV', + 0x00C7: 'Quuppa Oy.', + 0x00C8: 'GeLo Inc', + 0x00C9: 'Evluma', + 0x00CA: 'MC10', + 0x00CB: 'Binauric SE', + 0x00CC: 'Beats Electronics', + 0x00CD: 'Microchip Technology Inc.', + 0x00CE: 'Elgato Systems GmbH', + 0x00CF: 'ARCHOS SA', + 0x00D0: 'Dexcom, Inc.', + 0x00D1: 'Polar Electro Europe B.V.', + 0x00D2: 'Dialog Semiconductor B.V.', + 0x00D3: 'Taixingbang Technology (HK) Co,. LTD.', + 0x00D4: 'Kawantech', + 0x00D5: 'Austco Communication Systems', + 0x00D6: 'Timex Group USA, Inc.', + 0x00D7: 'Qualcomm Technologies, Inc.', + 0x00D8: 'Qualcomm Connected Experiences, Inc.', + 0x00D9: 'Voyetra Turtle Beach', + 0x00DA: 'txtr GmbH', + 0x00DB: 'Biosentronics', + 0x00DC: 'Procter & Gamble', + 0x00DD: 'Hosiden Corporation', + 0x00DE: 'Muzik LLC', + 0x00DF: 'Misfit Wearables Corp', + 0x00E0: 'Google', + 0x00E1: 'Danlers Ltd', + 0x00E2: 'Semilink Inc', + 0x00E3: 'inMusic Brands, Inc', + 0x00E4: 'L.S. Research Inc.', + 0x00E5: 'Eden Software Consultants Ltd.', + 0x00E6: 'Freshtemp', + 0x00e7: 'KS Technologies', + 0x00e8: 'ACTS Technologies', + 0x00e9: 'Vtrack Systems', + 0x00ea: 'Nielsen-Kellerman Company', + 0x00eb: 'Server Technology, Inc.', + 0x00ec: 'BioResearch Associates', + 0x00ed: 'Jolly Logic, LLC', + 0x00ee: 'Above Average Outcomes, Inc.', + 0x00ef: 'Bitsplitters GmbH', + 0x00f0: 'PayPal, Inc.', + 0x00f1: 'Witron Technology Limited', + 0x00f2: 'Aether Things Inc. (formerly Morse Project Inc.)', + 0x00f3: 'Kent Displays Inc.', + 0x00f4: 'Nautilus Inc.', + 0x00f5: 'Smartifier Oy', + 0x00f6: 'Elcometer Limited', + 0x00f7: 'VSN Technologies Inc.', + 0x00f8: 'AceUni Corp., Ltd.', + 0x00f9: 'StickNFind', + 0x00fa: 'Crystal Code AB', + 0x00fb: 'KOUKAAM a.s.', + 0x00fc: 'Delphi Corporation', + 0x00fd: 'ValenceTech Limited', + 0x00fe: 'Reserved', + 0x00ff: 'Typo Products, LLC', + 0x0100: 'TomTom International BV', + 0x0101: 'Fugoo, Inc', + 0x0102: 'Keiser Corporation', + 0x0103: 'Bang & Olufsen A/S', + 0x0104: 'PLUS Locations Systems Pty Ltd', + 0x0105: 'Ubiquitous Computing Technology Corporation', + 0x0106: 'Innovative Yachtter Solutions', + 0x0107: 'William Demant Holding A/S', + 0x0108: 'Chicony Electronics Co., Ltd.', + 0x0109: 'Atus BV', + 0x010a: 'Codegate Ltd.', + 0x010b: 'ERi, Inc.', + 0x010c: 'Transducers Direct, LLC', + 0x010d: 'Fujitsu Ten Limited', + 0x010e: 'Audi AG', + 0x010f: 'HiSilicon Technologies Co., Ltd.', + 0x0110: 'Nippon Seiki Co., Ltd.', + 0x0111: 'Steelseries ApS', + 0x0112: 'vyzybl Inc.', + 0x0113: 'Openbrain Technologies, Co., Ltd.', + 0x0114: 'Xensr', + 0x0115: 'e.solutions', + 0x0116: '1OAK Technologies', + 0x0117: 'Wimoto Technologies Inc', + 0x0118: 'Radius Networks, Inc.', + 0x0119: 'Wize Technology Co., Ltd.', + 0x011a: 'Qualcomm Labs, Inc.', + 0x011b: 'Aruba Networks', + 0x011c: 'Baidu', + 0x011d: 'Arendi AG', + 0x011e: 'Skoda Auto a.s.', + 0x011f: 'Volkswagon AG', + 0x0120: 'Porsche AG', + 0x0121: 'Sino Wealth Electronic Ltd.', + 0x0122: 'AirTurn, Inc.', + 0x0123: 'Kinsa, Inc.', + 0x0124: 'HID Global', + 0x0125: 'SEAT es', + 0x0126: 'Promethean Ltd.', + 0x0127: 'Salutica Allied Solutions', + 0x0128: 'GPSI Group Pty Ltd', + 0x0129: 'Nimble Devices Oy', + 0x012a: 'Changzhou Yongse Infotech Co., Ltd', + 0x012b: 'SportIQ', + 0x012c: 'TEMEC Instruments B.V.', + 0x012d: 'Sony Corporation', + 0x012e: 'ASSA ABLOY', + 0x012f: 'Clarion Co., Ltd.', + 0x0130: 'Warehouse Innovations', + 0x0131: 'Cypress Semiconductor Corporation', + 0x0132: 'MADS Inc', + 0x0133: 'Blue Maestro Limited', + 0x0134: 'Resolution Products, Inc.', + 0x0135: 'Airewear LLC', + 0x0136: 'Seed Labs, Inc. (formerly ETC sp. z.o.o.)', + 0x0137: 'Prestigio Plaza Ltd.', + 0x0138: 'NTEO Inc.', + 0x0139: 'Focus Systems Corporation', + 0x013a: 'Tencent Holdings Limited', + 0x013b: 'Allegion', + 0x013c: 'Murata Manufacuring Co., Ltd.', + 0x013e: 'Nod, Inc.', + 0x013f: 'B&B Manufacturing Company', + 0x0140: 'Alpine Electronics (China) Co., Ltd', + 0x0141: 'FedEx Services', + 0x0142: 'Grape Systems Inc.', + 0x0143: 'Bkon Connect', + 0x0144: 'Lintech GmbH', + 0x0145: 'Novatel Wireless', + 0x0146: 'Ciright', + 0x0147: 'Mighty Cast, Inc.', + 0x0148: 'Ambimat Electronics', + 0x0149: 'Perytons Ltd.', + 0x014a: 'Tivoli Audio, LLC', + 0x014b: 'Master Lock', + 0x014c: 'Mesh-Net Ltd', + 0x014d: 'Huizhou Desay SV Automotive CO., LTD.', + 0x014e: 'Tangerine, Inc.', + 0x014f: 'B&W Group Ltd.', + 0x0150: 'Pioneer Corporation', + 0x0151: 'OnBeep', + 0x0152: 'Vernier Software & Technology', + 0x0153: 'ROL Ergo', + 0x0154: 'Pebble Technology', + 0x0155: 'NETATMO', + 0x0156: 'Accumulate AB', + 0x0157: 'Anhui Huami Information Technology Co., Ltd.', + 0x0158: 'Inmite s.r.o.', + 0x0159: 'ChefSteps, Inc.', + 0x015a: 'micas AG', + 0x015b: 'Biomedical Research Ltd.', + 0x015c: 'Pitius Tec S.L.', + 0x015d: 'Estimote, Inc.', + 0x015e: 'Unikey Technologies, Inc.', + 0x015f: 'Timer Cap Co.', + 0x0160: 'AwoX', + 0x0161: 'yikes', + 0x0162: 'MADSGlobal NZ Ltd.', + 0x0163: 'PCH International', + 0x0164: 'Qingdao Yeelink Information Technology Co., Ltd.', + 0x0165: 'Milwaukee Tool (formerly Milwaukee Electric Tools)', + 0x0166: 'MISHIK Pte Ltd', + 0x0167: 'Bayer HealthCare', + 0x0168: 'Spicebox LLC', + 0x0169: 'emberlight', + 0x016a: 'Cooper-Atkins Corporation', + 0x016b: 'Qblinks', + 0x016c: 'MYSPHERA', + 0x016d: 'LifeScan Inc', + 0x016e: 'Volantic AB', + 0x016f: 'Podo Labs, Inc', + 0x0170: 'Roche Diabetes Care AG', + 0x0171: 'Amazon Fulfillment Service', + 0x0172: 'Connovate Technology Private Limited', + 0x0173: 'Kocomojo, LLC', + 0x0174: 'Everykey LLC', + 0x0175: 'Dynamic Controls', + 0x0176: 'SentriLock', + 0x0177: 'I-SYST inc.', + 0x0178: 'CASIO COMPUTER CO., LTD.', + 0x0179: 'LAPIS Semiconductor Co., Ltd.', + 0x017a: 'Telemonitor, Inc.', + 0x017b: 'taskit GmbH', + 0x017c: 'Daimler AG', + 0x017d: 'BatAndCat', + 0x017e: 'BluDotz Ltd', + 0x017f: 'XTel ApS', + 0x0180: 'Gigaset Communications GmbH', + 0x0181: 'Gecko Health Innovations, Inc.', + 0x0182: 'HOP Ubiquitous', + 0x0183: 'To Be Assigned', + 0x0184: 'Nectar', + 0x0185: 'bel’apps LLC', + 0x0186: 'CORE Lighting Ltd', + 0x0187: 'Seraphim Sense Ltd', + 0x0188: 'Unico RBC', + 0x0189: 'Physical Enterprises Inc.', + 0x018a: 'Able Trend Technology Limited', + 0x018b: 'Konica Minolta, Inc.', + 0x018c: 'Wilo SE', + 0x018d: 'Extron Design Services', + 0x018e: 'Fitbit, Inc.', + 0x018f: 'Fireflies Systems', + 0x0190: 'Intelletto Technologies Inc.', + 0x0191: 'FDK CORPORATION', + 0x0192: 'Cloudleaf, Inc', + 0x0193: 'Maveric Automation LLC', + 0x0194: 'Acoustic Stream Corporation', + 0x0195: 'Zuli', + 0x0196: 'Paxton Access Ltd', + 0x0197: 'WiSilica Inc', + 0x0198: 'Vengit Limited', + 0x0199: 'SALTO SYSTEMS S.L.', + 0x019a: 'TRON Forum (formerly T-Engine Forum)', + 0x019b: 'CUBETECH s.r.o.', + 0x019c: 'Cokiya Incorporated', + 0x019d: 'CVS Health', + 0x019e: 'Ceruus', + 0x019f: 'Strainstall Ltd', + 0x01a0: 'Channel Enterprises (HK) Ltd.', + 0x01a1: 'FIAMM', + 0x01a2: 'GIGALANE.CO.,LTD', + 0x01a3: 'EROAD', + 0x01a4: 'Mine Safety Appliances', + 0x01a5: 'Icon Health and Fitness', + 0x01a6: 'Asandoo GmbH', + 0x01a7: 'ENERGOUS CORPORATION', + 0x01a8: 'Taobao', + 0x01a9: 'Canon Inc.', + 0x01aa: 'Geophysical Technology Inc.', + 0x01ab: 'Facebook, Inc.', + 0x01ac: 'Nipro Diagnostics, Inc.', + 0x01ad: 'FlightSafety International', + 0x01ae: 'Earlens Corporation', + 0x01af: 'Sunrise Micro Devices, Inc.', + 0x01b0: 'Star Micronics Co., Ltd.', + 0x01b1: 'Netizens Sp. z o.o.', + 0x01b2: 'Nymi Inc.', + 0x01b3: 'Nytec, Inc.', + 0x01b4: 'Trineo Sp. z o.o.', + 0x01b5: 'Nest Labs Inc.', + 0x01b6: 'LM Technologies Ltd', + 0x01b7: 'General Electric Company', + 0x01b8: 'i+D3 S.L.', + 0x01b9: 'HANA Micron', + 0x01ba: 'Stages Cycling LLC', + 0x01bb: 'Cochlear Bone Anchored Solutions AB', + 0x01bc: 'SenionLab AB', + 0x01bd: 'Syszone Co., Ltd', + 0x01be: 'Pulsate Mobile Ltd.', + 0x01bf: 'Hong Kong HunterSun Electronic Limited', + 0x01c0: 'pironex GmbH', + 0x01c1: 'BRADATECH Corp.', + 0x01c2: 'Transenergooil AG', + 0x01c3: 'Bunch', + 0x01c4: 'DME Microelectronics', + 0x01c5: 'Bitcraze AB', + 0x01c6: 'HASWARE Inc.', + 0x01c7: 'Abiogenix Inc.', + 0x01c8: 'Poly-Control ApS', + 0x01c9: 'Avi-on', + 0x01ca: 'Laerdal Medical AS', + 0x01cb: 'Fetch My Pet', + 0x01cc: 'Sam Labs Ltd.', + 0x01cd: 'Chengdu Synwing Technology Ltd', + 0x01ce: 'HOUWA SYSTEM DESIGN, k.k.', + 0x01cf: 'BSH', + 0x01d0: 'Primus Inter Pares Ltd', + 0x01d1: 'August', + 0x01d2: 'Gill Electronics', + 0x01d3: 'Sky Wave Design', + 0x01d4: 'Newlab S.r.l.', + 0x01d5: 'ELAD srl', + 0x01d6: 'G-wearables inc.', + 0x01d7: 'Squadrone Systems Inc.', + 0x01d8: 'Code Corporation', + 0x01d9: 'Savant Systems LLC', + 0x01da: 'Logitech International SA', + 0x01db: 'Innblue Consulting', + 0x01dc: 'iParking Ltd.', + 0x01dd: 'Koninklijke Philips Electronics N.V.', + 0x01de: 'Minelab Electronics Pty Limited', + 0x01df: 'Bison Group Ltd.', + 0x01e0: 'Widex A/S', + 0x01e1: 'Jolla Ltd', + 0x01e2: 'Lectronix, Inc.', + 0x01e3: 'Caterpillar Inc', + 0x01e4: 'Freedom Innovations', + 0x01e5: 'Dynamic Devices Ltd', + 0x01e6: 'Technology Solutions (UK) Ltd', + 0x01e7: 'IPS Group Inc.', + 0x01e8: 'STIR', + 0x01e9: 'Sano, Inc', + 0x01ea: 'Advanced Application Design, Inc.', + 0x01eb: 'AutoMap LLC', + 0x01ec: 'Spreadtrum Communications Shanghai Ltd', + 0x01ed: 'CuteCircuit LTD', + 0x01ee: 'Valeo Service', + 0x01ef: 'Fullpower Technologies, Inc.', + 0x01f0: 'KloudNation', + 0x01f1: 'Zebra Technologies Corporation', + 0x01f2: 'Itron, Inc.', + 0x01f3: 'The University of Tokyo', + 0x01f4: 'UTC Fire and Security', + 0x01f5: 'Cool Webthings Limited', + 0x01f6: 'DJO Global', + 0x01f7: 'Gelliner Limited', + 0x01f8: 'Anyka (Guangzhou) Microelectronics Technology Co, LTD', + 0x01f9: 'Medtronic, Inc.', + 0x01fa: 'Gozio, Inc.', + 0x01fb: 'Form Lifting, LLC', + 0x01fc: 'Wahoo Fitness, LLC', + 0x01fd: 'Kontakt Micro-Location Sp. z o.o.', + 0x01fe: 'Radio System Corporation', + 0x01ff: 'Freescale Semiconductor, Inc.', + 0x0200: 'Verifone Systems PTe Ltd. Taiwan Branch', + 0x0201: 'AR Timing', + 0x0202: 'Rigado LLC', + 0x0203: 'Kemppi Oy', + 0x0204: 'Tapcentive Inc.', + 0x0205: 'Smartbotics Inc.', + 0x0206: 'Otter Products, LLC', + 0x0207: 'STEMP Inc.', + 0x0208: 'LumiGeek LLC', + 0x0209: 'InvisionHeart Inc.', + 0x020A: 'Macnica Inc. ', + 0x020b: 'Jaguar Land Rover Limited', + 0x020c: 'CoroWare Technologies, Inc', + 0x020d: 'Simplo Technology Co., LTD', + 0x020e: 'Omron Healthcare Co., LTD', + 0x020f: 'Comodule GMBH', + 0x0210: 'ikeGPS', + 0x0211: 'Telink Semiconductor Co. Ltd', + 0x0212: 'Interplan Co., Ltd', + 0x0213: 'Wyler AG', + 0x0214: 'IK Multimedia Production srl', + 0x0215: 'Lukoton Experience Oy', + 0x0216: 'MTI Ltd', + 0x0217: 'Tech4home, Lda', + 0x0218: 'Hiotech AB', + 0x0219: 'DOTT Limited', + 0x021A: 'Blue Speck Labs, LLC', + 0x021B: 'Cisco Systems, Inc', + 0x021C: 'Mobicomm Inc', + 0x021D: 'Edamic', + 0x021E: 'Goodnet, Ltd', + 0x021F: 'Luster Leaf Products Inc', + 0x0220: 'Manus Machina BV', + 0x0221: 'Mobiquity Networks Inc', + 0x0222: 'Praxis Dynamics', + 0x0223: 'Philip Morris Products S.A.', + 0x0224: 'Comarch SA', + 0x0225: 'Nestl Nespresso S.A.', + 0x0226: 'Merlinia A/S', + 0x0227: 'LifeBEAM Technologies', + 0x0228: 'Twocanoes Labs, LLC', + 0x0229: 'Muoverti Limited', + 0x022A: 'Stamer Musikanlagen GMBH', + 0x022B: 'Tesla Motors', + 0x022C: 'Pharynks Corporation', + 0x022D: 'Lupine', + 0x022E: 'Siemens AG', + 0x022F: 'Huami (Shanghai) Culture Communication CO., LTD', + 0x0230: 'Foster Electric Company, Ltd', + 0x0231: 'ETA SA', + 0x0232: 'x-Senso Solutions Kft', + 0x0233: 'Shenzhen SuLong Communication Ltd', + 0x0234: 'FengFan (BeiJing) Technology Co, Ltd', + 0x0235: 'Qrio Inc', + 0x0236: 'Pitpatpet Ltd', + 0x0237: 'MSHeli s.r.l.', + 0x0238: 'Trakm8 Ltd', + 0x0239: 'JIN CO, Ltd', + 0x023A: 'Alatech Tehnology', + 0x023B: 'Beijing CarePulse Electronic Technology Co, Ltd', + 0x023C: 'Awarepoint', + 0x023D: 'ViCentra B.V.', + 0x023E: 'Raven Industries', + 0x023F: 'WaveWare Technologies Inc.', + 0x0240: 'Argenox Technologies', + 0x0241: 'Bragi GmbH', + 0x0242: '16Lab Inc', + 0x0243: 'Masimo Corp', + 0x0244: 'Iotera Inc', + 0x0245: 'Endress+Hauser', + 0x0246: 'ACKme Networks, Inc.', + 0x0247: 'FiftyThree Inc.', + 0x0248: 'Parker Hannifin Corp', + 0x0249: 'Transcranial Ltd', + 0x024A: 'Uwatec AG', + 0x024B: 'Orlan LLC', + 0x024C: 'Blue Clover Devices', + 0x024D: 'M-Way Solutions GmbH', + 0x024E: 'Microtronics Engineering GmbH', + 0x024F: 'Schneider Schreibgerte GmbH', + 0x0250: 'Sapphire Circuits LLC', + 0x0251: 'Lumo Bodytech Inc.', + 0x0252: 'UKC Technosolution', + 0x0253: 'Xicato Inc.', + 0x0254: 'Playbrush', + 0x0255: 'Dai Nippon Printing Co., Ltd.', + 0x0256: 'G24 Power Limited', + 0x0257: 'AdBabble Local Commerce Inc.', + 0x0258: 'Devialet SA', + 0x0259: 'ALTYOR', + 0x025A: 'University of Applied Sciences Valais/Haute Ecole Valaisanne', + 0x025B: 'Five Interactive, LLC dba Zendo', + 0x025C: 'NetEaseHangzhouNetwork co.Ltd.', + 0x025D: 'Lexmark International Inc.', + 0x025E: 'Fluke Corporation', + 0x025F: 'Yardarm Technologies', + 0x0260: 'SensaRx', + 0x0261: 'SECVRE GmbH', + 0x0262: 'Glacial Ridge Technologies', + 0x0263: 'Identiv, Inc.', + 0x0264: 'DDS, Inc.', + 0x0265: 'SMK Corporation', + 0x0266: 'Schawbel Technologies LLC', + 0x0267: 'XMI Systems SA', + 0x0268: 'Cerevo', + 0x0269: 'Torrox GmbH & Co KG', + 0x026A: 'Gemalto', + 0x026B: 'DEKA Research & Development Corp.', + 0x026C: 'Domster Tadeusz Szydlowski', + 0x026D: 'Technogym SPA', + 0x026E: 'FLEURBAEY BVBA', + 0x026F: 'Aptcode Solutions', + 0x0270: 'LSI ADL Technology', + 0x0271: 'Animas Corp', + 0x0272: 'Alps Electric Co., Ltd.', + 0x0273: 'OCEASOFT', + 0x0274: 'Motsai Research', + 0x0275: 'Geotab', + 0x0276: 'E.G.O. Elektro-Gertebau GmbH', + 0x0277: 'bewhere inc', + 0x0278: 'Johnson Outdoors Inc', + 0x0279: 'steute Schaltgerate GmbH & Co. KG', + 0x027A: 'Ekomini inc.', + 0x027B: 'DEFA AS', + 0x027C: 'Aseptika Ltd', + 0x027D: 'HUAWEI Technologies Co., Ltd. ( )', + 0x027E: 'HabitAware, LLC', + 0x027F: 'ruwido austria gmbh', + 0x0280: 'ITEC corporation', + 0x0281: 'StoneL', + 0x0282: 'Sonova AG', + 0x0283: 'Maven Machines, Inc.', + 0x0284: 'Synapse Electronics', + 0x0285: 'Standard Innovation Inc.', + 0x0286: 'RF Code, Inc.', + 0x0287: 'Wally Ventures S.L.', + 0x0288: 'Willowbank Electronics Ltd', + 0x0289: 'SK Telecom', + 0x028A: 'Jetro AS', + 0x028B: 'Code Gears LTD', + 0x028C: 'NANOLINK APS', + 0x028D: 'IF, LLC', + 0x028E: 'RF Digital Corp', + 0x028F: 'Church & Dwight Co., Inc', + 0x0290: 'Multibit Oy', + 0x0291: 'CliniCloud Inc', + 0x0292: 'SwiftSensors', + 0x0293: 'Blue Bite', + 0x0294: 'ELIAS GmbH', + 0x0295: 'Sivantos GmbH', + 0x0296: 'Petzl', + 0x0297: 'storm power ltd', + 0x0298: 'EISST Ltd', + 0x0299: 'Inexess Technology Simma KG', + 0x029A: 'Currant, Inc.', + 0x029B: 'C2 Development, Inc.', + 0x029C: 'Blue Sky Scientific, LLC', + 0x029D: 'ALOTTAZS LABS, LLC', + 0x029E: 'Kupson spol. s r.o.', + 0x029F: 'Areus Engineering GmbH', + 0x02A0: 'Impossible Camera GmbH', + 0x02A1: 'InventureTrack Systems', + 0x02A2: 'LockedUp', + 0x02A3: 'Itude', + 0x02A4: 'Pacific Lock Company', + 0x02A5: 'Tendyron Corporation ( )', + 0x02A6: 'Robert Bosch GmbH', + 0x02A7: 'Illuxtron international B.V.', + 0x02A8: 'miSport Ltd.', + 0x02A9: 'Chargelib', + 0x02AA: 'Doppler Lab', + 0x02AB: 'BBPOS Limited', + 0x02AC: 'RTB Elektronik GmbH & Co. KG', + 0x02AD: 'Rx Networks, Inc.', + 0x02AE: 'WeatherFlow, Inc.', + 0x02AF: 'Technicolor USA Inc.', + 0x02B0: 'Bestechnic(Shanghai),Ltd', + 0x02B1: 'Raden Inc', + 0x02B2: 'JouZen Oy', + 0x02B3: 'CLABER S.P.A.', + 0x02B4: 'Hyginex, Inc.', + 0x02B5: 'HANSHIN ELECTRIC RAILWAY CO.,LTD.', + 0x02B6: 'Schneider Electric', + 0x02B7: 'Oort Technologies LLC', + 0x02B8: 'Chrono Therapeutics', + 0x02B9: 'Rinnai Corporation', + 0x02BA: 'Swissprime Technologies AG', + 0x02BB: 'Koha.,Co.Ltd', + 0x02BC: 'Genevac Ltd', + 0x02BD: 'Chemtronics', + 0x02BE: 'Seguro Technology Sp. z o.o.', + 0x02BF: 'Redbird Flight Simulations', + 0x02C0: 'Dash Robotics', + 0x02C1: 'LINE Corporation', + 0x02C2: 'Guillemot Corporation', + 0x02C3: 'Techtronic Power Tools Technology Limited', + 0x02C4: 'Wilson Sporting Goods', + 0x02C5: 'Lenovo (Singapore) Pte Ltd. ( )', + 0x02C6: 'Ayatan Sensors', + 0x02C7: 'Electronics Tomorrow Limited', + 0x02C8: 'VASCO Data Security International, Inc.', + 0x02C9: 'PayRange Inc.', + 0x02CA: 'ABOV Semiconductor', + 0x02CB: 'AINA-Wireless Inc.', + 0x02CC: 'Eijkelkamp Soil & Water', + 0x02CD: 'BMA ergonomics b.v.', + 0x02CE: 'Teva Branded Pharmaceutical Products R&D, Inc.', + 0x02CF: 'Anima', + 0x02D0: '3M', + 0x02D1: 'Empatica Srl', + 0x02D2: 'Afero, Inc.', + 0x02D3: 'Powercast Corporation', + 0x02D4: 'Secuyou ApS', + 0x02D5: 'OMRON Corporation', + 0x02D6: 'Send Solutions', + 0x02D7: 'NIPPON SYSTEMWARE CO.,LTD.', + 0x02D8: 'Neosfar', + 0x02D9: 'Fliegl Agrartechnik GmbH', + 0x02DA: 'Gilvader', + 0x02DB: 'Digi International Inc (R)', + 0x02DC: 'DeWalch Technologies, Inc.', + 0x02DD: 'Flint Rehabilitation Devices, LLC', + 0x02DE: 'Samsung SDS Co., Ltd.', + 0x02DF: 'Blur Product Development', + 0x02E0: 'University of Michigan', + 0x02E1: 'Victron Energy BV', + 0x02E2: 'NTT docomo', + 0x02E3: 'Carmanah Technologies Corp.', + 0x02E4: 'Bytestorm Ltd.', + 0x02E5: 'Espressif Incorporated ( () )', + 0x02E6: 'Unwire', + 0x02E7: 'Connected Yard, Inc.', + 0x02E8: 'American Music Environments', + 0x02E9: 'Sensogram Technologies, Inc.', + 0x02EA: 'Fujitsu Limited', + 0x02EB: 'Ardic Technology', + 0x02EC: 'Delta Systems, Inc', + 0x02ED: 'HTC Corporation', + 0x02EE: 'Citizen Holdings Co., Ltd.', + 0x02EF: 'SMART-INNOVATION.inc', + 0x02F0: 'Blackrat Software', + 0x02F1: 'The Idea Cave, LLC', + 0x02F2: 'GoPro, Inc.', + 0x02F3: 'AuthAir, Inc', + 0x02F4: 'Vensi, Inc.', + 0x02F5: 'Indagem Tech LLC', + 0x02F6: 'Intemo Technologies', + 0x02F7: 'DreamVisions co., Ltd.', + 0x02F8: 'Runteq Oy Ltd', + 0x02F9: 'IMAGINATION TECHNOLOGIES LTD', + 0x02FA: 'CoSTAR TEchnologies', + 0x02FB: 'Clarius Mobile Health Corp.', + 0x02FC: 'Shanghai Frequen Microelectronics Co., Ltd.', + 0x02FD: 'Uwanna, Inc.', + 0x02FE: 'Lierda Science & Technology Group Co., Ltd.', + 0x02FF: 'Silicon Laboratories', + 0x0300: 'World Moto Inc.', + 0x0301: 'Giatec Scientific Inc.', + 0x0302: 'Loop Devices, Inc', + 0x0303: 'IACA electronique', + 0x0304: 'Martians Inc', + 0x0305: 'Swipp ApS', + 0x0306: 'Life Laboratory Inc.', + 0x0307: 'FUJI INDUSTRIAL CO.,LTD.', + 0x0308: 'Surefire, LLC', + 0x0309: 'Dolby Labs', + 0x030A: 'Ellisys', + 0x030B: 'Magnitude Lighting Converters', + 0x030C: 'Hilti AG', + 0x030D: 'Devdata S.r.l.', + 0x030E: 'Deviceworx', + 0x030F: 'Shortcut Labs', + 0x0310: 'SGL Italia S.r.l.', + 0x0311: 'PEEQ DATA', + 0x0312: 'Ducere Technologies Pvt Ltd', + 0x0313: 'DiveNav, Inc.', + 0x0314: 'RIIG AI Sp. z o.o.', + 0x0315: 'Thermo Fisher Scientific', + 0x0316: 'AG Measurematics Pvt. Ltd.', + 0x0317: 'CHUO Electronics CO., LTD.', + 0x0318: 'Aspenta International', + 0x0319: 'Eugster Frismag AG', + 0x031A: 'Amber wireless GmbH', + 0x031B: 'HQ Inc', + 0x031C: 'Lab Sensor Solutions', + 0x031D: 'Enterlab ApS', + 0x031E: 'Eyefi, Inc.', + 0x031F: 'MetaSystem S.p.A.', + 0x0320: 'SONO ELECTRONICS. CO., LTD', + 0x0321: 'Jewelbots', + 0x0322: 'Compumedics Limited', + 0x0323: 'Rotor Bike Components', + 0x0324: 'Astro, Inc.', + 0x0325: 'Amotus Solutions', + 0x0326: 'Healthwear Technologies (Changzhou)Ltd', + 0x0327: 'Essex Electronics', + 0x0328: 'Grundfos A/S', + 0x0329: 'Eargo, Inc.', + 0x032A: 'Electronic Design Lab', + 0x032B: 'ESYLUX', + 0x032C: 'NIPPON SMT.CO.,Ltd', + 0x032D: 'BM innovations GmbH', + 0x032E: 'indoormap', + 0x032F: 'OttoQ Inc', + 0x0330: 'North Pole Engineering', + 0x0331: '3flares Technologies Inc.', + 0x0332: 'Electrocompaniet A.S.', + 0x0333: 'Mul-T-Lock', + 0x0334: 'Corentium AS', + 0x0335: 'Enlighted Inc', + 0x0336: 'GISTIC', + 0x0337: 'AJP2 Holdings, LLC', + 0x0338: 'COBI GmbH', + 0x0339: 'Blue Sky Scientific, LLC', + 0x033A: 'Appception, Inc.', + 0x033B: 'Courtney Thorne Limited', + 0x033C: 'Virtuosys', + 0x033D: 'TPV Technology Limited', + 0x033E: 'Monitra SA', + 0x033F: 'Automation Components, Inc.', + 0x0340: 'Letsense s.r.l.', + 0x0341: 'Etesian Technologies LLC', + 0x0342: 'GERTEC BRASIL LTDA.', + 0x0343: 'Drekker Development Pty. Ltd.', + 0x0344: 'Whirl Inc', + 0x0345: 'Locus Positioning', + 0x0346: 'Acuity Brands Lighting, Inc', + 0x0347: 'Prevent Biometrics', + 0x0348: 'Arioneo', + 0x0349: 'VersaMe', + 0x034A: 'Vaddio', + 0x034B: 'Libratone A/S', + 0x034C: 'HM Electronics, Inc.', + 0x034D: 'TASER International, Inc.', + 0x034E: 'SafeTrust Inc.', + 0x034F: 'Heartland Payment Systems', + 0x0350: 'Bitstrata Systems Inc.', + 0x0351: 'Pieps GmbH', + 0x0352: 'iRiding(Xiamen)Technology Co.,Ltd.', + 0x0353: 'Alpha Audiotronics, Inc.', + 0x0354: 'TOPPAN FORMS CO.,LTD.', + 0x0355: 'Sigma Designs, Inc.', + 0x0356: 'Spectrum Brands, Inc.', + 0x0357: 'Polymap Wireless', + 0x0358: 'MagniWare Ltd.', + 0x0359: 'Novotec Medical GmbH', + 0x035A: 'Medicom Innovation Partner a/s', + 0x035B: 'Matrix Inc.', + 0x035C: 'Eaton Corporation', + 0x035D: 'KYS', + 0x035E: 'Naya Health, Inc.', + 0x035F: 'Acromag', + 0x0360: 'Insulet Corporation', + 0x0361: 'Wellinks Inc.', + 0x0362: 'ON Semiconductor', + 0x0363: 'FREELAP SA', + 0x0364: 'Favero Electronics Srl', + 0x0365: 'BioMech Sensor LLC', + 0x0366: 'BOLTT Sports technologies Private limited', + 0x0367: 'Saphe International', + 0x0368: 'Metormote AB', + 0x0369: 'littleBits', + 0x036A: 'SetPoint Medical', + 0x036B: 'BRControls Products BV', + 0x036C: 'Zipcar', + 0x036D: 'AirBolt Pty Ltd', + 0x036E: 'KeepTruckin Inc', + 0x036F: 'Motiv, Inc.', + 0x0370: 'Wazombi Labs O', + 0x0371: 'ORBCOMM', + 0x0372: 'Nixie Labs, Inc.', + 0x0373: 'AppNearMe Ltd', + 0x0374: 'Holman Industries', + 0x0375: 'Expain AS', + 0x0376: 'Electronic Temperature Instruments Ltd', + 0x0377: 'Plejd AB', + 0x0378: 'Propeller Health', + 0x0379: 'Shenzhen iMCO Electronic Technology Co.,Ltd', + 0x037A: 'Algoria', + 0x037B: 'Apption Labs Inc.', + 0x037C: 'Cronologics Corporation', + 0x037D: 'MICRODIA Ltd.', + 0x037E: 'lulabytes S.L.', + 0x037F: 'Nestec S.A.', + 0x0380: 'LLC MEGA - F service', + 0x0381: 'Sharp Corporation', + 0x0382: 'Precision Outcomes Ltd', + 0x0383: 'Kronos Incorporated', + 0x0384: 'OCOSMOS Co., Ltd.', + 0x0385: 'Embedded Electronic Solutions Ltd. dba e2Solutions', + 0x0386: 'Aterica Inc.', + 0x0387: 'BluStor PMC, Inc.', + 0x0388: 'Kapsch TrafficCom AB', + 0x0389: 'ActiveBlu Corporation', + 0x038A: 'Kohler Mira Limited', + 0x038B: 'Noke', + 0x038C: 'Appion Inc.', + 0x038D: 'Resmed Ltd', + 0x038E: 'Crownstone B.V.', + 0x038F: 'Xiaomi Inc.', + 0x0390: 'INFOTECH s.r.o.', + 0x0391: 'Thingsquare AB', + 0x0392: 'T&D', + 0x0393: 'LAVAZZA S.p.A.', + 0x0394: 'Netclearance Systems, Inc.', + 0x0395: 'SDATAWAY', + 0x0396: 'BLOKS GmbH', + 0x0397: 'LEGO System A/S', + 0x0398: 'Thetatronics Ltd', + 0x0399: 'Nikon Corporation', + 0x039A: 'NeST', + 0x039B: 'South Silicon Valley Microelectronics', + 0x039C: 'ALE International', + 0x039D: 'CareView Communications, Inc.', + 0x039E: 'SchoolBoard Limited', + 0x039F: 'Molex Corporation', + 0x03A0: 'IVT Wireless Limited', + 0x03A1: 'Alpine Labs LLC', + 0x03A2: 'Candura Instruments', + 0x03A3: 'SmartMovt Technology Co., Ltd', + 0x03A4: 'Token Zero Ltd', + 0x03A5: 'ACE CAD Enterprise Co., Ltd. (ACECAD)', + 0x03A6: 'Medela, Inc', + 0x03A7: 'AeroScout', + 0x03A8: 'Esrille Inc.', + 0x03A9: 'THINKERLY SRL', + 0x03AA: 'Exon Sp. z o.o.', + 0x03AB: 'Meizu Technology Co., Ltd.', + 0x03AC: 'Smablo LTD', + 0x03AD: 'XiQ', + 0x03AE: 'Allswell Inc.', + 0x03AF: 'Comm-N-Sense Corp DBA Verigo', + 0x03B0: 'VIBRADORM GmbH', + 0x03B1: 'Otodata Wireless Network Inc.', + 0x03B2: 'Propagation Systems Limited', + 0x03B3: 'Midwest Instruments & Controls', + 0x03B4: 'Alpha Nodus, inc.', + 0x03B5: 'petPOMM, Inc', + 0x03B6: 'Mattel', + 0x03B7: 'Airbly Inc.', + 0x03B8: 'A-Safe Limited', + 0x03B9: 'FREDERIQUE CONSTANT SA', + 0x03BA: 'Maxscend Microelectronics Company Limited', + 0x03BB: 'Abbott Diabetes Care', + 0x03BC: 'ASB Bank Ltd', + 0x03BD: 'amadas', + 0x03BE: 'Applied Science, Inc.', + 0x03BF: 'iLumi Solutions Inc.', + 0x03C0: 'Arch Systems Inc.', + 0x03C1: 'Ember Technologies, Inc.', + 0x03C2: 'Snapchat Inc', + 0x03C3: 'Casambi Technologies Oy', + 0x03C4: 'Pico Technology Inc.', + 0x03C5: 'St. Jude Medical, Inc.', + 0x03C6: 'Intricon', + 0x03C7: 'Structural Health Systems, Inc.', + 0x03C8: 'Avvel International', + 0x03C9: 'Gallagher Group', + 0x03CA: 'In2things Automation Pvt. Ltd.', + 0x03CB: 'SYSDEV Srl', + 0x03CC: 'Vonkil Technologies Ltd', + 0x03CD: 'Wynd Technologies, Inc.', + 0x03CE: 'CONTRINEX S.A.', + 0x03CF: 'MIRA, Inc.', + 0x03D0: 'Watteam Ltd', + 0x03D1: 'Density Inc.', + 0x03D2: 'IOT Pot India Private Limited', + 0x03D3: 'Sigma Connectivity AB', + 0x03D4: 'PEG PEREGO SPA', + 0x03D5: 'Wyzelink Systems Inc.', + 0x03D6: 'Yota Devices LTD', + 0x03D7: 'FINSECUR', + 0x03D8: 'Zen-Me Labs Ltd', + 0x03D9: '3IWare Co., Ltd.', + 0x03DA: 'EnOcean GmbH', + 0x03DB: 'Instabeat, Inc', + 0x03DC: 'Nima Labs', + 0x03DD: 'Andreas Stihl AG & Co. KG', + 0x03DE: 'Nathan Rhoades LLC', + 0x03DF: 'Grob Technologies, LLC', + 0x03E0: 'Actions (Zhuhai) Technology Co., Limited', + 0x03E1: 'SPD Development Company Ltd', + 0x03E2: 'Sensoan Oy', + 0x03E3: 'Qualcomm Life Inc', + 0x03E4: 'Chip-ing AG', + 0x03E5: 'ffly4u', + 0x03E6: 'IoT Instruments Oy', + 0x03E7: 'TRUE Fitness Technology', + 0x03E8: 'Reiner Kartengeraete GmbH & Co. KG.', + 0x03E9: 'SHENZHEN LEMONJOY TECHNOLOGY CO., LTD.', + 0x03EA: 'Hello Inc.', + 0x03EB: 'Evollve Inc.', + 0x03EC: 'Jigowatts Inc.', + 0x03ED: 'BASIC MICRO.COM,INC.', + 0x03EE: 'CUBE TECHNOLOGIES', + 0x03EF: 'foolography GmbH', + 0x03F0: 'CLINK', + 0x03F1: 'Hestan Smart Cooking Inc.', + 0x03F2: 'WindowMaster A/S', + 0x03F3: 'Flowscape AB', + 0x03F4: 'PAL Technologies Ltd', + 0x03F5: 'WHERE, Inc.', + 0x03F6: 'Iton Technology Corp.', + 0x03F7: 'Owl Labs Inc.', + 0x03F8: 'Rockford Corp.', + 0x03F9: 'Becon Technologies Co.,Ltd.', + 0x03FA: 'Vyassoft Technologies Inc', + 0x03FB: 'Nox Medical', + 0x03FC: 'Kimberly-Clark', + 0x03FD: 'Trimble Navigation Ltd.', + 0x03FE: 'Littelfuse', + 0x03FF: 'Withings', + 0x0400: 'i-developer IT Beratung UG', + 0x0402: 'Sears Holdings Corporation', + 0x0403: 'Gantner Electronic GmbH', + 0x0404: 'Authomate Inc', + 0x0405: 'Vertex International, Inc.', + 0x0406: 'Airtago', + 0x0407: 'Swiss Audio SA', + 0x0408: 'ToGetHome Inc.', + 0x0409: 'AXIS', + 0x040A: 'Openmatics', + 0x040B: 'Jana Care Inc.', + 0x040C: 'Senix Corporation', + 0x040D: 'NorthStar Battery Company, LLC', + 0x040E: 'SKF (U.K.) Limited', + 0x040F: 'CO-AX Technology, Inc.', + 0x0410: 'Fender Musical Instruments', + 0x0411: 'Luidia Inc', + 0x0412: 'SEFAM', + 0x0413: 'Wireless Cables Inc', + 0x0414: 'Lightning Protection International Pty Ltd', + 0x0415: 'Uber Technologies Inc', + 0x0416: 'SODA GmbH', + 0x0417: 'Fatigue Science', + 0x0418: 'Alpine Electronics Inc.', + 0x0419: 'Novalogy LTD', + 0x041A: 'Friday Labs Limited', + 0x041B: 'OrthoAccel Technologies', + 0x041C: 'WaterGuru, Inc.', + 0x041D: 'Benning Elektrotechnik und Elektronik GmbH & Co. KG', + 0x041E: 'Dell Computer Corporation', + 0x041F: 'Kopin Corporation', + 0x0420: 'TecBakery GmbH', + 0x0421: 'Backbone Labs, Inc.', + 0x0422: 'DELSEY SA', + 0x0423: 'Chargifi Limited', + 0x0424: 'Trainesense Ltd.', + 0x0425: 'Unify Software and Solutions GmbH & Co. KG', + 0x0426: 'Husqvarna AB', + 0x0427: 'Focus fleet and fuel management inc', + 0x0428: 'SmallLoop, LLC', + 0x0429: 'Prolon Inc.', + 0x042A: 'BD Medical', + 0x042B: 'iMicroMed Incorporated', + 0x042C: 'Ticto N.V.', + 0x042D: 'Meshtech AS', + 0x042E: 'MemCachier Inc.', + 0x042F: 'Danfoss A/S', + 0x0430: 'SnapStyk Inc.', + 0x0431: 'Amyway Corporation', + 0x0432: 'Silk Labs, Inc.', + 0x0433: 'Pillsy Inc.', + 0x0434: 'Hatch Baby, Inc.', + 0x0435: 'Blocks Wearables Ltd.', + 0x0436: 'Drayson Technologies (Europe) Limited', + 0x0437: 'eBest IOT Inc.', + 0x0438: 'Helvar Ltd', + 0x0439: 'Radiance Technologies', + 0x043A: 'Nuheara Limited', + 0x043B: 'Appside co., ltd.', + 0x043C: 'DeLaval', + 0x043D: 'Coiler Corporation', + 0x043E: 'Thermomedics, Inc.', + 0x043F: 'Tentacle Sync GmbH', + 0x0440: 'Valencell, Inc.', + 0x0441: 'iProtoXi Oy', + 0x0442: 'SECOM CO., LTD.', + 0x0443: 'Tucker International LLC', + 0x0444: 'Metanate Limited', + 0x0445: 'Kobian Canada Inc.', + 0x0446: 'NETGEAR, Inc.', + 0x0447: 'Fabtronics Australia Pty Ltd', + 0x0448: 'Grand Centrix GmbH', + 0x0449: '1UP USA.com llc', + 0x044A: 'SHIMANO INC.', + 0x044B: 'Nain Inc.', + 0x044C: 'LifeStyle Lock, LLC', + 0x044D: 'VEGA Grieshaber KG', + 0x044E: 'Xtrava Inc.', + 0x044F: 'TTS Tooltechnic Systems AG & Co. KG', + 0x0450: 'Teenage Engineering AB', + 0x0451: 'Tunstall Nordic AB', + 0x0452: 'Svep Design Center AB', + 0x0453: 'GreenPeak Technologies BV', + 0x0454: 'Sphinx Electronics GmbH & Co KG', + 0x0455: 'Atomation', + 0x0456: 'Nemik Consulting Inc', + 0x0457: 'RF INNOVATION', + 0x0458: 'Mini Solution Co., Ltd.', + 0x0459: 'Lumenetix, Inc', + 0x045A: '2048450 Ontario Inc', + 0x045B: 'SPACEEK LTD', + 0x045C: 'Delta T Corporation', + 0x045D: 'Boston Scientific Corporation', + 0x045E: 'Nuviz, Inc.', + 0x045F: 'Real Time Automation, Inc.', + 0x0460: 'Kolibree', + 0x0461: 'vhf elektronik GmbH', + 0x0462: 'Bonsai Systems GmbH', + 0x0463: 'Fathom Systems Inc.', + 0x0464: 'Bellman & Symfon', + 0x0465: 'International Forte Group LLC', + 0x0466: 'CycleLabs Solutions inc.', + 0x0467: 'Codenex Oy', + 0x0468: 'Kynesim Ltd', + 0x0469: 'Palago AB', + 0x046A: 'INSIGMA INC.', + 0x046B: 'PMD Solutions', + 0x046C: 'Qingdao Realtime Technology Co., Ltd.', + 0x046D: 'BEGA Gantenbrink-Leuchten KG', + 0x046E: 'Pambor Ltd.', + 0xFFFF: 'SPECIAL USE/DEFAULT' +}; + + /***/ }), /***/ 93739: @@ -54033,6 +55184,9 @@ function cpuManufacturer(str) { if (str.indexOf('Xen') >= 0) { result = 'Xen Hypervisor'; } if (str.indexOf('tcg') >= 0) { result = 'QEMU'; } if (str.indexOf('apple') >= 0) { result = 'Apple'; } + if (str.indexOf('sifive') >= 0) { result = 'SiFive'; } + if (str.indexOf('thead') >= 0) { result = 'T-Head'; } + if (str.indexOf('andestech') >= 0) { result = 'Andes Technology'; } return result; } @@ -54216,6 +55370,17 @@ function getCpu() { } } + // Test RISC-V + if (util.getValue(lines, 'architecture') === 'riscv64') { + const linesRiscV = fs.readFileSync('/proc/cpuinfo').toString().split('\n'); + const uarch = util.getValue(linesRiscV, 'uarch') || ''; + if (uarch.indexOf(',') > -1) { + const split = uarch.split(','); + result.manufacturer = cpuManufacturer(split[0]); + result.brand = split[1]; + } + } + // socket type let lines2 = []; exec('export LC_ALL=C; dmidecode –t 4 2>/dev/null | grep "Upgrade: Socket"; unset LC_ALL', function (error2, stdout2) { @@ -59590,52 +60755,14 @@ function inetChecksite(url, callback) { if (callback) { callback(result); } return resolve(result); } - let t = Date.now(); - if (_linux || _freebsd || _openbsd || _netbsd || _darwin || _sunos) { - let args = ['-I', '--connect-timeout', '5', '-m', '5']; - args.push(urlSanitized); - let cmd = 'curl'; - util.execSafe(cmd, args).then((stdout) => { - const lines = stdout.split('\n'); - let statusCode = lines[0] && lines[0].indexOf(' ') >= 0 ? parseInt(lines[0].split(' ')[1], 10) : 404; - result.status = statusCode || 404; - result.ok = (statusCode === 200 || statusCode === 301 || statusCode === 302 || statusCode === 304); - result.ms = (result.ok ? Date.now() - t : null); - if (callback) { callback(result); } - resolve(result); - }); - } - if (_windows) { // if this is stable, this can be used for all OS types - const http = (urlSanitized.startsWith('https:') ? __nccwpck_require__(65692) : __nccwpck_require__(58611)); - try { - http.get(urlSanitized, (res) => { - const statusCode = res.statusCode; - result.status = statusCode || 404; - result.ok = (statusCode === 200 || statusCode === 301 || statusCode === 302 || statusCode === 304); - - if (statusCode !== 200) { - res.resume(); - result.ms = (result.ok ? Date.now() - t : null); - if (callback) { callback(result); } - resolve(result); - } else { - res.on('data', () => { }); - res.on('end', () => { - result.ms = (result.ok ? Date.now() - t : null); - if (callback) { callback(result); } - resolve(result); - }); - } - }).on('error', () => { - if (callback) { callback(result); } - resolve(result); - }); - } catch (err) { - if (callback) { callback(result); } - resolve(result); - } - } + util.checkWebsite(urlSanitized).then((res) => { + result.status = res.statusCode; + result.ok = res.statusCode >= 200 && res.statusCode <= 399;; + result.ms = (result.ok ? res.time : null); + if (callback) { callback(result); } + resolve(result); + }); } else { if (callback) { callback(result); } resolve(result); @@ -60270,15 +61397,16 @@ function memLayout(callback) { const lines = stdout.toString().split('\n'); const size = parseInt(util.getValue(lines, ' Memory:')); const type = util.getValue(lines, ' Type:'); + const manufacturerId = util.getValue(lines, ' Manufacturer:'); if (size && type) { result.push({ size: size * 1024 * 1024 * 1024, bank: '0', type, ecc: false, - clockSpeed: 0, - formFactor: '', - manufacturer: 'Apple', + clockSpeed: null, + formFactor: 'SOC', + manufacturer: getManufacturerDarwin(manufacturerId), partNum: '', serialNum: '', voltageConfigured: null, @@ -60566,33 +61694,42 @@ exports.networkInterfaceDefault = networkInterfaceDefault; function parseLinesWindowsNics(sections, nconfigsections) { let nics = []; for (let i in sections) { - if ({}.hasOwnProperty.call(sections, i)) { - - if (sections[i].trim() !== '') { - - let lines = sections[i].trim().split('\r\n'); - let linesNicConfig = nconfigsections && nconfigsections[i] ? nconfigsections[i].trim().split('\r\n') : []; - let netEnabled = util.getValue(lines, 'NetEnabled', ':'); - let adapterType = util.getValue(lines, 'AdapterTypeID', ':') === '9' ? 'wireless' : 'wired'; - let ifacename = util.getValue(lines, 'Name', ':').replace(/\]/g, ')').replace(/\[/g, '('); - let iface = util.getValue(lines, 'NetConnectionID', ':').replace(/\]/g, ')').replace(/\[/g, '('); - if (ifacename.toLowerCase().indexOf('wi-fi') >= 0 || ifacename.toLowerCase().indexOf('wireless') >= 0) { - adapterType = 'wireless'; - } - if (netEnabled !== '') { - const speed = parseInt(util.getValue(lines, 'speed', ':').trim(), 10) / 1000000; - nics.push({ - mac: util.getValue(lines, 'MACAddress', ':').toLowerCase(), - dhcp: util.getValue(linesNicConfig, 'dhcpEnabled', ':').toLowerCase() === 'true', - name: ifacename, - iface, - netEnabled: netEnabled === 'TRUE', - speed: isNaN(speed) ? null : speed, - operstate: util.getValue(lines, 'NetConnectionStatus', ':') === '2' ? 'up' : 'down', - type: adapterType - }); + try { + if ({}.hasOwnProperty.call(sections, i)) { + + if (sections[i].trim() !== '') { + + let lines = sections[i].trim().split('\r\n'); + let linesNicConfig = null; + try { + linesNicConfig = nconfigsections && nconfigsections[i] ? nconfigsections[i].trim().split('\r\n') : []; + } catch (e) { + util.noop(); + } + let netEnabled = util.getValue(lines, 'NetEnabled', ':'); + let adapterType = util.getValue(lines, 'AdapterTypeID', ':') === '9' ? 'wireless' : 'wired'; + let ifacename = util.getValue(lines, 'Name', ':').replace(/\]/g, ')').replace(/\[/g, '('); + let iface = util.getValue(lines, 'NetConnectionID', ':').replace(/\]/g, ')').replace(/\[/g, '('); + if (ifacename.toLowerCase().indexOf('wi-fi') >= 0 || ifacename.toLowerCase().indexOf('wireless') >= 0) { + adapterType = 'wireless'; + } + if (netEnabled !== '') { + const speed = parseInt(util.getValue(lines, 'speed', ':').trim(), 10) / 1000000; + nics.push({ + mac: util.getValue(lines, 'MACAddress', ':').toLowerCase(), + dhcp: util.getValue(linesNicConfig, 'dhcpEnabled', ':').toLowerCase() === 'true', + name: ifacename, + iface, + netEnabled: netEnabled === 'TRUE', + speed: isNaN(speed) ? null : speed, + operstate: util.getValue(lines, 'NetConnectionStatus', ':') === '2' ? 'up' : 'down', + type: adapterType + }); + } } } + } catch (e) { + util.noop(); } } return nics; @@ -60757,7 +61894,7 @@ function getWindowsIEEE8021x(connectionType, iface, ifaces) { let ifaceSanitized = ''; const s = util.isPrototypePolluted() ? '---' : util.sanitizeShellString(SSID); - const l = util.mathMin(s.length, 2000); + const l = util.mathMin(s.length, 32); for (let i = 0; i <= l; i++) { if (s[i] !== undefined) { @@ -61898,8 +63035,11 @@ function networkConnections(callback) { processes = processes.map((line => { return line.trim().replace(/ +/g, ' '); })); let lines = stdout.toString().split('\n'); lines.shift(); - const header = lines.shift().replace(/ Address/g, '_Address').replace(/ +/g, ' ').split(' '); - let pidPos = header.indexOf('pid'); + let pidPos = 8; + if (lines.length > 1 && lines[0].indexOf('pid') > 0) { + const header = (lines.shift() || '').replace(/ Address/g, '_Address').replace(/ +/g, ' ').split(' '); + pidPos = header.indexOf('pid'); + } lines.forEach(function (line) { line = line.replace(/ +/g, ' ').split(' '); if (line.length >= 8) { @@ -62346,17 +63486,10 @@ function getFQDN() { let fqdn = os.hostname; if (_linux || _darwin) { try { - const stdout = execSync('hostnamectl --json short 2>/dev/null', util.execOptsLinux); - const json = JSON.parse(stdout.toString()); - - fqdn = json['StaticHostname']; + const stdout = execSync('hostname -f 2>/dev/null', util.execOptsLinux); + fqdn = stdout.toString().split(os.EOL)[0]; } catch (e) { - try { - const stdout = execSync('hostname -f 2>/dev/null', util.execOptsLinux); - fqdn = stdout.toString().split(os.EOL)[0]; - } catch (e) { - util.noop(); - } + util.noop(); } } if (_freebsd || _openbsd || _netbsd) { @@ -66868,7 +68001,7 @@ function getCodepage() { if (_linux || _darwin || _freebsd || _openbsd || _netbsd) { if (!codepage) { try { - const stdout = execSync('echo $LANG', util.execOptsLinux); + const stdout = execSync('echo $LANG', execOptsLinux); const lines = stdout.toString().split('\r\n'); const parts = lines[0].split('.'); codepage = parts.length > 1 ? parts[1].trim() : ''; @@ -67445,7 +68578,7 @@ function linuxVersion() { let result = ''; if (_linux) { try { - result = execSync('uname -v', util.execOptsLinux).toString(); + result = execSync('uname -v', execOptsLinux).toString(); } catch (e) { result = ''; } @@ -68772,6 +69905,42 @@ function getAppleModel(key) { }; } +function checkWebsite(url, timeout = 5000) { + const http = ((url.startsWith('https:') || url.indexOf(':443/') > 0 || url.indexOf(':8443/') > 0) ? __nccwpck_require__(65692) : __nccwpck_require__(58611)); + const t = Date.now(); + return new Promise((resolve) => { + const request = http + .get(url, { rejectUnauthorized: false }, function (res) { + res.on('data', () => { }); + res.on('end', () => { + resolve({ + url, + statusCode: res.statusCode, + message: res.statusMessage, + time: Date.now() - t + }); + }); + }) + .on("error", function (e) { + resolve({ + url, + statusCode: 404, + message: e.message, + time: Date.now() - t + }); + }) + .setTimeout(timeout, () => { + request.close(); + resolve({ + url, + statusCode: 408, + message: 'Request Timeout', + time: Date.now() - t + }); + }); + }); +}; + function noop() { } exports.toInt = toInt; @@ -68825,6 +69994,7 @@ exports.WINDIR = WINDIR; exports.getFilesInPath = getFilesInPath; exports.semverCompare = semverCompare; exports.getAppleModel = getAppleModel; +exports.checkWebsite = checkWebsite; /***/ }), @@ -69560,7 +70730,7 @@ function wifiConnections(callback) { const network = networkList.filter(nw => nw.ssid === ssid); let ssidSanitized = ''; const t = util.isPrototypePolluted() ? '---' : util.sanitizeShellString(ssid, true); - const l = util.mathMin(t.length, 2000); + const l = util.mathMin(t.length, 32); for (let i = 0; i <= l; i++) { if (t[i] !== undefined) { ssidSanitized = ssidSanitized + t[i]; @@ -113239,7 +114409,7 @@ module.exports = /*#__PURE__*/JSON.parse('{"name":"@actions/cache","version":"4. /***/ 15460: /***/ ((module) => { -module.exports = {"rE":"5.23.17"}; +module.exports = {"rE":"5.23.23"}; /***/ }) diff --git a/packages/setup-ocaml/package.json b/packages/setup-ocaml/package.json index 6a0b107b..9ae14aa9 100644 --- a/packages/setup-ocaml/package.json +++ b/packages/setup-ocaml/package.json @@ -19,7 +19,7 @@ "@actions/tool-cache": "2.0.1", "cheerio": "1.0.0", "semver": "7.6.3", - "systeminformation": "5.23.17", + "systeminformation": "5.23.23", "yaml": "2.6.1" }, "devDependencies": { diff --git a/yarn.lock b/yarn.lock index 41eed557..515d8e5e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -509,7 +509,7 @@ __metadata: "@vercel/ncc": "npm:0.38.3" cheerio: "npm:1.0.0" semver: "npm:7.6.3" - systeminformation: "npm:5.23.17" + systeminformation: "npm:5.23.23" typescript: "npm:5.7.2" yaml: "npm:2.6.1" languageName: unknown @@ -1035,13 +1035,13 @@ __metadata: linkType: hard "domutils@npm:^3.0.1, domutils@npm:^3.1.0": - version: 3.1.0 - resolution: "domutils@npm:3.1.0" + version: 3.2.1 + resolution: "domutils@npm:3.2.1" dependencies: dom-serializer: "npm:^2.0.0" domelementtype: "npm:^2.3.0" domhandler: "npm:^5.0.3" - checksum: 10c0/342d64cf4d07b8a0573fb51e0a6312a88fb520c7fefd751870bf72fa5fc0f2e0cb9a3958a573610b1d608c6e2a69b8e9b4b40f0bfb8f87a71bce4f180cca1887 + checksum: 10c0/af2a8e28fe51137307d2400c4b6483a3294ac8f784b14fc74b67f3aca3aa53a63144bd9e2bb96f23174c0c1aa680544bf2d77b4cc94e6f90f33314ed65c12a4f languageName: node linkType: hard @@ -1900,12 +1900,12 @@ __metadata: languageName: node linkType: hard -"systeminformation@npm:5.23.17": - version: 5.23.17 - resolution: "systeminformation@npm:5.23.17" +"systeminformation@npm:5.23.23": + version: 5.23.23 + resolution: "systeminformation@npm:5.23.23" bin: systeminformation: lib/cli.js - checksum: 10c0/def66c091be863c89fe9bdcf7880ba8d85a24ebafd68b6acadaac9bd1988831f6f6b5b91cc38767eb3b0ae1e298e5c4e0f9932999521d9df53d4c08f7e2d1a34 + checksum: 10c0/52567cce0404c163bd3e4b7c3674bf062266950ac911f9b14a36732634f5881bd6f72f659f6ef2fc354d5e61942ae431b2bbe5625e6ee4cdc9e12df7e9ec4681 conditions: (os=darwin | os=linux | os=win32 | os=freebsd | os=openbsd | os=netbsd | os=sunos | os=android) languageName: node linkType: hard