[
	[ "case", "ACTION", {
		"add": [
			[ "if",
				[ "and",
					[ "has", "MAJOR" ],
					[ "has", "MINOR" ]
				],
				[
					[ "if",
						[ "eq", "DEVNAME", "null" ],
						[
							[ "makedev", "/dev/%DEVNAME%", "0666" ],
							[ "exec", "/bin/ln", "-s", "/proc/self/fd", "/dev/fd" ],
							[ "exec", "/bin/ln", "-s", "/proc/self/fd/0", "/dev/stdin" ],
							[ "exec", "/bin/ln", "-s", "/proc/self/fd/1", "/dev/stdout" ],
							[ "exec", "/bin/ln", "-s", "/proc/self/fd/2", "/dev/stderr" ],
							[ "return" ]
						]
					],
					[ "if",
						[ "eq", "DEVNAME",
							[ "full", "ptmx", "zero", "tty", "net", "random", "urandom" ]
						],
						[
							[ "makedev", "/dev/%DEVNAME%", "0666" ],
							[ "return" ]
						]
					],
					[ "if",
						[ "regex", "DEVNAME", "^snd" ],
						[ "makedev", "/dev/%DEVNAME%", "0660", "audio" ]
					],
					[ "if",
						[ "regex", "DEVNAME", "^tty" ],
						[ "makedev", "/dev/%DEVNAME%", "0660", "dialout" ]
					],
					[ "if",
						[ "has", "DEVNAME" ],
						[ "makedev", "/dev/%DEVNAME%", "0600" ]
					]
				]
			],
			[ "if",
				[ "has", "FIRMWARE" ],
				[
					[ "exec", "/sbin/hotplug-call", "%SUBSYSTEM%" ],
					[ "load-firmware", "/lib/firmware" ],
					[ "return" ]
				]
			],
			[ "if",
				[ "regex", "DEVNAME", "^ttyGS" ],
				[ "start-console", "%DEVNAME%" ]
			]
		],
		"remove" : [
			[ "if",
				[ "and",
					[ "has", "DEVNAME" ],
					[ "has", "MAJOR" ],
					[ "has", "MINOR" ]
				],
				[ "rm", "/dev/%DEVNAME%" ]
			]
		]
	} ],
	[ "if",
		[ "and",
			[ "has", "BUTTON" ],
			[ "eq", "SUBSYSTEM", "button" ]
		],
		[ "button", "/etc/rc.button/%BUTTON%" ]
	],
	[ "if",
		[ "and",
			[ "eq", "SUBSYSTEM", "usb-serial" ],
			[ "regex", "DEVNAME",
				[ "^ttyUSB", "^ttyACM" ]
			]
		],
		[ "exec", "/sbin/hotplug-call", "tty" ],
		[ "if",
			[ "isdir", "/etc/hotplug.d/%SUBSYSTEM%" ],
			[ "exec", "/sbin/hotplug-call", "%SUBSYSTEM%" ]
		]
	]
]
