device_detector 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,103 @@
1
+ ###############
2
+ # Device Detector - The Universal Device Detection library for parsing User Agents
3
+ #
4
+ # @link http://piwik.org
5
+ # @license http://www.gnu.org/licenses/lgpl.html LGPL v3 or later
6
+ ###############
7
+
8
+ - regex: 'Akregator(?:/(\d+[\.\d]+))?'
9
+ name: 'Akregator'
10
+ version: '$1'
11
+ url: 'http://userbase.kde.org/Akregator'
12
+ type: 'Feed Reader'
13
+
14
+ - regex: 'Apple-PubSub(?:/(\d+[\.\d]+))?'
15
+ name: 'Apple PubSub'
16
+ version: '$1'
17
+ url: 'https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/pubsub.1.html'
18
+ type: 'Feed Reader'
19
+
20
+ - regex: 'FeedDemon(?:/(\d+[\.\d]+))?'
21
+ name: 'FeedDemon'
22
+ version: '$1'
23
+ url: 'http://www.feeddemon.com/'
24
+ type: 'Feed Reader'
25
+
26
+ - regex: 'Feeddler(?:RSS|PRO)(?:[/ ](\d+[\.\d]+))?'
27
+ name: 'Feeddler RSS Reader'
28
+ version: '$1'
29
+ url: 'http://www.chebinliu.com/projects/iphone/feeddler-rss-reader/'
30
+ type: 'Feed Reader App'
31
+
32
+ - regex: 'JetBrains Omea Reader(?:[/ ](\d+[\.\d]+))?'
33
+ name: 'JetBrains Omea Reader'
34
+ version: '$1'
35
+ url: 'http://www.jetbrains.com/omea/reader/'
36
+ type: 'Feed Reader'
37
+
38
+ - regex: 'Liferea(?:[/ ](\d+[\.\d]+))?'
39
+ name: 'Liferea'
40
+ version: '$1'
41
+ url: 'http://liferea.sf.net/'
42
+ type: 'Feed Reader'
43
+
44
+ - regex: 'NetNewsWire(?:[/ ](\d+[\.\d]+))?'
45
+ name: 'NetNewsWire'
46
+ version: '$1'
47
+ url: 'http://netnewswireapp.com/'
48
+ type: 'Feed Reader'
49
+
50
+ - regex: 'NewsBlur (?:iPhone|iPad) App(?: v(\d+[\.\d]+))?'
51
+ name: 'NewsBlur Mobile App'
52
+ version: '$1'
53
+ url: 'http://www.newsblur.com'
54
+ type: 'Feed Reader App'
55
+
56
+ - regex: 'NewsBlur(?:/(\d+[\.\d]+))'
57
+ name: 'NewsBlur'
58
+ version: '$1'
59
+ url: 'http://www.newsblur.com'
60
+ type: 'Feed Reader'
61
+
62
+ - regex: 'newsbeuter(?:[/ ](\d+[\.\d]+))?'
63
+ name: 'Newsbeuter'
64
+ version: '$1'
65
+ url: 'http://www.newsbeuter.org/'
66
+ type: 'Feed Reader'
67
+
68
+ - regex: 'Pulp(?:[/ ](\d+[\.\d]+))?'
69
+ name: 'Pulp'
70
+ version: '$1'
71
+ url: 'http://www.acrylicapps.com/pulp/'
72
+ type: 'Feed Reader App'
73
+
74
+ - regex: 'ReadKit(?:[/ ](\d+[\.\d]+))?'
75
+ name: 'ReadKit'
76
+ version: '$1'
77
+ url: 'http://readkitapp.com/'
78
+ type: 'Feed Reader App'
79
+
80
+ - regex: 'Reeder(?:[/ ](\d+[\.\d]+))?'
81
+ name: 'Reeder'
82
+ version: '$1'
83
+ url: 'http://reederapp.com/'
84
+ type: 'Feed Reader App'
85
+
86
+ - regex: 'RSSBandit(?:[/ ](\d+[\.\d]+))?'
87
+ name: 'RSS Bandit'
88
+ version: '$1'
89
+ url: 'http://www.rssbandit.org)'
90
+ type: 'Feed Reader'
91
+
92
+ - regex: 'RSS Junkie(?:[/ ](\d+[\.\d]+))?'
93
+ name: 'RSS Junkie'
94
+ version: '$1'
95
+ url: 'https://play.google.com/store/apps/details?id=com.bitpowder.rssjunkie'
96
+ type: 'Feed Reader App'
97
+
98
+ - regex: 'RSSOwl(?:[/ ](\d+[\.\d]+))?'
99
+ name: 'RSSOwl'
100
+ version: '$1'
101
+ url: 'http://www.rssowl.org/'
102
+ type: 'Feed Reader'
103
+
@@ -0,0 +1,26 @@
1
+ ###############
2
+ # Device Detector - The Universal Device Detection library for parsing User Agents
3
+ #
4
+ # @link http://piwik.org
5
+ # @license http://www.gnu.org/licenses/lgpl.html LGPL v3 or later
6
+ ###############
7
+
8
+ - regex: 'Wget(?:/(\d+[\.\d]+))?'
9
+ name: 'Wget'
10
+ version: '$1'
11
+
12
+ - regex: '(?:lib)?curl(?:/(\d+[\.\d]+))?'
13
+ name: 'curl'
14
+ version: '$1'
15
+
16
+ - regex: 'python-requests(?:/(\d+[\.\d]+))?'
17
+ name: 'Python Requests'
18
+ version: '$1'
19
+
20
+ - regex: 'Python-urllib(?:/?(\d+[\.\d]+))?'
21
+ name: 'Python urllib'
22
+ version: '$1'
23
+
24
+ - regex: 'Java(?:/?(\d+[\.\d]+))?'
25
+ name: 'Java'
26
+ version: '$1'
@@ -0,0 +1,58 @@
1
+ ###############
2
+ # Device Detector - The Universal Device Detection library for parsing User Agents
3
+ #
4
+ # @link http://piwik.org
5
+ # @license http://www.gnu.org/licenses/lgpl.html LGPL v3 or later
6
+ ###############
7
+
8
+ - regex: 'Banshee(?:[ /]([\d\.]+))?'
9
+ name: 'Banshee'
10
+ version: '$1'
11
+
12
+ - regex: 'Clementine(?:[ /]([\d\.]+))?'
13
+ name: 'Clementine'
14
+ version: '$1'
15
+
16
+ - regex: 'iTunes(?:/([\d\.]+))?'
17
+ name: 'iTunes'
18
+ version: '$1'
19
+
20
+ - regex: 'FlyCast(?:/([\d\.]+))?'
21
+ name: 'FlyCast'
22
+ version: '$1'
23
+
24
+ - regex: 'MediaMonkey(?:[ /](\d+[\.\d]+))?'
25
+ name: 'MediaMonkey'
26
+ version: '$1'
27
+
28
+ - regex: 'NexPlayer(?:/(\d+[\.\d]+))?'
29
+ name: 'NexPlayer'
30
+ version: '$1'
31
+
32
+ - regex: 'Nightingale(?:/([\d\.]+))?'
33
+ name: 'Nightingale'
34
+ version: '$1'
35
+
36
+ - regex: 'QuickTime(?:(?:(?:.+qtver=)|(?:(?: E-)?[\./]))([\d\.]+))?'
37
+ name: 'QuickTime'
38
+ version: '$1'
39
+
40
+ - regex: 'Songbird(?:/([\d\.]+))?'
41
+ name: 'Songbird'
42
+ version: '$1'
43
+
44
+ - regex: 'SubStream(?:/([\d\.]+))?'
45
+ name: 'SubStream'
46
+ version: '$1'
47
+
48
+ - regex: 'VLC(?:/([\d\.]+))?'
49
+ name: 'VLC'
50
+ version: '$1'
51
+
52
+ - regex: 'Windows-Media-Player(?:/(\d+[\.\d]+))?'
53
+ name: 'Windows Media Player'
54
+ version: '$1'
55
+
56
+ - regex: 'XBMC(?:/([\d\.]+))?'
57
+ name: 'XBMC'
58
+ version: '$1'
@@ -0,0 +1,11 @@
1
+ ###############
2
+ # Device Detector - The Universal Device Detection library for parsing User Agents
3
+ #
4
+ # @link http://piwik.org
5
+ # @license http://www.gnu.org/licenses/lgpl.html LGPL v3 or later
6
+ ###############
7
+
8
+ # AFNetworking generic
9
+ - regex: '([^/]+)/(\d+(?:\.\d+)+) \((?:iPhone|iPad); iOS [0-9\.]+; Scale/[0-9\.]+\)'
10
+ name: '$1'
11
+ version: '$2'
@@ -0,0 +1,480 @@
1
+ ###############
2
+ # Device Detector - The Universal Device Detection library for parsing User Agents
3
+ #
4
+ # @link http://piwik.org
5
+ # @license http://www.gnu.org/licenses/lgpl.html LGPL v3 or later
6
+ ###############
7
+
8
+ ##########
9
+ # Tizen
10
+ ##########
11
+ - regex: 'Tizen'
12
+ name: 'Tizen'
13
+ version: ''
14
+
15
+ ##########
16
+ ## Sailfish OS
17
+ ###########
18
+ - regex: 'Sailfish|Jolla'
19
+ name: 'Sailfish OS'
20
+ version: ''
21
+
22
+ ##########
23
+ # YunOS (Android based)
24
+ ##########
25
+ - regex: '(?:Ali)?YunOS[ /]?(\d+[\.\d]+)?'
26
+ name: 'YunOS'
27
+ version: '$1'
28
+
29
+ ##########
30
+ # Android
31
+ ##########
32
+ - regex: '(?:Android|Adr)[ /](?:[a-z]+ )?(\d+[\.\d]+)'
33
+ name: 'Android'
34
+ version: '$1'
35
+
36
+
37
+ - regex: 'Android|Silk-Accelerated=[a-z]{4,5}'
38
+ name: 'Android'
39
+ version: ''
40
+
41
+
42
+ ##########
43
+ # AmigaOS
44
+ ##########
45
+ - regex: 'AmigaOS[ ]?(\d+[\.\d]+)'
46
+ name: 'AmigaOS'
47
+ version: '$1'
48
+
49
+ - regex: 'AmigaOS|AmigaVoyager|Amiga-AWeb'
50
+ name: 'AmigaOS'
51
+ version: ''
52
+
53
+
54
+ ##########
55
+ # Linux
56
+ ##########
57
+ - regex: 'Arch ?Linux(?:[ /\-](\d+[\.\d]+))?'
58
+ name: 'Arch Linux'
59
+ version: '$1'
60
+
61
+ - regex: 'VectorLinux(?: package)?(?:[ /\-](\d+[\.\d]+))?'
62
+ name: 'VectorLinux'
63
+ version: '$1'
64
+
65
+ - regex: 'Linux; .*((?:Debian|Knoppix|Mint|Ubuntu|Kubuntu|Xubuntu|Lubuntu|Fedora|Red Hat|Mandriva|Gentoo|Sabayon|Slackware|SUSE|CentOS|BackTrack))[ /](\d+[\.\d]+)'
66
+ name: '$1'
67
+ version: '$2'
68
+
69
+ - regex: '(Debian|Knoppix|Mint|Ubuntu|Kubuntu|Xubuntu|Lubuntu|Fedora|Red Hat|Mandriva|Gentoo|Sabayon|Slackware|SUSE|CentOS|BackTrack)(?:(?: Enterprise)? Linux)?(?:[ /\-](\d+[\.\d]+))?'
70
+ name: '$1'
71
+ version: '$2'
72
+
73
+ # generic linux match -> end of file
74
+
75
+ ##########
76
+ # Windows Mobile
77
+ ##########
78
+ - regex: 'Windows Phone (?:OS)?[ ]?(\d+[\.\d]+)'
79
+ name: 'Windows Phone'
80
+ version: '$1'
81
+
82
+
83
+ - regex: 'XBLWP7|Windows Phone'
84
+ name: 'Windows Phone'
85
+ version: ''
86
+
87
+ - regex: 'Windows CE'
88
+ name: 'Windows CE'
89
+ version: ''
90
+
91
+
92
+ - regex: '(?:IEMobile|Windows Mobile)(?: (\d+[\.\d]+))?'
93
+ name: 'Windows Mobile'
94
+ version: '$1'
95
+
96
+
97
+ - regex: 'Windows NT 6.2; ARM;'
98
+ name: 'Windows RT'
99
+ version: ''
100
+
101
+ - regex: 'Windows NT 6.3; ARM;'
102
+ name: 'Windows RT 8.1'
103
+ version: ''
104
+
105
+
106
+ ##########
107
+ # webOS
108
+ ##########
109
+ - regex: '(?:webOS|Palm webOS)(?:/(\d+[\.\d]+))?'
110
+ name: 'webOS'
111
+ version: '$1'
112
+
113
+ - regex: '(?:PalmOS|Palm OS)(?:[/ ](\d+[\.\d]+))?|Palm'
114
+ name: 'palmOS'
115
+ version: '$1'
116
+
117
+ - regex: 'Xiino(?:.*v\. (\d+[\.\d]+))?' # palmOS only browser
118
+ name: 'palmOS'
119
+ version: '$1'
120
+
121
+
122
+
123
+ ##########
124
+ # Windows
125
+ ##########
126
+ - regex: 'CYGWIN_NT-10.0|Windows NT 10.0|Windows 10'
127
+ name: 'Windows 10'
128
+ version: '10'
129
+
130
+ - regex: 'CYGWIN_NT-6.4|Windows NT 6.4|Windows 10'
131
+ name: 'Windows 10'
132
+ version: '10'
133
+
134
+ - regex: 'CYGWIN_NT-6.3|Windows NT 6.3|Windows 8.1'
135
+ name: 'Windows 8.1'
136
+ version: '8.1'
137
+
138
+
139
+ - regex: 'CYGWIN_NT-6.2|Windows NT 6.2|Windows 8'
140
+ name: 'Windows 8'
141
+ version: '8'
142
+
143
+
144
+ - regex: 'CYGWIN_NT-6.1|Windows NT 6.1|Windows 7'
145
+ name: 'Windows 7'
146
+ version: '7'
147
+
148
+
149
+ - regex: 'CYGWIN_NT-6.0|Windows NT 6.0|Windows Vista'
150
+ name: 'Windows Vista'
151
+ version: 'Vista'
152
+
153
+
154
+ - regex: 'CYGWIN_NT-5.2|Windows NT 5.2|Windows Server 2003 / XP x64'
155
+ name: 'Windows Server 2003'
156
+ version: 'Server 2003'
157
+
158
+
159
+ - regex: 'CYGWIN_NT-5.1|Windows NT 5.1|Windows XP'
160
+ name: 'Windows XP'
161
+ version: 'XP'
162
+
163
+
164
+ - regex: 'CYGWIN_NT-5.0|Windows NT 5.0|Windows 2000'
165
+ name: 'Windows 2000'
166
+ version: '2000'
167
+
168
+
169
+ - regex: 'CYGWIN_NT-4.0|Windows NT 4.0|WinNT|Windows NT'
170
+ name: 'Windows NT'
171
+ version: 'NT'
172
+
173
+
174
+ - regex: 'CYGWIN_ME-4.90|Win 9x 4.90|Windows ME'
175
+ name: 'Windows ME'
176
+ version: 'ME'
177
+
178
+
179
+ - regex: 'CYGWIN_98-4.10|Win98|Windows 98'
180
+ name: 'Windows 98'
181
+ version: '98'
182
+
183
+
184
+ - regex: 'CYGWIN_95-4.0|Win32|Win95|Windows 95|Windows_95'
185
+ name: 'Windows 95'
186
+ version: '95'
187
+
188
+
189
+ - regex: 'Windows 3.1'
190
+ name: 'Windows 3.1'
191
+ version: '3.1'
192
+
193
+
194
+ - regex: 'Windows'
195
+ name: 'Windows'
196
+ version: ''
197
+
198
+
199
+
200
+ ##########
201
+ # iOS
202
+ ##########
203
+ - regex: '(?:CPU OS|iPhone OS|iOS)[ _](\d+(?:[_\.]\d+)*)'
204
+ name: 'iOS'
205
+ version: '$1'
206
+
207
+ - regex: '(?:iPhone|iPad|iPod)(?:.*Mac OS X.*Version/(\d+\.\d+)|; Opera)?'
208
+ name: 'iOS'
209
+ version: '$1'
210
+
211
+
212
+
213
+ ##########
214
+ # Mac
215
+ ##########
216
+ - regex: 'Mac OS X(?: (?:Version )?(\d+(?:[_\.]\d+)+))?'
217
+ name: 'Mac'
218
+ version: '$1'
219
+
220
+ - regex: 'Mac (\d+(?:[_\.]\d+)+)'
221
+ name: 'Mac'
222
+ version: '$1'
223
+
224
+ - regex: 'Darwin|Macintosh|Mac_PowerPC|PPC|Mac PowerPC'
225
+ name: 'Mac'
226
+ version: ''
227
+
228
+
229
+
230
+ ##########
231
+ # ChromeOS
232
+ ##########
233
+ - regex: 'CrOS [a-z0-9_]+ (\d+[\.\d]+)'
234
+ name: 'Chrome OS'
235
+ version: '$1'
236
+
237
+
238
+
239
+ ##########
240
+ # BlackBerry
241
+ ##########
242
+ - regex: '(?:BB10;.+Version|Black[Bb]erry[0-9a-z]+|Black[Bb]erry.+Version)/(\d+[\.\d]+)'
243
+ name: 'BlackBerry OS'
244
+ version: '$1'
245
+
246
+
247
+ - regex: 'RIM Tablet OS (\d+[\.\d]+)'
248
+ name: 'BlackBerry Tablet OS'
249
+ version: '$1'
250
+
251
+
252
+ - regex: 'RIM Tablet OS|QNX|Play[Bb]ook'
253
+ name: 'BlackBerry Tablet OS'
254
+ version: ''
255
+
256
+
257
+ - regex: 'BlackBerry'
258
+ name: 'BlackBerry OS'
259
+ version: ''
260
+
261
+
262
+ ##########
263
+ # Haiku OS
264
+ ##########
265
+ - regex: 'Haiku'
266
+ name: 'Haiku OS'
267
+ version: ''
268
+
269
+
270
+ ##########
271
+ # BeOS
272
+ ##########
273
+ - regex: 'BeOS'
274
+ name: 'BeOS'
275
+ version: ''
276
+
277
+
278
+
279
+
280
+ ##########
281
+ # Symbian
282
+ ##########
283
+ - regex: 'Symbian/3.+NokiaBrowser/7\.3'
284
+ name: 'Symbian^3'
285
+ version: 'Anna'
286
+
287
+
288
+ - regex: 'Symbian/3.+NokiaBrowser/7\.4'
289
+ name: 'Symbian^3'
290
+ version: 'Belle'
291
+
292
+
293
+ - regex: 'Symbian/3'
294
+ name: 'Symbian^3'
295
+ version: ''
296
+
297
+
298
+ - regex: '(?:Series ?60|SymbOS|S60)(?:[ /]?(\d+[\.\d]+|V\d+))?'
299
+ name: 'Symbian OS Series 60'
300
+ version: '$1'
301
+
302
+
303
+ - regex: 'Series40'
304
+ name: 'Symbian OS Series 40'
305
+ version: ''
306
+
307
+
308
+ - regex: 'SymbianOS/(\d+[\.\d]+)'
309
+ name: 'Symbian OS'
310
+ version: '$1'
311
+
312
+
313
+ - regex: 'MeeGo|WeTab'
314
+ name: 'MeeGo'
315
+ version: ''
316
+
317
+
318
+ - regex: 'Symbian OS|SymbOS'
319
+ name: 'Symbian OS'
320
+ version: ''
321
+
322
+
323
+ - regex: 'Nokia'
324
+ name: 'Symbian'
325
+ version: ''
326
+
327
+
328
+
329
+ ##########
330
+ # Firefox OS
331
+ ##########
332
+ - regex: '(?:Mobile|Tablet);.+Firefox/\d+\.\d+'
333
+ name: 'Firefox OS'
334
+ version: ''
335
+
336
+
337
+ ##########
338
+ # RISC OS
339
+ ##########
340
+ - regex: 'RISC OS(?:-NC)?(?:[ /](\d+[\.\d]+))?'
341
+ name: 'RISC OS'
342
+ version: '$1'
343
+
344
+
345
+ ##########
346
+ # Inferno
347
+ ##########
348
+ - regex: 'Inferno(?:[ /](\d+[\.\d]+))?'
349
+ name: 'Inferno'
350
+ version: '$1'
351
+
352
+
353
+ ##########
354
+ # Bada
355
+ ##########
356
+ - regex: 'bada(?:[ /](\d+[\.\d]+))'
357
+ name: 'Bada'
358
+ version: '$1'
359
+
360
+
361
+ - regex: 'bada'
362
+ name: 'Bada'
363
+ version: ''
364
+
365
+
366
+ ##########
367
+ # Brew
368
+ ##########
369
+ - regex: '(?:Brew MP|BREW|BMP)(?:[ /](\d+[\.\d]+))'
370
+ name: 'Brew'
371
+ version: '$1'
372
+
373
+
374
+ - regex: 'Brew MP|BREW|BMP'
375
+ name: 'Brew'
376
+ version: ''
377
+
378
+
379
+ ##########
380
+ # Web TV
381
+ ##########
382
+ - regex: 'GoogleTV(?:[ /](\d+[\.\d]+))?'
383
+ name: 'Google TV'
384
+ version: '$1'
385
+
386
+
387
+ - regex: 'AppleTV(?:/?(\d+[\.\d]+))?'
388
+ name: 'Apple TV'
389
+ version: '$1'
390
+
391
+
392
+ - regex: 'WebTV/(\d+[\.\d]+)'
393
+ name: 'WebTV'
394
+ version: '$1'
395
+
396
+
397
+
398
+ ##########
399
+ # Unix
400
+ ##########
401
+ - regex: '(?:SunOS|Solaris)(?:[/ ](\d+[\.\d]+))?'
402
+ name: 'Solaris'
403
+ version: '$1'
404
+
405
+ - regex: 'AIX(?:[/ ]?(\d+[\.\d]+))?'
406
+ name: 'AIX'
407
+ version: '$1'
408
+
409
+ - regex: 'HP-UX(?:[/ ]?(\d+[\.\d]+))?'
410
+ name: 'HP-UX'
411
+ version: '$1'
412
+
413
+ - regex: 'FreeBSD(?:[/ ]?(\d+[\.\d]+))?'
414
+ name: 'FreeBSD'
415
+ version: '$1'
416
+
417
+ - regex: 'NetBSD(?:[/ ]?(\d+[\.\d]+))?'
418
+ name: 'NetBSD'
419
+ version: '$1'
420
+
421
+ - regex: 'OpenBSD(?:[/ ]?(\d+[\.\d]+))?'
422
+ name: 'OpenBSD'
423
+ version: '$1'
424
+
425
+ - regex: 'DragonFly(?:[/ ]?(\d+[\.\d]+))?'
426
+ name: 'DragonFly'
427
+ version: '$1'
428
+
429
+ - regex: 'Syllable(?:[/ ]?(\d+[\.\d]+))?'
430
+ name: 'Syllable'
431
+ version: '$1'
432
+
433
+ - regex: 'IRIX(?:[/ ]?(\d+[\.\d]+))'
434
+ name: 'IRIX'
435
+ version: '$1'
436
+
437
+ - regex: 'OSF1(?:[/ ]?v?(\d+[\.\d]+))?'
438
+ name: 'OSF1'
439
+ version: '$1'
440
+
441
+ ##########
442
+ # Gaming Console
443
+ ##########
444
+ - regex: 'Nintendo Wii'
445
+ name: 'Nintendo'
446
+ version: 'Wii'
447
+
448
+ - regex: 'PlayStation ?([3|4])'
449
+ name: 'PlayStation'
450
+ version: '$1'
451
+
452
+ - regex: 'Xbox|KIN\.(?:One|Two)'
453
+ name: 'Xbox'
454
+ version: '360'
455
+
456
+ ##########
457
+ # Mobile Gaming Console
458
+ ##########
459
+ - regex: 'Nitro|Nintendo ([3]?DS[i]?)'
460
+ name: 'Nintendo Mobile'
461
+ version: '$1'
462
+
463
+ - regex: 'PlayStation ((?:Portable|Vita))'
464
+ name: 'PlayStation Portable'
465
+ version: '$1'
466
+
467
+ ##########
468
+ # IBM
469
+ ##########
470
+ - regex: 'OS/2'
471
+ name: 'OS/2'
472
+ version: ''
473
+
474
+ ###########
475
+ # Linux (Generic)
476
+ ###########
477
+ - regex: 'Linux[^a-z]'
478
+ name: 'GNU/Linux'
479
+ version: ''
480
+