From mboxrd@z Thu Jan 1 00:00:00 1970 From: Scott James Remnant Date: Wed, 07 Dec 2005 17:12:59 +0000 Subject: [PATCH] The Ubuntu Collection Message-Id: <1133975579.2805.21.camel@localhost.localdomain> MIME-Version: 1 Content-Type: multipart/mixed; boundary="=-msmqrnVbFY6pmp2i5Bxs" List-Id: To: linux-hotplug@vger.kernel.org --=-msmqrnVbFY6pmp2i5Bxs Content-Type: multipart/mixed; boundary="=-pEPDdX/Y4kFuS4qGjcDg" --=-pEPDdX/Y4kFuS4qGjcDg Content-Type: text/plain Content-Transfer-Encoding: quoted-printable Attached are the current set of Ubuntu patches to udev, as of 077. The rest of this e-mail is a brief description of each one, and why we have it. 01-lib-udev.patch This arranges for the various extras programs to be installed directly into /lib/udev/ rather than into /sbin/. Pretty sweet and obvious. 02-no-sepol.patch The libsepol dependency seems to only exist on RedHat, with the versions of the SELinux libraries we have in Ubuntu, there wasn't any need for it. Removing it saved us from having to security audit libsepol as part of our main promotion procedure. 10-udev-conf.patch We've given up trying to support people who want their udev_root and udev_rules to be in different places; with initramfs, changing this would mean regenerating the initramfs as well. We decided to just drop mention of the two options as a safety catch against pedocide. 40-udevplug.patch This adds an extra tool to udev called "udevplug", it's basically a binary that handles tickling uevents and waiting for udevd to finish processing them. The command-line options let you choose exactly what to tickle (or just everything), and do things like filter by sysfs attributes. (manpage included) 50-result-whitespace.patch In a few places udev calls the replace_untrusted_chars() function on things like program output; it treats \t, \r, \n, and other whitespace characters (other than space itself) as illegal and replaces them with an underscore. This patch slightly alters that behaviour, it leaves them as untrusted, but instead replaces those of whitespace-ilk with an ordinary space, instead of an underscore.=20 We use this because various helpers output a newline-separated list of modules, and we wanted to pass that $result straight to modprobe. 55-run-program.patch This reduces the severity of the "exec of program failed" error IF the reason the program couldn't be run was because it didn't exist yet. With /dev/.udev/failed, helpers not existing yet isn't serious, it just means they need to be retried later and there's no point screaming too loudly about it. 60-firmware-hunt.patch This modifies the firmware_helper extra to also look in /lib/firmware/$KERNEL_VERSION which is where we put firmware that comes with our kernel images. 80-extras-dvb_device_name.patch This adds a dvb_device_name helper that's pretty much equivalent to the shell code passed around between the distros, just rather faster and usable in busybox environments. As with all our extras, includes a manpage. 80-extras-ide_media.patch Adds an ide_media helper that looks up the media type under /proc, again somewhat similar to the shell code but this also will wait for the node to appear under /proc, avoiding a race condition. 80-extras-pnp_modules.patch Another binary helper replacing shell code, outputs a list of module aliases for a pnp device. 80-extras-storage_enum.patch An odd one, we use this in the installer to make the devfs-like /dev/discs, /dev/cdroms and /dev/floppy directories which the debian-installer we use still requires. We didn't use the existing devfs scripts because they don't cope well with everything getting plugged at once, this is reasonably safe against that and ensures that each gets a unique number. 80-extras-usb_device_name.patch Back to the binary helpers again, this one is for the usb_device subsystem and again just replaces equivalent shell code other distros use. 80-extras-vio_type.patch Binary helper to look up the type of a vio device under /proc, and like ide_media wait for the node to appear to avoid races. Scott --=20 Scott James Remnant scott@ubuntu.com --=-pEPDdX/Y4kFuS4qGjcDg Content-Disposition: attachment; filename=01-lib-udev.patch Content-Type: text/x-patch; name=01-lib-udev.patch; charset=UTF-8 Content-Transfer-Encoding: base64 ZGlmZiAtcnVOcCB1ZGV2LTA3Nn4vZXh0cmFzL2F0YV9pZC9NYWtlZmlsZSB1ZGV2LTA3Ni9leHRy YXMvYXRhX2lkL01ha2VmaWxlDQotLS0gdWRldi0wNzZ+L2V4dHJhcy9hdGFfaWQvTWFrZWZpbGUJ MjAwNS0xMS0yMiAxNjozNDo1NS4wMDAwMDAwMDAgKzAwMDANCisrKyB1ZGV2LTA3Ni9leHRyYXMv YXRhX2lkL01ha2VmaWxlCTIwMDUtMTEtMjIgMTg6Mzc6NTUuNzU3NTgxNTIwICswMDAwDQpAQCAt NDgsMTEgKzQ4LDExIEBAIGNsZWFuOg0KIC5QSE9OWTogY2xlYW4NCiANCiBpbnN0YWxsLWJpbjog YWxsDQotCSQoSU5TVEFMTF9QUk9HUkFNKSAkKFBST0cpICQoREVTVERJUikkKHNiaW5kaXIpLyQo UFJPRykNCisJJChJTlNUQUxMX1BST0dSQU0pIC1EICQoUFJPRykgJChERVNURElSKSQobGlidWRl dmRpcikvJChQUk9HKQ0KIC5QSE9OWTogaW5zdGFsbC1iaW4NCiANCiB1bmluc3RhbGwtYmluOg0K LQktIHJtICQoREVTVERJUikkKHNiaW5kaXIpLyQoUFJPRykNCisJLSBybSAkKERFU1RESVIpJChs aWJ1ZGV2ZGlyKS8kKFBST0cpDQogLlBIT05ZOiB1bmluc3RhbGwtYmluDQogDQogaW5zdGFsbC1t YW46DQpkaWZmIC1ydU5wIHVkZXYtMDc2fi9leHRyYXMvY2Ryb21faWQvTWFrZWZpbGUgdWRldi0w NzYvZXh0cmFzL2Nkcm9tX2lkL01ha2VmaWxlDQotLS0gdWRldi0wNzZ+L2V4dHJhcy9jZHJvbV9p ZC9NYWtlZmlsZQkyMDA1LTExLTIyIDE2OjM0OjU1LjAwMDAwMDAwMCArMDAwMA0KKysrIHVkZXYt MDc2L2V4dHJhcy9jZHJvbV9pZC9NYWtlZmlsZQkyMDA1LTExLTIyIDE4OjM3OjU1Ljc1ODU4MTM2 OCArMDAwMA0KQEAgLTQ4LDExICs0OCwxMSBAQCBjbGVhbjoNCiAuUEhPTlk6IGNsZWFuDQogDQog aW5zdGFsbC1iaW46IGFsbA0KLQkkKElOU1RBTExfUFJPR1JBTSkgJChQUk9HKSAkKERFU1RESVIp JChzYmluZGlyKS8kKFBST0cpDQorCSQoSU5TVEFMTF9QUk9HUkFNKSAtRCAkKFBST0cpICQoREVT VERJUikkKGxpYnVkZXZkaXIpLyQoUFJPRykNCiAuUEhPTlk6IGluc3RhbGwtYmluDQogDQogdW5p bnN0YWxsLWJpbjoNCi0JLSBybSAkKERFU1RESVIpJChzYmluZGlyKS8kKFBST0cpDQorCS0gcm0g JChERVNURElSKSQobGlidWRldmRpcikvJChQUk9HKQ0KIC5QSE9OWTogdW5pbnN0YWxsLWJpbg0K IA0KIGluc3RhbGwtbWFuOg0KZGlmZiAtcnVOcCB1ZGV2LTA3Nn4vZXh0cmFzL2Rhc2RfaWQvTWFr ZWZpbGUgdWRldi0wNzYvZXh0cmFzL2Rhc2RfaWQvTWFrZWZpbGUNCi0tLSB1ZGV2LTA3Nn4vZXh0 cmFzL2Rhc2RfaWQvTWFrZWZpbGUJMjAwNS0xMS0yMiAxNjozNDo1NS4wMDAwMDAwMDAgKzAwMDAN CisrKyB1ZGV2LTA3Ni9leHRyYXMvZGFzZF9pZC9NYWtlZmlsZQkyMDA1LTExLTIyIDE4OjM3OjU1 Ljc1OTU4MTIxNiArMDAwMA0KQEAgLTQ4LDExICs0OCwxMSBAQCBjbGVhbjoNCiAuUEhPTlk6IGNs ZWFuDQogDQogaW5zdGFsbC1iaW46IGFsbA0KLQkkKElOU1RBTExfUFJPR1JBTSkgJChQUk9HKSAk KERFU1RESVIpJChzYmluZGlyKS8kKFBST0cpDQorCSQoSU5TVEFMTF9QUk9HUkFNKSAtRCAkKFBS T0cpICQoREVTVERJUikkKGxpYnVkZXZkaXIpLyQoUFJPRykNCiAuUEhPTlk6IGluc3RhbGwtYmlu DQogDQogdW5pbnN0YWxsLWJpbjoNCi0JLSBybSAkKERFU1RESVIpJChzYmluZGlyKS8kKFBST0cp DQorCS0gcm0gJChERVNURElSKSQobGlidWRldmRpcikvJChQUk9HKQ0KIC5QSE9OWTogdW5pbnN0 YWxsLWJpbg0KIA0KIGluc3RhbGwtbWFuOg0KZGlmZiAtcnVOcCB1ZGV2LTA3Nn4vZXh0cmFzL2Vk ZF9pZC9NYWtlZmlsZSB1ZGV2LTA3Ni9leHRyYXMvZWRkX2lkL01ha2VmaWxlDQotLS0gdWRldi0w NzZ+L2V4dHJhcy9lZGRfaWQvTWFrZWZpbGUJMjAwNS0xMS0yMiAxNjozNDo1NS4wMDAwMDAwMDAg KzAwMDANCisrKyB1ZGV2LTA3Ni9leHRyYXMvZWRkX2lkL01ha2VmaWxlCTIwMDUtMTEtMjIgMTg6 Mzc6NTUuNzYxNTgwOTEyICswMDAwDQpAQCAtNDgsMTEgKzQ4LDExIEBAIGNsZWFuOg0KIC5QSE9O WTogY2xlYW4NCiANCiBpbnN0YWxsLWJpbjogYWxsDQotCSQoSU5TVEFMTF9QUk9HUkFNKSAkKFBS T0cpICQoREVTVERJUikkKHNiaW5kaXIpLyQoUFJPRykNCisJJChJTlNUQUxMX1BST0dSQU0pIC1E ICQoUFJPRykgJChERVNURElSKSQobGlidWRldmRpcikvJChQUk9HKQ0KIC5QSE9OWTogaW5zdGFs bC1iaW4NCiANCiB1bmluc3RhbGwtYmluOg0KLQktIHJtICQoREVTVERJUikkKHNiaW5kaXIpLyQo UFJPRykNCisJLSBybSAkKERFU1RESVIpJChsaWJ1ZGV2ZGlyKS8kKFBST0cpDQogLlBIT05ZOiB1 bmluc3RhbGwtYmluDQogDQogaW5zdGFsbC1tYW46DQpkaWZmIC1ydU5wIHVkZXYtMDc2fi9leHRy YXMvc2NzaV9pZC9NYWtlZmlsZSB1ZGV2LTA3Ni9leHRyYXMvc2NzaV9pZC9NYWtlZmlsZQ0KLS0t IHVkZXYtMDc2fi9leHRyYXMvc2NzaV9pZC9NYWtlZmlsZQkyMDA1LTExLTIyIDE2OjM0OjU1LjAw MDAwMDAwMCArMDAwMA0KKysrIHVkZXYtMDc2L2V4dHJhcy9zY3NpX2lkL01ha2VmaWxlCTIwMDUt MTEtMjIgMTg6Mzc6NTUuNzY2NTgwMTUyICswMDAwDQpAQCAtNjcsMTEgKzY3LDExIEBAIGNsZWFu Og0KIC5QSE9OWTogY2xlYW4NCiANCiBpbnN0YWxsLWJpbjogYWxsDQotCSQoSU5TVEFMTF9QUk9H UkFNKSAkKFBST0cpICQoREVTVERJUikkKHNiaW5kaXIpLyQoUFJPRykNCisJJChJTlNUQUxMX1BS T0dSQU0pIC1EICQoUFJPRykgJChERVNURElSKSQobGlidWRldmRpcikvJChQUk9HKQ0KIC5QSE9O WTogaW5zdGFsbC1iaW4NCiANCiB1bmluc3RhbGwtYmluOg0KLQktIHJtICQoREVTVERJUikkKHNi aW5kaXIpLyQoUFJPRykNCisJLSBybSAkKERFU1RESVIpJChsaWJ1ZGV2ZGlyKS8kKFBST0cpDQog LlBIT05ZOiB1bmluc3RhbGwtYmluDQogDQogaW5zdGFsbC1tYW46DQpkaWZmIC1ydU5wIHVkZXYt MDc2fi9leHRyYXMvdXNiX2lkL01ha2VmaWxlIHVkZXYtMDc2L2V4dHJhcy91c2JfaWQvTWFrZWZp bGUNCi0tLSB1ZGV2LTA3Nn4vZXh0cmFzL3VzYl9pZC9NYWtlZmlsZQkyMDA1LTExLTIyIDE2OjM0 OjU1LjAwMDAwMDAwMCArMDAwMA0KKysrIHVkZXYtMDc2L2V4dHJhcy91c2JfaWQvTWFrZWZpbGUJ MjAwNS0xMS0yMiAxODozNzo1NS43Njg1Nzk4NDggKzAwMDANCkBAIC00OCwxMSArNDgsMTEgQEAg Y2xlYW46DQogLlBIT05ZOiBjbGVhbg0KIA0KIGluc3RhbGwtYmluOiBhbGwNCi0JJChJTlNUQUxM X1BST0dSQU0pICQoUFJPRykgJChERVNURElSKSQoc2JpbmRpcikvJChQUk9HKQ0KKwkkKElOU1RB TExfUFJPR1JBTSkgLUQgJChQUk9HKSAkKERFU1RESVIpJChsaWJ1ZGV2ZGlyKS8kKFBST0cpDQog LlBIT05ZOiBpbnN0YWxsLWJpbg0KIA0KIHVuaW5zdGFsbC1iaW46DQotCS0gcm0gJChERVNURElS KSQoc2JpbmRpcikvJChQUk9HKQ0KKwktIHJtICQoREVTVERJUikkKGxpYnVkZXZkaXIpLyQoUFJP RykNCiAuUEhPTlk6IHVuaW5zdGFsbC1iaW4NCiANCiBpbnN0YWxsLW1hbjoNCmRpZmYgLXJ1TnAg dWRldi0wNzZ+L2V4dHJhcy92b2x1bWVfaWQvTWFrZWZpbGUgdWRldi0wNzYvZXh0cmFzL3ZvbHVt ZV9pZC9NYWtlZmlsZQ0KLS0tIHVkZXYtMDc2fi9leHRyYXMvdm9sdW1lX2lkL01ha2VmaWxlCTIw MDUtMTEtMjIgMTY6MzQ6NTUuMDAwMDAwMDAwICswMDAwDQorKysgdWRldi0wNzYvZXh0cmFzL3Zv bHVtZV9pZC9NYWtlZmlsZQkyMDA1LTExLTIyIDE4OjM3OjU1Ljc2OTU3OTY5NiArMDAwMA0KQEAg LTUxLDExICs1MSwxMSBAQCBjbGVhbjoNCiAuUEhPTlk6IGNsZWFuDQogDQogaW5zdGFsbC1iaW46 IGFsbA0KLQkkKElOU1RBTExfUFJPR1JBTSkgJChQUk9HKSAkKERFU1RESVIpJChzYmluZGlyKS8k KFBST0cpDQorCSQoSU5TVEFMTF9QUk9HUkFNKSAtRCAkKFBST0cpICQoREVTVERJUikkKGxpYnVk ZXZkaXIpLyQoUFJPRykNCiAuUEhPTlk6IGluc3RhbGwtYmluDQogDQogdW5pbnN0YWxsLWJpbjoN Ci0JLSBybSAkKERFU1RESVIpJChzYmluZGlyKS8kKFBST0cpDQorCS0gcm0gJChERVNURElSKSQo bGlidWRldmRpcikvJChQUk9HKQ0KIC5QSE9OWTogdW5pbnN0YWxsLWJpbg0KIA0KIGluc3RhbGwt bWFuOg0K --=-pEPDdX/Y4kFuS4qGjcDg Content-Disposition: attachment; filename=02-no-sepol.patch Content-Type: text/x-patch; name=02-no-sepol.patch; charset=UTF-8 Content-Transfer-Encoding: base64 ZGlmZiAtcnVOcCB1ZGV2LTA3N34vTWFrZWZpbGUgdWRldi0wNzcvTWFrZWZpbGUNCi0tLSB1ZGV2 LTA3N34vTWFrZWZpbGUJMjAwNS0xMi0wNCAwMjowMTo0OC4wMDAwMDAwMDAgKzAwMDANCisrKyB1 ZGV2LTA3Ny9NYWtlZmlsZQkyMDA1LTEyLTA1IDE3OjExOjIzLjQ2NDIwNzI1MCArMDAwMA0KQEAg LTE3OCw3ICsxNzgsNyBAQCBlbmRpZg0KIA0KIGlmZXEgKCQoc3RyaXAgJChVU0VfU0VMSU5VWCkp LHRydWUpDQogCVVERVZfT0JKUyArPSB1ZGV2X3NlbGludXgubw0KLQlMSUJfT0JKUyArPSAtbHNl bGludXggLWxzZXBvbA0KKwlMSUJfT0JKUyArPSAtbHNlbGludXgNCiAJQ0ZMQUdTICs9IC1EVVNF X1NFTElOVVgNCiBlbmRpZg0KIA0K --=-pEPDdX/Y4kFuS4qGjcDg Content-Disposition: attachment; filename=10-udev-conf.patch Content-Type: text/x-patch; name=10-udev-conf.patch; charset=UTF-8 Content-Transfer-Encoding: base64 ZGlmZiAtcnVOcCB1ZGV2LTA3Nn4vZXRjL3VkZXYvdWRldi5jb25mLmluIHVkZXYtMDc2L2V0Yy91 ZGV2L3VkZXYuY29uZi5pbg0KLS0tIHVkZXYtMDc2fi9ldGMvdWRldi91ZGV2LmNvbmYuaW4JMjAw NS0xMS0yMiAxNjozNDo1NS4wMDAwMDAwMDAgKzAwMDANCisrKyB1ZGV2LTA3Ni9ldGMvdWRldi91 ZGV2LmNvbmYuaW4JMjAwNS0xMS0yNCAxODozOToxOS45NDY0NzM0ODggKzAwMDANCkBAIC0xLDEx ICsxLDUgQEANCiAjIHVkZXYuY29uZg0KIA0KLSMgV2hlcmUgaW4gdGhlIGZpbGVzeXN0ZW0gdG8g cGxhY2UgdGhlIGRldmljZSBub2Rlcy4NCi11ZGV2X3Jvb3Q9IkB1ZGV2ZGlyQCINCi0NCi0jIFRo ZSBuYW1lIGFuZCBsb2NhdGlvbiBvZiB0aGUgdWRldiBydWxlcyBmaWxlKHMpLg0KLXVkZXZfcnVs ZXM9IkBjb25maWdkaXJAL3J1bGVzLmQiDQotDQogIyBUaGUgaW5pdGlhbCBzeXNsb2coMykgcHJp b3JpdHk6ICJlcnIiLCAiaW5mbyIsICJkZWJ1ZyIgb3IgaXRzDQogIyBudW1lcmljYWwgZXF1aXZh bGVudC4gRm9yIHJ1bnRpbWUgZGVidWdnaW5nLCB0aGUgZGFlbW9ucyBpbnRlcm5hbA0KICMgc3Rh dGUgY2FuIGJlIGNoYW5nZWQgd2l0aDogInVkZXZjb250cm9sIGxvZ19wcmlvcml0eT08dmFsdWU+ Ii4NCg== --=-pEPDdX/Y4kFuS4qGjcDg Content-Disposition: attachment; filename=40-udevplug.patch Content-Type: text/x-patch; name=40-udevplug.patch; charset=UTF-8 Content-Transfer-Encoding: base64 ZGlmZiAtcnVOcCB1ZGV2LTA3N34vTWFrZWZpbGUgdWRldi0wNzcvTWFrZWZpbGUNCi0tLSB1ZGV2 LTA3N34vTWFrZWZpbGUJMjAwNS0xMi0wNSAxNzoxMjoxNy4yOTU1NzE1MDAgKzAwMDANCisrKyB1 ZGV2LTA3Ny9NYWtlZmlsZQkyMDA1LTEyLTA1IDE3OjEyOjI4LjI2MDI1Njc1MCArMDAwMA0KQEAg LTU0LDcgKzU0LDggQEAgUFJPR1JBTVMgPSBcDQogCXVkZXZtb25pdG9yCQkJXA0KIAl1ZGV2aW5m bwkJCVwNCiAJdWRldnRlc3QJCQlcDQotCXVkZXZzdGFydA0KKwl1ZGV2c3RhcnQJCQlcDQorCXVk ZXZwbHVnDQogDQogSEVBREVSUyA9IFwNCiAJdWRldi5oCQkJCVwNCkBAIC04OCw5ICs4OSwxMSBA QCBNQU5fUEFHRVMgPSBcDQogCXVkZXZzZW5kLjgJCQlcDQogCXVkZXZ0ZXN0LjgJCQlcDQogCXVk ZXZpbmZvLjgJCQlcDQotCXVkZXZzdGFydC44DQorCXVkZXZzdGFydC44CQkJXA0KKwl1ZGV2cGx1 Zy44DQogDQogU1lTRlNfT0JKUyA9IFwNCisJbGlic3lzZnMvc3lzZnNfYnVzLm8JCVwNCiAJbGli c3lzZnMvc3lzZnNfY2xhc3MubwkJXA0KIAlsaWJzeXNmcy9zeXNmc19kZXZpY2UubwkJXA0KIAls aWJzeXNmcy9zeXNmc19kaXIubwkJXA0KQEAgLTMwMyw2ICszMDYsNyBAQCBpbnN0YWxsLW1hbjoN CiAJJChJTlNUQUxMX0RBVEEpIC1EIHVkZXZkLjggJChERVNURElSKSQobWFuZGlyKS9tYW44L3Vk ZXZkLjgNCiAJJChJTlNUQUxMX0RBVEEpIC1EIHVkZXZzZW5kLjggJChERVNURElSKSQobWFuZGly KS9tYW44L3VkZXZzZW5kLjgNCiAJJChJTlNUQUxMX0RBVEEpIC1EIHVkZXZtb25pdG9yLjggJChE RVNURElSKSQobWFuZGlyKS9tYW44L3VkZXZtb25pdG9yLjgNCisJJChJTlNUQUxMX0RBVEEpIC1E IHVkZXZwbHVnLjggJChERVNURElSKSQobWFuZGlyKS9tYW44L3VkZXZwbHVnLjgNCiAJLSBsbiAt ZiAtcyB1ZGV2ZC44ICQoREVTVERJUikkKG1hbmRpcikvbWFuOC91ZGV2Y29udHJvbC44DQogCUBl eHRyYXM9IiQoRVhUUkFTKSI7IGZvciB0YXJnZXQgaW4gJCRleHRyYXM7IGRvIFwNCiAJCWVjaG8g JCR0YXJnZXQ7IFwNCkBAIC0zMTksNiArMzIzLDcgQEAgdW5pbnN0YWxsLW1hbjoNCiAJLSBybSAt ZiAkKERFU1RESVIpJChtYW5kaXIpL21hbjgvdWRldm1vbml0b3IuOA0KIAktIHJtIC1mICQoREVT VERJUikkKG1hbmRpcikvbWFuOC91ZGV2c2VuZC44DQogCS0gcm0gLWYgJChERVNURElSKSQobWFu ZGlyKS9tYW44L3VkZXZjb250cm9sLjgNCisJLSBybSAtZiAkKERFU1RESVIpJChtYW5kaXIpL21h bjgvdWRldnBsdWcuOA0KIAlAZXh0cmFzPSIkKEVYVFJBUykiOyBmb3IgdGFyZ2V0IGluICQkZXh0 cmFzOyBkbyBcDQogCQllY2hvICQkdGFyZ2V0OyBcDQogCQkkKE1BS0UpIC1DICQkdGFyZ2V0ICRA IHx8IGV4aXQgMTsgXA0KQEAgLTMzNSw2ICszNDAsNyBAQCBpbnN0YWxsLWJpbjoNCiAJJChJTlNU QUxMX1BST0dSQU0pIC1EIHVkZXZpbmZvICQoREVTVERJUikkKHVzcmJpbmRpcikvdWRldmluZm8N CiAJJChJTlNUQUxMX1BST0dSQU0pIC1EIHVkZXZ0ZXN0ICQoREVTVERJUikkKHVzcmJpbmRpcikv dWRldnRlc3QNCiAJJChJTlNUQUxMX1BST0dSQU0pIC1EIHVkZXZzdGFydCAkKERFU1RESVIpJChz YmluZGlyKS91ZGV2c3RhcnQNCisJJChJTlNUQUxMX1BST0dSQU0pIC1EIHVkZXZwbHVnICQoREVT VERJUikkKHNiaW5kaXIpL3VkZXZwbHVnDQogCUBleHRyYXM9IiQoRVhUUkFTKSI7IGZvciB0YXJn ZXQgaW4gJCRleHRyYXM7IGRvIFwNCiAJCWVjaG8gJCR0YXJnZXQ7IFwNCiAJCSQoTUFLRSkgLUMg JCR0YXJnZXQgJEAgfHwgZXhpdCAxOyBcDQpAQCAtMzU1LDYgKzM2MSw3IEBAIHVuaW5zdGFsbC1i aW46DQogCS0gcm0gLWYgJChERVNURElSKSQodXNyc2JpbmRpcikvdWRldm1vbml0b3INCiAJLSBy bSAtZiAkKHVzcmJpbmRpcikvdWRldmluZm8NCiAJLSBybSAtZiAkKERFU1RESVIpJChERVNURElS KSQodXNyYmluZGlyKS91ZGV2dGVzdA0KKwktIHJtIC1mICQoREVTVERJUikkKHNiaW5kaXIpL3Vk ZXZwbHVnDQogaWZuZGVmIERFU1RESVINCiAJLSBraWxsYWxsIHVkZXZkDQogCS0gcm0gLXJmIC9k ZXYvLnVkZXYNCmRpZmYgLXJ1TnAgdWRldi0wNzd+L3VkZXZwbHVnLjggdWRldi0wNzcvdWRldnBs dWcuOA0KLS0tIHVkZXYtMDc3fi91ZGV2cGx1Zy44CTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAw MDAwICswMTAwDQorKysgdWRldi0wNzcvdWRldnBsdWcuOAkyMDA1LTEyLTA1IDE3OjEyOjI4LjI2 MDI1Njc1MCArMDAwMA0KQEAgLTAsMCArMSw4MyBAQA0KKy5USCAiVURFVlBMVUciICI4IiAiTm92 ZW1iZXIgMjAwNSIgInVkZXYiICJ1ZGV2cGx1ZyINCisuU0ggTkFNRQ0KK3VkZXZwbHVnIFwtIGRl dmljZSBjb2xkLXBsdWdnaW5nIHRvb2wNCisuU0ggU1lOT1BTSVMNCisuQiB1ZGV2cGx1Zw0KK1tc ZkItSVxmUlxmSWF0dHJcZlI9XGZJdmFsdWVcZlJdLi4uIFtcZkItWFxmUlxmSWF0dHJcZlI9XGZJ dmFsdWVcZlJdLi4uDQorW1xmQi1iXGZSXSBbXGZCLWNcZlJdIFtcZkItQlxmUlxmSWJ1c1xmUl0u Li4gW1xmQi1DXGZSXGZJY2xhc3NcZlJdLi4uDQorW1xmQi1GXGZSXSBbXGZCLXZcZlJdIFtcZklk ZXZwYXRoXGZSXS4uLg0KKw0KKy5CIHVkZXZwbHVnIC1XDQorLlwiDQorLlNIIERFU0NSSVBUSU9O DQorLkIgdWRldnBsdWcNCitpcyBhIHRvb2wgdG8gZWFzZSB0aGUgY29sZC1wbHVnZ2luZyBvZiBz eXN0ZW0gZGV2aWNlcy4gIEl0IGV4YW1pbmVzIHN5c2ZzDQorZm9yIGRldmljZXMgYWxyZWFkeSBw cmVzZW50IG9uIHRoZSBzeXN0ZW0sIGZvciB3aGljaCB0aGUgZXZlbnRzIG1heSBoYXZlDQorYmVl biBtaXNzZWQsIGFuZCB3cml0ZXMgdG8gdGhlIHVldmVudCBhdHRyaWJ1dGUgdG8gY2F1c2UgdGhl IGtlcm5lbCB0bw0KK3JlcGxheSB0aGUgZXZlbnQuICBJdCBkb2VzIG5vdCBwcm9jZXNzIHRoZSBl dmVudHMgdGhlbXNlbHZlcywNCisuQlIgdWRldmQgKDgpDQorc2hvdWxkIGJlIHJ1biBiZWZvcmUg Y2FsbGluZyB0aGlzIHRvb2wgdG8gZG8gdGhhdC4NCisNCitCb3RoIGJlZm9yZSBhbmQgYWZ0ZXIg cmVxdWVzdGluZyB0aGUgZXZlbnRzLCBpdCB3YWl0cyBmb3IgdGhlDQorLkJSIHVkZXZkICg4KQ0K K2V2ZW50IHF1ZXVlIHRvIGJlIGVtcHR5LiAgVGhpcyBwcm92aWRlcyBzb21lIHN5bmNocm9ueSBh bmQgcHJldmVudHMgbW9zdA0KK2J1dCBub3QgYWxsLCByYWNlIGNvbmRpdGlvbnMuDQorLlwiDQor LlNIIFVTQUdFDQorV2hlbiBjYWxsZWQgd2l0aG91dCBhbnkgYXJndW1lbnRzDQorLkIgdWRldnBs dWcNCityZXBsYXlzIHRoZSBldmVudHMgZm9yIGFsbCBjdXJyZW50bHkgY29ubmVjdGVkIGRldmlj ZXMgb24gdGhlIHN5c3RlbS4gIE9wdGlvbnMNCitjYW4gYmUgZ2l2ZW4gdG8gYWx0ZXIgdGhpcyBs aXN0LCBsaW1pdGluZyBpdCB0byBkZXZpY2VzIG9uIGEgcGFydGljdWxhciBidXMsDQoraW4gYSBw YXJ0aWN1bGFyIGNsYXNzIG9yIHRob3NlIHdpdGggb3Igd2l0aG91dCBzcGVjaWZpZWQgYXR0cmli dXRlcy4NCisNCitBbnkgbm9uLW9wdGlvbiBhcmd1bWVudHMgZ2l2ZW4gc2hvdWxkIGJlIHBhdGhz IHRvIGluZGl2aWR1YWwgZGV2aWNlcyB0aGF0DQorbmVlZCB0byBiZSByZXBsYXllZCwgaW5zdGVh ZCBvZiBhbGwgY29ubmVjdGVkIGRldmljZXMuDQorLlNIIE9QVElPTlMNCitBbGwgb3B0aW9ucyBh cmUgYWNjdW11bGF0aXZlIGFuZCBtYXkgYmUgc3BlY2lmaWVkIG11bHRpcGxlIHRpbWVzLg0KKy5U UA0KKy5CSSAtSSBhdHRyXGZSPVxmSXZhbHVlDQorb25seSBldmVudHMgZm9yIHRob3NlIGRldmlj ZXMgZm9yIHdoaWNoIHRoZSBcZklhdHRyXGZSIGF0dHJpYnV0ZSBtYXRjaGVzDQorXGZJdmFsdWVc ZlIgYXJlIHJlcGxheWVkLiAgXGZJdmFsdWVcZlIgbWF5IGluY2x1ZGUgd2lsZGNhcmRzIGFuZCBn bG9iYmluZywNCithcyB3aXRoIHRoZQ0KKy5CUiB1ZGV2ICg4KQ0KK2NvbmZpZ3VyYXRpb24gZmls ZSBmb3JtYXQuDQorLlRQDQorLkJJIC1YIGF0dHJcZlI9XGZJdmFsdWUNCitvbmx5IGV2ZW50cyBm b3IgdGhvc2UgZGV2aWNlcyBmb3Igd2hpY2ggdGhlIFxmSWF0dHJcZlIgYXR0cmlidXRlIERPRVMg Tk9UDQorTUFUQ0ggXGZJdmFsdWVcZlIgYXJlIHJlcGxheWVkLiAgXGZJdmFsdWVcZlIgbWF5IGlu Y2x1ZGUgd2lsZGNhcmRzIGFuZA0KK2dsb2JiaW5nLCBhcyB3aXRoIHRoZQ0KKy5CUiB1ZGV2ICg4 KQ0KK2NvbmZpZ3VyYXRpb24gZmlsZSBmb3JtYXQuDQorLlRQDQorLkJJIC1iDQorZXZlbnRzIGZv ciBhbGwgYmxvY2sgZGV2aWNlcyBhcmUgcmVwbGF5ZWQuDQorLlRQDQorLkJJIC1jDQorZXZlbnRz IGZvciBhbGwgY2xhc3MgZGV2aWNlcyBhcmUgcmVwbGF5ZWQuDQorLlRQDQorLkJJIC1CIGJ1cw0K K29ubHkgZXZlbnRzIGZvciB0aG9zZSBkZXZpY2VzIG9uIHRoZSBcZklidXNcZlIgYnVzIGFyZSBy ZXBsYXllZC4NCisuVFANCisuQkkgLUMgY2xhc3MNCitvbmx5IGV2ZW50cyBmb3IgdGhvc2UgZGV2 aWNlcyBpbiB0aGUgXGZJY2xhc3NcZlIgY2xhc3MgYXJlIHJlcGxheWVkLg0KKy5UUA0KKy5CSSAt Rg0KK2NhdXNlcyBldmVudHMgZm9yIGRldmljZXMgdGhhdCBoYXZlIHByZXZpb3VzbHkgZmFpbGVk IHRvIGJlIHJlcGxheWVkLiAgV2hlbg0KK2NvbWJpbmVkIHdpdGggdGhlIFxmQi1CXGZSIG9yIFxm Qi1DXGZSIG9wdGlvbnMgaXQgYWN0cyBhcyBhIHVuaW9uLCByYXRoZXINCit0aGFuIGFuIGV4Y2x1 c2lvbiwgZS5nLiBhbGwgXGZJcGNpXGZSIGRldmljZXMgYW5kIGFueXRoaW5nIHByZXZpb3VzbHkg ZmFpbGVkDQord2lsbCBiZSByZXBsYXllZC4NCisuVFANCisuQkkgLXYNCitwcmludHMgdGhlIHN5 c2ZzIHBhdGggb2YgZWFjaCBkZXZpY2UgYmVpbmcgcGx1Z2dlZC4NCisuVFANCisuQkkgLVcNCitj YXVzZXMgdWRldiB0byBzaW1wbHkgd2FpdCBmb3IgdGhlIA0KKy5CUiB1ZGV2ZCAoOCkNCitxdWV1 ZSB0byBlbXB0eSwgZXhpdGluZyBpbW1lZGlhdGVseSBpZiB0aGVyZSBpcyBub3RoaW5nIGluIHRo ZSBxdWV1ZS4gIFRoaXMNCitjYW4gbm90IGJlIHVzZWQgaW4gY29tYmluYXRpb24gd2l0aCBvdGhl ciBhcmd1bWVudHMuDQorLlJFDQorLlNIIFNFRSBBTFNPDQorLkJSIHVkZXYgKDgpDQorLkJSIHVk ZXZkICg4KQ0KKy5TSCBBVVRIT1JTDQorU2NvdHQgSmFtZXMgUmVtbmFudCA8c2NvdHRAdWJ1bnR1 LmNvbT4NCmRpZmYgLXJ1TnAgdWRldi0wNzd+L3VkZXZwbHVnLmMgdWRldi0wNzcvdWRldnBsdWcu Yw0KLS0tIHVkZXYtMDc3fi91ZGV2cGx1Zy5jCTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAw ICswMTAwDQorKysgdWRldi0wNzcvdWRldnBsdWcuYwkyMDA1LTEyLTA1IDE3OjEyOjI4LjI2ODI1 NzI1MCArMDAwMA0KQEAgLTAsMCArMSw2MDAgQEANCisvKg0KKyAqIHVkZXZwbHVnLmMgLSBkZXZp Y2UgY29sZC1wbHVnZ2luZyB0b29sDQorICoNCisgKiBDb3B5cmlnaHQgwqkgMjAwNSBDYW5vbmlj YWwgTHRkLg0KKyAqIEF1dGhvcjogU2NvdHQgSmFtZXMgUmVtbmFudCA8c2NvdHRAdWJ1bnR1LmNv bT4NCisgKg0KKyAqCVRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0DQorICoJdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlDQorICoJRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZS4NCisgKg0KKyAqCVRo aXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl ZnVsLCBidXQNCisgKglXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mDQorICoJTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUNCisgKglHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGZvciBtb3JlIGRldGFpbHMuDQorICoNCisgKglZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj b3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZw0KKyAqCXdpdGggdGhp cyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s IEluYy4sDQorICoJNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjEx MC0xMzAxIFVTQQ0KKyAqDQorICovDQorDQorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+DQorI2luY2x1 ZGUgPHN5cy90eXBlcy5oPg0KKw0KKyNpbmNsdWRlIDxjdHlwZS5oPg0KKyNpbmNsdWRlIDxzdGRp by5oPg0KKyNpbmNsdWRlIDxzdGRhcmcuaD4NCisjaW5jbHVkZSA8c3RkbGliLmg+DQorI2luY2x1 ZGUgPHN0cmluZy5oPg0KKyNpbmNsdWRlIDxzaWduYWwuaD4NCisjaW5jbHVkZSA8dW5pc3RkLmg+ DQorI2luY2x1ZGUgPGRpcmVudC5oPg0KKyNpbmNsdWRlIDxmY250bC5oPg0KKyNpbmNsdWRlIDxl cnJuby5oPg0KKw0KKyNpbmNsdWRlICJsaWJzeXNmcy9zeXNmcy9saWJzeXNmcy5oIg0KKyNpbmNs dWRlICJsaXN0LmgiDQorI2luY2x1ZGUgInVkZXYuaCINCisjaW5jbHVkZSAidWRldmQuaCINCisj aW5jbHVkZSAidWRldl91dGlscy5oIg0KKyNpbmNsdWRlICJ1ZGV2X3ZlcnNpb24uaCINCisjaW5j bHVkZSAidWRldl9saWJjX3dyYXBwZXIuaCINCisNCisjaW5jbHVkZSAibG9nZ2luZy5oIg0KKw0K Kw0KKy8qIHByaW50IHRoZSBub2RlcyB3ZSB2aXNpdCAqLw0KK3N0YXRpYyBpbnQgdmVyYm9zZSA9 IDA7DQorDQorDQorI2lmZGVmIFVTRV9MT0cNCit2b2lkIGxvZ19tZXNzYWdlKGludCBwcmlvcml0 eSwgY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pDQorew0KKwl2YV9saXN0IGFyZ3M7DQorDQorCWlm IChwcmlvcml0eSA+IHVkZXZfbG9nX3ByaW9yaXR5KQ0KKwkJcmV0dXJuOw0KKw0KKwl2YV9zdGFy dChhcmdzLCBmb3JtYXQpOw0KKwl2c3lzbG9nKHByaW9yaXR5LCBmb3JtYXQsIGFyZ3MpOw0KKwl2 YV9lbmQoYXJncyk7DQorfQ0KKyNlbmRpZg0KKw0KKw0KK3N0cnVjdCBkZXZpY2Ugew0KKwlzdHJ1 Y3QgbGlzdF9oZWFkIG5vZGU7DQorCXN0cnVjdCBzeXNmc19kZXZpY2UgKmRldjsNCit9Ow0KKw0K K3N0cnVjdCBmaWx0ZXIgew0KKwlzdHJ1Y3QgbGlzdF9oZWFkIG5vZGU7DQorCWNoYXIgbmFtZVtO QU1FX1NJWkVdOw0KKwljaGFyIHZhbHVlW1ZBTFVFX1NJWkVdOw0KKwlpbnQgaW5jbHVkZTsNCit9 Ow0KKw0KKy8qIGluc2VydCB0aGUgZGV2cGF0aHMgaW4gbGV4aWNhbCBvcmRlciAqLw0KK3N0YXRp YyBpbnQgZGV2aWNlX2xpc3RfaW5zZXJ0KHN0cnVjdCBzeXNmc19kZXZpY2UgKmRldmljZSwgc3Ry dWN0IGxpc3RfaGVhZCAqZGV2aWNlX2xpc3QpDQorew0KKwlzdHJ1Y3QgZGV2aWNlICpsb29wX2Rl dmljZTsNCisJc3RydWN0IGRldmljZSAqbmV3X2RldmljZTsNCisNCisJZGJnKCJpbnNlcnQ6ICcl cyciLCBkZXZpY2UtPnBhdGgpOw0KKw0KKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KGxvb3BfZGV2aWNl LCBkZXZpY2VfbGlzdCwgbm9kZSkgew0KKwkJaWYgKHN0cmNtcChsb29wX2RldmljZS0+ZGV2LT5w YXRoLCBkZXZpY2UtPnBhdGgpID4gMCkNCisJCQlicmVhazsNCisJfQ0KKw0KKwluZXdfZGV2aWNl ID0gbWFsbG9jKHNpemVvZihzdHJ1Y3QgZGV2aWNlKSk7DQorCWlmIChuZXdfZGV2aWNlID09IE5V TEwpIHsNCisJCWRiZygiZXJyb3IgbWFsbG9jIik7DQorCQlyZXR1cm4gLUVOT01FTTsNCisJfQ0K Kw0KKwluZXdfZGV2aWNlLT5kZXYgPSBkZXZpY2U7DQorCWxpc3RfYWRkX3RhaWwoJm5ld19kZXZp Y2UtPm5vZGUsICZsb29wX2RldmljZS0+bm9kZSk7DQorCXJldHVybiAwOw0KK30NCisNCisvKiBh cHBlbmQgdGhlIGZpbHRlciB0byB0aGUgbGlzdCAqLw0KK3N0YXRpYyBpbnQgZmlsdGVyX2xpc3Rf aW5zZXJ0KGludCBpbmNsdWRlLCBjb25zdCBjaGFyICpmaWx0ZXIsIHN0cnVjdCBsaXN0X2hlYWQg KmZpbHRlcl9saXN0KQ0KK3sNCisJc3RydWN0IGZpbHRlciAqbmV3X2ZpbHRlcjsNCisJY29uc3Qg Y2hhciAqcHRyOw0KKw0KKwlkYmcoImluc2VydDogJyVzJyIsIGZpbHRlcik7DQorDQorCW5ld19m aWx0ZXIgPSBtYWxsb2Moc2l6ZW9mKHN0cnVjdCBmaWx0ZXIpKTsNCisJaWYgKCFuZXdfZmlsdGVy KSB7DQorCQlkYmcoImVycm9yIG1hbGxvYyIpOw0KKwkJcmV0dXJuIC1FTk9NRU07DQorCX0NCisJ bmV3X2ZpbHRlci0+aW5jbHVkZSA9IGluY2x1ZGU7DQorDQorCXB0ciA9IHN0cmNocihmaWx0ZXIs ICc9Jyk7DQorCWlmIChwdHIpIHsNCisJCWlmICgoc2l6ZV90KShwdHIgKyAxIC0gZmlsdGVyKSA+ IHNpemVvZihuZXdfZmlsdGVyLT5uYW1lKSkgew0KKwkJCWVycigiYXR0cmlidXRlIG5hbWUgdG9v IGxvbmcgaW4gZmlsdGVyICVzIiwgZmlsdGVyKTsNCisJCQlmcmVlKG5ld19maWx0ZXIpOw0KKwkJ CXJldHVybiAxOw0KKwkJfQ0KKwkJbWVtY3B5KG5ld19maWx0ZXItPm5hbWUsIGZpbHRlciwgcHRy IC0gZmlsdGVyKTsNCisJCW5ld19maWx0ZXItPm5hbWVbcHRyIC0gZmlsdGVyXSA9ICdcMCc7DQor DQorCQlzdHJsY3B5KG5ld19maWx0ZXItPnZhbHVlLCBwdHIgKyAxLCBzaXplb2YobmV3X2ZpbHRl ci0+dmFsdWUpKTsNCisJfSBlbHNlIHsNCisJCXN0cmxjcHkobmV3X2ZpbHRlci0+bmFtZSwgZmls dGVyLCBzaXplb2YobmV3X2ZpbHRlci0+bmFtZSkpOw0KKwkJc3RybGNweShuZXdfZmlsdGVyLT52 YWx1ZSwgIj8qIiwgc2l6ZW9mKG5ld19maWx0ZXItPnZhbHVlKSk7DQorCX0NCisNCisJbGlzdF9h ZGRfdGFpbCgmbmV3X2ZpbHRlci0+bm9kZSwgZmlsdGVyX2xpc3QpOw0KKwlkYmcoImFkZCAlcyBm aWx0ZXIgJyVzJyB2YWx1ZSAnJXMnIiwNCisJICAgIG5ld19maWx0ZXItPmluY2x1ZGUgPyAiaW5j bHVkZSIgOiAiZXhjbHVkZSIsDQorCSAgICBuZXdfZmlsdGVyLT5uYW1lLCBuZXdfZmlsdGVyLT52 YWx1ZSk7DQorCXJldHVybiAwOw0KK30NCisNCisvKiB0b3VjaCB1cCBhIGRldmljZSB0byBsb2Fk IHRoZSB1ZXZlbnQgKi8NCitzdGF0aWMgaW50IHRpY2tsZShzdHJ1Y3Qgc3lzZnNfZGV2aWNlICpk ZXZpY2UpDQorew0KKwlzdGF0aWMgY29uc3QgY2hhciBtZXNzYWdlW10gPSAicG9rZSI7DQorCWNo YXIgdWV2ZW50W1BBVEhfU0laRV07DQorCWludCBmZDsNCisNCisJc3RybGNweSh1ZXZlbnQsIGRl dmljZS0+cGF0aCwgc2l6ZW9mKHVldmVudCkpOw0KKwlzdHJsY2F0KHVldmVudCwgIi91ZXZlbnQi LCBzaXplb2YodWV2ZW50KSk7DQorDQorCWRiZygidWV2ZW50OiAnJXMnIiwgdWV2ZW50KTsNCisN CisJaWYgKHZlcmJvc2UpDQorCQlwcmludGYoIiVzXG4iLCBkZXZpY2UtPnBhdGgpOw0KKw0KKwlm ZCA9IG9wZW4odWV2ZW50LCBPX1dST05MWSk7DQorCWlmIChmZCA8IDApIHsNCisJCWVycigidW5h YmxlIHRvIG9wZW4gdWV2ZW50ICclcyc6ICVzIiwgdWV2ZW50LA0KKwkJICAgIHN0cmVycm9yKGVy cm5vKSk7DQorCQlyZXR1cm4gMTsNCisJfQ0KKw0KKwl3cml0ZShmZCwgbWVzc2FnZSwgc2l6ZW9m KG1lc3NhZ2UpKTsNCisNCisJY2xvc2UoZmQpOw0KKwlyZXR1cm4gMDsNCit9DQorDQorLyogZmls dGVyIHRoZSBkZXZpY2UgbGlzdCBhbmQgcnVuIGFueSBsZWZ0ICovDQorc3RhdGljIHZvaWQgZXhl Y19saXN0KHN0cnVjdCBsaXN0X2hlYWQgKmRldmljZV9saXN0LCBzdHJ1Y3QgbGlzdF9oZWFkICpm aWx0ZXJfbGlzdCkNCit7DQorCXN0cnVjdCBmaWx0ZXIgKmxvb3BfZmlsdGVyOw0KKwlzdHJ1Y3Qg ZGV2aWNlICpsb29wX2RldmljZTsNCisNCisJbGlzdF9mb3JfZWFjaF9lbnRyeShsb29wX2Rldmlj ZSwgZGV2aWNlX2xpc3QsIG5vZGUpIHsNCisJCXN0cnVjdCBzeXNmc19kZXZpY2UgKmRldmljZSA9 IGxvb3BfZGV2aWNlLT5kZXY7DQorDQorCQlsaXN0X2Zvcl9lYWNoX2VudHJ5KGxvb3BfZmlsdGVy LCBmaWx0ZXJfbGlzdCwgbm9kZSkgew0KKwkJCXN0cnVjdCBzeXNmc19hdHRyaWJ1dGUgKmF0dHI7 DQorCQkJY2hhciB2YWx1ZVsyNTZdOw0KKwkJCWludCBpOw0KKw0KKwkJCWF0dHIgPSBzeXNmc19n ZXRfZGV2aWNlX2F0dHIoZGV2aWNlLCBsb29wX2ZpbHRlci0+bmFtZSk7DQorCQkJaWYgKCFhdHRy KSB7DQorCQkJCWlmIChsb29wX2ZpbHRlci0+aW5jbHVkZSkNCisJCQkJCWdvdG8gbmV4dDsNCisN CisJCQkJY29udGludWU7DQorCQkJfQ0KKw0KKwkJCWkgPSBzdHJsY3B5KHZhbHVlLCBhdHRyLT52 YWx1ZSwgc2l6ZW9mKHZhbHVlKSk7DQorCQkJd2hpbGUgKGkgPiAwICYmIGlzc3BhY2UodmFsdWVb aS0xXSkpDQorCQkJCXZhbHVlWy0taV0gPSAnXDAnOw0KKw0KKwkJCWlmIChzdHJjbXBfcGF0dGVy bihsb29wX2ZpbHRlci0+dmFsdWUsIHZhbHVlKSA9PSAwKSB7DQorCQkJCWRiZygiZGV2aWNlICcl cycgYXR0ciAnJXMnIG1hdGNoZWQgZmlsdGVyICclcycgPC0+ICclcyciLA0KKwkJCQkgICAgZGV2 aWNlLT5wYXRoLCBhdHRyLT5uYW1lLCB2YWx1ZSwgbG9vcF9maWx0ZXItPnZhbHVlKTsNCisNCisJ CQkJaWYgKCFsb29wX2ZpbHRlci0+aW5jbHVkZSkNCisJCQkJCWdvdG8gbmV4dDsNCisJCQl9IGVs c2Ugew0KKwkJCQlpZiAobG9vcF9maWx0ZXItPmluY2x1ZGUpDQorCQkJCQlnb3RvIG5leHQ7DQor CQkJfQ0KKwkJfQ0KKw0KKwkJdGlja2xlKGRldmljZSk7DQorDQorCW5leHQ6DQorCQk7DQorCX0N Cit9DQorDQorDQorLyogYWRkIGEgc2luZ2xlIGRldmljZSBieSBwYXRoICovDQorc3RhdGljIGlu dCBhZGRfZGV2aWNlKGNvbnN0IGNoYXIgKnBhdGgsIHN0cnVjdCBsaXN0X2hlYWQgKmRldmljZV9s aXN0KQ0KK3sNCisJc3RydWN0IHN5c2ZzX2RldmljZSAqZGV2aWNlOw0KKw0KKwlkYmcoImFkZDog JyVzJyIsIHBhdGgpOw0KKw0KKwlkZXZpY2UgPSBzeXNmc19vcGVuX2RldmljZV9wYXRoKHBhdGgp Ow0KKwlpZiAoIWRldmljZSkgew0KKwkJZXJyKCJ1bmFibGUgdG8gb3BlbiBkZXZpY2UgJyVzJyIs IHBhdGgpOw0KKwkJcmV0dXJuIDE7DQorCX0NCisNCisJZGV2aWNlX2xpc3RfaW5zZXJ0KGRldmlj ZSwgZGV2aWNlX2xpc3QpOw0KKwlyZXR1cm4gMDsNCit9DQorDQorLyogdGVzdCB3aGV0aGVyIHNv bWV0aGluZyBpcyBwcm9iYWJseSBhIGRldmljZSAqLw0KK3N0YXRpYyBpbnQgaGFzX3VldmVudChj b25zdCBjaGFyICpwYXRoKQ0KK3sNCisJc3RydWN0IHN0YXQgc3RhdGJ1ZjsNCisJY2hhciB1ZXZl bnRbUEFUSF9TSVpFXTsNCisNCisJc3RybGNweSh1ZXZlbnQsIHBhdGgsIHNpemVvZih1ZXZlbnQp KTsNCisJc3RybGNhdCh1ZXZlbnQsICIvdWV2ZW50Iiwgc2l6ZW9mKHVldmVudCkpOw0KKw0KKwlp ZiAobHN0YXQodWV2ZW50LCAmc3RhdGJ1ZikpIHsNCisJCWlmIChlcnJubyAhPSBFTk9FTlQpDQor CQkJZXJyKCJlcnJvciBjaGVja2luZyBmb3IgdWV2ZW50ICclcyc6ICVzIiwgdWV2ZW50LA0KKwkJ CSAgICBzdHJlcnJvcihlcnJubykpOw0KKw0KKwkJcmV0dXJuIDA7DQorCX0NCisNCisJcmV0dXJu IDE7DQorfQ0KKw0KK3N0YXRpYyBpbnQgcmVjdXJzZV9zdWJ0cmVlKGNvbnN0IGNoYXIgKnBhdGgs IHN0cnVjdCBsaXN0X2hlYWQgKmRldmljZV9saXN0LCBpbnQgZm9sbG93X2xpbmtzKTsNCisNCisv KiB2aXNpdCBhbiBlbnRyeSwgYWRkaW5nIHRoZSBkZXZpY2UgYW5kIHJlY3Vyc2luZyB0aGUgc3Vi dHJlZSBiZW5lYXRoIGl0ICovDQorc3RhdGljIGludCB2aXNpdF9lbnRyeShjb25zdCBjaGFyICpw YXRoLCBzdHJ1Y3QgbGlzdF9oZWFkICpkZXZpY2VfbGlzdCwgaW50IGZvbGxvd19saW5rcykNCit7 DQorCWNoYXIgc3VicGF0aFtQQVRIX1NJWkVdOw0KKwlzdHJ1Y3Qgc3RhdCBzdGF0YnVmOw0KKw0K KwlpZiAobHN0YXQocGF0aCwgJnN0YXRidWYpKSB7DQorCQllcnIoImVycm9yIHN0YXQgJyVzJzog JXMiLCBwYXRoLCBzdHJlcnJvcihlcnJubykpOw0KKwkJcmV0dXJuIDE7DQorCX0NCisNCisJc3Ry bGNweShzdWJwYXRoLCBwYXRoLCBzaXplb2Yoc3VicGF0aCkpOw0KKwlpZiAoU19JU0xOSyhzdGF0 YnVmLnN0X21vZGUpICYmIGZvbGxvd19saW5rcykgew0KKwkJY2hhciBsaW5rcGF0aFtQQVRIX1NJ WkVdOw0KKwkJY2hhciAqbHB0cjsNCisJCWludCBsZW47DQorDQorCQlsZW4gPSByZWFkbGluayhw YXRoLCBsaW5rcGF0aCwgc2l6ZW9mKGxpbmtwYXRoKSk7DQorCQlpZiAobGVuIDw9IDApIHsNCisJ CQllcnIoInVuYWJsZSB0byByZWFkbGluayAnJXMnOiAlcyIsIHBhdGgsIHN0cmVycm9yKGVycm5v KSk7DQorCQkJcmV0dXJuIDE7DQorCQl9DQorCQlsaW5rcGF0aFtsZW5dID0gJ1wwJzsNCisJCWRi ZygibGluayBpcyAnJXMnIiwgbGlua3BhdGgpOw0KKw0KKwkJbHB0ciA9IGxpbmtwYXRoOw0KKwkJ Zm9yICg7Oykgew0KKwkJCWNoYXIgKnB0cjsNCisNCisJCQlwdHIgPSBzdHJyY2hyKHN1YnBhdGgs ICcvJyk7DQorCQkJaWYgKHB0cikNCisJCQkJKnB0ciA9ICdcMCc7DQorCQkJZWxzZQ0KKwkJCQlz dWJwYXRoWzBdID0gJ1wwJzsNCisNCisJCQlpZiAoISpscHRyIHx8IHN0cm5jbXAobHB0ciwgIi4u LyIsIDMpKQ0KKwkJCQlicmVhazsNCisJCQlscHRyICs9IDM7DQorCQl9DQorCQlzdHJsY2F0KHN1 YnBhdGgsICIvIiwgc2l6ZW9mKHN1YnBhdGgpKTsNCisJCXN0cmxjYXQoc3VicGF0aCwgbHB0ciwg c2l6ZW9mKHN1YnBhdGgpKTsNCisJCWRiZygibGluayBwb2ludHMgdG8gJyVzJyIsIHN1YnBhdGgp Ow0KKw0KKwkJZm9sbG93X2xpbmtzID0gMDsNCisNCisJfSBlbHNlIGlmIChTX0lTRElSKHN0YXRi dWYuc3RfbW9kZSkpIHsNCisJCWRiZygic3ViZGlyICclcyciLCBzdWJwYXRoKTsNCisJCWlmIChm b2xsb3dfbGlua3MpDQorCQkJZm9sbG93X2xpbmtzLS07DQorDQorCX0gZWxzZSB7DQorCQlyZXR1 cm4gMTsNCisJfQ0KKw0KKwlpZiAoaGFzX3VldmVudChzdWJwYXRoKSkNCisJCWFkZF9kZXZpY2Uo c3VicGF0aCwgZGV2aWNlX2xpc3QpOw0KKw0KKwlyZXR1cm4gcmVjdXJzZV9zdWJ0cmVlKHN1YnBh dGgsIGRldmljZV9saXN0LCBmb2xsb3dfbGlua3MpOw0KK30NCisNCisvKiByZWN1cnNlIGEgdHJl ZSBhZGRpbmcgYW55dGhpbmcgdGhhdCBsb29rcyBsaWtlIGEgZGV2aWNlICovDQorc3RhdGljIGlu dCByZWN1cnNlX3N1YnRyZWUoY29uc3QgY2hhciAqcGF0aCwgc3RydWN0IGxpc3RfaGVhZCAqZGV2 aWNlX2xpc3QsIGludCBmb2xsb3dfbGlua3MpDQorew0KKwlzdHJ1Y3QgZGlyZW50ICpkZW50Ow0K KwlESVIgKmRwOw0KKw0KKwlkYmcoInRyZWU6ICclcyciLCBwYXRoKTsNCisJZHAgPSBvcGVuZGly KHBhdGgpOw0KKwlpZiAoIWRwKSB7DQorCQlpbmZvKCJ1bmFibGUgdG8gb3BlbiB0cmVlOiAnJXMn OiAlcyIsIHBhdGgsIHN0cmVycm9yKGVycm5vKSk7DQorCQlyZXR1cm4gMTsNCisJfQ0KKw0KKwl3 aGlsZSAoKGRlbnQgPSByZWFkZGlyKGRwKSkpIHsNCisJCWNoYXIgc3VicGF0aFtQQVRIX1NJWkVd Ow0KKw0KKwkJaWYgKGRlbnQtPmRfbmFtZVswXSA9PSAnLicpDQorCQkJY29udGludWU7DQorDQor CQlzbnByaW50ZihzdWJwYXRoLCBzaXplb2Yoc3VicGF0aCksICIlcy8lcyIsIHBhdGgsIGRlbnQt PmRfbmFtZSk7DQorCQl2aXNpdF9lbnRyeShzdWJwYXRoLCBkZXZpY2VfbGlzdCwgZm9sbG93X2xp bmtzKTsNCisJfQ0KKw0KKwljbG9zZWRpcihkcCk7DQorDQorCXJldHVybiAwOw0KK30NCisNCisv KiByZWN1cnNlIGEgdHJlZSBhZGRpbmcgYW55dGhpbmcgdGhhdCBsb29rcyBsaWtlIGEgZGV2aWNl ICovDQorc3RhdGljIGludCByZWN1cnNlX3RyZWUoY29uc3QgY2hhciAqcGF0aCwgc3RydWN0IGxp c3RfaGVhZCAqZGV2aWNlX2xpc3QpDQorew0KKwljaGFyIHRtcHBhdGhbUEFUSF9TSVpFXTsNCisJ Y29uc3QgY2hhciAqc3lzcGF0aDsNCisNCisJaWYgKHN0cm5jbXAocGF0aCwgc3lzZnNfcGF0aCwg c3RybGVuKHN5c2ZzX3BhdGgpKSAhPSAwKSB7DQorCQlzdHJsY3B5KHRtcHBhdGgsIHN5c2ZzX3Bh dGgsIHNpemVvZih0bXBwYXRoKSk7DQorCQlpZiAocGF0aFswXSAhPSAnLycpDQorCQkJc3RybGNh dCh0bXBwYXRoLCAiLyIsIHNpemVvZih0bXBwYXRoKSk7DQorCQlzdHJsY2F0KHRtcHBhdGgsIHBh dGgsIHNpemVvZih0bXBwYXRoKSk7DQorCQlzeXNwYXRoID0gdG1wcGF0aDsNCisJfSBlbHNlIHsN CisJCXN5c3BhdGggPSBwYXRoOw0KKwl9DQorDQorCWRiZygicmVjdXJzZTogJyVzJyIsIHN5c3Bh dGgpOw0KKwlyZXR1cm4gdmlzaXRfZW50cnkoc3lzcGF0aCwgZGV2aWNlX2xpc3QsIDEpOw0KK30N CisNCisNCisvKiBzY2FuIHRoZSBnaXZlbiBidXMgZm9yIGFsbCBkZXZpY2VzICovDQorc3RhdGlj IGludCBzY2FuX2J1cyhjb25zdCBjaGFyICpuYW1lLCBzdHJ1Y3QgbGlzdF9oZWFkICpkZXZpY2Vf bGlzdCkNCit7DQorCWNoYXIgcGF0aFtQQVRIX1NJWkVdOw0KKw0KKwlzdHJsY3B5KHBhdGgsIHN5 c2ZzX3BhdGgsIHNpemVvZihwYXRoKSk7DQorCXN0cmxjYXQocGF0aCwgIi9idXMvIiwgc2l6ZW9m KHBhdGgpKTsNCisJc3RybGNhdChwYXRoLCBuYW1lLCBzaXplb2YocGF0aCkpOw0KKwlzdHJsY2F0 KHBhdGgsICIvZGV2aWNlcyIsIHNpemVvZihwYXRoKSk7DQorDQorCXJldHVybiByZWN1cnNlX3N1 YnRyZWUocGF0aCwgZGV2aWNlX2xpc3QsIDEpOw0KK30NCisNCisvKiBzY2FuIHRoZSBnaXZlbiBj bGFzcyBmb3IgYWxsIGRldmljZXMgKi8NCitzdGF0aWMgaW50IHNjYW5fY2xhc3MoY29uc3QgY2hh ciAqbmFtZSwgc3RydWN0IGxpc3RfaGVhZCAqZGV2aWNlX2xpc3QpDQorew0KKwljaGFyIHBhdGhb UEFUSF9TSVpFXTsNCisNCisJc3RybGNweShwYXRoLCBzeXNmc19wYXRoLCBzaXplb2YocGF0aCkp Ow0KKwlzdHJsY2F0KHBhdGgsICIvY2xhc3MvIiwgc2l6ZW9mKHBhdGgpKTsNCisJc3RybGNhdChw YXRoLCBuYW1lLCBzaXplb2YocGF0aCkpOw0KKw0KKwlyZXR1cm4gcmVjdXJzZV9zdWJ0cmVlKHBh dGgsIGRldmljZV9saXN0LCAxKTsNCit9DQorDQorLyogc2NhbiBhbGwgb2YgdGhlIGNsYXNzIGRl dmljZXMgKi8NCitzdGF0aWMgaW50IHNjYW5fY2xhc3NfdHJlZShzdHJ1Y3QgbGlzdF9oZWFkICpk ZXZpY2VfbGlzdCkNCit7DQorCWNoYXIgcGF0aFtQQVRIX1NJWkVdOw0KKw0KKwlzdHJsY3B5KHBh dGgsIHN5c2ZzX3BhdGgsIHNpemVvZihwYXRoKSk7DQorCXN0cmxjYXQocGF0aCwgIi9jbGFzcyIs IHNpemVvZihwYXRoKSk7DQorDQorCXJldHVybiByZWN1cnNlX3N1YnRyZWUocGF0aCwgZGV2aWNl X2xpc3QsIDIpOw0KK30NCisNCisvKiBzY2FuIGFsbCBvZiB0aGUgYmxvY2sgZGV2aWNlcyAqLw0K K3N0YXRpYyBpbnQgc2Nhbl9ibG9ja190cmVlKHN0cnVjdCBsaXN0X2hlYWQgKmRldmljZV9saXN0 KQ0KK3sNCisJY2hhciBwYXRoW1BBVEhfU0laRV07DQorDQorCXN0cmxjcHkocGF0aCwgc3lzZnNf cGF0aCwgc2l6ZW9mKHBhdGgpKTsNCisJc3RybGNhdChwYXRoLCAiL2Jsb2NrIiwgc2l6ZW9mKHBh dGgpKTsNCisNCisJcmV0dXJuIHJlY3Vyc2Vfc3VidHJlZShwYXRoLCBkZXZpY2VfbGlzdCwgMik7 DQorfQ0KKw0KKy8qIHNjYW4gYWxsIG9mIHRoZSBzZXBhcmF0ZWQgZGV2aWNlcyAqLw0KK3N0YXRp YyBpbnQgc2Nhbl9kZXZpY2VfdHJlZShzdHJ1Y3QgbGlzdF9oZWFkICpkZXZpY2VfbGlzdCkNCit7 DQorCWNoYXIgcGF0aFtQQVRIX1NJWkVdOw0KKw0KKwlzdHJsY3B5KHBhdGgsIHN5c2ZzX3BhdGgs IHNpemVvZihwYXRoKSk7DQorCXN0cmxjYXQocGF0aCwgIi9kZXZpY2VzIiwgc2l6ZW9mKHBhdGgp KTsNCisNCisJcmV0dXJuIHJlY3Vyc2Vfc3VidHJlZShwYXRoLCBkZXZpY2VfbGlzdCwgMCk7DQor fQ0KKw0KKy8qIHNjYW4gdGhlIGZhaWxlZCBxdWV1ZSBmb3Igc3ltbGlua3MgYW5kIHF1ZXVlIHRo ZW0gKi8NCitzdGF0aWMgaW50IHNjYW5fZmFpbGVkKHN0cnVjdCBsaXN0X2hlYWQgKmRldmljZV9s aXN0KQ0KK3sNCisJY2hhciBmYWlsZWRbUEFUSF9TSVpFXTsNCisNCisJc3RybGNweShmYWlsZWQs IHVkZXZfcm9vdCwgc2l6ZW9mKGZhaWxlZCkpOw0KKwlzdHJsY2F0KGZhaWxlZCwgIi8iLCBzaXpl b2YoZmFpbGVkKSk7DQorCXN0cmxjYXQoZmFpbGVkLCBFVkVOVF9GQUlMRURfRElSLCBzaXplb2Yo ZmFpbGVkKSk7DQorDQorCWRiZygiZGlyZWN0b3J5OiAnJXMnIiwgZmFpbGVkKTsNCisJcmV0dXJu IHJlY3Vyc2Vfc3VidHJlZShmYWlsZWQsIGRldmljZV9saXN0LCAxKTsNCit9DQorDQorDQorLyog bWFrZSB0aGUgcXVldWUgZGlyZWN0b3J5IGFmdGVyIHdhaXRpbmcgZm9yIGl0IHRvIGdvIGF3YXkN CisgKiAocHJvdmlkZXMgc29tZSBraW5kIG9mIHN5bmNocm9ueSB0byB0aGUgcHJvY2VzcykgKi8N CitzdGF0aWMgaW50IG1ha2VfcXVldWUodm9pZCkNCit7DQorCWNoYXIgcXVldWVbUEFUSF9TSVpF XTsNCisJaW50IGZpcnN0ID0gMTsNCisNCisJc3RybGNweShxdWV1ZSwgdWRldl9yb290LCBzaXpl b2YocXVldWUpKTsNCisJc3RybGNhdChxdWV1ZSwgIi8iLCBzaXplb2YocXVldWUpKTsNCisJc3Ry bGNhdChxdWV1ZSwgRVZFTlRfUVVFVUVfRElSLCBzaXplb2YocXVldWUpKTsNCisNCisJZGJnKCJk aXJlY3Rvcnk6ICclcyciLCBxdWV1ZSk7DQorDQorCWlmIChjcmVhdGVfcGF0aChxdWV1ZSkpIHsN CisJCWVycigidW5hYmxlIHRvIGNyZWF0ZSAlczogJXMiLCBxdWV1ZSwgc3RyZXJyb3IoZXJybm8p KTsNCisJCXJldHVybiAxOw0KKwl9DQorDQorCXdoaWxlIChta2RpcihxdWV1ZSwgMDc1NSkpIHsN CisJCWlmIChlcnJubyAhPSBFRVhJU1QpIHsNCisJCQllcnIoInVuYWJsZSB0byBjcmVhdGUgJXM6 ICVzIiwgcXVldWUsIHN0cmVycm9yKGVycm5vKSk7DQorCQkJcmV0dXJuIDE7DQorCQl9DQorDQor CQlpZiAoZmlyc3QpIHsNCisJCQlkYmcoIndhaXRpbmcgZm9yIHF1ZXVlIHRvIGJlY29tZSBlbXB0 eSBmaXJzdCIpOw0KKwkJCWZpcnN0ID0gMDsNCisJCX0NCisNCisJCXVzbGVlcCgxMDAwMCk7DQor CX0NCisNCisJcmV0dXJuIDA7DQorfQ0KKw0KKy8qIHdhaXQgZm9yIHRoZSBxdWV1ZSBkaXJlY3Rv cnkgdG8gZ28gYXdheSAqLw0KK3N0YXRpYyB2b2lkIHdhaXRfZm9yX3F1ZXVlKHZvaWQpDQorew0K KwlzdHJ1Y3Qgc3RhdCBzdGF0YnVmOw0KKwljaGFyIHF1ZXVlW1BBVEhfU0laRV07DQorDQorCXN0 cmxjcHkocXVldWUsIHVkZXZfcm9vdCwgc2l6ZW9mKHF1ZXVlKSk7DQorCXN0cmxjYXQocXVldWUs ICIvIiwgc2l6ZW9mKHF1ZXVlKSk7DQorCXN0cmxjYXQocXVldWUsIEVWRU5UX1FVRVVFX0RJUiwg c2l6ZW9mKHF1ZXVlKSk7DQorDQorCWRiZygiZGlyZWN0b3J5OiAnJXMnIiwgcXVldWUpOw0KKw0K Kwlmb3IgKDs7KSB7DQorCQlpZiAoc3RhdChxdWV1ZSwgJnN0YXRidWYpKSB7DQorCQkJaWYgKGVy cm5vICE9IEVOT0VOVCkNCisJCQkJZXJyKCJ1bmFibGUgdG8gc3RhdCAlczogJXMiLCBxdWV1ZSwN CisJCQkJICAgIHN0cmVycm9yKGVycm5vKSk7DQorCQkJYnJlYWs7DQorCQl9DQorDQorCQl1c2xl ZXAoMTAwMDApOw0KKwl9DQorfQ0KKw0KKw0KK3N0YXRpYyB2b2lkIGFzbWxpbmthZ2Ugc2lnX2hh bmRsZXIoaW50IHNpZ251bSkNCit7DQorCXN3aXRjaCAoc2lnbnVtKSB7DQorCWNhc2UgU0lHQUxS TToNCisJCWV4aXQoMSk7DQorCWNhc2UgU0lHSU5UOg0KKwljYXNlIFNJR1RFUk06DQorCQlleGl0 KDIwICsgc2lnbnVtKTsNCisJfQ0KK30NCisNCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJn dltdKQ0KK3sNCisJTElTVF9IRUFEKGRldmljZV9saXN0KTsNCisJTElTVF9IRUFEKGZpbHRlcl9s aXN0KTsNCisJc3RydWN0IHNpZ2FjdGlvbiBhY3Q7DQorCWludCBhcmdzID0gMCwgd2FpdF9vbmx5 ID0gMCwgcmV0ID0gMDsNCisJaW50IGk7DQorDQorCWxvZ2dpbmdfaW5pdCgidWRldnBsdWciKTsN CisJdWRldl9pbml0X2NvbmZpZygpOw0KKwlkYmcoInZlcnNpb24gJXMiLCBVREVWX1ZFUlNJT04p Ow0KKw0KKwkvKiBzZXQgc2lnbmFsIGhhbmRsZXJzICovDQorCW1lbXNldCgmYWN0LCAwLCBzaXpl b2YoYWN0KSk7DQorCWFjdC5zYV9oYW5kbGVyID0gKHZvaWQgKCopIChpbnQpKXNpZ19oYW5kbGVy Ow0KKwlzaWdlbXB0eXNldCAoJmFjdC5zYV9tYXNrKTsNCisJYWN0LnNhX2ZsYWdzID0gMDsNCisJ c2lnYWN0aW9uKFNJR0FMUk0sICZhY3QsIE5VTEwpOw0KKwlzaWdhY3Rpb24oU0lHSU5ULCAmYWN0 LCBOVUxMKTsNCisJc2lnYWN0aW9uKFNJR1RFUk0sICZhY3QsIE5VTEwpOw0KKw0KKwkvKiB0cmln Z2VyIHRpbWVvdXQgdG8gcHJldmVudCBoYW5naW5nIHByb2Nlc3NlcyAqLw0KKwlhbGFybShVREVW X0FMQVJNX1RJTUVPVVQpOw0KKw0KKwlmb3IgKGkgPSAxOyBpIDwgYXJnYzsgaSsrKSB7DQorCQlj aGFyICphcmcgPSBhcmd2W2ldOw0KKw0KKwkJYXJncysrOw0KKwkJaWYgKHN0cmNtcChhcmcsICIt VyIpID09IDApIHsNCisJCQl3YWl0X29ubHkgPSAxOw0KKw0KKwkJfSBlbHNlIGlmIChzdHJjbXAo YXJnLCAiLUYiKSA9PSAwKSB7DQorCQkJc2Nhbl9mYWlsZWQoJmRldmljZV9saXN0KTsNCisNCisJ CX0gZWxzZSBpZiAoc3RyY21wKGFyZywgIi1jIikgPT0gMCkgew0KKwkJCXNjYW5fY2xhc3NfdHJl ZSgmZGV2aWNlX2xpc3QpOw0KKw0KKwkJfSBlbHNlIGlmIChzdHJjbXAoYXJnLCAiLWIiKSA9PSAw KSB7DQorCQkJc2Nhbl9ibG9ja190cmVlKCZkZXZpY2VfbGlzdCk7DQorDQorCQl9IGVsc2UgaWYg KHN0cmNtcChhcmcsICItdiIpID09IDApIHsNCisJCQlhcmdzLS07DQorCQkJdmVyYm9zZSA9IDE7 DQorDQorCQl9IGVsc2UgaWYgKGFyZ1swXSA9PSAnLScpIHsNCisJCQljaGFyICp2YXJnOw0KKw0K KwkJCWlmIChhcmdbMl0gIT0gJ1wwJykgew0KKwkJCQl2YXJnID0gJmFyZ1syXTsNCisJCQl9IGVs c2UgaWYgKCsraSA8IGFyZ2MpIHsNCisJCQkJdmFyZyA9IGFyZ3ZbaV07DQorCQkJfSBlbHNlIHsN CisJCQkJYXJncy0tOw0KKwkJCQljb250aW51ZTsNCisJCQl9DQorDQorCQkJc3dpdGNoIChhcmdb MV0pIHsNCisJCQljYXNlICdJJzoNCisJCQkJZmlsdGVyX2xpc3RfaW5zZXJ0KDEsIHZhcmcsICZm aWx0ZXJfbGlzdCk7DQorCQkJCWJyZWFrOw0KKwkJCWNhc2UgJ1gnOg0KKwkJCQlmaWx0ZXJfbGlz dF9pbnNlcnQoMCwgdmFyZywgJmZpbHRlcl9saXN0KTsNCisJCQkJYnJlYWs7DQorCQkJY2FzZSAn Qic6DQorCQkJCXNjYW5fYnVzKHZhcmcsICZkZXZpY2VfbGlzdCk7DQorCQkJCWJyZWFrOw0KKwkJ CWNhc2UgJ0MnOg0KKwkJCQlzY2FuX2NsYXNzKHZhcmcsICZkZXZpY2VfbGlzdCk7DQorCQkJCWJy ZWFrOw0KKwkJCX0NCisNCisJCX0gZWxzZSB7DQorCQkJcmVjdXJzZV90cmVlKGFyZywgJmRldmlj ZV9saXN0KTsNCisJCX0NCisJfQ0KKw0KKwlpZiAoIWFyZ3MpIHsNCisJCXNjYW5fY2xhc3NfdHJl ZSgmZGV2aWNlX2xpc3QpOw0KKwkJc2Nhbl9ibG9ja190cmVlKCZkZXZpY2VfbGlzdCk7DQorCQlz Y2FuX2RldmljZV90cmVlKCZkZXZpY2VfbGlzdCk7DQorCX0NCisNCisJaWYgKHdhaXRfb25seSkg ew0KKwkJd2FpdF9mb3JfcXVldWUoKTsNCisJCWdvdG8gZXhpdDsNCisJfSBlbHNlIGlmIChsaXN0 X2VtcHR5KCZkZXZpY2VfbGlzdCkpDQorCQlnb3RvIGV4aXQ7DQorDQorCW1ha2VfcXVldWUoKTsN CisJZXhlY19saXN0KCZkZXZpY2VfbGlzdCwgJmZpbHRlcl9saXN0KTsNCisJd2FpdF9mb3JfcXVl dWUoKTsNCisNCitleGl0Og0KKwlsb2dnaW5nX2Nsb3NlKCk7DQorCXJldHVybiByZXQ7DQorfQ0K --=-pEPDdX/Y4kFuS4qGjcDg Content-Disposition: attachment; filename=50-result-whitespace.patch Content-Type: text/x-patch; name=50-result-whitespace.patch; charset=UTF-8 Content-Transfer-Encoding: base64 ZGlmZiAtcnVOcCB1ZGV2LTA3NX4vdWRldl91dGlsc19zdHJpbmcuYyB1ZGV2LTA3NS91ZGV2X3V0 aWxzX3N0cmluZy5jDQotLS0gdWRldi0wNzV+L3VkZXZfdXRpbHNfc3RyaW5nLmMJMjAwNS0xMS0x MCAwMToyMDoyNS4wMDAwMDAwMDAgKzAwMDANCisrKyB1ZGV2LTA3NS91ZGV2X3V0aWxzX3N0cmlu Zy5jCTIwMDUtMTEtMjIgMTc6MzI6MzMuMzA1ODg0ODE2ICswMDAwDQpAQCAtMjQ1LDEwICsyNDUs MTcgQEAgaW50IHJlcGxhY2VfdW50cnVzdGVkX2NoYXJzKGNoYXIgKnN0cikNCiAJCWlmICgoc3Ry W2ldID49ICcwJyAmJiBzdHJbaV0gPD0gJzknKSB8fA0KIAkJICAgIChzdHJbaV0gPj0gJ0EnICYm IHN0cltpXSA8PSAnWicpIHx8DQogCQkgICAgKHN0cltpXSA+PSAnYScgJiYgc3RyW2ldIDw9ICd6 JykgfHwNCi0JCSAgICBzdHJjaHIoIiAjJCUrLS4vOj0/QF8iLCBzdHJbaV0pKSB7DQorCQkgICAg c3RyY2hyKCIjJCUrLS4vOj0/QF8iLCBzdHJbaV0pKSB7DQogCQkJaSsrOw0KIAkJCWNvbnRpbnVl Ow0KIAkJfQ0KKwkJLyogd2hpdGVzcGFjZSByZXBsYWNlZCB3aXRoIG9yZGluYXJ5IHNwYWNlICov DQorCQlpZiAoaXNzcGFjZShzdHJbaV0pKSB7DQorCQkJc3RyW2ldID0gJyAnOw0KKwkJCWkrKzsN CisJCQlyZXBsYWNlZCsrOw0KKwkJCWNvbnRpbnVlOw0KKwkJfQ0KIAkJLyogdmFsaWQgdXRmOCBp cyBhY2NlcHRlZCAqLw0KIAkJbGVuID0gdXRmOF9lbmNvZGVkX3ZhbGlkX3VuaWNoYXIoJnN0cltp XSk7DQogCQlpZiAobGVuID4gMSkgew0K --=-pEPDdX/Y4kFuS4qGjcDg Content-Disposition: attachment; filename=55-run-program.patch Content-Type: text/x-patch; name=55-run-program.patch; charset=UTF-8 Content-Transfer-Encoding: base64 ZGlmZiAtcnVOcCB1ZGV2LTA3N34vdWRldl91dGlsc19ydW4uYyB1ZGV2LTA3Ny91ZGV2X3V0aWxz X3J1bi5jDQotLS0gdWRldi0wNzd+L3VkZXZfdXRpbHNfcnVuLmMJMjAwNS0xMi0wNCAwMjowMTo0 OC4wMDAwMDAwMDAgKzAwMDANCisrKyB1ZGV2LTA3Ny91ZGV2X3V0aWxzX3J1bi5jCTIwMDUtMTIt MDUgMTc6MTM6MDkuMDMwODA0NzUwICswMDAwDQpAQCAtMTYwLDggKzE2MCwxMyBAQCBpbnQgcnVu X3Byb2dyYW0oY29uc3QgY2hhciAqY29tbWFuZCwgY29uDQogCQkJZHVwMihlcnJwaXBlW1dSSVRF X0VORF0sIFNUREVSUl9GSUxFTk8pOw0KIAkJZXhlY3YoYXJndlswXSwgYXJndik7DQogDQotCQkv KiB3ZSBzaG91bGQgbmV2ZXIgcmVhY2ggdGhpcyAqLw0KLQkJZXJyKCJleGVjIG9mIHByb2dyYW0g JyVzJyBmYWlsZWQiLCBhcmd2WzBdKTsNCisJCWlmICgoZXJybm8gPT0gRU5PRU5UKSB8fCAoZXJy bm8gPSBFTk9URElSKSkgew0KKwkJCS8qIHdpbGwgcHJvYmFibHkgdHVybiB1cCBsYXRlciAqLw0K KwkJCWluZm8oInByb2dyYW0gJyVzJyBub3QgZm91bmQiLCBhcmd2WzBdKTsNCisJCX0gZWxzZSB7 DQorCQkJLyogYmlnZ2VyIHByb2JsZW1zICovDQorCQkJZXJyKCJleGVjIG9mIHByb2dyYW0gJyVz JyBmYWlsZWQiLCBhcmd2WzBdKTsNCisJCX0NCiAJCV9leGl0KDEpOw0KIAljYXNlIC0xOg0KIAkJ ZXJyKCJmb3JrIG9mICclcycgZmFpbGVkOiAlcyIsIGFyZ3ZbMF0sIHN0cmVycm9yKGVycm5vKSk7 DQo= --=-pEPDdX/Y4kFuS4qGjcDg Content-Disposition: attachment; filename=60-firmware-hunt.patch Content-Type: text/x-patch; name=60-firmware-hunt.patch; charset=UTF-8 Content-Transfer-Encoding: base64 ZGlmZiAtcnVOcCB1ZGV2LTA3Nn4vZXh0cmFzL2Zpcm13YXJlL2Zpcm13YXJlX2hlbHBlci5jIHVk ZXYtMDc2L2V4dHJhcy9maXJtd2FyZS9maXJtd2FyZV9oZWxwZXIuYw0KLS0tIHVkZXYtMDc2fi9l eHRyYXMvZmlybXdhcmUvZmlybXdhcmVfaGVscGVyLmMJMjAwNS0xMS0yMiAxNjozNDo1NS4wMDAw MDAwMDAgKzAwMDANCisrKyB1ZGV2LTA3Ni9leHRyYXMvZmlybXdhcmUvZmlybXdhcmVfaGVscGVy LmMJMjAwNS0xMS0yMyAxNDoxNjozMS41MzMxNDk1NjggKzAwMDANCkBAIC0xNiwxMSArMTYsMTEg QEANCiAjaW5jbHVkZSA8c3lzbG9nLmg+DQogI2luY2x1ZGUgPHVuaXN0ZC5oPg0KICNpbmNsdWRl IDxzeXMvc3RhdC5oPg0KKyNpbmNsdWRlIDxzeXMvdXRzbmFtZS5oPg0KIA0KICNpbmNsdWRlICIu Li8uLi91ZGV2X3V0aWxzLmgiDQogI2luY2x1ZGUgIi4uLy4uL2xvZ2dpbmcuaCINCiANCi0jZGVm aW5lIEZJUk1XQVJFX1BBVEgJCQkiL2xpYi9maXJtd2FyZSINCiAjZGVmaW5lIFBBVEhfU0laRQkJ CTI1Ng0KIA0KICNpZmRlZiBVU0VfTE9HDQpAQCAtNzQsMTAgKzc0LDEyIEBAIGludCBtYWluKGlu dCBhcmdjLCBjaGFyICoqYXJndikgew0KIAljaGFyICpkZXZwYXRoLCAqZmlybXdhcmUsICphY3Rp b24sICpkcml2ZXI7DQogCWNoYXIgZndfcGF0aFtQQVRIX1NJWkVdOw0KIAljaGFyIGRhdGFfcGF0 aFtQQVRIX1NJWkVdOw0KKwlzdHJ1Y3QgdXRzbmFtZSB1dHNidWY7DQogCWludCBmd19mZDsNCiAJ Y2hhciAqZndfYnVmZmVyOw0KIAlzaXplX3QgZndfYnVmZmVyX3NpemU7DQogCXNpemVfdCBjb3Vu dDsNCisJaW50IGksIGxvYWRlZCA9IDA7DQogCWludCByYyA9IDA7DQogDQogCWxvZ2dpbmdfaW5p dCgiZmlybXdhcmVfaGVscGVyIik7DQpAQCAtOTMsNDIgKzk1LDY3IEBAIGludCBtYWluKGludCBh cmdjLCBjaGFyICoqYXJndikgew0KIAkJZXhpdCgxKTsNCiAJfQ0KIA0KKwlpZiAodW5hbWUoJnV0 c2J1ZikpIHsNCisJCWVycigidW5hYmxlIHRvIGdldCBrZXJuZWwgdmVyc2lvbiIpOw0KKwkJZXhp dCgxKTsNCisJfQ0KKw0KIAlkYmcoInRyeSB0byBsb2FkIGZpcm13YXJlICclcycgZm9yICclcyci LCBmaXJtd2FyZSwgZGV2cGF0aCk7DQogCXNldF9sb2FkaW5nKGRldnBhdGgsIDEpOw0KIA0KLQlz bnByaW50Zihmd19wYXRoLCBzaXplb2YoZndfcGF0aCksICIlcy8lcyIsIEZJUk1XQVJFX1BBVEgs IGZpcm13YXJlKTsNCi0JZndfcGF0aFtzaXplb2YoZndfcGF0aCktMV0gPSAnXDAnOw0KLQlpZiAo ZmlsZV9tYXAoZndfcGF0aCwgJmZ3X2J1ZmZlciwgJmZ3X2J1ZmZlcl9zaXplKSAhPSAwIHx8IGZ3 X2J1ZmZlcl9zaXplID09IDApIHsNCi0JCWVycigiY291bGQgbm90IGxvYWQgZmlybXdhcmUgJyVz JyBmb3IgJyVzJyIsIGZ3X3BhdGgsIGRldnBhdGgpOw0KLQkJZndfYnVmZmVyID0gTlVMTDsNCi0J CWdvdG8gb3V0X2VycjsNCi0JfQ0KLQ0KLQlzbnByaW50ZihkYXRhX3BhdGgsIHNpemVvZihkYXRh X3BhdGgpLCAiL3N5cy8lcy9kYXRhIiwgZGV2cGF0aCk7DQotCWRhdGFfcGF0aFtzaXplb2YoZGF0 YV9wYXRoKS0xXSA9ICdcMCc7DQotCWZ3X2ZkID0gb3BlbihkYXRhX3BhdGgsIE9fUkRXUik7DQot CWlmIChmd19mZCA8IDApIHsNCi0JCXJjID0gZXJybm87DQotCQlnb3RvIG91dF9lcnI7DQotCX0N CisJZm9yIChpID0gMDsgaSA8IDI7IGkrKykgew0KKwkJc3dpdGNoIChpKSB7DQorCQljYXNlIDA6 IC8qIC9saWIvZmlybXdhcmUvJFZFUlNJT04vJEZJUk1XQVJFICovDQorCQkJc25wcmludGYoZndf cGF0aCwgc2l6ZW9mKGZ3X3BhdGgpLA0KKwkJCQkgIi9saWIvZmlybXdhcmUvJXMvJXMiLCB1dHNi dWYucmVsZWFzZSwNCisJCQkJIGZpcm13YXJlKTsNCisJCQlicmVhazsNCisJCWNhc2UgMTogLyog L2xpYi9maXJtd2FyZS8kRklSTVdBUkUgKi8NCisJCQlzbnByaW50Zihmd19wYXRoLCBzaXplb2Yo ZndfcGF0aCksDQorCQkJCSAiL2xpYi9maXJtd2FyZS8lcyIsIGZpcm13YXJlKTsNCisJCQlicmVh azsNCisJCX0NCisJCWZ3X3BhdGhbc2l6ZW9mKGZ3X3BhdGgpLTFdID0gJ1wwJzsNCiANCi0JY291 bnQgPSAwOw0KLQl3aGlsZSAoY291bnQgPCBmd19idWZmZXJfc2l6ZSkgew0KLQkJc3NpemVfdCBj Ow0KKwkJZGJnKCJsb29raW5nIGZvciBmaXJtd2FyZSBhdCAnJXMnIiwgZndfcGF0aCk7DQorCQlp ZiAoZmlsZV9tYXAoZndfcGF0aCwgJmZ3X2J1ZmZlciwgJmZ3X2J1ZmZlcl9zaXplKSAhPSAwIHx8 IGZ3X2J1ZmZlcl9zaXplID09IDApIHsNCisJCQlmd19idWZmZXIgPSBOVUxMOw0KKwkJCWNvbnRp bnVlOw0KKwkJfQ0KIA0KLQkJYyA9IHdyaXRlKGZ3X2ZkLCBmd19idWZmZXIrY291bnQsIGZ3X2J1 ZmZlcl9zaXplLWNvdW50KTsNCi0JCWlmIChjIDw9IDApIHsNCisJCWRiZygiZmlybXdhcmUgZm91 bmQiKTsNCisJCXNucHJpbnRmKGRhdGFfcGF0aCwgc2l6ZW9mKGRhdGFfcGF0aCksICIvc3lzLyVz L2RhdGEiLCBkZXZwYXRoKTsNCisJCWRhdGFfcGF0aFtzaXplb2YoZGF0YV9wYXRoKS0xXSA9ICdc MCc7DQorCQlmd19mZCA9IG9wZW4oZGF0YV9wYXRoLCBPX1JEV1IpOw0KKwkJaWYgKGZ3X2ZkIDwg MCkgew0KIAkJCXJjID0gZXJybm87DQotCQkJY2xvc2UoZndfZmQpOw0KIAkJCWdvdG8gb3V0X2Vy cjsNCiAJCX0NCi0JCWNvdW50ICs9IGM7DQorDQorCQljb3VudCA9IDA7DQorCQl3aGlsZSAoY291 bnQgPCBmd19idWZmZXJfc2l6ZSkgew0KKwkJCXNzaXplX3QgYzsNCisNCisJCQljID0gd3JpdGUo ZndfZmQsIGZ3X2J1ZmZlcitjb3VudCwgZndfYnVmZmVyX3NpemUtY291bnQpOw0KKwkJCWlmIChj IDw9IDApIHsNCisJCQkJcmMgPSBlcnJubzsNCisJCQkJY2xvc2UoZndfZmQpOw0KKwkJCQlnb3Rv IG91dF9lcnI7DQorCQkJfQ0KKwkJCWNvdW50ICs9IGM7DQorCQl9DQorDQorCQljbG9zZShmd19m ZCk7DQorCQlmaWxlX3VubWFwKGZ3X2J1ZmZlciwgZndfYnVmZmVyX3NpemUpOw0KKwkJbG9hZGVk ID0gMTsNCiAJfQ0KIA0KLQljbG9zZShmd19mZCk7DQotCWZpbGVfdW5tYXAoZndfYnVmZmVyLCBm d19idWZmZXJfc2l6ZSk7DQorCWlmICghbG9hZGVkKQ0KKwkJZ290byBvdXRfZXJyOw0KKw0KIAlz ZXRfbG9hZGluZyhkZXZwYXRoLCAwKTsNCiAJaW5mbygibG9hZGVkICclcycgZm9yIGRldmljZSAn JXMnIiwgZndfcGF0aCwgZGV2cGF0aCk7DQorDQogCWxvZ2dpbmdfY2xvc2UoKTsNCiAJcmV0dXJu IDA7DQogDQo= --=-pEPDdX/Y4kFuS4qGjcDg Content-Disposition: attachment; filename=80-extras-dvb_device_name.patch Content-Type: text/x-patch; name=80-extras-dvb_device_name.patch; charset=UTF-8 Content-Transfer-Encoding: base64 ZGlmZiAtcnVOcCB1ZGV2LTA3Nn4vZXh0cmFzL2R2Yl9kZXZpY2VfbmFtZS9NYWtlZmlsZSB1ZGV2 LTA3Ni9leHRyYXMvZHZiX2RldmljZV9uYW1lL01ha2VmaWxlDQotLS0gdWRldi0wNzZ+L2V4dHJh cy9kdmJfZGV2aWNlX25hbWUvTWFrZWZpbGUJMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAg KzAxMDANCisrKyB1ZGV2LTA3Ni9leHRyYXMvZHZiX2RldmljZV9uYW1lL01ha2VmaWxlCTIwMDUt MTEtMjQgMTk6MjQ6MzIuNjc0MDc2MjA4ICswMDAwDQpAQCAtMCwwICsxLDY2IEBADQorIyBDb3B5 cmlnaHQgwqkgMjAwNSBDYW5vbmljYWwgTHRkLg0KKyMgQXV0aG9yOiBTY290dCBKYW1lcyBSZW1u YW50IDxzY290dEB1YnVudHUuY29tPg0KKyMNCisjIFJlbGVhc2VkIHVuZGVyIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSwgdmVyc2lvbiAyLg0KKw0KK1BST0cgPSBkdmJfZGV2aWNlX25h bWUNCitPQkogPQ0KK0hFQURFUlMgPQ0KK0dFTl9IRUFERVJTID0NCitNQU5fUEFHRVMgPQ0KKw0K K3ByZWZpeCA9DQorZXRjZGlyID0JJHtwcmVmaXh9L2V0Yw0KK3NiaW5kaXIgPQkke3ByZWZpeH0v c2Jpbg0KK3VzcmJpbmRpciA9CSR7cHJlZml4fS91c3IvYmluDQordXNyc2JpbmRpciA9CSR7cHJl Zml4fS91c3Ivc2Jpbg0KK2xpYnVkZXZkaXIgPQkke3ByZWZpeH0vbGliL3VkZXYNCittYW5kaXIg PQkke3ByZWZpeH0vdXNyL3NoYXJlL21hbg0KK2NvbmZpZ2RpciA9CSR7ZXRjZGlyfS91ZGV2Lw0K Kw0KK0lOU1RBTEwgPSAvdXNyL2Jpbi9pbnN0YWxsIC1jDQorSU5TVEFMTF9QUk9HUkFNID0gJHtJ TlNUQUxMfQ0KK0lOU1RBTExfREFUQSAgPSAke0lOU1RBTEx9IC1tIDY0NA0KK0lOU1RBTExfU0NS SVBUID0gJHtJTlNUQUxMX1BST0dSQU19DQorDQorYWxsOiAkKFBST0cpICQoTUFOX1BBR0VTKQ0K Ky5QSE9OWTogYWxsDQorLkRFRkFVTFQ6IGFsbA0KKw0KKyUubzogJS5jICQoR0VOX0hFQURFUlMp DQorCSQoUVVJRVQpICQoQ0MpIC1jICQoQ0ZMQUdTKSAkPCAtbyAkQA0KKw0KKyQoUFJPRyk6ICU6 ICQoSEVBREVSUykgJS5vICQoT0JKUykNCisJJChRVUlFVCkgJChMRCkgJChMREZMQUdTKSAkQC5v ICQoT0JKUykgLW8gJEAgJChMSUJVREVWKSAkKExJQlNZU0ZTKSAkKExJQl9PQkpTKQ0KK2lmbmVx ICgkKHN0cmlwICQoU1RSSVBDTUQpKSwpDQorCSQoUVVJRVQpICQoU1RSSVBDTUQpICRADQorZW5k aWYNCisNCisjIG1hbiBwYWdlcw0KKyUuODogJS54bWwNCisJeG1sdG8gbWFuICQ/DQorLlBSRUNJ T1VTOiAlLjgNCisNCitjbGVhbjoNCisJcm0gLWYgJChQUk9HKSAkKE9CSlMpICQoR0VOX0hFQURF UlMpDQorLlBIT05ZOiBjbGVhbg0KKw0KK2luc3RhbGwtYmluOiBhbGwNCisJJChJTlNUQUxMX1BS T0dSQU0pIC1EICQoUFJPRykgJChERVNURElSKSQobGlidWRldmRpcikvJChQUk9HKQ0KKy5QSE9O WTogaW5zdGFsbC1iaW4NCisNCit1bmluc3RhbGwtYmluOg0KKwktIHJtICQoREVTVERJUikkKGxp YnVkZXZkaXIpLyQoUFJPRykNCisuUEhPTlk6IHVuaW5zdGFsbC1iaW4NCisNCitpbnN0YWxsLW1h bjoNCisJJChJTlNUQUxMX0RBVEEpIC1EICQoUFJPRykuOCAkKERFU1RESVIpJChtYW5kaXIpL21h bjgvJChQUk9HKS44DQorLlBIT05ZOiB1bmluc3RhbGwtbWFuDQorDQordW5pbnN0YWxsLW1hbjoN CisJLXJtIC1mICQoREVTVERJUikkKG1hbmRpcikvbWFuOC8kKFBST0cpLjgNCisuUEhPTlk6IHVu aW5zdGFsbC1tYW4NCisNCitpbnN0YWxsLWNvbmZpZzoNCisJQGVjaG8gIm5vIGNvbmZpZyBmaWxl IHRvIGluc3RhbGwiDQorLlBIT05ZOiBpbnN0YWxsLWNvbmZpZw0KZGlmZiAtcnVOcCB1ZGV2LTA3 Nn4vZXh0cmFzL2R2Yl9kZXZpY2VfbmFtZS9kdmJfZGV2aWNlX25hbWUuOCB1ZGV2LTA3Ni9leHRy YXMvZHZiX2RldmljZV9uYW1lL2R2Yl9kZXZpY2VfbmFtZS44DQotLS0gdWRldi0wNzZ+L2V4dHJh cy9kdmJfZGV2aWNlX25hbWUvZHZiX2RldmljZV9uYW1lLjgJMTk3MC0wMS0wMSAwMTowMDowMC4w MDAwMDAwMDAgKzAxMDANCisrKyB1ZGV2LTA3Ni9leHRyYXMvZHZiX2RldmljZV9uYW1lL2R2Yl9k ZXZpY2VfbmFtZS44CTIwMDUtMTEtMjQgMTk6MjQ6MzIuNjc0MDc2MjA4ICswMDAwDQpAQCAtMCww ICsxLDI4IEBADQorLlRIIERWQl9ERVZJQ0VfTkFNRSA4ICJOb3ZlbWJlciAyMDA1IiAiIiAiTGlu dXggQWRtaW5pc3RyYXRvcidzIE1hbnVhbCINCisuU0ggTkFNRQ0KK2R2Yl9kZXZpY2VfbmFtZSBc LSB1ZGV2IGNhbGxvdXQgdG8gc3BsaXQga2VybmVsIG5hbWUgZm9yIGR2YiBkZXZpY2VzDQorLlNI IFNZTk9QU0lTDQorLkJJIGR2Yl9kZXZpY2VfbmFtZQ0KK1tcZkktLWV4cG9ydFxmUF0gXGZJZGV2 aWNlbmFtZVxmUA0KKy5TSCBERVNDUklQVElPTg0KKy5CIGR2Yl9kZXZpY2VfbmFtZQ0KK2lzIG5v cm1hbGx5IGNhbGxlZCBmcm9tIGEgdWRldiBydWxlIHRvIHNwbGl0IHRoZSBrZXJuZWwtYXNzaWdu ZWQgbmFtZSBmb3IgYQ0KK2RldmljZSBpbiB0aGUgZHZiX2RldmljZSBzdWJzeXN0ZW0gaW50byBi dXMgYW5kIGRldmljZSBudW1iZXJzLiAgVWRldiBjYW4gdXNlDQordGhpcyBpbmZvcm1hdGlvbiB0 byBjb25zdHJ1Y3QgYSBuYW1lIHVuZGVyIC9kZXYvZHZiIGZvciB0aGUgcmVhbCBkZXZpY2UNCitu b2RlLg0KKy5TSCBVU0FHRQ0KKy5CIGR2Yl9kZXZpY2VfbmFtZQ0KK3NwbGl0cyB0aGUga2VybmVs LWFzc2lnbmVkIG5hbWUgc3BlY2lmaWVkIG9uIHRoZSBjb21tYW5kLWxpbmUgYW5kIHByaW50cyB0 aGUNCitpbmZvcm1hdGlvbiBjaG9zZW4gYnkgdGhlIG9wdGlvbnMuDQorLlNIIE9QVElPTlMNCitU aGUgZm9sbG93aW5nIGNvbW1hbmQtbGluZSBzd2l0Y2hlcyBhcmUgc3VwcG9ydGVkIHRvIHNwZWNp Znkgd2hhdA0KK2R2Yl9kZXZpY2VfbmFtZSBzaG91bGQgcHJpbnQ6DQorLlRQDQorLkJJIC0tZXhw b3J0DQorcHJpbnQgYnVzIGFuZCBkZXZpY2UgbnVtYmVycyBhcyBEVkJfQURBUFRFUiBhbmQgRFZC X0RFViBlbnZpcm9ubWVudCB2YXJpYWJsZXMsDQorZm9yIHVzZSB3aXRoIGFuIElNUE9SVHtwcm9n cmFtfSBydWxlLg0KKy5SRQ0KKy5TSCBTRUUgQUxTTw0KKy5CUiB1ZGV2ICg4KQ0KKy5TSCBBVVRI T1JTDQorU2NvdHQgSmFtZXMgUmVtbmFudCA8c2NvdHRAdWJ1bnR1LmNvbT4NCmRpZmYgLXJ1TnAg dWRldi0wNzZ+L2V4dHJhcy9kdmJfZGV2aWNlX25hbWUvZHZiX2RldmljZV9uYW1lLmMgdWRldi0w NzYvZXh0cmFzL2R2Yl9kZXZpY2VfbmFtZS9kdmJfZGV2aWNlX25hbWUuYw0KLS0tIHVkZXYtMDc2 fi9leHRyYXMvZHZiX2RldmljZV9uYW1lL2R2Yl9kZXZpY2VfbmFtZS5jCTE5NzAtMDEtMDEgMDE6 MDA6MDAuMDAwMDAwMDAwICswMTAwDQorKysgdWRldi0wNzYvZXh0cmFzL2R2Yl9kZXZpY2VfbmFt ZS9kdmJfZGV2aWNlX25hbWUuYwkyMDA1LTExLTI0IDIwOjAzOjAzLjY0ODkxNjc1MCArMDAwMA0K QEAgLTAsMCArMSwxMDMgQEANCisvKg0KKyAqIGR2Yl9kZXZpY2VfbmFtZSAtIHNwbGl0cyBrZXJu ZWwgbmFtZSBmb3IgZHZiX2RldmljZSBzdWJzeXN0ZW0NCisgKg0KKyAqIENvcHlyaWdodCDCqSAy MDA1IENhbm9uaWNhbCBMdGQuDQorICogQXV0aG9yOiBTY290dCBKYW1lcyBSZW1uYW50IDxzY290 dEB1YnVudHUuY29tPg0KKyAqDQorICoJVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQNCisgKgl1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUN CisgKglGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLg0K KyAqDQorICoJVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg d2lsbCBiZSB1c2VmdWwsIGJ1dA0KKyAqCVdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2 ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCisgKglNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQ0KKyAqCUdlbmVyYWwgUHVi bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4NCisgKg0KKyAqCVlvdSBzaG91bGQgaGF2ZSBy ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nDQor ICoJd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgSW5jLiwNCisgKgk1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3Rv biwgTUEgIDAyMTEwLTEzMDEgVVNBDQorICoNCisgKi8NCisNCisjaW5jbHVkZSA8c3RkaW8uaD4N CisjaW5jbHVkZSA8c3RkbGliLmg+DQorI2luY2x1ZGUgPHN0cmluZy5oPg0KKw0KKyNpbmNsdWRl ICIuLi8uLi9sb2dnaW5nLmgiDQorI2luY2x1ZGUgIi4uLy4uL3VkZXZfdXRpbHMuaCINCisNCisj aWZkZWYgVVNFX0xPRw0KK3ZvaWQgbG9nX21lc3NhZ2UoaW50IHByaW9yaXR5LCBjb25zdCBjaGFy ICpmb3JtYXQsIC4uLikNCit7DQorCXZhX2xpc3QgYXJnczsNCisJc3RhdGljIGludCB1ZGV2X2xv ZyA9IC0xOw0KKw0KKwlpZiAodWRldl9sb2cgPT0gLTEpIHsNCisJCWNvbnN0IGNoYXIgKnZhbHVl Ow0KKw0KKwkJdmFsdWUgPSBnZXRlbnYoIlVERVZfTE9HIik7DQorCQlpZiAodmFsdWUpDQorCQkJ dWRldl9sb2cgPSBsb2dfcHJpb3JpdHkodmFsdWUpOw0KKwkJZWxzZQ0KKwkJCXVkZXZfbG9nID0g TE9HX0VSUjsNCisJfQ0KKw0KKwlpZiAocHJpb3JpdHkgPiB1ZGV2X2xvZykNCisJCXJldHVybjsN CisNCisJdmFfc3RhcnQoYXJncywgZm9ybWF0KTsNCisJdnN5c2xvZyhwcmlvcml0eSwgZm9ybWF0 LCBhcmdzKTsNCisJdmFfZW5kKGFyZ3MpOw0KK30NCisjZW5kaWYNCisNCitpbnQgbWFpbihpbnQg YXJnYywgY2hhciAqYXJndltdKQ0KK3sNCisJY29uc3QgY2hhciAqbmFtZSA9IE5VTEwsICpwdHI7 DQorCWludCBleHBvcnQgPSAwLCByZXQgPSAwOw0KKwlpbnQgaSwgYnVzLCBkZXY7DQorDQorCWxv Z2dpbmdfaW5pdCgiZHZiX2RldmljZV9uYW1lIik7DQorDQorCWZvciAoaSA9IDE7IGkgPCBhcmdj OyBpKyspIHsNCisJCWlmIChzdHJjbXAgKGFyZ3ZbaV0sICItLWV4cG9ydCIpID09IDApIHsNCisJ CQlleHBvcnQgPSAxOw0KKwkJfSBlbHNlIHsNCisJCQluYW1lID0gYXJndltpXTsNCisJCX0NCisJ fQ0KKw0KKwlpZiAoIW5hbWUpIHsNCisJCWVycigibm8gZGV2aWNlIG5hbWUgc3BlY2lmaWVkIik7 DQorCQlyZXQgPSAxOw0KKwkJZ290byBleGl0Ow0KKwl9DQorDQorCWlmIChzdHJuY21wKG5hbWUs ICJkdmIiLCAzKSAhPSAwKSB7DQorCQlpbmZvKCJkZXZpY2Ugbm90IGR2Yl9kZXZpY2UiKTsNCisJ CXJldCA9IDE7DQorCQlnb3RvIGV4aXQ7DQorCX0NCisNCisJcHRyID0gc3RyY2hyKG5hbWUsICcu Jyk7DQorCWlmICghcHRyKSB7DQorCQllcnIoImRldmljZSBuYW1lIGNvbnRhaW5zIG5vIGRldmlj ZSIpOw0KKwkJcmV0ID0gMTsNCisJCWdvdG8gZXhpdDsNCisJfQ0KKw0KKwluYW1lICs9IDY7DQor CWJ1cyA9IGF0b2kobmFtZSk7DQorCWRldiA9IGF0b2kocHRyICsgMSk7DQorDQorCWlmIChleHBv cnQpIHsNCisJCXByaW50ZigiRFZCX0FEQVBURVI9JWRcbiIsIGJ1cyk7DQorCQlwcmludGYoIkRW Ql9ERVY9JWRcbiIsIGRldik7DQorCX0gZWxzZSB7DQorCQlwcmludGYoIiVkLiVkXG4iLCBidXMs IGRldik7DQorCX0NCisNCitleGl0Og0KKwlsb2dnaW5nX2Nsb3NlKCk7DQorCXJldHVybiByZXQ7 DQorfQ0K --=-pEPDdX/Y4kFuS4qGjcDg Content-Disposition: attachment; filename=80-extras-ide_media.patch Content-Type: text/x-patch; name=80-extras-ide_media.patch; charset=UTF-8 Content-Transfer-Encoding: base64 ZGlmZiAtcnVOcCB1ZGV2LTA3Nn4vZXh0cmFzL2lkZV9tZWRpYS9NYWtlZmlsZSB1ZGV2LTA3Ni9l eHRyYXMvaWRlX21lZGlhL01ha2VmaWxlDQotLS0gdWRldi0wNzZ+L2V4dHJhcy9pZGVfbWVkaWEv TWFrZWZpbGUJMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDANCisrKyB1ZGV2LTA3 Ni9leHRyYXMvaWRlX21lZGlhL01ha2VmaWxlCTIwMDUtMTEtMjQgMjA6MTQ6MDIuNTk4MDk4NTAw ICswMDAwDQpAQCAtMCwwICsxLDY2IEBADQorIyBDb3B5cmlnaHQgwqkgMjAwNSBDYW5vbmljYWwg THRkLg0KKyMgQXV0aG9yOiBTY290dCBKYW1lcyBSZW1uYW50IDxzY290dEB1YnVudHUuY29tPg0K KyMNCisjIFJlbGVhc2VkIHVuZGVyIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgdmVy c2lvbiAyLg0KKw0KK1BST0cgPSBpZGVfbWVkaWENCitPQkogPQ0KK0hFQURFUlMgPQ0KK0dFTl9I RUFERVJTID0NCitNQU5fUEFHRVMgPQ0KKw0KK3ByZWZpeCA9DQorZXRjZGlyID0JJHtwcmVmaXh9 L2V0Yw0KK3NiaW5kaXIgPQkke3ByZWZpeH0vc2Jpbg0KK3VzcmJpbmRpciA9CSR7cHJlZml4fS91 c3IvYmluDQordXNyc2JpbmRpciA9CSR7cHJlZml4fS91c3Ivc2Jpbg0KK2xpYnVkZXZkaXIgPQkk e3ByZWZpeH0vbGliL3VkZXYNCittYW5kaXIgPQkke3ByZWZpeH0vdXNyL3NoYXJlL21hbg0KK2Nv bmZpZ2RpciA9CSR7ZXRjZGlyfS91ZGV2Lw0KKw0KK0lOU1RBTEwgPSAvdXNyL2Jpbi9pbnN0YWxs IC1jDQorSU5TVEFMTF9QUk9HUkFNID0gJHtJTlNUQUxMfQ0KK0lOU1RBTExfREFUQSAgPSAke0lO U1RBTEx9IC1tIDY0NA0KK0lOU1RBTExfU0NSSVBUID0gJHtJTlNUQUxMX1BST0dSQU19DQorDQor YWxsOiAkKFBST0cpICQoTUFOX1BBR0VTKQ0KKy5QSE9OWTogYWxsDQorLkRFRkFVTFQ6IGFsbA0K Kw0KKyUubzogJS5jICQoR0VOX0hFQURFUlMpDQorCSQoUVVJRVQpICQoQ0MpIC1jICQoQ0ZMQUdT KSAkPCAtbyAkQA0KKw0KKyQoUFJPRyk6ICU6ICQoSEVBREVSUykgJS5vICQoT0JKUykNCisJJChR VUlFVCkgJChMRCkgJChMREZMQUdTKSAkQC5vICQoT0JKUykgLW8gJEAgJChMSUJVREVWKSAkKExJ QlNZU0ZTKSAkKExJQl9PQkpTKQ0KK2lmbmVxICgkKHN0cmlwICQoU1RSSVBDTUQpKSwpDQorCSQo UVVJRVQpICQoU1RSSVBDTUQpICRADQorZW5kaWYNCisNCisjIG1hbiBwYWdlcw0KKyUuODogJS54 bWwNCisJeG1sdG8gbWFuICQ/DQorLlBSRUNJT1VTOiAlLjgNCisNCitjbGVhbjoNCisJcm0gLWYg JChQUk9HKSAkKE9CSlMpICQoR0VOX0hFQURFUlMpDQorLlBIT05ZOiBjbGVhbg0KKw0KK2luc3Rh bGwtYmluOiBhbGwNCisJJChJTlNUQUxMX1BST0dSQU0pIC1EICQoUFJPRykgJChERVNURElSKSQo bGlidWRldmRpcikvJChQUk9HKQ0KKy5QSE9OWTogaW5zdGFsbC1iaW4NCisNCit1bmluc3RhbGwt YmluOg0KKwktIHJtICQoREVTVERJUikkKGxpYnVkZXZkaXIpLyQoUFJPRykNCisuUEhPTlk6IHVu aW5zdGFsbC1iaW4NCisNCitpbnN0YWxsLW1hbjoNCisJJChJTlNUQUxMX0RBVEEpIC1EICQoUFJP RykuOCAkKERFU1RESVIpJChtYW5kaXIpL21hbjgvJChQUk9HKS44DQorLlBIT05ZOiB1bmluc3Rh bGwtbWFuDQorDQordW5pbnN0YWxsLW1hbjoNCisJLXJtIC1mICQoREVTVERJUikkKG1hbmRpcikv bWFuOC8kKFBST0cpLjgNCisuUEhPTlk6IHVuaW5zdGFsbC1tYW4NCisNCitpbnN0YWxsLWNvbmZp ZzoNCisJQGVjaG8gIm5vIGNvbmZpZyBmaWxlIHRvIGluc3RhbGwiDQorLlBIT05ZOiBpbnN0YWxs LWNvbmZpZw0KZGlmZiAtcnVOcCB1ZGV2LTA3Nn4vZXh0cmFzL2lkZV9tZWRpYS9pZGVfbWVkaWEu OCB1ZGV2LTA3Ni9leHRyYXMvaWRlX21lZGlhL2lkZV9tZWRpYS44DQotLS0gdWRldi0wNzZ+L2V4 dHJhcy9pZGVfbWVkaWEvaWRlX21lZGlhLjgJMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAg KzAxMDANCisrKyB1ZGV2LTA3Ni9leHRyYXMvaWRlX21lZGlhL2lkZV9tZWRpYS44CTIwMDUtMTEt MjQgMjA6MTQ6MDIuNTk4MDk4NTAwICswMDAwDQpAQCAtMCwwICsxLDI5IEBADQorLlRIIElERV9N RURJQSA4ICJOb3ZlbWJlciAyMDA1IiAiIiAiTGludXggQWRtaW5pc3RyYXRvcidzIE1hbnVhbCIN CisuU0ggTkFNRQ0KK2lkZV9tZWRpYSBcLSB1ZGV2IGNhbGxvdXQgdG8gaWRlbnRpZnkgbWVkaWEg b2YgSURFIGRldmljZQ0KKy5TSCBTWU5PUFNJUw0KKy5CSSBpZGVfbWVkaWENCitbXGZJLS1leHBv cnRcZlBdIFxmSWRldnBhdGhcZlANCisuU0ggREVTQ1JJUFRJT04NCisuQiBpZGVfbWVkaWENCitp cyBub3JtYWxseSBjYWxsZWQgZnJvbSBhIHVkZXYgcnVsZSB0byBpZGVudGlmeSB0aGUgbWVkaWEg dHlwZSBvZiBhbiBJREUNCitkZXZpY2UuICBVZGV2IGNhbiB1c2UgdGhpcyBpbmZvcm1hdGlvbiB0 byBhc3NpZ24gYXBwcm9wcmlhdGUgcGVybWlzc2lvbnMgdG8NCit0aGUgZGV2aWNlIG9yIGxvYWQg YW4gYXBwcm9wcmlhdGUgbW9kdWxlLg0KKy5TSCBVU0FHRQ0KKy5CIGlkZV9tZWRpYQ0KK3Rha2Vz IGEgcGF0aCB1bmRlciAvc3lzLCBpZiBub3QgZ2l2ZW4gaXQgdXNlcyB0aGUgdmFsdWUgb2YgdGhl DQorLkkgREVWUEFUSA0KK2Vudmlyb25tZW50IHZhcmlhYmxlIGluc3RlYWQuICBJdCB0aGVuIHBy aW50cyB0aGUgaW5mb3JtYXRpb24gY2hvc2VuIGJ5IHRoZQ0KK29wdGlvbnMuDQorLlNIIE9QVElP TlMNCitUaGUgZm9sbG93aW5nIGNvbW1hbmQtbGluZSBzd2l0Y2hlcyBhcmUgc3VwcG9ydGVkIHRv IHNwZWNpZnkgd2hhdA0KK2lkZV9tZWRpYSBzaG91bGQgcHJpbnQ6DQorLlRQDQorLkJJIC0tZXhw b3J0DQorcHJpbnQgbWVkaWEgdHlwZSBhcyBJREVfTUVESUEgZW52aXJvbm1lbnQgdmFyaWFibGUg Zm9yIHVzZSB3aXRoIGFuDQorSU1QT1JUe3Byb2dyYW19IHJ1bGUuDQorLlJFDQorLlNIIFNFRSBB TFNPDQorLkJSIHVkZXYgKDgpDQorLlNIIEFVVEhPUlMNCitTY290dCBKYW1lcyBSZW1uYW50IDxz Y290dEB1YnVudHUuY29tPg0KZGlmZiAtcnVOcCB1ZGV2LTA3Nn4vZXh0cmFzL2lkZV9tZWRpYS9p ZGVfbWVkaWEuYyB1ZGV2LTA3Ni9leHRyYXMvaWRlX21lZGlhL2lkZV9tZWRpYS5jDQotLS0gdWRl di0wNzZ+L2V4dHJhcy9pZGVfbWVkaWEvaWRlX21lZGlhLmMJMTk3MC0wMS0wMSAwMTowMDowMC4w MDAwMDAwMDAgKzAxMDANCisrKyB1ZGV2LTA3Ni9leHRyYXMvaWRlX21lZGlhL2lkZV9tZWRpYS5j CTIwMDUtMTEtMjQgMjA6NTU6MDguNDY2OTI3NzUwICswMDAwDQpAQCAtMCwwICsxLDE1NSBAQA0K Ky8qDQorICogaWRlX21lZGlhIC0gaWRlbnRpZnkgbWVkaWEgdHlwZSBvZiBhbiBJREUgZGV2aWNl DQorICoNCisgKiBDb3B5cmlnaHQgwqkgMjAwNSBDYW5vbmljYWwgTHRkLg0KKyAqIEF1dGhvcjog U2NvdHQgSmFtZXMgUmVtbmFudCA8c2NvdHRAdWJ1bnR1LmNvbT4NCisgKg0KKyAqCVRoaXMgcHJv Z3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9k aWZ5IGl0DQorICoJdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlDQorICoJRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIHZl cnNpb24gMiBvZiB0aGUgTGljZW5zZS4NCisgKg0KKyAqCVRoaXMgcHJvZ3JhbSBpcyBkaXN0cmli dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQNCisgKglXSVRIT1VU IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mDQorICoJ TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl IHRoZSBHTlUNCisgKglHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuDQor ICoNCisgKglZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBhbG9uZw0KKyAqCXdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdy aXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sDQorICoJNTEgRnJhbmts aW4gU3QsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxIFVTQQ0KKyAqDQorICov DQorDQorI2luY2x1ZGUgPHN5cy90eXBlcy5oPg0KKyNpbmNsdWRlIDxzeXMvc3RhdC5oPg0KKw0K KyNpbmNsdWRlIDxzdGRpby5oPg0KKyNpbmNsdWRlIDxzdGRsaWIuaD4NCisjaW5jbHVkZSA8c3Ry aW5nLmg+DQorI2luY2x1ZGUgPHVuaXN0ZC5oPg0KKyNpbmNsdWRlIDxlcnJuby5oPg0KKyNpbmNs dWRlIDxmY250bC5oPg0KKw0KKyNpbmNsdWRlICIuLi8uLi9sb2dnaW5nLmgiDQorI2luY2x1ZGUg Ii4uLy4uL3VkZXZfdXRpbHMuaCINCisjaW5jbHVkZSAiLi4vLi4vdWRldl9saWJjX3dyYXBwZXIu aCINCisNCisjaWZkZWYgVVNFX0xPRw0KK3ZvaWQgbG9nX21lc3NhZ2UoaW50IHByaW9yaXR5LCBj b25zdCBjaGFyICpmb3JtYXQsIC4uLikNCit7DQorCXZhX2xpc3QgYXJnczsNCisJc3RhdGljIGlu dCB1ZGV2X2xvZyA9IC0xOw0KKw0KKwlpZiAodWRldl9sb2cgPT0gLTEpIHsNCisJCWNvbnN0IGNo YXIgKnZhbHVlOw0KKw0KKwkJdmFsdWUgPSBnZXRlbnYoIlVERVZfTE9HIik7DQorCQlpZiAodmFs dWUpDQorCQkJdWRldl9sb2cgPSBsb2dfcHJpb3JpdHkodmFsdWUpOw0KKwkJZWxzZQ0KKwkJCXVk ZXZfbG9nID0gTE9HX0VSUjsNCisJfQ0KKw0KKwlpZiAocHJpb3JpdHkgPiB1ZGV2X2xvZykNCisJ CXJldHVybjsNCisNCisJdmFfc3RhcnQoYXJncywgZm9ybWF0KTsNCisJdnN5c2xvZyhwcmlvcml0 eSwgZm9ybWF0LCBhcmdzKTsNCisJdmFfZW5kKGFyZ3MpOw0KK30NCisjZW5kaWYNCisNCitpbnQg bWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQ0KK3sNCisJc3RydWN0IHN0YXQgYnVmOw0KKwlj b25zdCBjaGFyICpkZXZwYXRoID0gTlVMTCwgKm5hbWUsICpwdHI7DQorCWNoYXIgZmlsZW5hbWVb UEFUSF9TSVpFXSwgbWVkaWFbMjU2XTsNCisJaW50IHJldCA9IDAsIGV4cG9ydCA9IDA7DQorCWlu dCBob3N0LCBkcml2ZSwgZGV2Ow0KKwlpbnQgaSwgZmQsIGxlbjsNCisNCisJbG9nZ2luZ19pbml0 KCJpZGVfbWVkaWEiKTsNCisNCisJZm9yIChpID0gMTsgaSA8IGFyZ2M7IGkrKykgew0KKwkJaWYg KHN0cmNtcChhcmd2W2ldLCAiLS1leHBvcnQiKSA9PSAwKSB7DQorCQkJZXhwb3J0ID0gMTsNCisJ CX0gZWxzZSB7DQorCQkJZGV2cGF0aCA9IGFyZ3ZbaV07DQorCQl9DQorCX0NCisNCisJaWYgKCFk ZXZwYXRoKSB7DQorCQlkZXZwYXRoID0gZ2V0ZW52KCJERVZQQVRIIik7DQorCQlpZiAoIWRldnBh dGgpIHsNCisJCQllcnIoIm5vIGRldnBhdGggc3BlY2lmaWVkIGFuZCBERVZQQVRIIG5vdCBzZXQi KTsNCisJCQlyZXQgPSAxOw0KKwkJCWdvdG8gZXhpdDsNCisJCX0NCisJfQ0KKw0KKwluYW1lID0g c3Ryc3RyKGRldnBhdGgsICIvaWRlIik7DQorCWlmIChuYW1lKQ0KKwkJbmFtZSA9IHN0cmNocihu YW1lICsgMSwgJy8nKTsNCisJaWYgKCFuYW1lKSB7DQorCQlpbmZvKCJkZXZwYXRoIGlzIG5vdCBp ZGUgZGV2aWNlIik7DQorCQlyZXQgPSAxOw0KKwkJZ290byBleGl0Ow0KKwl9DQorDQorCXB0ciA9 IHN0cmNocihuYW1lLCAnLicpOw0KKwlpZiAoIXB0cikgew0KKwkJZXJyKCJkZXZpY2UgbmFtZSBj b250YWlucyBubyBkcml2ZSIpOw0KKwkJcmV0ID0gMTsNCisJCWdvdG8gZXhpdDsNCisJfQ0KKw0K KwluYW1lICs9IDE7DQorCWhvc3QgPSBhdG9pKG5hbWUpOw0KKwlkcml2ZSA9IGF0b2kocHRyICsg MSk7DQorDQorCS8qIGV2aWwsIGV2aWwsIGV2aWwgKi8NCisJZGV2ID0gZHJpdmUgKyBob3N0ICog MiArIDEwOw0KKw0KKwlzbnByaW50ZihmaWxlbmFtZSwgc2l6ZW9mKGZpbGVuYW1lKSwgIi9wcm9j L2lkZS9pZGUlZC9oZCV4L21lZGlhIiwgaG9zdCwgZGV2KTsNCisJZmlsZW5hbWVbc2l6ZW9mKGZp bGVuYW1lKS0xXSA9ICdcMCc7DQorDQorCS8qIGhhbmcgYXJvdW5kIGZvciAvcHJvYyB0byBjYXRj aCB1cCAqLw0KKwlmb3IgKGkgPSAxMDA7IGk7IGktLSkgew0KKwkJaWYgKHN0YXQoZmlsZW5hbWUs ICZidWYpID09IDApDQorCQkJYnJlYWs7DQorDQorCQl1c2xlZXAoMzAwMDApOw0KKwl9DQorDQor CWZkID0gb3BlbihmaWxlbmFtZSwgT19SRE9OTFkpOw0KKwlpZiAoIWZkKSB7DQorCQllcnIoInVu YWJsZSB0byBvcGVuICclcyciLCBmaWxlbmFtZSk7DQorCQlyZXQgPSAxOw0KKwkJZ290byBleGl0 Ow0KKwl9DQorDQorCWxlbiA9IHJlYWQoZmQsIG1lZGlhLCBzaXplb2YobWVkaWEpKTsNCisJaWYg KGxlbiA8PSAwKSB7DQorCQllcnIoInVuYWJsZSB0byByZWFkIGZyb20gJyVzJyIsIGZpbGVuYW1l KTsNCisJCXJldCA9IDE7DQorCQlnb3RvIGNsb3NlOw0KKwl9DQorDQorCW1lZGlhW2xlbl0gPSAn XDAnOw0KKwlpZiAobWVkaWFbbGVuLTFdID09ICdcbicpDQorCQltZWRpYVtsZW4tMV0gPSAnXDAn Ow0KKw0KKwlpZiAoZXhwb3J0KSB7DQorCQlwcmludGYoIklERV9IT1NUPSVkXG4iLCBob3N0KTsN CisJCXByaW50ZigiSURFX0RSSVZFPSVkXG4iLCBkcml2ZSk7DQorCQlwcmludGYoIklERV9ERVZJ Q0U9aGQleFxuIiwgZGV2KTsNCisJCXByaW50ZigiSURFX01FRElBPSVzXG4iLCBtZWRpYSk7DQor CX0gZWxzZSB7DQorCQlwcmludGYoIiVzXG4iLCBtZWRpYSk7DQorCX0NCisNCitjbG9zZToNCisJ Y2xvc2UoZmQpOw0KK2V4aXQ6DQorCWxvZ2dpbmdfY2xvc2UoKTsNCisJcmV0dXJuIHJldDsNCit9 DQo= --=-pEPDdX/Y4kFuS4qGjcDg Content-Disposition: attachment; filename=80-extras-pnp_modules.patch Content-Type: text/x-patch; name=80-extras-pnp_modules.patch; charset=UTF-8 Content-Transfer-Encoding: base64 ZGlmZiAtcnVOcCB1ZGV2LTA3Nn4vZXh0cmFzL3BucF9tb2R1bGVzL01ha2VmaWxlIHVkZXYtMDc2 L2V4dHJhcy9wbnBfbW9kdWxlcy9NYWtlZmlsZQ0KLS0tIHVkZXYtMDc2fi9leHRyYXMvcG5wX21v ZHVsZXMvTWFrZWZpbGUJMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDANCisrKyB1 ZGV2LTA3Ni9leHRyYXMvcG5wX21vZHVsZXMvTWFrZWZpbGUJMjAwNS0xMi0wMSAwMToxNTo1Mi4z MTU1NTM3NTAgKzAwMDANCkBAIC0wLDAgKzEsNjYgQEANCisjIENvcHlyaWdodCDCqSAyMDA1IENh bm9uaWNhbCBMdGQuDQorIyBBdXRob3I6IFNjb3R0IEphbWVzIFJlbW5hbnQgPHNjb3R0QHVidW50 dS5jb20+DQorIw0KKyMgUmVsZWFzZWQgdW5kZXIgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlLCB2ZXJzaW9uIDIuDQorDQorUFJPRyA9IHBucF9tb2R1bGVzDQorT0JKID0NCitIRUFERVJT ID0NCitHRU5fSEVBREVSUyA9DQorTUFOX1BBR0VTID0NCisNCitwcmVmaXggPQ0KK2V0Y2RpciA9 CSR7cHJlZml4fS9ldGMNCitzYmluZGlyID0JJHtwcmVmaXh9L3NiaW4NCit1c3JiaW5kaXIgPQkk e3ByZWZpeH0vdXNyL2Jpbg0KK3VzcnNiaW5kaXIgPQkke3ByZWZpeH0vdXNyL3NiaW4NCitsaWJ1 ZGV2ZGlyID0JJHtwcmVmaXh9L2xpYi91ZGV2DQorbWFuZGlyID0JJHtwcmVmaXh9L3Vzci9zaGFy ZS9tYW4NCitjb25maWdkaXIgPQkke2V0Y2Rpcn0vdWRldi8NCisNCitJTlNUQUxMID0gL3Vzci9i aW4vaW5zdGFsbCAtYw0KK0lOU1RBTExfUFJPR1JBTSA9ICR7SU5TVEFMTH0NCitJTlNUQUxMX0RB VEEgID0gJHtJTlNUQUxMfSAtbSA2NDQNCitJTlNUQUxMX1NDUklQVCA9ICR7SU5TVEFMTF9QUk9H UkFNfQ0KKw0KK2FsbDogJChQUk9HKSAkKE1BTl9QQUdFUykNCisuUEhPTlk6IGFsbA0KKy5ERUZB VUxUOiBhbGwNCisNCislLm86ICUuYyAkKEdFTl9IRUFERVJTKQ0KKwkkKFFVSUVUKSAkKENDKSAt YyAkKENGTEFHUykgJDwgLW8gJEANCisNCiskKFBST0cpOiAlOiAkKEhFQURFUlMpICUubyAkKE9C SlMpDQorCSQoUVVJRVQpICQoTEQpICQoTERGTEFHUykgJEAubyAkKE9CSlMpIC1vICRAICQoTElC VURFVikgJChMSUJTWVNGUykgJChMSUJfT0JKUykNCitpZm5lcSAoJChzdHJpcCAkKFNUUklQQ01E KSksKQ0KKwkkKFFVSUVUKSAkKFNUUklQQ01EKSAkQA0KK2VuZGlmDQorDQorIyBtYW4gcGFnZXMN CislLjg6ICUueG1sDQorCXhtbHRvIG1hbiAkPw0KKy5QUkVDSU9VUzogJS44DQorDQorY2xlYW46 DQorCXJtIC1mICQoUFJPRykgJChPQkpTKSAkKEdFTl9IRUFERVJTKQ0KKy5QSE9OWTogY2xlYW4N CisNCitpbnN0YWxsLWJpbjogYWxsDQorCSQoSU5TVEFMTF9QUk9HUkFNKSAtRCAkKFBST0cpICQo REVTVERJUikkKGxpYnVkZXZkaXIpLyQoUFJPRykNCisuUEhPTlk6IGluc3RhbGwtYmluDQorDQor dW5pbnN0YWxsLWJpbjoNCisJLSBybSAkKERFU1RESVIpJChsaWJ1ZGV2ZGlyKS8kKFBST0cpDQor LlBIT05ZOiB1bmluc3RhbGwtYmluDQorDQoraW5zdGFsbC1tYW46DQorCSQoSU5TVEFMTF9EQVRB KSAtRCAkKFBST0cpLjggJChERVNURElSKSQobWFuZGlyKS9tYW44LyQoUFJPRykuOA0KKy5QSE9O WTogdW5pbnN0YWxsLW1hbg0KKw0KK3VuaW5zdGFsbC1tYW46DQorCS1ybSAtZiAkKERFU1RESVIp JChtYW5kaXIpL21hbjgvJChQUk9HKS44DQorLlBIT05ZOiB1bmluc3RhbGwtbWFuDQorDQoraW5z dGFsbC1jb25maWc6DQorCUBlY2hvICJubyBjb25maWcgZmlsZSB0byBpbnN0YWxsIg0KKy5QSE9O WTogaW5zdGFsbC1jb25maWcNCmRpZmYgLXJ1TnAgdWRldi0wNzZ+L2V4dHJhcy9wbnBfbW9kdWxl cy9wbnBfbW9kdWxlcy44IHVkZXYtMDc2L2V4dHJhcy9wbnBfbW9kdWxlcy9wbnBfbW9kdWxlcy44 DQotLS0gdWRldi0wNzZ+L2V4dHJhcy9wbnBfbW9kdWxlcy9wbnBfbW9kdWxlcy44CTE5NzAtMDEt MDEgMDE6MDA6MDAuMDAwMDAwMDAwICswMTAwDQorKysgdWRldi0wNzYvZXh0cmFzL3BucF9tb2R1 bGVzL3BucF9tb2R1bGVzLjgJMjAwNS0xMi0wMSAwMToxNTo1Mi4zMTU1NTM3NTAgKzAwMDANCkBA IC0wLDAgKzEsMjIgQEANCisuVEggUE5QX01PRFVMRVMgOCAiTm92ZW1iZXIgMjAwNSIgIiIgIkxp bnV4IEFkbWluaXN0cmF0b3IncyBNYW51YWwiDQorLlNIIE5BTUUNCitwbnBfbW9kdWxlcyBcLSB1 ZGV2IGNhbGxvdXQgdG8gbGlzdCBtb2R1bGVzIGZvciBQTlAgZGV2aWNlcw0KKy5TSCBTWU5PUFNJ Uw0KKy5CSSBwbnBfbW9kdWxlcw0KK1xmSWRldnBhdGhcZlANCisuU0ggREVTQ1JJUFRJT04NCisu QiBpZGVfbWVkaWENCitpcyBub3JtYWxseSBjYWxsZWQgZnJvbSBhIHVkZXYgUFJPR1JBTSBydWxl IHRvIGxpc3QgYWxpYXNlcyB0aGF0IGNhbiBiZQ0KK3VzZWQgdG8gbG9hZCBtb2R1bGVzIGZvciBQ TlAgZGV2aWNlcy4NCisuU0ggVVNBR0UNCisuQiBwbnBfbW9kdWxlcw0KK3Rha2VzIGEgc2luZ2xl IGFyZ3VtZW50IHdoaWNoIHNob3VsZCBiZSBhIHBhdGggdW5kZXIgL3N5cywgaWYgbm90IGdpdmVu DQoraXQgdXNlcyB0aGUgdmFsdWUgb2YgdGhlDQorLkkgREVWUEFUSA0KK2Vudmlyb25tZW50IHZh cmlhYmxlIGluc3RlYWQuICBPdXRwdXRzIGEgbGlzdCBvZiBtb2Rwcm9iZSBhbGlhc2VzIHRoYXQN CitjYW4gYmUgdXNlZCB0byBsb2FkIG1vZHVsZXMsIGUuZy4gd2l0aCBhIFJVTiBydWxlLg0KKy5S RQ0KKy5TSCBTRUUgQUxTTw0KKy5CUiB1ZGV2ICg4KQ0KKy5TSCBBVVRIT1JTDQorU2NvdHQgSmFt ZXMgUmVtbmFudCA8c2NvdHRAdWJ1bnR1LmNvbT4NCmRpZmYgLXJ1TnAgdWRldi0wNzZ+L2V4dHJh cy9wbnBfbW9kdWxlcy9wbnBfbW9kdWxlcy5jIHVkZXYtMDc2L2V4dHJhcy9wbnBfbW9kdWxlcy9w bnBfbW9kdWxlcy5jDQotLS0gdWRldi0wNzZ+L2V4dHJhcy9wbnBfbW9kdWxlcy9wbnBfbW9kdWxl cy5jCTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAwICswMTAwDQorKysgdWRldi0wNzYvZXh0 cmFzL3BucF9tb2R1bGVzL3BucF9tb2R1bGVzLmMJMjAwNS0xMi0wMSAxMzoyMTozMi42OTY2NTc1 MDAgKzAwMDANCkBAIC0wLDAgKzEsMTExIEBADQorLyoNCisgKiBwbnBfbW9kdWxlcyAtIGxpc3Qg bW9kdWxlcyBmb3IgUE5QIGRldmljZXMNCisgKg0KKyAqIENvcHlyaWdodCDCqSAyMDA1IENhbm9u aWNhbCBMdGQuDQorICogQXV0aG9yOiBTY290dCBKYW1lcyBSZW1uYW50IDxzY290dEB1YnVudHUu Y29tPg0KKyAqDQorICoJVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk aXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQNCisgKgl1bmRlciB0aGUgdGVybXMgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUNCisgKglGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24gdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLg0KKyAqDQorICoJ VGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1 c2VmdWwsIGJ1dA0KKyAqCVdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt cGxpZWQgd2FycmFudHkgb2YNCisgKglNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQ0KKyAqCUdlbmVyYWwgUHVibGljIExpY2Vu c2UgZm9yIG1vcmUgZGV0YWlscy4NCisgKg0KKyAqCVlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh IGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nDQorICoJd2l0aCB0 aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv biwgSW5jLiwNCisgKgk1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAy MTEwLTEzMDEgVVNBDQorICoNCisgKi8NCisNCisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+DQorI2lu Y2x1ZGUgPHN5cy9zdGF0Lmg+DQorDQorI2luY2x1ZGUgPHN0ZGlvLmg+DQorI2luY2x1ZGUgPHN0 ZGxpYi5oPg0KKyNpbmNsdWRlIDxzdHJpbmcuaD4NCisjaW5jbHVkZSA8dW5pc3RkLmg+DQorI2lu Y2x1ZGUgPGVycm5vLmg+DQorI2luY2x1ZGUgPGZjbnRsLmg+DQorDQorI2luY2x1ZGUgIi4uLy4u L2xvZ2dpbmcuaCINCisjaW5jbHVkZSAiLi4vLi4vdWRldl91dGlscy5oIg0KKyNpbmNsdWRlICIu Li8uLi91ZGV2X2xpYmNfd3JhcHBlci5oIg0KKw0KKyNpZmRlZiBVU0VfTE9HDQordm9pZCBsb2df bWVzc2FnZShpbnQgcHJpb3JpdHksIGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKQ0KK3sNCisJdmFf bGlzdCBhcmdzOw0KKwlzdGF0aWMgaW50IHVkZXZfbG9nID0gLTE7DQorDQorCWlmICh1ZGV2X2xv ZyA9PSAtMSkgew0KKwkJY29uc3QgY2hhciAqdmFsdWU7DQorDQorCQl2YWx1ZSA9IGdldGVudigi VURFVl9MT0ciKTsNCisJCWlmICh2YWx1ZSkNCisJCQl1ZGV2X2xvZyA9IGxvZ19wcmlvcml0eSh2 YWx1ZSk7DQorCQllbHNlDQorCQkJdWRldl9sb2cgPSBMT0dfRVJSOw0KKwl9DQorDQorCWlmIChw cmlvcml0eSA+IHVkZXZfbG9nKQ0KKwkJcmV0dXJuOw0KKw0KKwl2YV9zdGFydChhcmdzLCBmb3Jt YXQpOw0KKwl2c3lzbG9nKHByaW9yaXR5LCBmb3JtYXQsIGFyZ3MpOw0KKwl2YV9lbmQoYXJncyk7 DQorfQ0KKyNlbmRpZg0KKw0KK2ludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pDQorew0K KwlzdHJ1Y3Qgc3RhdCBzdGF0YnVmOw0KKwljb25zdCBjaGFyICpkZXZwYXRoOw0KKwljaGFyIGZp bGVuYW1lW1BBVEhfU0laRV0sIGxpbmVbMjU2XTsNCisJRklMRSAqZnA7DQorCWludCByZXQgPSAw Ow0KKw0KKwlsb2dnaW5nX2luaXQoInBucF9tb2R1bGVzIik7DQorCXVkZXZfaW5pdF9jb25maWco KTsNCisNCisJaWYgKGFyZ2MgPiAxKSB7DQorCQlkZXZwYXRoID0gYXJndlsxXTsNCisJfSBlbHNl IHsNCisJCWRldnBhdGggPSBnZXRlbnYoIkRFVlBBVEgiKTsNCisJCWlmICghZGV2cGF0aCkgew0K KwkJCWVycigibm8gZGV2cGF0aCBzcGVjaWZpZWQgYW5kIERFVlBBVEggbm90IHNldCIpOw0KKwkJ CXJldCA9IDE7DQorCQkJZ290byBleGl0Ow0KKwkJfQ0KKwl9DQorDQorCXN0cmxjcHkoZmlsZW5h bWUsIHN5c2ZzX3BhdGgsIHNpemVvZihmaWxlbmFtZSkpOw0KKwlzdHJsY2F0KGZpbGVuYW1lLCBk ZXZwYXRoLCBzaXplb2YoZmlsZW5hbWUpKTsNCisNCisJaWYgKHN0YXQoZmlsZW5hbWUsICZzdGF0 YnVmKSAhPSAwKSB7DQorCQllcnIoInN0YXQgb2YgJyVzJyBmYWlsZWQiLCBmaWxlbmFtZSk7DQor CQlyZXQgPSAxOw0KKwkJZ290byBleGl0Ow0KKwl9DQorDQorCXN0cmxjYXQoZmlsZW5hbWUsICIv Iiwgc2l6ZW9mKGZpbGVuYW1lKSk7DQorCXN0cmxjYXQoZmlsZW5hbWUsICJpZCIsIHNpemVvZihm aWxlbmFtZSkpOw0KKw0KKwlmcCA9IGZvcGVuKGZpbGVuYW1lLCAiciIpOw0KKwlpZiAoIWZwKSB7 DQorCQllcnIoImNhbid0IG9wZW4gJyVzJzogJXMiLCBmaWxlbmFtZSwgc3RyZXJyb3IoZXJybm8p KTsNCisJCXJldCA9IDE7DQorCQlnb3RvIGV4aXQ7DQorCX0NCisNCisJd2hpbGUgKGZnZXRzKGxp bmUsIHNpemVvZihsaW5lKSwgZnApKSB7DQorCQlyZW1vdmVfdHJhaWxpbmdfY2hhcnMobGluZSwg J1xuJyk7DQorCQlwcmludGYoInBucDpkJXNcbiIsIGxpbmUpOw0KKwl9DQorDQorCWZjbG9zZShm cCk7DQorZXhpdDoNCisJbG9nZ2luZ19jbG9zZSgpOw0KKwlyZXR1cm4gcmV0Ow0KK30NCn== --=-pEPDdX/Y4kFuS4qGjcDg Content-Disposition: attachment; filename=80-extras-storage_enum.patch Content-Type: text/x-patch; name=80-extras-storage_enum.patch; charset=UTF-8 Content-Transfer-Encoding: base64 LS0tIHVkZXYtMDc3fi9leHRyYXMvc3RvcmFnZV9lbnVtLnNoCTE5NzAtMDEtMDEgMDE6MDA6MDAu MDAwMDAwMDAwICswMTAwDQorKysgdWRldi0wNzcvZXh0cmFzL3N0b3JhZ2VfZW51bS5zaAkyMDA1 LTEyLTA2IDE5OjQ5OjA4LjY1Njk0OTI1MCArMDAwMA0KQEAgLTAsMCArMSw5MyBAQA0KKyMhL2Jp bi9zaCAtZQ0KKyMgc3RvcmFnZV9lbnVtIC0gZW51bWVyYXRlZCBzdG9yYWdlIGRldmljZXMNCisj DQorIyBDb3B5cmlnaHQgwqkgMjAwNSBDYW5vbmljYWwgTHRkLg0KKyMgQXV0aG9yOiBTY290dCBK YW1lcyBSZW1uYW50IDxzY290dEB1YnVudHUuY29tPg0KKyMNCisjCVRoaXMgcHJvZ3JhbSBpcyBm cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0DQor Iwl1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1 Ymxpc2hlZCBieSB0aGUNCisjCUZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiB2ZXJzaW9uIDIgb2Yg dGhlIExpY2Vuc2UuDQorIwkNCisjCVRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQNCisjCVdJVEhPVVQgQU5ZIFdBUlJBTlRZ OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCisjCU1FUkNIQU5UQUJJTElU WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VDQorIwlH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuDQorIwkNCisjCVlvdSBzaG91 bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGFsb25nDQorIwl3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLA0KKyMJNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29y LCBCb3N0b24sIE1BICAwMjExMC0xMzAxIFVTQQ0KKw0KKw0KKyMgRmlndXJlIG91dCB3aGF0IHR5 cGUgb2YgZGV2aWNlIHdlJ3ZlIGJlZW4gY2FsbGVkIGZvcg0KK2Rldm5hbWU9IiQxIg0KK2Nhc2Ug IiRkZXZuYW1lIiBpbg0KKyAgICBmZFswLTldKikNCisgICAgICAgIHR5cGU9ZmxvcHB5DQorCTs7 DQorDQorICAgIHNkW2Etel0pDQorICAgICAgICB0eXBlPWRpc2sNCisJOzsNCisNCisgICAgc2Rb YS16XVswLTldKikNCisgICAgICAgIHR5cGU9cGFydGl0aW9uDQorICAgICAgICBuYW1lPXBhcnQk e2Rldm5hbWUjI3NkW2Etel19DQorCWRpc2s9JHtkZXZuYW1lJSVbMC05XSp9DQorCTs7DQorDQor ICAgIHNyWzAtOV0qKQ0KKyAgICAgICAgdHlwZT1jZHJvbQ0KKwk7Ow0KKw0KKyAgICBoZFthLXpd KQ0KKyAgICAgICAgdHlwZT0kKC9saWIvdWRldi9pZGVfbWVkaWEgJFBIWVNERVZQQVRIKQ0KKwk7 Ow0KKw0KKyAgICBoZFthLXpdWzAtOV0qKQ0KKyAgICAgICAgdHlwZT1wYXJ0aXRpb24NCisJbmFt ZT1wYXJ0JHtkZXZuYW1lIyNoZFthLXpdfQ0KKwlkaXNrPSR7ZGV2bmFtZSUlWzAtOV0qfQ0KKwk7 Ow0KKw0KKyAgICAqKQ0KKwlleGl0IDENCisJOzsNCitlc2FjDQorDQorDQorIyBIYW5kbGUgcGFy dGl0aW9ucywgd2hpY2ggZG9uJ3QgbmVlZCBlbnVtZXJhdGluZw0KK2lmIFsgIiR0eXBlIiA9ICJw YXJ0aXRpb24iIF07IHRoZW4NCisgICAgc3ViZGlyPSQoc2VkIC1uIC1lICIvXiRkaXNrIC9zLy4q IC8vcCIgL2Rldi8ubmFtZXMpDQorICAgIGVjaG8gImRpc2NzLyRzdWJkaXIvJG5hbWUiDQorICAg IGV4aXQgMA0KK2ZpDQorDQorDQorIyBHZXQgdGhlIG5leHQgbnVtYmVyIGF0b21pY2FsbHksIHRo ZSBvbmx5IHdheSB3ZSByZWxpYWJseSBjYW4NCit3aGlsZSAhIG1rZGlyIC9kZXYvLiR0eXBlLmxv Y2sgMj4vZGV2L251bGw7IGRvDQorICAgIHNsZWVwIDENCitkb25lDQoraWYgWyAtZSAvZGV2Ly4k dHlwZS5uZXh0IF07IHRoZW4NCisgICAgZW51bT0kKGNhdCAvZGV2Ly4kdHlwZS5uZXh0KQ0KK2Vs c2UNCisgICAgZW51bT0wDQorZmkNCitlY2hvICQoKCRlbnVtICsgMSkpID4gL2Rldi8uJHR5cGUu bmV4dA0KK3JtZGlyIC9kZXYvLiR0eXBlLmxvY2sNCisNCisNCisjIEZpZ3VyZSBvdXQgdGhlIHN5 bWxpbmsgbmFtZQ0KK2Nhc2UgIiR0eXBlIiBpbg0KKyAgICBkaXNrKQ0KKwllY2hvICIkZGV2bmFt ZSBkaXNjJGVudW0iID4+IC9kZXYvLm5hbWVzDQorCWVjaG8gImRpc2NzL2Rpc2MkZW51bS9kaXNj Ig0KKwk7Ow0KKw0KKyAgICBjZHJvbSkNCisJZWNobyAiY2Ryb21zL2Nkcm9tJGVudW0iDQorCTs7 DQorDQorICAgIGZsb3BweSkNCisJZWNobyAiZmxvcHB5LyRlbnVtIg0KKwk7Ow0KK2VzYWMNCg== --=-pEPDdX/Y4kFuS4qGjcDg Content-Disposition: attachment; filename=80-extras-usb_device_name.patch Content-Type: text/x-patch; name=80-extras-usb_device_name.patch; charset=UTF-8 Content-Transfer-Encoding: base64 ZGlmZiAtcnVOcCB1ZGV2LTA3Nn4vZXh0cmFzL3VzYl9kZXZpY2VfbmFtZS9NYWtlZmlsZSB1ZGV2 LTA3Ni9leHRyYXMvdXNiX2RldmljZV9uYW1lL01ha2VmaWxlDQotLS0gdWRldi0wNzZ+L2V4dHJh cy91c2JfZGV2aWNlX25hbWUvTWFrZWZpbGUJMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAg KzAxMDANCisrKyB1ZGV2LTA3Ni9leHRyYXMvdXNiX2RldmljZV9uYW1lL01ha2VmaWxlCTIwMDUt MTEtMjQgMTk6MjQ6MzIuNjgyMDc0OTkyICswMDAwDQpAQCAtMCwwICsxLDY2IEBADQorIyBDb3B5 cmlnaHQgwqkgMjAwNSBDYW5vbmljYWwgTHRkLg0KKyMgQXV0aG9yOiBTY290dCBKYW1lcyBSZW1u YW50IDxzY290dEB1YnVudHUuY29tPg0KKyMNCisjIFJlbGVhc2VkIHVuZGVyIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSwgdmVyc2lvbiAyLg0KKw0KK1BST0cgPSB1c2JfZGV2aWNlX25h bWUNCitPQkogPQ0KK0hFQURFUlMgPQ0KK0dFTl9IRUFERVJTID0NCitNQU5fUEFHRVMgPQ0KKw0K K3ByZWZpeCA9DQorZXRjZGlyID0JJHtwcmVmaXh9L2V0Yw0KK3NiaW5kaXIgPQkke3ByZWZpeH0v c2Jpbg0KK3VzcmJpbmRpciA9CSR7cHJlZml4fS91c3IvYmluDQordXNyc2JpbmRpciA9CSR7cHJl Zml4fS91c3Ivc2Jpbg0KK2xpYnVkZXZkaXIgPQkke3ByZWZpeH0vbGliL3VkZXYNCittYW5kaXIg PQkke3ByZWZpeH0vdXNyL3NoYXJlL21hbg0KK2NvbmZpZ2RpciA9CSR7ZXRjZGlyfS91ZGV2Lw0K Kw0KK0lOU1RBTEwgPSAvdXNyL2Jpbi9pbnN0YWxsIC1jDQorSU5TVEFMTF9QUk9HUkFNID0gJHtJ TlNUQUxMfQ0KK0lOU1RBTExfREFUQSAgPSAke0lOU1RBTEx9IC1tIDY0NA0KK0lOU1RBTExfU0NS SVBUID0gJHtJTlNUQUxMX1BST0dSQU19DQorDQorYWxsOiAkKFBST0cpICQoTUFOX1BBR0VTKQ0K Ky5QSE9OWTogYWxsDQorLkRFRkFVTFQ6IGFsbA0KKw0KKyUubzogJS5jICQoR0VOX0hFQURFUlMp DQorCSQoUVVJRVQpICQoQ0MpIC1jICQoQ0ZMQUdTKSAkPCAtbyAkQA0KKw0KKyQoUFJPRyk6ICU6 ICQoSEVBREVSUykgJS5vICQoT0JKUykNCisJJChRVUlFVCkgJChMRCkgJChMREZMQUdTKSAkQC5v ICQoT0JKUykgLW8gJEAgJChMSUJVREVWKSAkKExJQlNZU0ZTKSAkKExJQl9PQkpTKQ0KK2lmbmVx ICgkKHN0cmlwICQoU1RSSVBDTUQpKSwpDQorCSQoUVVJRVQpICQoU1RSSVBDTUQpICRADQorZW5k aWYNCisNCisjIG1hbiBwYWdlcw0KKyUuODogJS54bWwNCisJeG1sdG8gbWFuICQ/DQorLlBSRUNJ T1VTOiAlLjgNCisNCitjbGVhbjoNCisJcm0gLWYgJChQUk9HKSAkKE9CSlMpICQoR0VOX0hFQURF UlMpDQorLlBIT05ZOiBjbGVhbg0KKw0KK2luc3RhbGwtYmluOiBhbGwNCisJJChJTlNUQUxMX1BS T0dSQU0pIC1EICQoUFJPRykgJChERVNURElSKSQobGlidWRldmRpcikvJChQUk9HKQ0KKy5QSE9O WTogaW5zdGFsbC1iaW4NCisNCit1bmluc3RhbGwtYmluOg0KKwktIHJtICQoREVTVERJUikkKGxp YnVkZXZkaXIpLyQoUFJPRykNCisuUEhPTlk6IHVuaW5zdGFsbC1iaW4NCisNCitpbnN0YWxsLW1h bjoNCisJJChJTlNUQUxMX0RBVEEpIC1EICQoUFJPRykuOCAkKERFU1RESVIpJChtYW5kaXIpL21h bjgvJChQUk9HKS44DQorLlBIT05ZOiB1bmluc3RhbGwtbWFuDQorDQordW5pbnN0YWxsLW1hbjoN CisJLXJtIC1mICQoREVTVERJUikkKG1hbmRpcikvbWFuOC8kKFBST0cpLjgNCisuUEhPTlk6IHVu aW5zdGFsbC1tYW4NCisNCitpbnN0YWxsLWNvbmZpZzoNCisJQGVjaG8gIm5vIGNvbmZpZyBmaWxl IHRvIGluc3RhbGwiDQorLlBIT05ZOiBpbnN0YWxsLWNvbmZpZw0KZGlmZiAtcnVOcCB1ZGV2LTA3 Nn4vZXh0cmFzL3VzYl9kZXZpY2VfbmFtZS91c2JfZGV2aWNlX25hbWUuOCB1ZGV2LTA3Ni9leHRy YXMvdXNiX2RldmljZV9uYW1lL3VzYl9kZXZpY2VfbmFtZS44DQotLS0gdWRldi0wNzZ+L2V4dHJh cy91c2JfZGV2aWNlX25hbWUvdXNiX2RldmljZV9uYW1lLjgJMTk3MC0wMS0wMSAwMTowMDowMC4w MDAwMDAwMDAgKzAxMDANCisrKyB1ZGV2LTA3Ni9leHRyYXMvdXNiX2RldmljZV9uYW1lL3VzYl9k ZXZpY2VfbmFtZS44CTIwMDUtMTEtMjQgMTk6MjQ6MzIuNjgzMDc0ODQwICswMDAwDQpAQCAtMCww ICsxLDI4IEBADQorLlRIIFVTQl9ERVZJQ0VfTkFNRSA4ICJOb3ZlbWJlciAyMDA1IiAiIiAiTGlu dXggQWRtaW5pc3RyYXRvcidzIE1hbnVhbCINCisuU0ggTkFNRQ0KK3VzYl9kZXZpY2VfbmFtZSBc LSB1ZGV2IGNhbGxvdXQgdG8gc3BsaXQga2VybmVsIG5hbWUgZm9yIHVzYiBkZXZpY2VzDQorLlNI IFNZTk9QU0lTDQorLkJJIHVzYl9kZXZpY2VfbmFtZQ0KK1tcZkktLWV4cG9ydFxmUF0gXGZJZGV2 aWNlbmFtZVxmUA0KKy5TSCBERVNDUklQVElPTg0KKy5CIHVzYl9kZXZpY2VfbmFtZQ0KK2lzIG5v cm1hbGx5IGNhbGxlZCBmcm9tIGEgdWRldiBydWxlIHRvIHNwbGl0IHRoZSBrZXJuZWwtYXNzaWdu ZWQgbmFtZSBmb3IgYQ0KK2RldmljZSBpbiB0aGUgdXNiX2RldmljZSBzdWJzeXN0ZW0gaW50byBi dXMgYW5kIGRldmljZSBudW1iZXJzLiAgVWRldiBjYW4gdXNlDQordGhpcyBpbmZvcm1hdGlvbiB0 byBjb25zdHJ1Y3QgYSBuYW1lIHVuZGVyIC9kZXYvYnVzL3VzYiBmb3IgdGhlIHJlYWwgZGV2aWNl DQorbm9kZS4NCisuU0ggVVNBR0UNCisuQiB1c2JfZGV2aWNlX25hbWUNCitzcGxpdHMgdGhlIGtl cm5lbC1hc3NpZ25lZCBuYW1lIHNwZWNpZmllZCBvbiB0aGUgY29tbWFuZC1saW5lIGFuZCBwcmlu dHMgdGhlDQoraW5mb3JtYXRpb24gY2hvc2VuIGJ5IHRoZSBvcHRpb25zLg0KKy5TSCBPUFRJT05T DQorVGhlIGZvbGxvd2luZyBjb21tYW5kLWxpbmUgc3dpdGNoZXMgYXJlIHN1cHBvcnRlZCB0byBz cGVjaWZ5IHdoYXQNCit1c2JfZGV2aWNlX25hbWUgc2hvdWxkIHByaW50Og0KKy5UUA0KKy5CSSAt LWV4cG9ydA0KK3ByaW50IGJ1cyBhbmQgZGV2aWNlIG51bWJlcnMgYXMgVVNCX0JVUyBhbmQgVVNC X0RFViBlbnZpcm9ubWVudCB2YXJpYWJsZXMsDQorZm9yIHVzZSB3aXRoIGFuIElNUE9SVHtwcm9n cmFtfSBydWxlLg0KKy5SRQ0KKy5TSCBTRUUgQUxTTw0KKy5CUiB1ZGV2ICg4KQ0KKy5TSCBBVVRI T1JTDQorU2NvdHQgSmFtZXMgUmVtbmFudCA8c2NvdHRAdWJ1bnR1LmNvbT4NCmRpZmYgLXJ1TnAg dWRldi0wNzZ+L2V4dHJhcy91c2JfZGV2aWNlX25hbWUvdXNiX2RldmljZV9uYW1lLmMgdWRldi0w NzYvZXh0cmFzL3VzYl9kZXZpY2VfbmFtZS91c2JfZGV2aWNlX25hbWUuYw0KLS0tIHVkZXYtMDc2 fi9leHRyYXMvdXNiX2RldmljZV9uYW1lL3VzYl9kZXZpY2VfbmFtZS5jCTE5NzAtMDEtMDEgMDE6 MDA6MDAuMDAwMDAwMDAwICswMTAwDQorKysgdWRldi0wNzYvZXh0cmFzL3VzYl9kZXZpY2VfbmFt ZS91c2JfZGV2aWNlX25hbWUuYwkyMDA1LTExLTI0IDIwOjAyOjU0LjI1MjMyOTUwMCArMDAwMA0K QEAgLTAsMCArMSwxMDMgQEANCisvKg0KKyAqIHVzYl9kZXZpY2VfbmFtZSAtIHNwbGl0cyBrZXJu ZWwgbmFtZSBmb3IgdXNiX2RldmljZSBzdWJzeXN0ZW0NCisgKg0KKyAqIENvcHlyaWdodCDCqSAy MDA1IENhbm9uaWNhbCBMdGQuDQorICogQXV0aG9yOiBTY290dCBKYW1lcyBSZW1uYW50IDxzY290 dEB1YnVudHUuY29tPg0KKyAqDQorICoJVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQNCisgKgl1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUN CisgKglGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLg0K KyAqDQorICoJVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg d2lsbCBiZSB1c2VmdWwsIGJ1dA0KKyAqCVdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2 ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCisgKglNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQ0KKyAqCUdlbmVyYWwgUHVi bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4NCisgKg0KKyAqCVlvdSBzaG91bGQgaGF2ZSBy ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nDQor ICoJd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgSW5jLiwNCisgKgk1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3Rv biwgTUEgIDAyMTEwLTEzMDEgVVNBDQorICoNCisgKi8NCisNCisjaW5jbHVkZSA8c3RkaW8uaD4N CisjaW5jbHVkZSA8c3RkbGliLmg+DQorI2luY2x1ZGUgPHN0cmluZy5oPg0KKw0KKyNpbmNsdWRl ICIuLi8uLi9sb2dnaW5nLmgiDQorI2luY2x1ZGUgIi4uLy4uL3VkZXZfdXRpbHMuaCINCisNCisj aWZkZWYgVVNFX0xPRw0KK3ZvaWQgbG9nX21lc3NhZ2UoaW50IHByaW9yaXR5LCBjb25zdCBjaGFy ICpmb3JtYXQsIC4uLikNCit7DQorCXZhX2xpc3QgYXJnczsNCisJc3RhdGljIGludCB1ZGV2X2xv ZyA9IC0xOw0KKw0KKwlpZiAodWRldl9sb2cgPT0gLTEpIHsNCisJCWNvbnN0IGNoYXIgKnZhbHVl Ow0KKw0KKwkJdmFsdWUgPSBnZXRlbnYoIlVERVZfTE9HIik7DQorCQlpZiAodmFsdWUpDQorCQkJ dWRldl9sb2cgPSBsb2dfcHJpb3JpdHkodmFsdWUpOw0KKwkJZWxzZQ0KKwkJCXVkZXZfbG9nID0g TE9HX0VSUjsNCisJfQ0KKw0KKwlpZiAocHJpb3JpdHkgPiB1ZGV2X2xvZykNCisJCXJldHVybjsN CisNCisJdmFfc3RhcnQoYXJncywgZm9ybWF0KTsNCisJdnN5c2xvZyhwcmlvcml0eSwgZm9ybWF0 LCBhcmdzKTsNCisJdmFfZW5kKGFyZ3MpOw0KK30NCisjZW5kaWYNCisNCitpbnQgbWFpbihpbnQg YXJnYywgY2hhciAqYXJndltdKQ0KK3sNCisJY29uc3QgY2hhciAqbmFtZSA9IE5VTEwsICpwdHI7 DQorCWludCBleHBvcnQgPSAwLCByZXQgPSAwOw0KKwlpbnQgaSwgYnVzLCBkZXY7DQorDQorCWxv Z2dpbmdfaW5pdCgidXNiX2RldmljZV9uYW1lIik7DQorDQorCWZvciAoaSA9IDE7IGkgPCBhcmdj OyBpKyspIHsNCisJCWlmIChzdHJjbXAoYXJndltpXSwgIi0tZXhwb3J0IikgPT0gMCkgew0KKwkJ CWV4cG9ydCA9IDE7DQorCQl9IGVsc2Ugew0KKwkJCW5hbWUgPSBhcmd2W2ldOw0KKwkJfQ0KKwl9 DQorDQorCWlmICghbmFtZSkgew0KKwkJZXJyKCJubyBkZXZpY2UgbmFtZSBzcGVjaWZpZWQiKTsN CisJCXJldCA9IDE7DQorCQlnb3RvIGV4aXQ7DQorCX0NCisNCisJaWYgKHN0cm5jbXAobmFtZSwg InVzYmRldiIsIDYpICE9IDApIHsNCisJCWluZm8oImRldmljZSBub3QgdXNiX2RldmljZSIpOw0K KwkJcmV0ID0gMTsNCisJCWdvdG8gZXhpdDsNCisJfQ0KKw0KKwlwdHIgPSBzdHJjaHIobmFtZSwg Jy4nKTsNCisJaWYgKCFwdHIpIHsNCisJCWVycigiZGV2aWNlIG5hbWUgY29udGFpbnMgbm8gZGV2 aWNlIik7DQorCQlyZXQgPSAxOw0KKwkJZ290byBleGl0Ow0KKwl9DQorDQorCW5hbWUgKz0gNjsN CisJYnVzID0gYXRvaShuYW1lKTsNCisJZGV2ID0gYXRvaShwdHIgKyAxKTsNCisNCisJaWYgKGV4 cG9ydCkgew0KKwkJcHJpbnRmKCJVU0JfQlVTPSUwM2RcbiIsIGJ1cyk7DQorCQlwcmludGYoIlVT Ql9ERVY9JTAzZFxuIiwgZGV2KTsNCisJfSBlbHNlIHsNCisJCXByaW50ZigiJTAzZC4lMDNkXG4i LCBidXMsIGRldik7DQorCX0NCisNCitleGl0Og0KKwlsb2dnaW5nX2Nsb3NlKCk7DQorCXJldHVy biByZXQ7DQorfQ0K --=-pEPDdX/Y4kFuS4qGjcDg Content-Disposition: attachment; filename=80-extras-vio_type.patch Content-Type: text/x-patch; name=80-extras-vio_type.patch; charset=UTF-8 Content-Transfer-Encoding: base64 ZGlmZiAtcnVOcCB1ZGV2LTA3Nn4vZXh0cmFzL3Zpb190eXBlL01ha2VmaWxlIHVkZXYtMDc2L2V4 dHJhcy92aW9fdHlwZS9NYWtlZmlsZQ0KLS0tIHVkZXYtMDc2fi9leHRyYXMvdmlvX3R5cGUvTWFr ZWZpbGUJMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDANCisrKyB1ZGV2LTA3Ni9l eHRyYXMvdmlvX3R5cGUvTWFrZWZpbGUJMjAwNS0xMi0wMSAwMToxNTo1Mi4zODc1NTgyNTAgKzAw MDANCkBAIC0wLDAgKzEsNjYgQEANCisjIENvcHlyaWdodCDCqSAyMDA1IENhbm9uaWNhbCBMdGQu DQorIyBBdXRob3I6IFNjb3R0IEphbWVzIFJlbW5hbnQgPHNjb3R0QHVidW50dS5jb20+DQorIw0K KyMgUmVsZWFzZWQgdW5kZXIgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCB2ZXJzaW9u IDIuDQorDQorUFJPRyA9IHZpb190eXBlDQorT0JKID0NCitIRUFERVJTID0NCitHRU5fSEVBREVS UyA9DQorTUFOX1BBR0VTID0NCisNCitwcmVmaXggPQ0KK2V0Y2RpciA9CSR7cHJlZml4fS9ldGMN CitzYmluZGlyID0JJHtwcmVmaXh9L3NiaW4NCit1c3JiaW5kaXIgPQkke3ByZWZpeH0vdXNyL2Jp bg0KK3VzcnNiaW5kaXIgPQkke3ByZWZpeH0vdXNyL3NiaW4NCitsaWJ1ZGV2ZGlyID0JJHtwcmVm aXh9L2xpYi91ZGV2DQorbWFuZGlyID0JJHtwcmVmaXh9L3Vzci9zaGFyZS9tYW4NCitjb25maWdk aXIgPQkke2V0Y2Rpcn0vdWRldi8NCisNCitJTlNUQUxMID0gL3Vzci9iaW4vaW5zdGFsbCAtYw0K K0lOU1RBTExfUFJPR1JBTSA9ICR7SU5TVEFMTH0NCitJTlNUQUxMX0RBVEEgID0gJHtJTlNUQUxM fSAtbSA2NDQNCitJTlNUQUxMX1NDUklQVCA9ICR7SU5TVEFMTF9QUk9HUkFNfQ0KKw0KK2FsbDog JChQUk9HKSAkKE1BTl9QQUdFUykNCisuUEhPTlk6IGFsbA0KKy5ERUZBVUxUOiBhbGwNCisNCisl Lm86ICUuYyAkKEdFTl9IRUFERVJTKQ0KKwkkKFFVSUVUKSAkKENDKSAtYyAkKENGTEFHUykgJDwg LW8gJEANCisNCiskKFBST0cpOiAlOiAkKEhFQURFUlMpICUubyAkKE9CSlMpDQorCSQoUVVJRVQp ICQoTEQpICQoTERGTEFHUykgJEAubyAkKE9CSlMpIC1vICRAICQoTElCVURFVikgJChMSUJTWVNG UykgJChMSUJfT0JKUykNCitpZm5lcSAoJChzdHJpcCAkKFNUUklQQ01EKSksKQ0KKwkkKFFVSUVU KSAkKFNUUklQQ01EKSAkQA0KK2VuZGlmDQorDQorIyBtYW4gcGFnZXMNCislLjg6ICUueG1sDQor CXhtbHRvIG1hbiAkPw0KKy5QUkVDSU9VUzogJS44DQorDQorY2xlYW46DQorCXJtIC1mICQoUFJP RykgJChPQkpTKSAkKEdFTl9IRUFERVJTKQ0KKy5QSE9OWTogY2xlYW4NCisNCitpbnN0YWxsLWJp bjogYWxsDQorCSQoSU5TVEFMTF9QUk9HUkFNKSAtRCAkKFBST0cpICQoREVTVERJUikkKGxpYnVk ZXZkaXIpLyQoUFJPRykNCisuUEhPTlk6IGluc3RhbGwtYmluDQorDQordW5pbnN0YWxsLWJpbjoN CisJLSBybSAkKERFU1RESVIpJChsaWJ1ZGV2ZGlyKS8kKFBST0cpDQorLlBIT05ZOiB1bmluc3Rh bGwtYmluDQorDQoraW5zdGFsbC1tYW46DQorCSQoSU5TVEFMTF9EQVRBKSAtRCAkKFBST0cpLjgg JChERVNURElSKSQobWFuZGlyKS9tYW44LyQoUFJPRykuOA0KKy5QSE9OWTogdW5pbnN0YWxsLW1h bg0KKw0KK3VuaW5zdGFsbC1tYW46DQorCS1ybSAtZiAkKERFU1RESVIpJChtYW5kaXIpL21hbjgv JChQUk9HKS44DQorLlBIT05ZOiB1bmluc3RhbGwtbWFuDQorDQoraW5zdGFsbC1jb25maWc6DQor CUBlY2hvICJubyBjb25maWcgZmlsZSB0byBpbnN0YWxsIg0KKy5QSE9OWTogaW5zdGFsbC1jb25m aWcNCmRpZmYgLXJ1TnAgdWRldi0wNzZ+L2V4dHJhcy92aW9fdHlwZS92aW9fdHlwZS44IHVkZXYt MDc2L2V4dHJhcy92aW9fdHlwZS92aW9fdHlwZS44DQotLS0gdWRldi0wNzZ+L2V4dHJhcy92aW9f dHlwZS92aW9fdHlwZS44CTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAwICswMTAwDQorKysg dWRldi0wNzYvZXh0cmFzL3Zpb190eXBlL3Zpb190eXBlLjgJMjAwNS0xMi0wMSAwMToxNTo1Mi4z ODc1NTgyNTAgKzAwMDANCkBAIC0wLDAgKzEsMjkgQEANCisuVEggVklPX1RZUEUgOCAiTm92ZW1i ZXIgMjAwNSIgIiIgIkxpbnV4IEFkbWluaXN0cmF0b3IncyBNYW51YWwiDQorLlNIIE5BTUUNCit2 aW9fdHlwZSBcLSB1ZGV2IGNhbGxvdXQgdG8gaWRlbnRpZnkgdHlwZSBvZiBWSU8gZGV2aWNlDQor LlNIIFNZTk9QU0lTDQorLkJJIHZpb190eXBlDQorW1xmSS0tZXhwb3J0XGZQXSBcZklkZXZwYXRo XGZQDQorLlNIIERFU0NSSVBUSU9ODQorLkIgdmlvX3R5cGUNCitpcyBub3JtYWxseSBjYWxsZWQg ZnJvbSBhIHVkZXYgcnVsZSB0byBpZGVudGlmeSB0aGUgdHlwZSBvZiBhIFZJTw0KK2RldmljZS4g IFVkZXYgY2FuIHVzZSB0aGlzIGluZm9ybWF0aW9uIHRvIGFzc2lnbiBhcHByb3ByaWF0ZSBwZXJt aXNzaW9ucyB0bw0KK3RoZSBkZXZpY2Ugb3IgbG9hZCBhbiBhcHByb3ByaWF0ZSBtb2R1bGUuDQor LlNIIFVTQUdFDQorLkIgdmlvX3R5cGUNCit0YWtlcyBhIHBhdGggdW5kZXIgL3N5cywgaWYgbm90 IGdpdmVuIGl0IHVzZXMgdGhlIHZhbHVlIG9mIHRoZQ0KKy5JIERFVlBBVEgNCitlbnZpcm9ubWVu dCB2YXJpYWJsZSBpbnN0ZWFkLiAgSXQgdGhlbiBwcmludHMgdGhlIGluZm9ybWF0aW9uIGNob3Nl biBieSB0aGUNCitvcHRpb25zLg0KKy5TSCBPUFRJT05TDQorVGhlIGZvbGxvd2luZyBjb21tYW5k LWxpbmUgc3dpdGNoZXMgYXJlIHN1cHBvcnRlZCB0byBzcGVjaWZ5IHdoYXQNCit2aW9fdHlwZSBz aG91bGQgcHJpbnQ6DQorLlRQDQorLkJJIC0tZXhwb3J0DQorcHJpbnQgZGV2aWNlIHR5cGUgYXMg VklPX1RZUEUgZW52aXJvbm1lbnQgdmFyaWFibGUgZm9yIHVzZSB3aXRoIGFuDQorSU1QT1JUe3By b2dyYW19IHJ1bGUuDQorLlJFDQorLlNIIFNFRSBBTFNPDQorLkJSIHVkZXYgKDgpDQorLlNIIEFV VEhPUlMNCitTY290dCBKYW1lcyBSZW1uYW50IDxzY290dEB1YnVudHUuY29tPg0KZGlmZiAtcnVO cCB1ZGV2LTA3Nn4vZXh0cmFzL3Zpb190eXBlL3Zpb190eXBlLmMgdWRldi0wNzYvZXh0cmFzL3Zp b190eXBlL3Zpb190eXBlLmMNCi0tLSB1ZGV2LTA3Nn4vZXh0cmFzL3Zpb190eXBlL3Zpb190eXBl LmMJMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDANCisrKyB1ZGV2LTA3Ni9leHRy YXMvdmlvX3R5cGUvdmlvX3R5cGUuYwkyMDA1LTEyLTAxIDAxOjE1OjUyLjM4NzU1ODI1MCArMDAw MA0KQEAgLTAsMCArMSwxNjUgQEANCisvKg0KKyAqIHZpby10eXBlIC0gaWRlbnRpZnkgdHlwZSBv ZiBhIFZJTyBkZXZpY2UNCisgKg0KKyAqIENvcHlyaWdodCDCqSAyMDA1IENhbm9uaWNhbCBMdGQu DQorICogQXV0aG9yOiBTY290dCBKYW1lcyBSZW1uYW50IDxzY290dEB1YnVudHUuY29tPg0KKyAq DQorICoJVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vciBtb2RpZnkgaXQNCisgKgl1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUNCisgKglGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24gdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLg0KKyAqDQorICoJVGhpcyBwcm9n cmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1 dA0KKyAqCVdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy cmFudHkgb2YNCisgKglNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UuICBTZWUgdGhlIEdOVQ0KKyAqCUdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v cmUgZGV0YWlscy4NCisgKg0KKyAqCVlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nDQorICoJd2l0aCB0aGlzIHByb2dy YW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwN CisgKgk1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEg VVNBDQorICoNCisgKi8NCisNCisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+DQorI2luY2x1ZGUgPHN5 cy9zdGF0Lmg+DQorDQorI2luY2x1ZGUgPHN0ZGlvLmg+DQorI2luY2x1ZGUgPHN0ZGxpYi5oPg0K KyNpbmNsdWRlIDxzdHJpbmcuaD4NCisjaW5jbHVkZSA8dW5pc3RkLmg+DQorI2luY2x1ZGUgPGVy cm5vLmg+DQorI2luY2x1ZGUgPGZjbnRsLmg+DQorDQorI2luY2x1ZGUgIi4uLy4uL2xvZ2dpbmcu aCINCisjaW5jbHVkZSAiLi4vLi4vdWRldl91dGlscy5oIg0KKyNpbmNsdWRlICIuLi8uLi91ZGV2 X2xpYmNfd3JhcHBlci5oIg0KKw0KKyNpZmRlZiBVU0VfTE9HDQordm9pZCBsb2dfbWVzc2FnZShp bnQgcHJpb3JpdHksIGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKQ0KK3sNCisJdmFfbGlzdCBhcmdz Ow0KKwlzdGF0aWMgaW50IHVkZXZfbG9nID0gLTE7DQorDQorCWlmICh1ZGV2X2xvZyA9PSAtMSkg ew0KKwkJY29uc3QgY2hhciAqdmFsdWU7DQorDQorCQl2YWx1ZSA9IGdldGVudigiVURFVl9MT0ci KTsNCisJCWlmICh2YWx1ZSkNCisJCQl1ZGV2X2xvZyA9IGxvZ19wcmlvcml0eSh2YWx1ZSk7DQor CQllbHNlDQorCQkJdWRldl9sb2cgPSBMT0dfRVJSOw0KKwl9DQorDQorCWlmIChwcmlvcml0eSA+ IHVkZXZfbG9nKQ0KKwkJcmV0dXJuOw0KKw0KKwl2YV9zdGFydChhcmdzLCBmb3JtYXQpOw0KKwl2 c3lzbG9nKHByaW9yaXR5LCBmb3JtYXQsIGFyZ3MpOw0KKwl2YV9lbmQoYXJncyk7DQorfQ0KKyNl bmRpZg0KKw0KK2ludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pDQorew0KKwlzdHJ1Y3Qg c3RhdCBidWY7DQorCWNvbnN0IGNoYXIgKmRldnBhdGggPSBOVUxMOw0KKwljaGFyIGZpbGVuYW1l W1BBVEhfU0laRV0sIGRldnNwZWNbMjU2XSwgZGV2dHlwZVsyNTZdOw0KKwlpbnQgcmV0ID0gMCwg ZXhwb3J0ID0gMDsNCisJaW50IGksIGZkLCBsZW47DQorDQorCWxvZ2dpbmdfaW5pdCgiaWRlX21l ZGlhIik7DQorDQorCWZvciAoaSA9IDE7IGkgPCBhcmdjOyBpKyspIHsNCisJCWlmIChzdHJjbXAo YXJndltpXSwgIi0tZXhwb3J0IikgPT0gMCkgew0KKwkJCWV4cG9ydCA9IDE7DQorCQl9IGVsc2Ug ew0KKwkJCWRldnBhdGggPSBhcmd2W2ldOw0KKwkJfQ0KKwl9DQorDQorCWlmICghZGV2cGF0aCkg ew0KKwkJZGV2cGF0aCA9IGdldGVudigiREVWUEFUSCIpOw0KKwkJaWYgKCFkZXZwYXRoKSB7DQor CQkJZXJyKCJubyBkZXZwYXRoIHNwZWNpZmllZCBhbmQgREVWUEFUSCBub3Qgc2V0Iik7DQorCQkJ cmV0ID0gMTsNCisJCQlnb3RvIGV4aXQ7DQorCQl9DQorCX0NCisNCisJc3RybGNweShmaWxlbmFt ZSwgc3lzZnNfcGF0aCwgc2l6ZW9mKGZpbGVuYW1lKSk7DQorCXN0cmxjYXQoZmlsZW5hbWUsIGRl dnBhdGgsIHNpemVvZihmaWxlbmFtZSkpOw0KKw0KKwlpZiAoc3RhdChmaWxlbmFtZSwgJmJ1Zikg IT0gMCkgew0KKwkJZXJyKCJzdGF0IG9mICclcycgZmFpbGVkIiwgZmlsZW5hbWUpOw0KKwkJcmV0 ID0gMTsNCisJCWdvdG8gZXhpdDsNCisJfQ0KKw0KKwlzdHJsY2F0KGZpbGVuYW1lLCAiLyIsIHNp emVvZihmaWxlbmFtZSkpOw0KKwlzdHJsY2F0KGZpbGVuYW1lLCAiZGV2c3BlYyIsIHNpemVvZihm aWxlbmFtZSkpOw0KKw0KKwlmZCA9IG9wZW4oZmlsZW5hbWUsIE9fUkRPTkxZKTsNCisJaWYgKCFm ZCkgew0KKwkJZXJyKCJ1bmFibGUgdG8gb3BlbiAnJXMnIiwgZmlsZW5hbWUpOw0KKwkJcmV0ID0g MTsNCisJCWdvdG8gZXhpdDsNCisJfQ0KKw0KKwlsZW4gPSByZWFkKGZkLCBkZXZzcGVjLCBzaXpl b2YoZGV2c3BlYykpOw0KKwlpZiAobGVuIDw9IDApIHsNCisJCWVycigidW5hYmxlIHRvIHJlYWQg ZnJvbSAnJXMnIiwgZmlsZW5hbWUpOw0KKwkJcmV0ID0gMTsNCisJCWdvdG8gY2xvc2U7DQorCX0N CisNCisJZGV2c3BlY1tsZW5dID0gJ1wwJzsNCisJaWYgKGRldnNwZWNbbGVuLTFdID09ICdcbicp DQorCQlkZXZzcGVjW2xlbi0xXSA9ICdcMCc7DQorDQorCWNsb3NlKGZkKTsNCisNCisNCisJLyog bm93IHdlIGxvb2sgaW4gL3Byb2MgKi8NCisNCisJc3RybGNweShmaWxlbmFtZSwgIi9wcm9jL2Rl dmljZS10cmVlIiwgc2l6ZW9mKGZpbGVuYW1lKSk7DQorCXN0cmxjYXQoZmlsZW5hbWUsIGRldnNw ZWMsIHNpemVvZihmaWxlbmFtZSkpOw0KKwlzdHJsY2F0KGZpbGVuYW1lLCAiLyIsIHNpemVvZihm aWxlbmFtZSkpOw0KKwlzdHJsY2F0KGZpbGVuYW1lLCAiZGV2aWNlX3R5cGUiLCBzaXplb2YoZmls ZW5hbWUpKTsNCisNCisJLyogaGFuZyBhcm91bmQgZm9yIC9wcm9jIHRvIGNhdGNoIHVwICovDQor CWZvciAoaSA9IDEwMDsgaTsgaS0tKSB7DQorCQlpZiAoc3RhdChmaWxlbmFtZSwgJmJ1ZikgPT0g MCkNCisJCQlicmVhazsNCisNCisJCXVzbGVlcCgzMDAwMCk7DQorCX0NCisNCisJZmQgPSBvcGVu KGZpbGVuYW1lLCBPX1JET05MWSk7DQorCWlmICghZmQpIHsNCisJCWVycigidW5hYmxlIHRvIG9w ZW4gJyVzJyIsIGZpbGVuYW1lKTsNCisJCXJldCA9IDE7DQorCQlnb3RvIGV4aXQ7DQorCX0NCisN CisJbGVuID0gcmVhZChmZCwgZGV2dHlwZSwgc2l6ZW9mKGRldnR5cGUpKTsNCisJaWYgKGxlbiA8 PSAwKSB7DQorCQllcnIoInVuYWJsZSB0byByZWFkIGZyb20gJyVzJyIsIGZpbGVuYW1lKTsNCisJ CXJldCA9IDE7DQorCQlnb3RvIGNsb3NlOw0KKwl9DQorDQorCWRldnR5cGVbbGVuXSA9ICdcMCc7 DQorCWlmIChkZXZ0eXBlW2xlbi0xXSA9PSAnXG4nKQ0KKwkJZGV2dHlwZVtsZW4tMV0gPSAnXDAn Ow0KKw0KKwlpZiAoZXhwb3J0KSB7DQorCQlwcmludGYoIlZJT19UWVBFPSVzXG4iLCBkZXZ0eXBl KTsNCisJfSBlbHNlIHsNCisJCXByaW50ZigiJXNcbiIsIGRldnR5cGUpOw0KKwl9DQorDQorY2xv c2U6DQorCWNsb3NlKGZkKTsNCitleGl0Og0KKwlsb2dnaW5nX2Nsb3NlKCk7DQorCXJldHVybiBy ZXQ7DQorfQ0K --=-pEPDdX/Y4kFuS4qGjcDg-- --=-msmqrnVbFY6pmp2i5Bxs Content-Type: application/pgp-signature; name=signature.asc Content-Description: This is a digitally signed message part -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.1 (GNU/Linux) iD8DBQBDlxgbSnQiFMl4yK4RAp4IAJ4zdnj9R+VpcE8jeHNBkL1sEP64BgCfe1IR AyGm3jE6lnV7x24aFds1a4w= =uNf0 -----END PGP SIGNATURE----- --=-msmqrnVbFY6pmp2i5Bxs-- ------------------------------------------------------- This SF.net email is sponsored by: Splunk Inc. Do you grep through log files for problems? Stop! Download the new AJAX search engine that makes searching your log files as easy as surfing the web. DOWNLOAD SPLUNK! http://ads.osdn.com/?ad_id=7637&alloc_id=16865&op=click _______________________________________________ Linux-hotplug-devel mailing list http://linux-hotplug.sourceforge.net Linux-hotplug-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/linux-hotplug-devel