All of lore.kernel.org
 help / color / mirror / Atom feed
diff for duplicates of <1327045098.29773.0.camel@phoenix>

diff --git a/a/1.txt b/N1/1.txt
index 54c0ea6..9b129a7 100644
--- a/a/1.txt
+++ b/N1/1.txt
@@ -1,944 +1,1969 @@
-VGhpcyBwYXRjaCBjb252ZXJ0cyB0aGUgZHJpdmVycyBpbiBkcml2ZXJzL2h3bW9uLyogdG8gdXNl
-IHRoZQptb2R1bGVfaTJjX2RyaXZlcigpIG1hY3JvIHdoaWNoIG1ha2VzIHRoZSBjb2RlIHNtYWxs
-ZXIgYW5kIGEgYml0IHNpbXBsZXIuCgpTaWduZWQtb2ZmLWJ5OiBBeGVsIExpbiA8YXhlbC5saW5A
-Z21haWwuY29tPgpDYzogQ29yZW50aW4gTGFiYmUgPGNvcmVudGluLmxhYmJlQGdlb21hdHlzLmZy
-PgpDYzogRGlyayBFaWJhY2ggPGVpYmFjaEBnZHN5cy5kZT4KQ2M6ICJNYXJrIE0uIEhvZmZtYW4i
-IDxtaG9mZm1hbkBsaWdodGxpbmsuY29tPgpDYzogU3RldmUgR2xlbmRpbm5pbmcgPHN0ZXZlLmds
-ZW5kaW5uaW5nQHNtc2MuY29tPgpDYzogUmlrdSBWb2lwaW8gPHJpa3Uudm9pcGlvQGlraS5maT4K
-Q2M6IEd1aWxsYXVtZSBMaWduZXVsIDxndWlsbGF1bWUubGlnbmV1bEBnbWFpbC5jb20+CkNjOiBE
-YXZpZCBHZW9yZ2UgPGRhdmlkLmdlb3JnZUBza2EuYWMuemE+CkNjOiAiSGFucyBKLiBLb2NoIiA8
-aGprQGhhbnNqa29jaC5kZT4KQ2M6IE1hcmMgSHVsc21hbiA8bS5odWxzbWFuQHR1ZGVsZnQubmw+
-CkNjOiBSdWRvbGYgTWFyZWsgPHIubWFyZWtAYXNzZW1ibGVyLmN6PgotLS0KIGRyaXZlcnMvaHdt
-b24vYWQ3NDE0LmMgICAgICAgICB8ICAgMTIgKy0tLS0tLS0tLS0tCiBkcml2ZXJzL2h3bW9uL2Fk
-NzQxOC5jICAgICAgICAgfCAgIDEzICstLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vYWRtMTAy
-MS5jICAgICAgICB8ICAgMTMgKy0tLS0tLS0tLS0tLQogZHJpdmVycy9od21vbi9hZG0xMDI1LmMg
-ICAgICAgIHwgICAxMyArLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2h3bW9uL2FkbTEwMjYuYyAgICAg
-ICAgfCAgIDEzICstLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vYWRtMTAyOS5jICAgICAgICB8
-ICAgMTggKy0tLS0tLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2h3bW9uL2FkbTEwMzEuYyAgICAgICAg
-fCAgIDEzICstLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vYWRtOTI0MC5jICAgICAgICB8ICAg
-MTQgKy0tLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vYWRzMTAxNS5jICAgICAgICB8ICAgMTMg
-Ky0tLS0tLS0tLS0tLQogZHJpdmVycy9od21vbi9hZHQ3NDExLmMgICAgICAgIHwgICAxMiArLS0t
-LS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vYWR0NzQ2Mi5jICAgICAgICB8ICAgMTMgKy0tLS0tLS0t
-LS0tLQogZHJpdmVycy9od21vbi9hZHQ3NDcwLmMgICAgICAgIHwgICAxMyArLS0tLS0tLS0tLS0t
-CiBkcml2ZXJzL2h3bW9uL2FkdDc0NzUuYyAgICAgICAgfCAgIDEzICstLS0tLS0tLS0tLS0KIGRy
-aXZlcnMvaHdtb24vYW1jNjgyMS5jICAgICAgICB8ICAgMTUgKy0tLS0tLS0tLS0tLS0tCiBkcml2
-ZXJzL2h3bW9uL2FzYjEwMC5jICAgICAgICAgfCAgIDEzICstLS0tLS0tLS0tLS0KIGRyaXZlcnMv
-aHdtb24vYXR4cDEuYyAgICAgICAgICB8ICAgMTMgKy0tLS0tLS0tLS0tLQogZHJpdmVycy9od21v
-bi9kczE2MjEuYyAgICAgICAgIHwgICAxNCArLS0tLS0tLS0tLS0tLQogZHJpdmVycy9od21vbi9k
-czYyMC5jICAgICAgICAgIHwgICAxMyArLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2h3bW9uL2VtYzE0
-MDMuYyAgICAgICAgfCAgIDEzICstLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vZW1jMjEwMy5j
-ICAgICAgICB8ICAgMTMgKy0tLS0tLS0tLS0tLQogZHJpdmVycy9od21vbi9lbWM2dzIwMS5jICAg
-ICAgIHwgICAxMiArLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vZjc1Mzc1cy5jICAgICAgICB8
-ICAgMTMgKy0tLS0tLS0tLS0tLQogZHJpdmVycy9od21vbi9mc2NobWQuYyAgICAgICAgIHwgICAx
-MyArLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2h3bW9uL2c3NjBhLmMgICAgICAgICAgfCAgIDE1ICst
-LS0tLS0tLS0tLS0tLQogZHJpdmVycy9od21vbi9nbDUxOHNtLmMgICAgICAgIHwgICAxMyArLS0t
-LS0tLS0tLS0tCiBkcml2ZXJzL2h3bW9uL2dsNTIwc20uYyAgICAgICAgfCAgIDE1ICstLS0tLS0t
-LS0tLS0tLQogZHJpdmVycy9od21vbi9qYzQyLmMgICAgICAgICAgIHwgICAxMyArLS0tLS0tLS0t
-LS0tCiBkcml2ZXJzL2h3bW9uL2xpbmVhZ2UtcGVtLmMgICAgfCAgIDEzICstLS0tLS0tLS0tLS0K
-IGRyaXZlcnMvaHdtb24vbG02My5jICAgICAgICAgICB8ICAgMTMgKy0tLS0tLS0tLS0tLQogZHJp
-dmVycy9od21vbi9sbTczLmMgICAgICAgICAgIHwgICAxNSArLS0tLS0tLS0tLS0tLS0KIGRyaXZl
-cnMvaHdtb24vbG03NS5jICAgICAgICAgICB8ICAgMTcgKy0tLS0tLS0tLS0tLS0tLS0KIGRyaXZl
-cnMvaHdtb24vbG03Ny5jICAgICAgICAgICB8ICAgMTMgKy0tLS0tLS0tLS0tLQogZHJpdmVycy9o
-d21vbi9sbTgwLmMgICAgICAgICAgIHwgICAxMyArLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2h3bW9u
-L2xtODMuYyAgICAgICAgICAgfCAgIDEzICstLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vbG04
-NS5jICAgICAgICAgICB8ICAgMTQgKy0tLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vbG04Ny5j
-ICAgICAgICAgICB8ICAgMTMgKy0tLS0tLS0tLS0tLQogZHJpdmVycy9od21vbi9sbTkwLmMgICAg
-ICAgICAgIHwgICAxMyArLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2h3bW9uL2xtOTIuYyAgICAgICAg
-ICAgfCAgIDEzICstLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vbG05My5jICAgICAgICAgICB8
-ICAgMTMgKy0tLS0tLS0tLS0tLQogZHJpdmVycy9od21vbi9sbTk1MjQxLmMgICAgICAgIHwgICAx
-MyArLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2h3bW9uL2xtOTUyNDUuYyAgICAgICAgfCAgIDEzICst
-LS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vbHRjNDE1MS5jICAgICAgICB8ICAgMTMgKy0tLS0t
-LS0tLS0tLQogZHJpdmVycy9od21vbi9sdGM0MjE1LmMgICAgICAgIHwgICAxMyArLS0tLS0tLS0t
-LS0tCiBkcml2ZXJzL2h3bW9uL2x0YzQyNDUuYyAgICAgICAgfCAgIDEzICstLS0tLS0tLS0tLS0K
-IGRyaXZlcnMvaHdtb24vbHRjNDI2MS5jICAgICAgICB8ICAgMTMgKy0tLS0tLS0tLS0tLQogZHJp
-dmVycy9od21vbi9tYXgxNjA2NS5jICAgICAgIHwgICAxMyArLS0tLS0tLS0tLS0tCiBkcml2ZXJz
-L2h3bW9uL21heDE2MTkuYyAgICAgICAgfCAgIDEzICstLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdt
-b24vbWF4MTY2OC5jICAgICAgICB8ICAgMTMgKy0tLS0tLS0tLS0tLQogZHJpdmVycy9od21vbi9t
-YXg2NjM5LmMgICAgICAgIHwgICAxMyArLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2h3bW9uL21heDY2
-NDIuYyAgICAgICAgfCAgIDEzICstLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vbWF4NjY1MC5j
-ICAgICAgICB8ICAgMTMgKy0tLS0tLS0tLS0tLQogZHJpdmVycy9od21vbi9wbWJ1cy9hZG0xMjc1
-LmMgIHwgICAxMiArLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vcG1idXMvbG0yNTA2Ni5jICB8
-ICAgMTIgKy0tLS0tLS0tLS0tCiBkcml2ZXJzL2h3bW9uL3BtYnVzL2x0YzI5NzguYyAgfCAgIDEy
-ICstLS0tLS0tLS0tLQogZHJpdmVycy9od21vbi9wbWJ1cy9tYXgxNjA2NC5jIHwgICAxMiArLS0t
-LS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vcG1idXMvbWF4MzQ0NDAuYyB8ICAgMTIgKy0tLS0tLS0t
-LS0tCiBkcml2ZXJzL2h3bW9uL3BtYnVzL21heDg2ODguYyAgfCAgIDEyICstLS0tLS0tLS0tLQog
-ZHJpdmVycy9od21vbi9wbWJ1cy9wbWJ1cy5jICAgIHwgICAxMiArLS0tLS0tLS0tLS0KIGRyaXZl
-cnMvaHdtb24vcG1idXMvdWNkOTAwMC5jICB8ICAgMTIgKy0tLS0tLS0tLS0tCiBkcml2ZXJzL2h3
-bW9uL3BtYnVzL3VjZDkyMDAuYyAgfCAgIDEyICstLS0tLS0tLS0tLQogZHJpdmVycy9od21vbi9w
-bWJ1cy96bDYxMDAuYyAgIHwgICAxMiArLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vc2h0MjEu
-YyAgICAgICAgICB8ICAgMjMgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24v
-c21tNjY1LmMgICAgICAgICB8ICAgMTMgKy0tLS0tLS0tLS0tLQogZHJpdmVycy9od21vbi9zbXNj
-NDdtMTkyLmMgICAgIHwgICAxMyArLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2h3bW9uL3RobWM1MC5j
-ICAgICAgICAgfCAgIDEzICstLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vdG1wMTAyLmMgICAg
-ICAgICB8ICAgMTIgKy0tLS0tLS0tLS0tCiBkcml2ZXJzL2h3bW9uL3RtcDQwMS5jICAgICAgICAg
-fCAgIDEzICstLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vdG1wNDIxLmMgICAgICAgICB8ICAg
-MTMgKy0tLS0tLS0tLS0tLQogZHJpdmVycy9od21vbi93ODM3OTFkLmMgICAgICAgIHwgICAxMyAr
-LS0tLS0tLS0tLS0tCiBkcml2ZXJzL2h3bW9uL3c4Mzc5MmQuYyAgICAgICAgfCAgIDE2ICstLS0t
-LS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vdzgzNzkzLmMgICAgICAgICB8ICAgMTMgKy0tLS0t
-LS0tLS0tLQogZHJpdmVycy9od21vbi93ODM3OTUuYyAgICAgICAgIHwgICAxMyArLS0tLS0tLS0t
-LS0tCiBkcml2ZXJzL2h3bW9uL3c4M2w3ODV0cy5jICAgICAgfCAgIDEzICstLS0tLS0tLS0tLS0K
-IGRyaXZlcnMvaHdtb24vdzgzbDc4Nm5nLmMgICAgICB8ICAgMTUgKy0tLS0tLS0tLS0tLS0tCiA3
-NCBmaWxlcyBjaGFuZ2VkLCA3NCBpbnNlcnRpb25zKCspLCA5MDkgZGVsZXRpb25zKC0pCgpkaWZm
-IC0tZ2l0IGEvZHJpdmVycy9od21vbi9hZDc0MTQuYyBiL2RyaXZlcnMvaHdtb24vYWQ3NDE0LmMK
-aW5kZXggZWRiZGI2ZC4uMzY0NjUwMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9hZDc0MTQu
-YworKysgYi9kcml2ZXJzL2h3bW9uL2FkNzQxNC5jCkBAIC0yNTYsMTcgKzI1Niw3IEBAIHN0YXRp
-YyBzdHJ1Y3QgaTJjX2RyaXZlciBhZDc0MTRfZHJpdmVyID0gewogCS5pZF90YWJsZSA9IGFkNzQx
-NF9pZCwKIH07CiAKLXN0YXRpYyBpbnQgX19pbml0IGFkNzQxNF9pbml0KHZvaWQpCi17Ci0JcmV0
-dXJuIGkyY19hZGRfZHJpdmVyKCZhZDc0MTRfZHJpdmVyKTsKLX0KLW1vZHVsZV9pbml0KGFkNzQx
-NF9pbml0KTsKLQotc3RhdGljIHZvaWQgX19leGl0IGFkNzQxNF9leGl0KHZvaWQpCi17Ci0JaTJj
-X2RlbF9kcml2ZXIoJmFkNzQxNF9kcml2ZXIpOwotfQotbW9kdWxlX2V4aXQoYWQ3NDE0X2V4aXQp
-OworbW9kdWxlX2kyY19kcml2ZXIoYWQ3NDE0X2RyaXZlcik7CiAKIE1PRFVMRV9BVVRIT1IoIlN0
-ZWZhbiBSb2VzZSA8c3IgYXQgZGVueC5kZT4sICIKIAkgICAgICAiRnJhbmsgRWRlbGhhZXVzZXIg
-PGZyYW5rLmVkZWxoYWV1c2VyIGF0IHNwYW5zaW9uLmNvbT4iKTsKZGlmZiAtLWdpdCBhL2RyaXZl
-cnMvaHdtb24vYWQ3NDE4LmMgYi9kcml2ZXJzL2h3bW9uL2FkNzQxOC5jCmluZGV4IDQyNDYxZDEu
-LmE1MGE2YmUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vYWQ3NDE4LmMKKysrIGIvZHJpdmVy
-cy9od21vbi9hZDc0MTguYwpAQCAtMjk1LDIwICsyOTUsOSBAQCBzdGF0aWMgaW50IGFkNzQxOF9y
-ZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGlj
-IGludCBfX2luaXQgYWQ3NDE4X2luaXQodm9pZCkKLXsKLQlyZXR1cm4gaTJjX2FkZF9kcml2ZXIo
-JmFkNzQxOF9kcml2ZXIpOwotfQotCi1zdGF0aWMgdm9pZCBfX2V4aXQgYWQ3NDE4X2V4aXQodm9p
-ZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmYWQ3NDE4X2RyaXZlcik7Ci19Cittb2R1bGVfaTJjX2Ry
-aXZlcihhZDc0MThfZHJpdmVyKTsKIAogTU9EVUxFX0FVVEhPUigiQWxlc3NhbmRybyBadW1tbyA8
-YS56dW1tb0B0b3dlcnRlY2guaXQ+Iik7CiBNT0RVTEVfREVTQ1JJUFRJT04oIkFENzQxNi8xNy8x
-OCBkcml2ZXIiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKIE1PRFVMRV9WRVJTSU9OKERSVl9W
-RVJTSU9OKTsKLQotbW9kdWxlX2luaXQoYWQ3NDE4X2luaXQpOwotbW9kdWxlX2V4aXQoYWQ3NDE4
-X2V4aXQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9hZG0xMDIxLmMgYi9kcml2ZXJzL2h3
-bW9uL2FkbTEwMjEuYwppbmRleCBlNmZjMDA2Li5lYzg0MzMxIDEwMDY0NAotLS0gYS9kcml2ZXJz
-L2h3bW9uL2FkbTEwMjEuYworKysgYi9kcml2ZXJzL2h3bW9uL2FkbTEwMjEuYwpAQCAtNDcxLDE1
-ICs0NzEsNyBAQCBzdGF0aWMgc3RydWN0IGFkbTEwMjFfZGF0YSAqYWRtMTAyMV91cGRhdGVfZGV2
-aWNlKHN0cnVjdCBkZXZpY2UgKmRldikKIAlyZXR1cm4gZGF0YTsKIH0KIAotc3RhdGljIGludCBf
-X2luaXQgc2Vuc29yc19hZG0xMDIxX2luaXQodm9pZCkKLXsKLQlyZXR1cm4gaTJjX2FkZF9kcml2
-ZXIoJmFkbTEwMjFfZHJpdmVyKTsKLX0KLQotc3RhdGljIHZvaWQgX19leGl0IHNlbnNvcnNfYWRt
-MTAyMV9leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2ZXIoJmFkbTEwMjFfZHJpdmVyKTsKLX0K
-K21vZHVsZV9pMmNfZHJpdmVyKGFkbTEwMjFfZHJpdmVyKTsKIAogTU9EVUxFX0FVVEhPUigiRnJv
-ZG8gTG9vaWphYXJkIDxmcm9kb2xAZGRzLm5sPiBhbmQgIgogCQkiUGhpbGlwIEVkZWxicm9jayA8
-cGhpbEBuZXRyb2VkZ2UuY29tPiIpOwpAQCAtNDg4LDYgKzQ4MCwzIEBAIE1PRFVMRV9MSUNFTlNF
-KCJHUEwiKTsKIAogbW9kdWxlX3BhcmFtKHJlYWRfb25seSwgYm9vbCwgMCk7CiBNT0RVTEVfUEFS
-TV9ERVNDKHJlYWRfb25seSwgIkRvbid0IHNldCBhbnkgdmFsdWVzLCByZWFkIG9ubHkgbW9kZSIp
-OwotCi1tb2R1bGVfaW5pdChzZW5zb3JzX2FkbTEwMjFfaW5pdCkKLW1vZHVsZV9leGl0KHNlbnNv
-cnNfYWRtMTAyMV9leGl0KQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9hZG0xMDI1LmMgYi9k
-cml2ZXJzL2h3bW9uL2FkbTEwMjUuYwppbmRleCAxNGQ4OTk3Li5lZmJjOWM5IDEwMDY0NAotLS0g
-YS9kcml2ZXJzL2h3bW9uL2FkbTEwMjUuYworKysgYi9kcml2ZXJzL2h3bW9uL2FkbTEwMjUuYwpA
-QCAtNjE4LDE5ICs2MTgsOCBAQCBzdGF0aWMgc3RydWN0IGFkbTEwMjVfZGF0YSAqYWRtMTAyNV91
-cGRhdGVfZGV2aWNlKHN0cnVjdCBkZXZpY2UgKmRldikKIAlyZXR1cm4gZGF0YTsKIH0KIAotc3Rh
-dGljIGludCBfX2luaXQgc2Vuc29yc19hZG0xMDI1X2luaXQodm9pZCkKLXsKLQlyZXR1cm4gaTJj
-X2FkZF9kcml2ZXIoJmFkbTEwMjVfZHJpdmVyKTsKLX0KLQotc3RhdGljIHZvaWQgX19leGl0IHNl
-bnNvcnNfYWRtMTAyNV9leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2ZXIoJmFkbTEwMjVfZHJp
-dmVyKTsKLX0KK21vZHVsZV9pMmNfZHJpdmVyKGFkbTEwMjVfZHJpdmVyKTsKIAogTU9EVUxFX0FV
-VEhPUigiSmVhbiBEZWx2YXJlIDxraGFsaUBsaW51eC1mci5vcmc+Iik7CiBNT0RVTEVfREVTQ1JJ
-UFRJT04oIkFETTEwMjUgZHJpdmVyIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7Ci0KLW1vZHVs
-ZV9pbml0KHNlbnNvcnNfYWRtMTAyNV9pbml0KTsKLW1vZHVsZV9leGl0KHNlbnNvcnNfYWRtMTAy
-NV9leGl0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vYWRtMTAyNi5jIGIvZHJpdmVycy9o
-d21vbi9hZG0xMDI2LmMKaW5kZXggY2Q3NzNjZS4uMWY0ZjVkZSAxMDA2NDQKLS0tIGEvZHJpdmVy
-cy9od21vbi9hZG0xMDI2LmMKKysrIGIvZHJpdmVycy9od21vbi9hZG0xMDI2LmMKQEAgLTE4ODEs
-MjAgKzE4ODEsOSBAQCBzdGF0aWMgaW50IGFkbTEwMjZfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50
-ICpjbGllbnQpCiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBpbnQgX19pbml0IHNtX2FkbTEwMjZf
-aW5pdCh2b2lkKQotewotCXJldHVybiBpMmNfYWRkX2RyaXZlcigmYWRtMTAyNl9kcml2ZXIpOwot
-fQotCi1zdGF0aWMgdm9pZCBfX2V4aXQgc21fYWRtMTAyNl9leGl0KHZvaWQpCi17Ci0JaTJjX2Rl
-bF9kcml2ZXIoJmFkbTEwMjZfZHJpdmVyKTsKLX0KK21vZHVsZV9pMmNfZHJpdmVyKGFkbTEwMjZf
-ZHJpdmVyKTsKIAogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwogTU9EVUxFX0FVVEhPUigiUGhpbGlw
-IFBva29ybnkgPHBwb2tvcm55QHBlbmd1aW5jb21wdXRpbmcuY29tPiwgIgogCSAgICAgICJKdXN0
-aW4gVGhpZXNzZW4gPGp0aGllc3NlbkBwZW5ndWluY29tcHV0aW5nLmNvbT4iKTsKIE1PRFVMRV9E
-RVNDUklQVElPTigiQURNMTAyNiBkcml2ZXIiKTsKLQotbW9kdWxlX2luaXQoc21fYWRtMTAyNl9p
-bml0KTsKLW1vZHVsZV9leGl0KHNtX2FkbTEwMjZfZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJz
-L2h3bW9uL2FkbTEwMjkuYyBiL2RyaXZlcnMvaHdtb24vYWRtMTAyOS5jCmluZGV4IGQ3ODljMzMu
-LmM2NTMxYTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vYWRtMTAyOS5jCisrKyBiL2RyaXZl
-cnMvaHdtb24vYWRtMTAyOS5jCkBAIC00NTAsMjQgKzQ1MCw4IEBAIHN0YXRpYyBzdHJ1Y3QgYWRt
-MTAyOV9kYXRhICphZG0xMDI5X3VwZGF0ZV9kZXZpY2Uoc3RydWN0IGRldmljZSAqZGV2KQogCXJl
-dHVybiBkYXRhOwogfQogCi0vKgotCUNvbW1vbiBtb2R1bGUgc3R1ZmYKLSovCi1zdGF0aWMgaW50
-IF9faW5pdCBzZW5zb3JzX2FkbTEwMjlfaW5pdCh2b2lkKQotewotCi0JcmV0dXJuIGkyY19hZGRf
-ZHJpdmVyKCZhZG0xMDI5X2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBzZW5zb3Jz
-X2FkbTEwMjlfZXhpdCh2b2lkKQotewotCi0JaTJjX2RlbF9kcml2ZXIoJmFkbTEwMjlfZHJpdmVy
-KTsKLX0KK21vZHVsZV9pMmNfZHJpdmVyKGFkbTEwMjlfZHJpdmVyKTsKIAogTU9EVUxFX0FVVEhP
-UigiQ29yZW50aW4gTEFCQkUgPGNvcmVudGluLmxhYmJlQGdlb21hdHlzLmZyPiIpOwogTU9EVUxF
-X0RFU0NSSVBUSU9OKCJhZG0xMDI5IGRyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCB2MiIp
-OwotCi1tb2R1bGVfaW5pdChzZW5zb3JzX2FkbTEwMjlfaW5pdCk7Ci1tb2R1bGVfZXhpdChzZW5z
-b3JzX2FkbTEwMjlfZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2FkbTEwMzEuYyBi
-L2RyaXZlcnMvaHdtb24vYWRtMTAzMS5jCmluZGV4IDk3ZTJjZmIuLjcxYjVlYzMgMTAwNjQ0Ci0t
-LSBhL2RyaXZlcnMvaHdtb24vYWRtMTAzMS5jCisrKyBiL2RyaXZlcnMvaHdtb24vYWRtMTAzMS5j
-CkBAIC0xMTMxLDE5ICsxMTMxLDggQEAgc3RhdGljIHN0cnVjdCBhZG0xMDMxX2RhdGEgKmFkbTEw
-MzFfdXBkYXRlX2RldmljZShzdHJ1Y3QgZGV2aWNlICpkZXYpCiAJcmV0dXJuIGRhdGE7CiB9CiAK
-LXN0YXRpYyBpbnQgX19pbml0IHNlbnNvcnNfYWRtMTAzMV9pbml0KHZvaWQpCi17Ci0JcmV0dXJu
-IGkyY19hZGRfZHJpdmVyKCZhZG0xMDMxX2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhp
-dCBzZW5zb3JzX2FkbTEwMzFfZXhpdCh2b2lkKQotewotCWkyY19kZWxfZHJpdmVyKCZhZG0xMDMx
-X2RyaXZlcik7Ci19Cittb2R1bGVfaTJjX2RyaXZlcihhZG0xMDMxX2RyaXZlcik7CiAKIE1PRFVM
-RV9BVVRIT1IoIkFsZXhhbmRyZSBkJ0FsdG9uIDxhbGV4QGFsZXhkYWx0b24ub3JnPiIpOwogTU9E
-VUxFX0RFU0NSSVBUSU9OKCJBRE0xMDMxL0FETTEwMzAgZHJpdmVyIik7CiBNT0RVTEVfTElDRU5T
-RSgiR1BMIik7Ci0KLW1vZHVsZV9pbml0KHNlbnNvcnNfYWRtMTAzMV9pbml0KTsKLW1vZHVsZV9l
-eGl0KHNlbnNvcnNfYWRtMTAzMV9leGl0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vYWRt
-OTI0MC5jIGIvZHJpdmVycy9od21vbi9hZG05MjQwLmMKaW5kZXggMmRlNDUxMS4uMzQwYjg0MiAx
-MDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9hZG05MjQwLmMKKysrIGIvZHJpdmVycy9od21vbi9h
-ZG05MjQwLmMKQEAgLTgyMSwyMSArODIxLDkgQEAgc3RhdGljIHN0cnVjdCBhZG05MjQwX2RhdGEg
-KmFkbTkyNDBfdXBkYXRlX2RldmljZShzdHJ1Y3QgZGV2aWNlICpkZXYpCiAJcmV0dXJuIGRhdGE7
-CiB9CiAKLXN0YXRpYyBpbnQgX19pbml0IHNlbnNvcnNfYWRtOTI0MF9pbml0KHZvaWQpCi17Ci0J
-cmV0dXJuIGkyY19hZGRfZHJpdmVyKCZhZG05MjQwX2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lk
-IF9fZXhpdCBzZW5zb3JzX2FkbTkyNDBfZXhpdCh2b2lkKQotewotCWkyY19kZWxfZHJpdmVyKCZh
-ZG05MjQwX2RyaXZlcik7Ci19Cittb2R1bGVfaTJjX2RyaXZlcihhZG05MjQwX2RyaXZlcik7CiAK
-IE1PRFVMRV9BVVRIT1IoIk1pY2hpZWwgUm9vayA8bWljaGllbEBncmVuZGVscHJvamVjdC5ubD4s
-ICIKIAkJIkdyYW50IENvYWR5IDxnY29hZHkubGtAZ21haWwuY29tPiBhbmQgb3RoZXJzIik7CiBN
-T0RVTEVfREVTQ1JJUFRJT04oIkFETTkyNDAvRFMxNzgwL0xNODEgZHJpdmVyIik7CiBNT0RVTEVf
-TElDRU5TRSgiR1BMIik7Ci0KLW1vZHVsZV9pbml0KHNlbnNvcnNfYWRtOTI0MF9pbml0KTsKLW1v
-ZHVsZV9leGl0KHNlbnNvcnNfYWRtOTI0MF9leGl0KTsKLQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9o
-d21vbi9hZHMxMDE1LmMgYi9kcml2ZXJzL2h3bW9uL2FkczEwMTUuYwppbmRleCBlZWRjYTNjLi42
-MGJlMzU4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2h3bW9uL2FkczEwMTUuYworKysgYi9kcml2ZXJz
-L2h3bW9uL2FkczEwMTUuYwpAQCAtMzA2LDE5ICszMDYsOCBAQCBzdGF0aWMgc3RydWN0IGkyY19k
-cml2ZXIgYWRzMTAxNV9kcml2ZXIgPSB7CiAJLmlkX3RhYmxlID0gYWRzMTAxNV9pZCwKIH07CiAK
-LXN0YXRpYyBpbnQgX19pbml0IHNlbnNvcnNfYWRzMTAxNV9pbml0KHZvaWQpCi17Ci0JcmV0dXJu
-IGkyY19hZGRfZHJpdmVyKCZhZHMxMDE1X2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhp
-dCBzZW5zb3JzX2FkczEwMTVfZXhpdCh2b2lkKQotewotCWkyY19kZWxfZHJpdmVyKCZhZHMxMDE1
-X2RyaXZlcik7Ci19Cittb2R1bGVfaTJjX2RyaXZlcihhZHMxMDE1X2RyaXZlcik7CiAKIE1PRFVM
-RV9BVVRIT1IoIkRpcmsgRWliYWNoIDxlaWJhY2hAZ2RzeXMuZGU+Iik7CiBNT0RVTEVfREVTQ1JJ
-UFRJT04oIkFEUzEwMTUgZHJpdmVyIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7Ci0KLW1vZHVs
-ZV9pbml0KHNlbnNvcnNfYWRzMTAxNV9pbml0KTsKLW1vZHVsZV9leGl0KHNlbnNvcnNfYWRzMTAx
-NV9leGl0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vYWR0NzQxMS5jIGIvZHJpdmVycy9o
-d21vbi9hZHQ3NDExLmMKaW5kZXggZmZlNjRmOC4uNzFiYWNjNSAxMDA2NDQKLS0tIGEvZHJpdmVy
-cy9od21vbi9hZHQ3NDExLmMKKysrIGIvZHJpdmVycy9od21vbi9hZHQ3NDExLmMKQEAgLTM0OCwx
-NyArMzQ4LDcgQEAgc3RhdGljIHN0cnVjdCBpMmNfZHJpdmVyIGFkdDc0MTFfZHJpdmVyID0gewog
-CS5jbGFzcyA9IEkyQ19DTEFTU19IV01PTiwKIH07CiAKLXN0YXRpYyBpbnQgX19pbml0IHNlbnNv
-cnNfYWR0NzQxMV9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZhZHQ3NDEx
-X2RyaXZlcik7Ci19Ci1tb2R1bGVfaW5pdChzZW5zb3JzX2FkdDc0MTFfaW5pdCkKLQotc3RhdGlj
-IHZvaWQgX19leGl0IHNlbnNvcnNfYWR0NzQxMV9leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2
-ZXIoJmFkdDc0MTFfZHJpdmVyKTsKLX0KLW1vZHVsZV9leGl0KHNlbnNvcnNfYWR0NzQxMV9leGl0
-KQorbW9kdWxlX2kyY19kcml2ZXIoYWR0NzQxMV9kcml2ZXIpOwogCiBNT0RVTEVfQVVUSE9SKCJT
-YXNjaGEgSGF1ZXIgPHMuaGF1ZXJAcGVuZ3V0cm9uaXguZGU+IGFuZCAiCiAJIldvbGZyYW0gU2Fu
-ZyA8dy5zYW5nQHBlbmd1dHJvbml4LmRlPiIpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9h
-ZHQ3NDYyLmMgYi9kcml2ZXJzL2h3bW9uL2FkdDc0NjIuYwppbmRleCAzZGYzMzFhLi5lNGIxY2M5
-IDEwMDY0NAotLS0gYS9kcml2ZXJzL2h3bW9uL2FkdDc0NjIuYworKysgYi9kcml2ZXJzL2h3bW9u
-L2FkdDc0NjIuYwpAQCAtMTk3NCwxOSArMTk3NCw4IEBAIHN0YXRpYyBpbnQgYWR0NzQ2Ml9yZW1v
-dmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGlu
-dCBfX2luaXQgYWR0NzQ2Ml9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZh
-ZHQ3NDYyX2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBhZHQ3NDYyX2V4aXQodm9p
-ZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmYWR0NzQ2Ml9kcml2ZXIpOwotfQorbW9kdWxlX2kyY19k
-cml2ZXIoYWR0NzQ2Ml9kcml2ZXIpOwogCiBNT0RVTEVfQVVUSE9SKCJEYXJyaWNrIEouIFdvbmcg
-PGRqd29uZ0B1cy5pYm0uY29tPiIpOwogTU9EVUxFX0RFU0NSSVBUSU9OKCJBRFQ3NDYyIGRyaXZl
-ciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwotCi1tb2R1bGVfaW5pdChhZHQ3NDYyX2luaXQp
-OwotbW9kdWxlX2V4aXQoYWR0NzQ2Ml9leGl0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24v
-YWR0NzQ3MC5jIGIvZHJpdmVycy9od21vbi9hZHQ3NDcwLmMKaW5kZXggYjIzZWZkOS4uNTRlYzg5
-MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9hZHQ3NDcwLmMKKysrIGIvZHJpdmVycy9od21v
-bi9hZHQ3NDcwLmMKQEAgLTEzMTcsMTkgKzEzMTcsOCBAQCBzdGF0aWMgaW50IGFkdDc0NzBfcmVt
-b3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBp
-bnQgX19pbml0IGFkdDc0NzBfaW5pdCh2b2lkKQotewotCXJldHVybiBpMmNfYWRkX2RyaXZlcigm
-YWR0NzQ3MF9kcml2ZXIpOwotfQotCi1zdGF0aWMgdm9pZCBfX2V4aXQgYWR0NzQ3MF9leGl0KHZv
-aWQpCi17Ci0JaTJjX2RlbF9kcml2ZXIoJmFkdDc0NzBfZHJpdmVyKTsKLX0KK21vZHVsZV9pMmNf
-ZHJpdmVyKGFkdDc0NzBfZHJpdmVyKTsKIAogTU9EVUxFX0FVVEhPUigiRGFycmljayBKLiBXb25n
-IDxkandvbmdAdXMuaWJtLmNvbT4iKTsKIE1PRFVMRV9ERVNDUklQVElPTigiQURUNzQ3MCBkcml2
-ZXIiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKLQotbW9kdWxlX2luaXQoYWR0NzQ3MF9pbml0
-KTsKLW1vZHVsZV9leGl0KGFkdDc0NzBfZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9u
-L2FkdDc0NzUuYyBiL2RyaXZlcnMvaHdtb24vYWR0NzQ3NS5jCmluZGV4IDcxZTlhYzQuLjUyMmNi
-NzYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vYWR0NzQ3NS5jCisrKyBiL2RyaXZlcnMvaHdt
-b24vYWR0NzQ3NS5jCkBAIC0xNjAwLDE5ICsxNjAwLDggQEAgc3RhdGljIHN0cnVjdCBhZHQ3NDc1
-X2RhdGEgKmFkdDc0NzVfdXBkYXRlX2RldmljZShzdHJ1Y3QgZGV2aWNlICpkZXYpCiAJcmV0dXJu
-IGRhdGE7CiB9CiAKLXN0YXRpYyBpbnQgX19pbml0IHNlbnNvcnNfYWR0NzQ3NV9pbml0KHZvaWQp
-Ci17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZhZHQ3NDc1X2RyaXZlcik7Ci19Ci0KLXN0YXRp
-YyB2b2lkIF9fZXhpdCBzZW5zb3JzX2FkdDc0NzVfZXhpdCh2b2lkKQotewotCWkyY19kZWxfZHJp
-dmVyKCZhZHQ3NDc1X2RyaXZlcik7Ci19Cittb2R1bGVfaTJjX2RyaXZlcihhZHQ3NDc1X2RyaXZl
-cik7CiAKIE1PRFVMRV9BVVRIT1IoIkFkdmFuY2VkIE1pY3JvIERldmljZXMsIEluYyIpOwogTU9E
-VUxFX0RFU0NSSVBUSU9OKCJhZHQ3NDc1IGRyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIp
-OwotCi1tb2R1bGVfaW5pdChzZW5zb3JzX2FkdDc0NzVfaW5pdCk7Ci1tb2R1bGVfZXhpdChzZW5z
-b3JzX2FkdDc0NzVfZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2FtYzY4MjEuYyBi
-L2RyaXZlcnMvaHdtb24vYW1jNjgyMS5jCmluZGV4IDRhNGJmZWYuLjUyOTg4NTUgMTAwNjQ0Ci0t
-LSBhL2RyaXZlcnMvaHdtb24vYW1jNjgyMS5jCisrKyBiL2RyaXZlcnMvaHdtb24vYW1jNjgyMS5j
-CkBAIC0xMDk1LDIwICsxMDk1LDcgQEAgc3RhdGljIHN0cnVjdCBhbWM2ODIxX2RhdGEgKmFtYzY4
-MjFfdXBkYXRlX2RldmljZShzdHJ1Y3QgZGV2aWNlICpkZXYpCiAJcmV0dXJuIGRhdGE7CiB9CiAK
-LQotc3RhdGljIGludCBfX2luaXQgYW1jNjgyMV9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19h
-ZGRfZHJpdmVyKCZhbWM2ODIxX2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBhbWM2
-ODIxX2V4aXQodm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmYW1jNjgyMV9kcml2ZXIpOwotfQot
-Ci1tb2R1bGVfaW5pdChhbWM2ODIxX2luaXQpOwotbW9kdWxlX2V4aXQoYW1jNjgyMV9leGl0KTsK
-LQorbW9kdWxlX2kyY19kcml2ZXIoYW1jNjgyMV9kcml2ZXIpOwogCiBNT0RVTEVfTElDRU5TRSgi
-R1BMIik7CiBNT0RVTEVfQVVUSE9SKCJULiBNZXJ0ZWxqIDx0b21hei5tZXJ0ZWxqQGd1ZXN0LmFy
-bmVzLnNpPiIpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9hc2IxMDAuYyBiL2RyaXZlcnMv
-aHdtb24vYXNiMTAwLmMKaW5kZXggYTVmMTY0Mi4uNTczZmZmNSAxMDA2NDQKLS0tIGEvZHJpdmVy
-cy9od21vbi9hc2IxMDAuYworKysgYi9kcml2ZXJzL2h3bW9uL2FzYjEwMC5jCkBAIC0xMDAyLDE5
-ICsxMDAyLDggQEAgc3RhdGljIHN0cnVjdCBhc2IxMDBfZGF0YSAqYXNiMTAwX3VwZGF0ZV9kZXZp
-Y2Uoc3RydWN0IGRldmljZSAqZGV2KQogCXJldHVybiBkYXRhOwogfQogCi1zdGF0aWMgaW50IF9f
-aW5pdCBhc2IxMDBfaW5pdCh2b2lkKQotewotCXJldHVybiBpMmNfYWRkX2RyaXZlcigmYXNiMTAw
-X2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBhc2IxMDBfZXhpdCh2b2lkKQotewot
-CWkyY19kZWxfZHJpdmVyKCZhc2IxMDBfZHJpdmVyKTsKLX0KK21vZHVsZV9pMmNfZHJpdmVyKGFz
-YjEwMF9kcml2ZXIpOwogCiBNT0RVTEVfQVVUSE9SKCJNYXJrIE0uIEhvZmZtYW4gPG1ob2ZmbWFu
-QGxpZ2h0bGluay5jb20+Iik7CiBNT0RVTEVfREVTQ1JJUFRJT04oIkFTQjEwMCBCYWNoIGRyaXZl
-ciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwotCi1tb2R1bGVfaW5pdChhc2IxMDBfaW5pdCk7
-Ci1tb2R1bGVfZXhpdChhc2IxMDBfZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2F0
-eHAxLmMgYi9kcml2ZXJzL2h3bW9uL2F0eHAxLmMKaW5kZXggZDRhNTg5Yi4uNWE2NzFjYSAxMDA2
-NDQKLS0tIGEvZHJpdmVycy9od21vbi9hdHhwMS5jCisrKyBiL2RyaXZlcnMvaHdtb24vYXR4cDEu
-YwpAQCAtMzkwLDE1ICszOTAsNCBAQCBzdGF0aWMgaW50IGF0eHAxX3JlbW92ZShzdHJ1Y3QgaTJj
-X2NsaWVudCAqY2xpZW50KQogCXJldHVybiAwOwogfTsKIAotc3RhdGljIGludCBfX2luaXQgYXR4
-cDFfaW5pdCh2b2lkKQotewotCXJldHVybiBpMmNfYWRkX2RyaXZlcigmYXR4cDFfZHJpdmVyKTsK
-LX07Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBhdHhwMV9leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9k
-cml2ZXIoJmF0eHAxX2RyaXZlcik7Ci19OwotCi1tb2R1bGVfaW5pdChhdHhwMV9pbml0KTsKLW1v
-ZHVsZV9leGl0KGF0eHAxX2V4aXQpOworbW9kdWxlX2kyY19kcml2ZXIoYXR4cDFfZHJpdmVyKTsK
-ZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vZHMxNjIxLmMgYi9kcml2ZXJzL2h3bW9uL2RzMTYy
-MS5jCmluZGV4IGUyM2E4YWIuLjVkYzU0ODkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vZHMx
-NjIxLmMKKysrIGIvZHJpdmVycy9od21vbi9kczE2MjEuYwpAQCAtMzExLDIwICszMTEsOCBAQCBz
-dGF0aWMgc3RydWN0IGkyY19kcml2ZXIgZHMxNjIxX2RyaXZlciA9IHsKIAkuYWRkcmVzc19saXN0
-CT0gbm9ybWFsX2kyYywKIH07CiAKLXN0YXRpYyBpbnQgX19pbml0IGRzMTYyMV9pbml0KHZvaWQp
-Ci17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZkczE2MjFfZHJpdmVyKTsKLX0KLQotc3RhdGlj
-IHZvaWQgX19leGl0IGRzMTYyMV9leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2ZXIoJmRzMTYy
-MV9kcml2ZXIpOwotfQotCittb2R1bGVfaTJjX2RyaXZlcihkczE2MjFfZHJpdmVyKTsKIAogTU9E
-VUxFX0FVVEhPUigiQ2hyaXN0aWFuIFcuIFp1Y2tzY2h3ZXJkdCA8emFueUB0cmlxLm5ldD4iKTsK
-IE1PRFVMRV9ERVNDUklQVElPTigiRFMxNjIxIGRyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQ
-TCIpOwotCi1tb2R1bGVfaW5pdChkczE2MjFfaW5pdCk7Ci1tb2R1bGVfZXhpdChkczE2MjFfZXhp
-dCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2RzNjIwLmMgYi9kcml2ZXJzL2h3bW9uL2Rz
-NjIwLmMKaW5kZXggMzAwYzNkNC4uNTA2NjNlZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9k
-czYyMC5jCisrKyBiL2RyaXZlcnMvaHdtb24vZHM2MjAuYwpAQCAtMjk3LDE5ICsyOTcsOCBAQCBz
-dGF0aWMgc3RydWN0IGkyY19kcml2ZXIgZHM2MjBfZHJpdmVyID0gewogCS5pZF90YWJsZSA9IGRz
-NjIwX2lkLAogfTsKIAotc3RhdGljIGludCBfX2luaXQgZHM2MjBfaW5pdCh2b2lkKQotewotCXJl
-dHVybiBpMmNfYWRkX2RyaXZlcigmZHM2MjBfZHJpdmVyKTsKLX0KLQotc3RhdGljIHZvaWQgX19l
-eGl0IGRzNjIwX2V4aXQodm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmZHM2MjBfZHJpdmVyKTsK
-LX0KK21vZHVsZV9pMmNfZHJpdmVyKGRzNjIwX2RyaXZlcik7CiAKIE1PRFVMRV9BVVRIT1IoIlJv
-bGFuZCBTdGlnZ2UgPHN0aWdnZUBhbnRjb20uZGU+Iik7CiBNT0RVTEVfREVTQ1JJUFRJT04oIkRT
-NjIwIGRyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwotCi1tb2R1bGVfaW5pdChkczYy
-MF9pbml0KTsKLW1vZHVsZV9leGl0KGRzNjIwX2V4aXQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9o
-d21vbi9lbWMxNDAzLmMgYi9kcml2ZXJzL2h3bW9uL2VtYzE0MDMuYwppbmRleCAyNzBmZmFiLi45
-OWFjMTQxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2h3bW9uL2VtYzE0MDMuYworKysgYi9kcml2ZXJz
-L2h3bW9uL2VtYzE0MDMuYwpAQCAtMzY2LDE4ICszNjYsNyBAQCBzdGF0aWMgc3RydWN0IGkyY19k
-cml2ZXIgc2Vuc29yX2VtYzE0MDMgPSB7CiAJLmFkZHJlc3NfbGlzdCA9IGVtYzE0MDNfYWRkcmVz
-c19saXN0LAogfTsKIAotc3RhdGljIGludCBfX2luaXQgc2Vuc29yX2VtYzE0MDNfaW5pdCh2b2lk
-KQotewotCXJldHVybiBpMmNfYWRkX2RyaXZlcigmc2Vuc29yX2VtYzE0MDMpOwotfQotCi1zdGF0
-aWMgdm9pZCAgX19leGl0IHNlbnNvcl9lbWMxNDAzX2V4aXQodm9pZCkKLXsKLQlpMmNfZGVsX2Ry
-aXZlcigmc2Vuc29yX2VtYzE0MDMpOwotfQotCi1tb2R1bGVfaW5pdChzZW5zb3JfZW1jMTQwM19p
-bml0KTsKLW1vZHVsZV9leGl0KHNlbnNvcl9lbWMxNDAzX2V4aXQpOworbW9kdWxlX2kyY19kcml2
-ZXIoc2Vuc29yX2VtYzE0MDMpOwogCiBNT0RVTEVfQVVUSE9SKCJLYWxoYW4gVHJpc2FsIDxrYWxo
-YW4udHJpc2FsQGludGVsLmNvbSIpOwogTU9EVUxFX0RFU0NSSVBUSU9OKCJlbWMxNDAzIFRoZXJt
-YWwgRHJpdmVyIik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2VtYzIxMDMuYyBiL2RyaXZl
-cnMvaHdtb24vZW1jMjEwMy5jCmluZGV4IDg2NTA2MzkuLjBmNTEzODIgMTAwNjQ0Ci0tLSBhL2Ry
-aXZlcnMvaHdtb24vZW1jMjEwMy5jCisrKyBiL2RyaXZlcnMvaHdtb24vZW1jMjEwMy5jCkBAIC03
-MjIsMTkgKzcyMiw4IEBAIHN0YXRpYyBzdHJ1Y3QgaTJjX2RyaXZlciBlbWMyMTAzX2RyaXZlciA9
-IHsKIAkuYWRkcmVzc19saXN0CT0gbm9ybWFsX2kyYywKIH07CiAKLXN0YXRpYyBpbnQgX19pbml0
-IHNlbnNvcnNfZW1jMjEwM19pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZl
-bWMyMTAzX2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBzZW5zb3JzX2VtYzIxMDNf
-ZXhpdCh2b2lkKQotewotCWkyY19kZWxfZHJpdmVyKCZlbWMyMTAzX2RyaXZlcik7Ci19Cittb2R1
-bGVfaTJjX2RyaXZlcihlbWMyMTAzX2RyaXZlcik7CiAKIE1PRFVMRV9BVVRIT1IoIlN0ZXZlIEds
-ZW5kaW5uaW5nIDxzdGV2ZS5nbGVuZGlubmluZ0BzbXNjLmNvbT4iKTsKIE1PRFVMRV9ERVNDUklQ
-VElPTigiU01TQyBFTUMyMTAzIGh3bW9uIGRyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIp
-OwotCi1tb2R1bGVfaW5pdChzZW5zb3JzX2VtYzIxMDNfaW5pdCk7Ci1tb2R1bGVfZXhpdChzZW5z
-b3JzX2VtYzIxMDNfZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2VtYzZ3MjAxLmMg
-Yi9kcml2ZXJzL2h3bW9uL2VtYzZ3MjAxLmMKaW5kZXggNmViYjliNy4uODQwZjUxMSAxMDA2NDQK
-LS0tIGEvZHJpdmVycy9od21vbi9lbWM2dzIwMS5jCisrKyBiL2RyaXZlcnMvaHdtb24vZW1jNncy
-MDEuYwpAQCAtNTUyLDE3ICs1NTIsNyBAQCBzdGF0aWMgc3RydWN0IGkyY19kcml2ZXIgZW1jNncy
-MDFfZHJpdmVyID0gewogCS5hZGRyZXNzX2xpc3QJPSBub3JtYWxfaTJjLAogfTsKIAotc3RhdGlj
-IGludCBfX2luaXQgc2Vuc29yc19lbWM2dzIwMV9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19h
-ZGRfZHJpdmVyKCZlbWM2dzIwMV9kcml2ZXIpOwotfQotbW9kdWxlX2luaXQoc2Vuc29yc19lbWM2
-dzIwMV9pbml0KTsKLQotc3RhdGljIHZvaWQgX19leGl0IHNlbnNvcnNfZW1jNncyMDFfZXhpdCh2
-b2lkKQotewotCWkyY19kZWxfZHJpdmVyKCZlbWM2dzIwMV9kcml2ZXIpOwotfQotbW9kdWxlX2V4
-aXQoc2Vuc29yc19lbWM2dzIwMV9leGl0KTsKK21vZHVsZV9pMmNfZHJpdmVyKGVtYzZ3MjAxX2Ry
-aXZlcik7CiAKIE1PRFVMRV9BVVRIT1IoIkplYW4gRGVsdmFyZSA8a2hhbGlAbGludXgtZnIub3Jn
-PiIpOwogTU9EVUxFX0RFU0NSSVBUSU9OKCJTTVNDIEVNQzZXMjAxIGhhcmR3YXJlIG1vbml0b3Jp
-bmcgZHJpdmVyIik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2Y3NTM3NXMuYyBiL2RyaXZl
-cnMvaHdtb24vZjc1Mzc1cy5jCmluZGV4IGVlZGY1NzQuLjM5OGRiYzggMTAwNjQ0Ci0tLSBhL2Ry
-aXZlcnMvaHdtb24vZjc1Mzc1cy5jCisrKyBiL2RyaXZlcnMvaHdtb24vZjc1Mzc1cy5jCkBAIC04
-NTgsMTkgKzg1OCw4IEBAIHN0YXRpYyBpbnQgZjc1Mzc1X2RldGVjdChzdHJ1Y3QgaTJjX2NsaWVu
-dCAqY2xpZW50LAogCXJldHVybiAwOwogfQogCi1zdGF0aWMgaW50IF9faW5pdCBzZW5zb3JzX2Y3
-NTM3NV9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZmNzUzNzVfZHJpdmVy
-KTsKLX0KLQotc3RhdGljIHZvaWQgX19leGl0IHNlbnNvcnNfZjc1Mzc1X2V4aXQodm9pZCkKLXsK
-LQlpMmNfZGVsX2RyaXZlcigmZjc1Mzc1X2RyaXZlcik7Ci19Cittb2R1bGVfaTJjX2RyaXZlcihm
-NzUzNzVfZHJpdmVyKTsKIAogTU9EVUxFX0FVVEhPUigiUmlrdSBWb2lwaW8iKTsKIE1PRFVMRV9M
-SUNFTlNFKCJHUEwiKTsKIE1PRFVMRV9ERVNDUklQVElPTigiRjc1MzczL0Y3NTM3NS9GNzUzODcg
-aGFyZHdhcmUgbW9uaXRvcmluZyBkcml2ZXIiKTsKLQotbW9kdWxlX2luaXQoc2Vuc29yc19mNzUz
-NzVfaW5pdCk7Ci1tb2R1bGVfZXhpdChzZW5zb3JzX2Y3NTM3NV9leGl0KTsKZGlmZiAtLWdpdCBh
-L2RyaXZlcnMvaHdtb24vZnNjaG1kLmMgYi9kcml2ZXJzL2h3bW9uL2ZzY2htZC5jCmluZGV4IDA2
-Y2JmNzcuLjM1ZGRmNmQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vZnNjaG1kLmMKKysrIGIv
-ZHJpdmVycy9od21vbi9mc2NobWQuYwpAQCAtMTM0MSwyMCArMTM0MSw5IEBAIHN0YXRpYyBzdHJ1
-Y3QgZnNjaG1kX2RhdGEgKmZzY2htZF91cGRhdGVfZGV2aWNlKHN0cnVjdCBkZXZpY2UgKmRldikK
-IAlyZXR1cm4gZGF0YTsKIH0KIAotc3RhdGljIGludCBfX2luaXQgZnNjaG1kX2luaXQodm9pZCkK
-LXsKLQlyZXR1cm4gaTJjX2FkZF9kcml2ZXIoJmZzY2htZF9kcml2ZXIpOwotfQotCi1zdGF0aWMg
-dm9pZCBfX2V4aXQgZnNjaG1kX2V4aXQodm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmZnNjaG1k
-X2RyaXZlcik7Ci19Cittb2R1bGVfaTJjX2RyaXZlcihmc2NobWRfZHJpdmVyKTsKIAogTU9EVUxF
-X0FVVEhPUigiSGFucyBkZSBHb2VkZSA8aGRlZ29lZGVAcmVkaGF0LmNvbT4iKTsKIE1PRFVMRV9E
-RVNDUklQVElPTigiRlNDIFBvc2VpZG9uLCBIZXJtZXMsIFNjeWxsYSwgSGVyYWNsZXMsIEhlaW1k
-YWxsLCBIYWRlcyAiCiAJCQkiYW5kIFN5bGV1cyBkcml2ZXIiKTsKIE1PRFVMRV9MSUNFTlNFKCJH
-UEwiKTsKLQotbW9kdWxlX2luaXQoZnNjaG1kX2luaXQpOwotbW9kdWxlX2V4aXQoZnNjaG1kX2V4
-aXQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9nNzYwYS5jIGIvZHJpdmVycy9od21vbi9n
-NzYwYS5jCmluZGV4IDgxYjZlMzUuLjA1MmUzMDQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24v
-Zzc2MGEuYworKysgYi9kcml2ZXJzL2h3bW9uL2c3NjBhLmMKQEAgLTI1MCwyMSArMjUwLDggQEAg
-c3RhdGljIGludCBnNzYwYV9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKIAlyZXR1
-cm4gMDsKIH0KIAotLyogbW9kdWxlIG1hbmFnZW1lbnQgKi8KLQotc3RhdGljIGludCBfX2luaXQg
-Zzc2MGFfaW5pdCh2b2lkKQotewotCXJldHVybiBpMmNfYWRkX2RyaXZlcigmZzc2MGFfZHJpdmVy
-KTsKLX0KLQotc3RhdGljIHZvaWQgX19leGl0IGc3NjBhX2V4aXQodm9pZCkKLXsKLQlpMmNfZGVs
-X2RyaXZlcigmZzc2MGFfZHJpdmVyKTsKLX0KK21vZHVsZV9pMmNfZHJpdmVyKGc3NjBhX2RyaXZl
-cik7CiAKIE1PRFVMRV9BVVRIT1IoIkhlcmJlcnQgVmFsZXJpbyBSaWVkZWwgPGh2ckBnbnUub3Jn
-PiIpOwogTU9EVUxFX0RFU0NSSVBUSU9OKCJHTVQgRzc2MEEgZHJpdmVyIik7CiBNT0RVTEVfTElD
-RU5TRSgiR1BMIik7Ci0KLW1vZHVsZV9pbml0KGc3NjBhX2luaXQpOwotbW9kdWxlX2V4aXQoZzc2
-MGFfZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2dsNTE4c20uYyBiL2RyaXZlcnMv
-aHdtb24vZ2w1MThzbS5jCmluZGV4IDhkMGY3MWQuLmFlMTkzZjAgMTAwNjQ0Ci0tLSBhL2RyaXZl
-cnMvaHdtb24vZ2w1MThzbS5jCisrKyBiL2RyaXZlcnMvaHdtb24vZ2w1MThzbS5jCkBAIC03MTAs
-MjEgKzcxMCwxMCBAQCBzdGF0aWMgc3RydWN0IGdsNTE4X2RhdGEgKmdsNTE4X3VwZGF0ZV9kZXZp
-Y2Uoc3RydWN0IGRldmljZSAqZGV2KQogCXJldHVybiBkYXRhOwogfQogCi1zdGF0aWMgaW50IF9f
-aW5pdCBzZW5zb3JzX2dsNTE4c21faW5pdCh2b2lkKQotewotCXJldHVybiBpMmNfYWRkX2RyaXZl
-cigmZ2w1MThfZHJpdmVyKTsKLX0KLQotc3RhdGljIHZvaWQgX19leGl0IHNlbnNvcnNfZ2w1MThz
-bV9leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2ZXIoJmdsNTE4X2RyaXZlcik7Ci19Cittb2R1
-bGVfaTJjX2RyaXZlcihnbDUxOF9kcml2ZXIpOwogCiBNT0RVTEVfQVVUSE9SKCJGcm9kbyBMb29p
-amFhcmQgPGZyb2RvbEBkZHMubmw+LCAiCiAJIkt5b3N0aSBNYWxra2kgPGttYWxra2lAY2MuaHV0
-LmZpPiBhbmQgIgogCSJIb25nLUd1bm4gQ2hldyA8aGdsaW51eEBndW5uZXQub3JnPiIpOwogTU9E
-VUxFX0RFU0NSSVBUSU9OKCJHTDUxOFNNIGRyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIp
-OwotCi1tb2R1bGVfaW5pdChzZW5zb3JzX2dsNTE4c21faW5pdCk7Ci1tb2R1bGVfZXhpdChzZW5z
-b3JzX2dsNTE4c21fZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2dsNTIwc20uYyBi
-L2RyaXZlcnMvaHdtb24vZ2w1MjBzbS5jCmluZGV4IDE5MDkwOTcuLjUyZGFkYjIgMTAwNjQ0Ci0t
-LSBhL2RyaXZlcnMvaHdtb24vZ2w1MjBzbS5jCisrKyBiL2RyaXZlcnMvaHdtb24vZ2w1MjBzbS5j
-CkBAIC05NzksMjMgKzk3OSwxMCBAQCBzdGF0aWMgc3RydWN0IGdsNTIwX2RhdGEgKmdsNTIwX3Vw
-ZGF0ZV9kZXZpY2Uoc3RydWN0IGRldmljZSAqZGV2KQogCXJldHVybiBkYXRhOwogfQogCi0KLXN0
-YXRpYyBpbnQgX19pbml0IHNlbnNvcnNfZ2w1MjBzbV9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGky
-Y19hZGRfZHJpdmVyKCZnbDUyMF9kcml2ZXIpOwotfQotCi1zdGF0aWMgdm9pZCBfX2V4aXQgc2Vu
-c29yc19nbDUyMHNtX2V4aXQodm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmZ2w1MjBfZHJpdmVy
-KTsKLX0KLQorbW9kdWxlX2kyY19kcml2ZXIoZ2w1MjBfZHJpdmVyKTsKIAogTU9EVUxFX0FVVEhP
-UigiRnJvZG8gTG9vaWphYXJkIDxmcm9kb2xAZGRzLm5sPiwgIgogCSJLecO2c3RpIE3DpGxra2kg
-PGttYWxra2lAY2MuaHV0LmZpPiwgIgogCSJNYWFydGVuIERlcHJleiA8bWFhcnRlbmRlcHJlekB1
-c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Iik7CiBNT0RVTEVfREVTQ1JJUFRJT04oIkdMNTIwU00gZHJp
-dmVyIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7Ci0KLW1vZHVsZV9pbml0KHNlbnNvcnNfZ2w1
-MjBzbV9pbml0KTsKLW1vZHVsZV9leGl0KHNlbnNvcnNfZ2w1MjBzbV9leGl0KTsKZGlmZiAtLWdp
-dCBhL2RyaXZlcnMvaHdtb24vamM0Mi5jIGIvZHJpdmVycy9od21vbi9qYzQyLmMKaW5kZXggMjhj
-MDllZS4uMzA4MzQ2YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9qYzQyLmMKKysrIGIvZHJp
-dmVycy9od21vbi9qYzQyLmMKQEAgLTU4OCwxOSArNTg4LDggQEAgYWJvcnQ6CiAJcmV0dXJuIHJl
-dDsKIH0KIAotc3RhdGljIGludCBfX2luaXQgc2Vuc29yc19qYzQyX2luaXQodm9pZCkKLXsKLQly
-ZXR1cm4gaTJjX2FkZF9kcml2ZXIoJmpjNDJfZHJpdmVyKTsKLX0KLQotc3RhdGljIHZvaWQgX19l
-eGl0IHNlbnNvcnNfamM0Ml9leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2ZXIoJmpjNDJfZHJp
-dmVyKTsKLX0KK21vZHVsZV9pMmNfZHJpdmVyKGpjNDJfZHJpdmVyKTsKIAogTU9EVUxFX0FVVEhP
-UigiR3VlbnRlciBSb2VjayA8Z3VlbnRlci5yb2Vja0Blcmljc3Nvbi5jb20+Iik7CiBNT0RVTEVf
-REVTQ1JJUFRJT04oIkpDNDIgZHJpdmVyIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7Ci0KLW1v
-ZHVsZV9pbml0KHNlbnNvcnNfamM0Ml9pbml0KTsKLW1vZHVsZV9leGl0KHNlbnNvcnNfamM0Ml9l
-eGl0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vbGluZWFnZS1wZW0uYyBiL2RyaXZlcnMv
-aHdtb24vbGluZWFnZS1wZW0uYwppbmRleCA1OGVkZWQyLi41YjhjOWFlIDEwMDY0NAotLS0gYS9k
-cml2ZXJzL2h3bW9uL2xpbmVhZ2UtcGVtLmMKKysrIGIvZHJpdmVycy9od21vbi9saW5lYWdlLXBl
-bS5jCkBAIC01NjgsMTkgKzU2OCw4IEBAIHN0YXRpYyBzdHJ1Y3QgaTJjX2RyaXZlciBwZW1fZHJp
-dmVyID0gewogCS5pZF90YWJsZSA9IHBlbV9pZCwKIH07CiAKLXN0YXRpYyBpbnQgX19pbml0IHBl
-bV9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZwZW1fZHJpdmVyKTsKLX0K
-LQotc3RhdGljIHZvaWQgX19leGl0IHBlbV9leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2ZXIo
-JnBlbV9kcml2ZXIpOwotfQorbW9kdWxlX2kyY19kcml2ZXIocGVtX2RyaXZlcik7CiAKIE1PRFVM
-RV9BVVRIT1IoIkd1ZW50ZXIgUm9lY2sgPGd1ZW50ZXIucm9lY2tAZXJpY3Nzb24uY29tPiIpOwog
-TU9EVUxFX0RFU0NSSVBUSU9OKCJMaW5lYWdlIENQTCBQRU0gaGFyZHdhcmUgbW9uaXRvcmluZyBk
-cml2ZXIiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKLQotbW9kdWxlX2luaXQocGVtX2luaXQp
-OwotbW9kdWxlX2V4aXQocGVtX2V4aXQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9sbTYz
-LmMgYi9kcml2ZXJzL2h3bW9uL2xtNjMuYwppbmRleCA1ZTY0NTdhLi4xNWMwNWNjIDEwMDY0NAot
-LS0gYS9kcml2ZXJzL2h3bW9uL2xtNjMuYworKysgYi9kcml2ZXJzL2h3bW9uL2xtNjMuYwpAQCAt
-MTExOSwxOSArMTExOSw4IEBAIHN0YXRpYyBzdHJ1Y3QgbG02M19kYXRhICpsbTYzX3VwZGF0ZV9k
-ZXZpY2Uoc3RydWN0IGRldmljZSAqZGV2KQogCXJldHVybiBkYXRhOwogfQogCi1zdGF0aWMgaW50
-IF9faW5pdCBzZW5zb3JzX2xtNjNfaW5pdCh2b2lkKQotewotCXJldHVybiBpMmNfYWRkX2RyaXZl
-cigmbG02M19kcml2ZXIpOwotfQotCi1zdGF0aWMgdm9pZCBfX2V4aXQgc2Vuc29yc19sbTYzX2V4
-aXQodm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmbG02M19kcml2ZXIpOwotfQorbW9kdWxlX2ky
-Y19kcml2ZXIobG02M19kcml2ZXIpOwogCiBNT0RVTEVfQVVUSE9SKCJKZWFuIERlbHZhcmUgPGto
-YWxpQGxpbnV4LWZyLm9yZz4iKTsKIE1PRFVMRV9ERVNDUklQVElPTigiTE02MyBkcml2ZXIiKTsK
-IE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKLQotbW9kdWxlX2luaXQoc2Vuc29yc19sbTYzX2luaXQp
-OwotbW9kdWxlX2V4aXQoc2Vuc29yc19sbTYzX2V4aXQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9o
-d21vbi9sbTczLmMgYi9kcml2ZXJzL2h3bW9uL2xtNzMuYwppbmRleCA5YzgwOTNjLi44ZmEyNjMy
-IDEwMDY0NAotLS0gYS9kcml2ZXJzL2h3bW9uL2xtNzMuYworKysgYi9kcml2ZXJzL2h3bW9uL2xt
-NzMuYwpAQCAtMTk0LDIxICsxOTQsOCBAQCBzdGF0aWMgc3RydWN0IGkyY19kcml2ZXIgbG03M19k
-cml2ZXIgPSB7CiAJLmFkZHJlc3NfbGlzdAk9IG5vcm1hbF9pMmMsCiB9OwogCi0vKiBtb2R1bGUg
-Z2x1ZSAqLwotCi1zdGF0aWMgaW50IF9faW5pdCBzZW5zb3JzX2xtNzNfaW5pdCh2b2lkKQotewot
-CXJldHVybiBpMmNfYWRkX2RyaXZlcigmbG03M19kcml2ZXIpOwotfQotCi1zdGF0aWMgdm9pZCBf
-X2V4aXQgc2Vuc29yc19sbTczX2V4aXQodm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmbG03M19k
-cml2ZXIpOwotfQorbW9kdWxlX2kyY19kcml2ZXIobG03M19kcml2ZXIpOwogCiBNT0RVTEVfQVVU
-SE9SKCJHdWlsbGF1bWUgTGlnbmV1bCA8Z3VpbGxhdW1lLmxpZ25ldWxAZ21haWwuY29tPiIpOwog
-TU9EVUxFX0RFU0NSSVBUSU9OKCJMTTczIGRyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIp
-OwotCi1tb2R1bGVfaW5pdChzZW5zb3JzX2xtNzNfaW5pdCk7Ci1tb2R1bGVfZXhpdChzZW5zb3Jz
-X2xtNzNfZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2xtNzUuYyBiL2RyaXZlcnMv
-aHdtb24vbG03NS5jCmluZGV4IGIzMzExYjEuLmE4M2YyMDYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv
-aHdtb24vbG03NS5jCisrKyBiL2RyaXZlcnMvaHdtb24vbG03NS5jCkBAIC00MzgsMjMgKzQzOCw4
-IEBAIGFib3J0OgogCXJldHVybiByZXQ7CiB9CiAKLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
-LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotCi0vKiBt
-b2R1bGUgZ2x1ZSAqLwotCi1zdGF0aWMgaW50IF9faW5pdCBzZW5zb3JzX2xtNzVfaW5pdCh2b2lk
-KQotewotCXJldHVybiBpMmNfYWRkX2RyaXZlcigmbG03NV9kcml2ZXIpOwotfQotCi1zdGF0aWMg
-dm9pZCBfX2V4aXQgc2Vuc29yc19sbTc1X2V4aXQodm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigm
-bG03NV9kcml2ZXIpOwotfQorbW9kdWxlX2kyY19kcml2ZXIobG03NV9kcml2ZXIpOwogCiBNT0RV
-TEVfQVVUSE9SKCJGcm9kbyBMb29pamFhcmQgPGZyb2RvbEBkZHMubmw+Iik7CiBNT0RVTEVfREVT
-Q1JJUFRJT04oIkxNNzUgZHJpdmVyIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7Ci0KLW1vZHVs
-ZV9pbml0KHNlbnNvcnNfbG03NV9pbml0KTsKLW1vZHVsZV9leGl0KHNlbnNvcnNfbG03NV9leGl0
-KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vbG03Ny5jIGIvZHJpdmVycy9od21vbi9sbTc3
-LmMKaW5kZXggMDhmN2ZmZS4uZDhjMWYzNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9sbTc3
-LmMKKysrIGIvZHJpdmVycy9od21vbi9sbTc3LmMKQEAgLTQ0MywxOSArNDQzLDggQEAgc3RhdGlj
-IHN0cnVjdCBsbTc3X2RhdGEgKmxtNzdfdXBkYXRlX2RldmljZShzdHJ1Y3QgZGV2aWNlICpkZXYp
-CiAJcmV0dXJuIGRhdGE7CiB9CiAKLXN0YXRpYyBpbnQgX19pbml0IHNlbnNvcnNfbG03N19pbml0
-KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZsbTc3X2RyaXZlcik7Ci19Ci0KLXN0
-YXRpYyB2b2lkIF9fZXhpdCBzZW5zb3JzX2xtNzdfZXhpdCh2b2lkKQotewotCWkyY19kZWxfZHJp
-dmVyKCZsbTc3X2RyaXZlcik7Ci19Cittb2R1bGVfaTJjX2RyaXZlcihsbTc3X2RyaXZlcik7CiAK
-IE1PRFVMRV9BVVRIT1IoIkFuZHJhcyBCQUxJIDxkcmV3aWVAZnJlZW1haWwuaHU+Iik7CiBNT0RV
-TEVfREVTQ1JJUFRJT04oIkxNNzcgZHJpdmVyIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7Ci0K
-LW1vZHVsZV9pbml0KHNlbnNvcnNfbG03N19pbml0KTsKLW1vZHVsZV9leGl0KHNlbnNvcnNfbG03
-N19leGl0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vbG04MC5jIGIvZHJpdmVycy9od21v
-bi9sbTgwLmMKaW5kZXggZGM2ZGY0ZS4uNmEyYTc3NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21v
-bi9sbTgwLmMKKysrIGIvZHJpdmVycy9od21vbi9sbTgwLmMKQEAgLTY5NywyMCArNjk3LDkgQEAg
-ZG9uZToKIAlyZXR1cm4gcmV0OwogfQogCi1zdGF0aWMgaW50IF9faW5pdCBzZW5zb3JzX2xtODBf
-aW5pdCh2b2lkKQotewotCXJldHVybiBpMmNfYWRkX2RyaXZlcigmbG04MF9kcml2ZXIpOwotfQot
-Ci1zdGF0aWMgdm9pZCBfX2V4aXQgc2Vuc29yc19sbTgwX2V4aXQodm9pZCkKLXsKLQlpMmNfZGVs
-X2RyaXZlcigmbG04MF9kcml2ZXIpOwotfQorbW9kdWxlX2kyY19kcml2ZXIobG04MF9kcml2ZXIp
-OwogCiBNT0RVTEVfQVVUSE9SKCJGcm9kbyBMb29pamFhcmQgPGZyb2RvbEBkZHMubmw+IGFuZCAi
-CiAJIlBoaWxpcCBFZGVsYnJvY2sgPHBoaWxAbmV0cm9lZGdlLmNvbT4iKTsKIE1PRFVMRV9ERVND
-UklQVElPTigiTE04MCBkcml2ZXIiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKLQotbW9kdWxl
-X2luaXQoc2Vuc29yc19sbTgwX2luaXQpOwotbW9kdWxlX2V4aXQoc2Vuc29yc19sbTgwX2V4aXQp
-OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9sbTgzLmMgYi9kcml2ZXJzL2h3bW9uL2xtODMu
-YwppbmRleCAxZmVkMjY1Li5jZDQ1YjlkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2h3bW9uL2xtODMu
-YworKysgYi9kcml2ZXJzL2h3bW9uL2xtODMuYwpAQCAtNDMwLDE5ICs0MzAsOCBAQCBzdGF0aWMg
-c3RydWN0IGxtODNfZGF0YSAqbG04M191cGRhdGVfZGV2aWNlKHN0cnVjdCBkZXZpY2UgKmRldikK
-IAlyZXR1cm4gZGF0YTsKIH0KIAotc3RhdGljIGludCBfX2luaXQgc2Vuc29yc19sbTgzX2luaXQo
-dm9pZCkKLXsKLQlyZXR1cm4gaTJjX2FkZF9kcml2ZXIoJmxtODNfZHJpdmVyKTsKLX0KLQotc3Rh
-dGljIHZvaWQgX19leGl0IHNlbnNvcnNfbG04M19leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2
-ZXIoJmxtODNfZHJpdmVyKTsKLX0KK21vZHVsZV9pMmNfZHJpdmVyKGxtODNfZHJpdmVyKTsKIAog
-TU9EVUxFX0FVVEhPUigiSmVhbiBEZWx2YXJlIDxraGFsaUBsaW51eC1mci5vcmc+Iik7CiBNT0RV
-TEVfREVTQ1JJUFRJT04oIkxNODMgZHJpdmVyIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7Ci0K
-LW1vZHVsZV9pbml0KHNlbnNvcnNfbG04M19pbml0KTsKLW1vZHVsZV9leGl0KHNlbnNvcnNfbG04
-M19leGl0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vbG04NS5jIGIvZHJpdmVycy9od21v
-bi9sbTg1LmMKaW5kZXggMjQwYjdmOS4uN2U0NmViYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21v
-bi9sbTg1LmMKKysrIGIvZHJpdmVycy9od21vbi9sbTg1LmMKQEAgLTE2OTUsMjIgKzE2OTUsMTAg
-QEAgc3RhdGljIHN0cnVjdCBsbTg1X2RhdGEgKmxtODVfdXBkYXRlX2RldmljZShzdHJ1Y3QgZGV2
-aWNlICpkZXYpCiAJcmV0dXJuIGRhdGE7CiB9CiAKLQotc3RhdGljIGludCBfX2luaXQgc21fbG04
-NV9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZsbTg1X2RyaXZlcik7Ci19
-Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBzbV9sbTg1X2V4aXQodm9pZCkKLXsKLQlpMmNfZGVsX2Ry
-aXZlcigmbG04NV9kcml2ZXIpOwotfQorbW9kdWxlX2kyY19kcml2ZXIobG04NV9kcml2ZXIpOwog
-CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7CiBNT0RVTEVfQVVUSE9SKCJQaGlsaXAgUG9rb3JueSA8
-cHBva29ybnlAcGVuZ3VpbmNvbXB1dGluZy5jb20+LCAiCiAJIk1hcmdpdCBTY2h1YmVydC1XaGls
-ZSA8bWFyZ2l0c3dAdC1vbmxpbmUuZGU+LCAiCiAJIkp1c3RpbiBUaGllc3NlbiA8anRoaWVzc2Vu
-QHBlbmd1aW5jb21wdXRpbmcuY29tPiIpOwogTU9EVUxFX0RFU0NSSVBUSU9OKCJMTTg1LUIsIExN
-ODUtQyBkcml2ZXIiKTsKLQotbW9kdWxlX2luaXQoc21fbG04NV9pbml0KTsKLW1vZHVsZV9leGl0
-KHNtX2xtODVfZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2xtODcuYyBiL2RyaXZl
-cnMvaHdtb24vbG04Ny5jCmluZGV4IGViZjRlZmQuLjA5MGY1ZWYgMTAwNjQ0Ci0tLSBhL2RyaXZl
-cnMvaHdtb24vbG04Ny5jCisrKyBiL2RyaXZlcnMvaHdtb24vbG04Ny5jCkBAIC0xMDU0LDE5ICsx
-MDU0LDggQEAgc3RhdGljIHN0cnVjdCBsbTg3X2RhdGEgKmxtODdfdXBkYXRlX2RldmljZShzdHJ1
-Y3QgZGV2aWNlICpkZXYpCiAJcmV0dXJuIGRhdGE7CiB9CiAKLXN0YXRpYyBpbnQgX19pbml0IHNl
-bnNvcnNfbG04N19pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZsbTg3X2Ry
-aXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBzZW5zb3JzX2xtODdfZXhpdCh2b2lkKQot
-ewotCWkyY19kZWxfZHJpdmVyKCZsbTg3X2RyaXZlcik7Ci19Cittb2R1bGVfaTJjX2RyaXZlcihs
-bTg3X2RyaXZlcik7CiAKIE1PRFVMRV9BVVRIT1IoIkplYW4gRGVsdmFyZSA8a2hhbGlAbGludXgt
-ZnIub3JnPiBhbmQgb3RoZXJzIik7CiBNT0RVTEVfREVTQ1JJUFRJT04oIkxNODcgZHJpdmVyIik7
-CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7Ci0KLW1vZHVsZV9pbml0KHNlbnNvcnNfbG04N19pbml0
-KTsKLW1vZHVsZV9leGl0KHNlbnNvcnNfbG04N19leGl0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMv
-aHdtb24vbG05MC5jIGIvZHJpdmVycy9od21vbi9sbTkwLmMKaW5kZXggZDJkZDVmOS4uMjQ4ZjJi
-NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9sbTkwLmMKKysrIGIvZHJpdmVycy9od21vbi9s
-bTkwLmMKQEAgLTE1MTQsMTkgKzE1MTQsOCBAQCBzdGF0aWMgc3RydWN0IGkyY19kcml2ZXIgbG05
-MF9kcml2ZXIgPSB7CiAJLmFkZHJlc3NfbGlzdAk9IG5vcm1hbF9pMmMsCiB9OwogCi1zdGF0aWMg
-aW50IF9faW5pdCBzZW5zb3JzX2xtOTBfaW5pdCh2b2lkKQotewotCXJldHVybiBpMmNfYWRkX2Ry
-aXZlcigmbG05MF9kcml2ZXIpOwotfQotCi1zdGF0aWMgdm9pZCBfX2V4aXQgc2Vuc29yc19sbTkw
-X2V4aXQodm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmbG05MF9kcml2ZXIpOwotfQorbW9kdWxl
-X2kyY19kcml2ZXIobG05MF9kcml2ZXIpOwogCiBNT0RVTEVfQVVUSE9SKCJKZWFuIERlbHZhcmUg
-PGtoYWxpQGxpbnV4LWZyLm9yZz4iKTsKIE1PRFVMRV9ERVNDUklQVElPTigiTE05MC9BRE0xMDMy
-IGRyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwotCi1tb2R1bGVfaW5pdChzZW5zb3Jz
-X2xtOTBfaW5pdCk7Ci1tb2R1bGVfZXhpdChzZW5zb3JzX2xtOTBfZXhpdCk7CmRpZmYgLS1naXQg
-YS9kcml2ZXJzL2h3bW9uL2xtOTIuYyBiL2RyaXZlcnMvaHdtb24vbG05Mi5jCmluZGV4IDk1Y2Rh
-NDEuLjBmZTJmMzcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vbG05Mi5jCisrKyBiL2RyaXZl
-cnMvaHdtb24vbG05Mi5jCkBAIC00MzIsMTkgKzQzMiw4IEBAIHN0YXRpYyBzdHJ1Y3QgaTJjX2Ry
-aXZlciBsbTkyX2RyaXZlciA9IHsKIAkuYWRkcmVzc19saXN0CT0gbm9ybWFsX2kyYywKIH07CiAK
-LXN0YXRpYyBpbnQgX19pbml0IHNlbnNvcnNfbG05Ml9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGky
-Y19hZGRfZHJpdmVyKCZsbTkyX2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBzZW5z
-b3JzX2xtOTJfZXhpdCh2b2lkKQotewotCWkyY19kZWxfZHJpdmVyKCZsbTkyX2RyaXZlcik7Ci19
-Cittb2R1bGVfaTJjX2RyaXZlcihsbTkyX2RyaXZlcik7CiAKIE1PRFVMRV9BVVRIT1IoIkplYW4g
-RGVsdmFyZSA8a2hhbGlAbGludXgtZnIub3JnPiIpOwogTU9EVUxFX0RFU0NSSVBUSU9OKCJMTTky
-L01BWDY2MzUgZHJpdmVyIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7Ci0KLW1vZHVsZV9pbml0
-KHNlbnNvcnNfbG05Ml9pbml0KTsKLW1vZHVsZV9leGl0KHNlbnNvcnNfbG05Ml9leGl0KTsKZGlm
-ZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vbG05My5jIGIvZHJpdmVycy9od21vbi9sbTkzLmMKaW5k
-ZXggZDJmYzRhYy4uMjJhZTVmMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9sbTkzLmMKKysr
-IGIvZHJpdmVycy9od21vbi9sbTkzLmMKQEAgLTI3NjEsMjAgKzI3NjEsOSBAQCBzdGF0aWMgc3Ry
-dWN0IGkyY19kcml2ZXIgbG05M19kcml2ZXIgPSB7CiAJLmFkZHJlc3NfbGlzdAk9IG5vcm1hbF9p
-MmMsCiB9OwogCi1zdGF0aWMgaW50IF9faW5pdCBsbTkzX2luaXQodm9pZCkKLXsKLQlyZXR1cm4g
-aTJjX2FkZF9kcml2ZXIoJmxtOTNfZHJpdmVyKTsKLX0KLQotc3RhdGljIHZvaWQgX19leGl0IGxt
-OTNfZXhpdCh2b2lkKQotewotCWkyY19kZWxfZHJpdmVyKCZsbTkzX2RyaXZlcik7Ci19Cittb2R1
-bGVfaTJjX2RyaXZlcihsbTkzX2RyaXZlcik7CiAKIE1PRFVMRV9BVVRIT1IoIk1hcmsgTS4gSG9m
-Zm1hbiA8bWhvZmZtYW5AbGlnaHRsaW5rLmNvbT4sICIKIAkJIkhhbnMgSi4gS29jaCA8aGprQGhh
-bnNqa29jaC5kZT4iKTsKIE1PRFVMRV9ERVNDUklQVElPTigiTE05MyBkcml2ZXIiKTsKIE1PRFVM
-RV9MSUNFTlNFKCJHUEwiKTsKLQotbW9kdWxlX2luaXQobG05M19pbml0KTsKLW1vZHVsZV9leGl0
-KGxtOTNfZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2xtOTUyNDEuYyBiL2RyaXZl
-cnMvaHdtb24vbG05NTI0MS5jCmluZGV4IDcwYmNhNjcuLmJkOGNkYjcgMTAwNjQ0Ci0tLSBhL2Ry
-aXZlcnMvaHdtb24vbG05NTI0MS5jCisrKyBiL2RyaXZlcnMvaHdtb24vbG05NTI0MS5jCkBAIC00
-NTUsMTkgKzQ1NSw4IEBAIHN0YXRpYyBzdHJ1Y3QgaTJjX2RyaXZlciBsbTk1MjQxX2RyaXZlciA9
-IHsKIAkuYWRkcmVzc19saXN0CT0gbm9ybWFsX2kyYywKIH07CiAKLXN0YXRpYyBpbnQgX19pbml0
-IHNlbnNvcnNfbG05NTI0MV9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZs
-bTk1MjQxX2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBzZW5zb3JzX2xtOTUyNDFf
-ZXhpdCh2b2lkKQotewotCWkyY19kZWxfZHJpdmVyKCZsbTk1MjQxX2RyaXZlcik7Ci19Cittb2R1
-bGVfaTJjX2RyaXZlcihsbTk1MjQxX2RyaXZlcik7CiAKIE1PRFVMRV9BVVRIT1IoIkRhdmlkZSBS
-aXp6byA8ZWxwYS5yaXp6b0BnbWFpbC5jb20+Iik7CiBNT0RVTEVfREVTQ1JJUFRJT04oIkxNOTUy
-NDEgc2Vuc29yIGRyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwotCi1tb2R1bGVfaW5p
-dChzZW5zb3JzX2xtOTUyNDFfaW5pdCk7Ci1tb2R1bGVfZXhpdChzZW5zb3JzX2xtOTUyNDFfZXhp
-dCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2xtOTUyNDUuYyBiL2RyaXZlcnMvaHdtb24v
-bG05NTI0NS5jCmluZGV4IDVlNWZjMWIuLjlhNDZjMTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdt
-b24vbG05NTI0NS5jCisrKyBiL2RyaXZlcnMvaHdtb24vbG05NTI0NS5jCkBAIC01MjUsMTkgKzUy
-NSw4IEBAIHN0YXRpYyBzdHJ1Y3QgaTJjX2RyaXZlciBsbTk1MjQ1X2RyaXZlciA9IHsKIAkuYWRk
-cmVzc19saXN0CT0gbm9ybWFsX2kyYywKIH07CiAKLXN0YXRpYyBpbnQgX19pbml0IHNlbnNvcnNf
-bG05NTI0NV9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZsbTk1MjQ1X2Ry
-aXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBzZW5zb3JzX2xtOTUyNDVfZXhpdCh2b2lk
-KQotewotCWkyY19kZWxfZHJpdmVyKCZsbTk1MjQ1X2RyaXZlcik7Ci19Cittb2R1bGVfaTJjX2Ry
-aXZlcihsbTk1MjQ1X2RyaXZlcik7CiAKIE1PRFVMRV9BVVRIT1IoIkFsZXhhbmRlciBTdGVpbiA8
-YWxleGFuZGVyLnN0ZWluQHN5c3RlYy1lbGVjdHJvbmljLmNvbT4iKTsKIE1PRFVMRV9ERVNDUklQ
-VElPTigiTE05NTI0NSBzZW5zb3IgZHJpdmVyIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7Ci0K
-LW1vZHVsZV9pbml0KHNlbnNvcnNfbG05NTI0NV9pbml0KTsKLW1vZHVsZV9leGl0KHNlbnNvcnNf
-bG05NTI0NV9leGl0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vbHRjNDE1MS5jIGIvZHJp
-dmVycy9od21vbi9sdGM0MTUxLmMKaW5kZXggNGFjMDZiNy4uZjY0NmI0NSAxMDA2NDQKLS0tIGEv
-ZHJpdmVycy9od21vbi9sdGM0MTUxLmMKKysrIGIvZHJpdmVycy9od21vbi9sdGM0MTUxLmMKQEAg
-LTIzOCwxOSArMjM4LDggQEAgc3RhdGljIHN0cnVjdCBpMmNfZHJpdmVyIGx0YzQxNTFfZHJpdmVy
-ID0gewogCS5pZF90YWJsZQk9IGx0YzQxNTFfaWQsCiB9OwogCi1zdGF0aWMgaW50IF9faW5pdCBs
-dGM0MTUxX2luaXQodm9pZCkKLXsKLQlyZXR1cm4gaTJjX2FkZF9kcml2ZXIoJmx0YzQxNTFfZHJp
-dmVyKTsKLX0KLQotc3RhdGljIHZvaWQgX19leGl0IGx0YzQxNTFfZXhpdCh2b2lkKQotewotCWky
-Y19kZWxfZHJpdmVyKCZsdGM0MTUxX2RyaXZlcik7Ci19Cittb2R1bGVfaTJjX2RyaXZlcihsdGM0
-MTUxX2RyaXZlcik7CiAKIE1PRFVMRV9BVVRIT1IoIlBlciBEYWxlbiA8cGVyLmRhbGVuQGFwcGVh
-cnR2LmNvbT4iKTsKIE1PRFVMRV9ERVNDUklQVElPTigiTFRDNDE1MSBkcml2ZXIiKTsKIE1PRFVM
-RV9MSUNFTlNFKCJHUEwiKTsKLQotbW9kdWxlX2luaXQobHRjNDE1MV9pbml0KTsKLW1vZHVsZV9l
-eGl0KGx0YzQxNTFfZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2x0YzQyMTUuYyBi
-L2RyaXZlcnMvaHdtb24vbHRjNDIxNS5jCmluZGV4IGM3ZTZkOGUuLjA3ODliNjMgMTAwNjQ0Ci0t
-LSBhL2RyaXZlcnMvaHdtb24vbHRjNDIxNS5jCisrKyBiL2RyaXZlcnMvaHdtb24vbHRjNDIxNS5j
-CkBAIC0zMDksMTkgKzMwOSw4IEBAIHN0YXRpYyBzdHJ1Y3QgaTJjX2RyaXZlciBsdGM0MjE1X2Ry
-aXZlciA9IHsKIAkuaWRfdGFibGUJPSBsdGM0MjE1X2lkLAogfTsKIAotc3RhdGljIGludCBfX2lu
-aXQgbHRjNDIxNV9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZsdGM0MjE1
-X2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBsdGM0MjE1X2V4aXQodm9pZCkKLXsK
-LQlpMmNfZGVsX2RyaXZlcigmbHRjNDIxNV9kcml2ZXIpOwotfQorbW9kdWxlX2kyY19kcml2ZXIo
-bHRjNDIxNV9kcml2ZXIpOwogCiBNT0RVTEVfQVVUSE9SKCJJcmEgVy4gU255ZGVyIDxpd3NAb3Zy
-by5jYWx0ZWNoLmVkdT4iKTsKIE1PRFVMRV9ERVNDUklQVElPTigiTFRDNDIxNSBkcml2ZXIiKTsK
-IE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKLQotbW9kdWxlX2luaXQobHRjNDIxNV9pbml0KTsKLW1v
-ZHVsZV9leGl0KGx0YzQyMTVfZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2x0YzQy
-NDUuYyBiL2RyaXZlcnMvaHdtb24vbHRjNDI0NS5jCmluZGV4IDY1OTMwODMuLjY5M2E2YmQgMTAw
-NjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vbHRjNDI0NS5jCisrKyBiL2RyaXZlcnMvaHdtb24vbHRj
-NDI0NS5jCkBAIC01NzgsMTkgKzU3OCw4IEBAIHN0YXRpYyBzdHJ1Y3QgaTJjX2RyaXZlciBsdGM0
-MjQ1X2RyaXZlciA9IHsKIAkuaWRfdGFibGUJPSBsdGM0MjQ1X2lkLAogfTsKIAotc3RhdGljIGlu
-dCBfX2luaXQgbHRjNDI0NV9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZs
-dGM0MjQ1X2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBsdGM0MjQ1X2V4aXQodm9p
-ZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmbHRjNDI0NV9kcml2ZXIpOwotfQorbW9kdWxlX2kyY19k
-cml2ZXIobHRjNDI0NV9kcml2ZXIpOwogCiBNT0RVTEVfQVVUSE9SKCJJcmEgVy4gU255ZGVyIDxp
-d3NAb3Zyby5jYWx0ZWNoLmVkdT4iKTsKIE1PRFVMRV9ERVNDUklQVElPTigiTFRDNDI0NSBkcml2
-ZXIiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKLQotbW9kdWxlX2luaXQobHRjNDI0NV9pbml0
-KTsKLW1vZHVsZV9leGl0KGx0YzQyNDVfZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9u
-L2x0YzQyNjEuYyBiL2RyaXZlcnMvaHdtb24vbHRjNDI2MS5jCmluZGV4IGNlNTIzNTUuLmFiMWJm
-YmYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vbHRjNDI2MS5jCisrKyBiL2RyaXZlcnMvaHdt
-b24vbHRjNDI2MS5jCkBAIC0yOTcsMTkgKzI5Nyw4IEBAIHN0YXRpYyBzdHJ1Y3QgaTJjX2RyaXZl
-ciBsdGM0MjYxX2RyaXZlciA9IHsKIAkuaWRfdGFibGUgPSBsdGM0MjYxX2lkLAogfTsKIAotc3Rh
-dGljIGludCBfX2luaXQgbHRjNDI2MV9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJp
-dmVyKCZsdGM0MjYxX2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBsdGM0MjYxX2V4
-aXQodm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmbHRjNDI2MV9kcml2ZXIpOwotfQorbW9kdWxl
-X2kyY19kcml2ZXIobHRjNDI2MV9kcml2ZXIpOwogCiBNT0RVTEVfQVVUSE9SKCJHdWVudGVyIFJv
-ZWNrIDxndWVudGVyLnJvZWNrQGVyaWNzc29uLmNvbT4iKTsKIE1PRFVMRV9ERVNDUklQVElPTigi
-TFRDNDI2MSBkcml2ZXIiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKLQotbW9kdWxlX2luaXQo
-bHRjNDI2MV9pbml0KTsKLW1vZHVsZV9leGl0KGx0YzQyNjFfZXhpdCk7CmRpZmYgLS1naXQgYS9k
-cml2ZXJzL2h3bW9uL21heDE2MDY1LmMgYi9kcml2ZXJzL2h3bW9uL21heDE2MDY1LmMKaW5kZXgg
-ZjhlMzIzYS4uNTFlZGFlOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9tYXgxNjA2NS5jCisr
-KyBiL2RyaXZlcnMvaHdtb24vbWF4MTYwNjUuYwpAQCAtNjk5LDE5ICs2OTksOCBAQCBzdGF0aWMg
-c3RydWN0IGkyY19kcml2ZXIgbWF4MTYwNjVfZHJpdmVyID0gewogCS5pZF90YWJsZSA9IG1heDE2
-MDY1X2lkLAogfTsKIAotc3RhdGljIGludCBfX2luaXQgbWF4MTYwNjVfaW5pdCh2b2lkKQotewot
-CXJldHVybiBpMmNfYWRkX2RyaXZlcigmbWF4MTYwNjVfZHJpdmVyKTsKLX0KLQotc3RhdGljIHZv
-aWQgX19leGl0IG1heDE2MDY1X2V4aXQodm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmbWF4MTYw
-NjVfZHJpdmVyKTsKLX0KK21vZHVsZV9pMmNfZHJpdmVyKG1heDE2MDY1X2RyaXZlcik7CiAKIE1P
-RFVMRV9BVVRIT1IoIkd1ZW50ZXIgUm9lY2sgPGd1ZW50ZXIucm9lY2tAZXJpY3Nzb24uY29tPiIp
-OwogTU9EVUxFX0RFU0NSSVBUSU9OKCJNQVgxNjA2NSBkcml2ZXIiKTsKIE1PRFVMRV9MSUNFTlNF
-KCJHUEwiKTsKLQotbW9kdWxlX2luaXQobWF4MTYwNjVfaW5pdCk7Ci1tb2R1bGVfZXhpdChtYXgx
-NjA2NV9leGl0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vbWF4MTYxOS5jIGIvZHJpdmVy
-cy9od21vbi9tYXgxNjE5LmMKaW5kZXggZjE5NTk5Zi4uZWNhYzA0YSAxMDA2NDQKLS0tIGEvZHJp
-dmVycy9od21vbi9tYXgxNjE5LmMKKysrIGIvZHJpdmVycy9od21vbi9tYXgxNjE5LmMKQEAgLTM2
-MCwyMCArMzYwLDkgQEAgc3RhdGljIHN0cnVjdCBtYXgxNjE5X2RhdGEgKm1heDE2MTlfdXBkYXRl
-X2RldmljZShzdHJ1Y3QgZGV2aWNlICpkZXYpCiAJcmV0dXJuIGRhdGE7CiB9CiAKLXN0YXRpYyBp
-bnQgX19pbml0IHNlbnNvcnNfbWF4MTYxOV9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRf
-ZHJpdmVyKCZtYXgxNjE5X2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBzZW5zb3Jz
-X21heDE2MTlfZXhpdCh2b2lkKQotewotCWkyY19kZWxfZHJpdmVyKCZtYXgxNjE5X2RyaXZlcik7
-Ci19Cittb2R1bGVfaTJjX2RyaXZlcihtYXgxNjE5X2RyaXZlcik7CiAKIE1PRFVMRV9BVVRIT1Io
-IkFsZXhleSBGaXNoZXIgPGZpc2hvckBtYWlsLnJ1PiBhbmQgIgogCSJKZWFuIERlbHZhcmUgPGto
-YWxpQGxpbnV4LWZyLm9yZz4iKTsKIE1PRFVMRV9ERVNDUklQVElPTigiTUFYMTYxOSBzZW5zb3Ig
-ZHJpdmVyIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7Ci0KLW1vZHVsZV9pbml0KHNlbnNvcnNf
-bWF4MTYxOV9pbml0KTsKLW1vZHVsZV9leGl0KHNlbnNvcnNfbWF4MTYxOV9leGl0KTsKZGlmZiAt
-LWdpdCBhL2RyaXZlcnMvaHdtb24vbWF4MTY2OC5jIGIvZHJpdmVycy9od21vbi9tYXgxNjY4LmMK
-aW5kZXggODg5NTNmOS4uMTIyNDlmNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9tYXgxNjY4
-LmMKKysrIGIvZHJpdmVycy9od21vbi9tYXgxNjY4LmMKQEAgLTQ4NCwxOSArNDg0LDggQEAgc3Rh
-dGljIHN0cnVjdCBpMmNfZHJpdmVyIG1heDE2NjhfZHJpdmVyID0gewogCS5hZGRyZXNzX2xpc3Qg
-PSBtYXgxNjY4X2FkZHJfbGlzdCwKIH07CiAKLXN0YXRpYyBpbnQgX19pbml0IHNlbnNvcnNfbWF4
-MTY2OF9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZtYXgxNjY4X2RyaXZl
-cik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBzZW5zb3JzX21heDE2NjhfZXhpdCh2b2lkKQot
-ewotCWkyY19kZWxfZHJpdmVyKCZtYXgxNjY4X2RyaXZlcik7Ci19Cittb2R1bGVfaTJjX2RyaXZl
-cihtYXgxNjY4X2RyaXZlcik7CiAKIE1PRFVMRV9BVVRIT1IoIkRhdmlkIEdlb3JnZSA8ZGF2aWQu
-Z2VvcmdlQHNrYS5hYy56YT4iKTsKIE1PRFVMRV9ERVNDUklQVElPTigiTUFYMTY2OCByZW1vdGUg
-dGVtcGVyYXR1cmUgc2Vuc29yIGRyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwotCi1t
-b2R1bGVfaW5pdChzZW5zb3JzX21heDE2NjhfaW5pdCkKLW1vZHVsZV9leGl0KHNlbnNvcnNfbWF4
-MTY2OF9leGl0KQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9tYXg2NjM5LmMgYi9kcml2ZXJz
-L2h3bW9uL21heDY2MzkuYwppbmRleCBlMTBhMDkyLi5kMjAzZWIxIDEwMDY0NAotLS0gYS9kcml2
-ZXJzL2h3bW9uL21heDY2MzkuYworKysgYi9kcml2ZXJzL2h3bW9uL21heDY2MzkuYwpAQCAtNjM1
-LDE5ICs2MzUsOCBAQCBzdGF0aWMgc3RydWN0IGkyY19kcml2ZXIgbWF4NjYzOV9kcml2ZXIgPSB7
-CiAJLmFkZHJlc3NfbGlzdCA9IG5vcm1hbF9pMmMsCiB9OwogCi1zdGF0aWMgaW50IF9faW5pdCBt
-YXg2NjM5X2luaXQodm9pZCkKLXsKLQlyZXR1cm4gaTJjX2FkZF9kcml2ZXIoJm1heDY2MzlfZHJp
-dmVyKTsKLX0KLQotc3RhdGljIHZvaWQgX19leGl0IG1heDY2MzlfZXhpdCh2b2lkKQotewotCWky
-Y19kZWxfZHJpdmVyKCZtYXg2NjM5X2RyaXZlcik7Ci19Cittb2R1bGVfaTJjX2RyaXZlcihtYXg2
-NjM5X2RyaXZlcik7CiAKIE1PRFVMRV9BVVRIT1IoIlJvbGFuZCBTdGlnZ2UgPHN0aWdnZUBhbnRj
-b20uZGU+Iik7CiBNT0RVTEVfREVTQ1JJUFRJT04oIm1heDY2MzkgZHJpdmVyIik7CiBNT0RVTEVf
-TElDRU5TRSgiR1BMIik7Ci0KLW1vZHVsZV9pbml0KG1heDY2MzlfaW5pdCk7Ci1tb2R1bGVfZXhp
-dChtYXg2NjM5X2V4aXQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9tYXg2NjQyLmMgYi9k
-cml2ZXJzL2h3bW9uL21heDY2NDIuYwppbmRleCAyMDllOGE1Li40Mjk4OTA5IDEwMDY0NAotLS0g
-YS9kcml2ZXJzL2h3bW9uL21heDY2NDIuYworKysgYi9kcml2ZXJzL2h3bW9uL21heDY2NDIuYwpA
-QCAtMzUyLDE5ICszNTIsOCBAQCBzdGF0aWMgc3RydWN0IGkyY19kcml2ZXIgbWF4NjY0Ml9kcml2
-ZXIgPSB7CiAJLmFkZHJlc3NfbGlzdAk9IG5vcm1hbF9pMmMsCiB9OwogCi1zdGF0aWMgaW50IF9f
-aW5pdCBtYXg2NjQyX2luaXQodm9pZCkKLXsKLQlyZXR1cm4gaTJjX2FkZF9kcml2ZXIoJm1heDY2
-NDJfZHJpdmVyKTsKLX0KLQotc3RhdGljIHZvaWQgX19leGl0IG1heDY2NDJfZXhpdCh2b2lkKQot
-ewotCWkyY19kZWxfZHJpdmVyKCZtYXg2NjQyX2RyaXZlcik7Ci19Cittb2R1bGVfaTJjX2RyaXZl
-cihtYXg2NjQyX2RyaXZlcik7CiAKIE1PRFVMRV9BVVRIT1IoIlBlciBEYWxlbiA8cGVyLmRhbGVu
-QGFwcGVhcnR2LmNvbT4iKTsKIE1PRFVMRV9ERVNDUklQVElPTigiTUFYNjY0MiBzZW5zb3IgZHJp
-dmVyIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7Ci0KLW1vZHVsZV9pbml0KG1heDY2NDJfaW5p
-dCk7Ci1tb2R1bGVfZXhpdChtYXg2NjQyX2V4aXQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21v
-bi9tYXg2NjUwLmMgYi9kcml2ZXJzL2h3bW9uL21heDY2NTAuYwppbmRleCAxNTljZTAyLi4zMjk2
-ZTZlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2h3bW9uL21heDY2NTAuYworKysgYi9kcml2ZXJzL2h3
-bW9uL21heDY2NTAuYwpAQCAtNzI2LDE5ICs3MjYsOCBAQCBzdGF0aWMgc3RydWN0IG1heDY2NTBf
-ZGF0YSAqbWF4NjY1MF91cGRhdGVfZGV2aWNlKHN0cnVjdCBkZXZpY2UgKmRldikKIAlyZXR1cm4g
-ZGF0YTsKIH0KIAotc3RhdGljIGludCBfX2luaXQgc2Vuc29yc19tYXg2NjUwX2luaXQodm9pZCkK
-LXsKLQlyZXR1cm4gaTJjX2FkZF9kcml2ZXIoJm1heDY2NTBfZHJpdmVyKTsKLX0KLQotc3RhdGlj
-IHZvaWQgX19leGl0IHNlbnNvcnNfbWF4NjY1MF9leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2
-ZXIoJm1heDY2NTBfZHJpdmVyKTsKLX0KK21vZHVsZV9pMmNfZHJpdmVyKG1heDY2NTBfZHJpdmVy
-KTsKIAogTU9EVUxFX0FVVEhPUigiSGFucyBKLiBLb2NoIik7CiBNT0RVTEVfREVTQ1JJUFRJT04o
-Ik1BWDY2NTAgc2Vuc29yIGRyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwotCi1tb2R1
-bGVfaW5pdChzZW5zb3JzX21heDY2NTBfaW5pdCk7Ci1tb2R1bGVfZXhpdChzZW5zb3JzX21heDY2
-NTBfZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL3BtYnVzL2FkbTEyNzUuYyBiL2Ry
-aXZlcnMvaHdtb24vcG1idXMvYWRtMTI3NS5jCmluZGV4IDgxYzdjMmUuLmZlNTJjM2MgMTAwNjQ0
-Ci0tLSBhL2RyaXZlcnMvaHdtb24vcG1idXMvYWRtMTI3NS5jCisrKyBiL2RyaXZlcnMvaHdtb24v
-cG1idXMvYWRtMTI3NS5jCkBAIC0zMjYsMTggKzMyNiw4IEBAIHN0YXRpYyBzdHJ1Y3QgaTJjX2Ry
-aXZlciBhZG0xMjc1X2RyaXZlciA9IHsKIAkuaWRfdGFibGUgPSBhZG0xMjc1X2lkLAogfTsKIAot
-c3RhdGljIGludCBfX2luaXQgYWRtMTI3NV9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRf
-ZHJpdmVyKCZhZG0xMjc1X2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBhZG0xMjc1
-X2V4aXQodm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmYWRtMTI3NV9kcml2ZXIpOwotfQorbW9k
-dWxlX2kyY19kcml2ZXIoYWRtMTI3NV9kcml2ZXIpOwogCiBNT0RVTEVfQVVUSE9SKCJHdWVudGVy
-IFJvZWNrIik7CiBNT0RVTEVfREVTQ1JJUFRJT04oIlBNQnVzIGRyaXZlciBmb3IgQW5hbG9nIERl
-dmljZXMgQURNMTI3NSBhbmQgY29tcGF0aWJsZXMiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsK
-LW1vZHVsZV9pbml0KGFkbTEyNzVfaW5pdCk7Ci1tb2R1bGVfZXhpdChhZG0xMjc1X2V4aXQpOwpk
-aWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9wbWJ1cy9sbTI1MDY2LmMgYi9kcml2ZXJzL2h3bW9u
-L3BtYnVzL2xtMjUwNjYuYwppbmRleCA4NGEzN2YwLi44NmFjMTVhIDEwMDY0NAotLS0gYS9kcml2
-ZXJzL2h3bW9uL3BtYnVzL2xtMjUwNjYuYworKysgYi9kcml2ZXJzL2h3bW9uL3BtYnVzL2xtMjUw
-NjYuYwpAQCAtMzM0LDE4ICszMzQsOCBAQCBzdGF0aWMgc3RydWN0IGkyY19kcml2ZXIgbG0yNTA2
-Nl9kcml2ZXIgPSB7CiAJLmlkX3RhYmxlID0gbG0yNTA2Nl9pZCwKIH07CiAKLXN0YXRpYyBpbnQg
-X19pbml0IGxtMjUwNjZfaW5pdCh2b2lkKQotewotCXJldHVybiBpMmNfYWRkX2RyaXZlcigmbG0y
-NTA2Nl9kcml2ZXIpOwotfQotCi1zdGF0aWMgdm9pZCBfX2V4aXQgbG0yNTA2Nl9leGl0KHZvaWQp
-Ci17Ci0JaTJjX2RlbF9kcml2ZXIoJmxtMjUwNjZfZHJpdmVyKTsKLX0KK21vZHVsZV9pMmNfZHJp
-dmVyKGxtMjUwNjZfZHJpdmVyKTsKIAogTU9EVUxFX0FVVEhPUigiR3VlbnRlciBSb2VjayIpOwog
-TU9EVUxFX0RFU0NSSVBUSU9OKCJQTUJ1cyBkcml2ZXIgZm9yIExNMjUwNjYvTE01MDY0L0xNNTA2
-NiIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwotbW9kdWxlX2luaXQobG0yNTA2Nl9pbml0KTsK
-LW1vZHVsZV9leGl0KGxtMjUwNjZfZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL3Bt
-YnVzL2x0YzI5NzguYyBiL2RyaXZlcnMvaHdtb24vcG1idXMvbHRjMjk3OC5jCmluZGV4IDgyMGZm
-ZjQuLmM5ZTRkZDIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vcG1idXMvbHRjMjk3OC5jCisr
-KyBiL2RyaXZlcnMvaHdtb24vcG1idXMvbHRjMjk3OC5jCkBAIC0zOTEsMTggKzM5MSw4IEBAIHN0
-YXRpYyBzdHJ1Y3QgaTJjX2RyaXZlciBsdGMyOTc4X2RyaXZlciA9IHsKIAkuaWRfdGFibGUgPSBs
-dGMyOTc4X2lkLAogfTsKIAotc3RhdGljIGludCBfX2luaXQgbHRjMjk3OF9pbml0KHZvaWQpCi17
-Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZsdGMyOTc4X2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2
-b2lkIF9fZXhpdCBsdGMyOTc4X2V4aXQodm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmbHRjMjk3
-OF9kcml2ZXIpOwotfQorbW9kdWxlX2kyY19kcml2ZXIobHRjMjk3OF9kcml2ZXIpOwogCiBNT0RV
-TEVfQVVUSE9SKCJHdWVudGVyIFJvZWNrIik7CiBNT0RVTEVfREVTQ1JJUFRJT04oIlBNQnVzIGRy
-aXZlciBmb3IgTFRDMjk3OCBhbmQgTFRDMzg4MCIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwot
-bW9kdWxlX2luaXQobHRjMjk3OF9pbml0KTsKLW1vZHVsZV9leGl0KGx0YzI5NzhfZXhpdCk7CmRp
-ZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL3BtYnVzL21heDE2MDY0LmMgYi9kcml2ZXJzL2h3bW9u
-L3BtYnVzL21heDE2MDY0LmMKaW5kZXggMWQ3N2NmNC4uNWNmZTIwZiAxMDA2NDQKLS0tIGEvZHJp
-dmVycy9od21vbi9wbWJ1cy9tYXgxNjA2NC5jCisrKyBiL2RyaXZlcnMvaHdtb24vcG1idXMvbWF4
-MTYwNjQuYwpAQCAtMTI2LDE4ICsxMjYsOCBAQCBzdGF0aWMgc3RydWN0IGkyY19kcml2ZXIgbWF4
-MTYwNjRfZHJpdmVyID0gewogCS5pZF90YWJsZSA9IG1heDE2MDY0X2lkLAogfTsKIAotc3RhdGlj
-IGludCBfX2luaXQgbWF4MTYwNjRfaW5pdCh2b2lkKQotewotCXJldHVybiBpMmNfYWRkX2RyaXZl
-cigmbWF4MTYwNjRfZHJpdmVyKTsKLX0KLQotc3RhdGljIHZvaWQgX19leGl0IG1heDE2MDY0X2V4
-aXQodm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmbWF4MTYwNjRfZHJpdmVyKTsKLX0KK21vZHVs
-ZV9pMmNfZHJpdmVyKG1heDE2MDY0X2RyaXZlcik7CiAKIE1PRFVMRV9BVVRIT1IoIkd1ZW50ZXIg
-Um9lY2siKTsKIE1PRFVMRV9ERVNDUklQVElPTigiUE1CdXMgZHJpdmVyIGZvciBNYXhpbSBNQVgx
-NjA2NCIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwotbW9kdWxlX2luaXQobWF4MTYwNjRfaW5p
-dCk7Ci1tb2R1bGVfZXhpdChtYXgxNjA2NF9leGl0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdt
-b24vcG1idXMvbWF4MzQ0NDAuYyBiL2RyaXZlcnMvaHdtb24vcG1idXMvbWF4MzQ0NDAuYwppbmRl
-eCBiZWFmNWE4Li44OWFlMzAzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2h3bW9uL3BtYnVzL21heDM0
-NDQwLmMKKysrIGIvZHJpdmVycy9od21vbi9wbWJ1cy9tYXgzNDQ0MC5jCkBAIC0yNDgsMTggKzI0
-OCw4IEBAIHN0YXRpYyBzdHJ1Y3QgaTJjX2RyaXZlciBtYXgzNDQ0MF9kcml2ZXIgPSB7CiAJLmlk
-X3RhYmxlID0gbWF4MzQ0NDBfaWQsCiB9OwogCi1zdGF0aWMgaW50IF9faW5pdCBtYXgzNDQ0MF9p
-bml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZtYXgzNDQ0MF9kcml2ZXIpOwot
-fQotCi1zdGF0aWMgdm9pZCBfX2V4aXQgbWF4MzQ0NDBfZXhpdCh2b2lkKQotewotCWkyY19kZWxf
-ZHJpdmVyKCZtYXgzNDQ0MF9kcml2ZXIpOwotfQorbW9kdWxlX2kyY19kcml2ZXIobWF4MzQ0NDBf
-ZHJpdmVyKTsKIAogTU9EVUxFX0FVVEhPUigiR3VlbnRlciBSb2VjayIpOwogTU9EVUxFX0RFU0NS
-SVBUSU9OKCJQTUJ1cyBkcml2ZXIgZm9yIE1heGltIE1BWDM0NDQwL01BWDM0NDQxIik7CiBNT0RV
-TEVfTElDRU5TRSgiR1BMIik7Ci1tb2R1bGVfaW5pdChtYXgzNDQ0MF9pbml0KTsKLW1vZHVsZV9l
-eGl0KG1heDM0NDQwX2V4aXQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9wbWJ1cy9tYXg4
-Njg4LmMgYi9kcml2ZXJzL2h3bW9uL3BtYnVzL21heDg2ODguYwppbmRleCBlMmI3NGJiLi44MmM1
-OThkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2h3bW9uL3BtYnVzL21heDg2ODguYworKysgYi9kcml2
-ZXJzL2h3bW9uL3BtYnVzL21heDg2ODguYwpAQCAtMjAzLDE4ICsyMDMsOCBAQCBzdGF0aWMgc3Ry
-dWN0IGkyY19kcml2ZXIgbWF4ODY4OF9kcml2ZXIgPSB7CiAJLmlkX3RhYmxlID0gbWF4ODY4OF9p
-ZCwKIH07CiAKLXN0YXRpYyBpbnQgX19pbml0IG1heDg2ODhfaW5pdCh2b2lkKQotewotCXJldHVy
-biBpMmNfYWRkX2RyaXZlcigmbWF4ODY4OF9kcml2ZXIpOwotfQotCi1zdGF0aWMgdm9pZCBfX2V4
-aXQgbWF4ODY4OF9leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2ZXIoJm1heDg2ODhfZHJpdmVy
-KTsKLX0KK21vZHVsZV9pMmNfZHJpdmVyKG1heDg2ODhfZHJpdmVyKTsKIAogTU9EVUxFX0FVVEhP
-UigiR3VlbnRlciBSb2VjayIpOwogTU9EVUxFX0RFU0NSSVBUSU9OKCJQTUJ1cyBkcml2ZXIgZm9y
-IE1heGltIE1BWDg2ODgiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKLW1vZHVsZV9pbml0KG1h
-eDg2ODhfaW5pdCk7Ci1tb2R1bGVfZXhpdChtYXg4Njg4X2V4aXQpOwpkaWZmIC0tZ2l0IGEvZHJp
-dmVycy9od21vbi9wbWJ1cy9wbWJ1cy5jIGIvZHJpdmVycy9od21vbi9wbWJ1cy9wbWJ1cy5jCmlu
-ZGV4IDE4YTM4NWUuLmRhNWZlMzYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vcG1idXMvcG1i
-dXMuYworKysgYi9kcml2ZXJzL2h3bW9uL3BtYnVzL3BtYnVzLmMKQEAgLTIyNCwxOCArMjI0LDgg
-QEAgc3RhdGljIHN0cnVjdCBpMmNfZHJpdmVyIHBtYnVzX2RyaXZlciA9IHsKIAkuaWRfdGFibGUg
-PSBwbWJ1c19pZCwKIH07CiAKLXN0YXRpYyBpbnQgX19pbml0IHBtYnVzX2luaXQodm9pZCkKLXsK
-LQlyZXR1cm4gaTJjX2FkZF9kcml2ZXIoJnBtYnVzX2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lk
-IF9fZXhpdCBwbWJ1c19leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2ZXIoJnBtYnVzX2RyaXZl
-cik7Ci19Cittb2R1bGVfaTJjX2RyaXZlcihwbWJ1c19kcml2ZXIpOwogCiBNT0RVTEVfQVVUSE9S
-KCJHdWVudGVyIFJvZWNrIik7CiBNT0RVTEVfREVTQ1JJUFRJT04oIkdlbmVyaWMgUE1CdXMgZHJp
-dmVyIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7Ci1tb2R1bGVfaW5pdChwbWJ1c19pbml0KTsK
-LW1vZHVsZV9leGl0KHBtYnVzX2V4aXQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9wbWJ1
-cy91Y2Q5MDAwLmMgYi9kcml2ZXJzL2h3bW9uL3BtYnVzL3VjZDkwMDAuYwppbmRleCA0ZmY2Y2Yy
-Li43NTlhNTYzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2h3bW9uL3BtYnVzL3VjZDkwMDAuYworKysg
-Yi9kcml2ZXJzL2h3bW9uL3BtYnVzL3VjZDkwMDAuYwpAQCAtMjU4LDE4ICsyNTgsOCBAQCBzdGF0
-aWMgc3RydWN0IGkyY19kcml2ZXIgdWNkOTAwMF9kcml2ZXIgPSB7CiAJLmlkX3RhYmxlID0gdWNk
-OTAwMF9pZCwKIH07CiAKLXN0YXRpYyBpbnQgX19pbml0IHVjZDkwMDBfaW5pdCh2b2lkKQotewot
-CXJldHVybiBpMmNfYWRkX2RyaXZlcigmdWNkOTAwMF9kcml2ZXIpOwotfQotCi1zdGF0aWMgdm9p
-ZCBfX2V4aXQgdWNkOTAwMF9leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2ZXIoJnVjZDkwMDBf
-ZHJpdmVyKTsKLX0KK21vZHVsZV9pMmNfZHJpdmVyKHVjZDkwMDBfZHJpdmVyKTsKIAogTU9EVUxF
-X0FVVEhPUigiR3VlbnRlciBSb2VjayIpOwogTU9EVUxFX0RFU0NSSVBUSU9OKCJQTUJ1cyBkcml2
-ZXIgZm9yIFRJIFVDRDkweHh4Iik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7Ci1tb2R1bGVfaW5p
-dCh1Y2Q5MDAwX2luaXQpOwotbW9kdWxlX2V4aXQodWNkOTAwMF9leGl0KTsKZGlmZiAtLWdpdCBh
-L2RyaXZlcnMvaHdtb24vcG1idXMvdWNkOTIwMC5jIGIvZHJpdmVycy9od21vbi9wbWJ1cy91Y2Q5
-MjAwLmMKaW5kZXggNmUxYzFhOC4uNjI5ZDBjOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9w
-bWJ1cy91Y2Q5MjAwLmMKKysrIGIvZHJpdmVycy9od21vbi9wbWJ1cy91Y2Q5MjAwLmMKQEAgLTE5
-MCwxOCArMTkwLDggQEAgc3RhdGljIHN0cnVjdCBpMmNfZHJpdmVyIHVjZDkyMDBfZHJpdmVyID0g
-ewogCS5pZF90YWJsZSA9IHVjZDkyMDBfaWQsCiB9OwogCi1zdGF0aWMgaW50IF9faW5pdCB1Y2Q5
-MjAwX2luaXQodm9pZCkKLXsKLQlyZXR1cm4gaTJjX2FkZF9kcml2ZXIoJnVjZDkyMDBfZHJpdmVy
-KTsKLX0KLQotc3RhdGljIHZvaWQgX19leGl0IHVjZDkyMDBfZXhpdCh2b2lkKQotewotCWkyY19k
-ZWxfZHJpdmVyKCZ1Y2Q5MjAwX2RyaXZlcik7Ci19Cittb2R1bGVfaTJjX2RyaXZlcih1Y2Q5MjAw
-X2RyaXZlcik7CiAKIE1PRFVMRV9BVVRIT1IoIkd1ZW50ZXIgUm9lY2siKTsKIE1PRFVMRV9ERVND
-UklQVElPTigiUE1CdXMgZHJpdmVyIGZvciBUSSBVQ0Q5MjJ4LCBVQ0Q5MjR4Iik7CiBNT0RVTEVf
-TElDRU5TRSgiR1BMIik7Ci1tb2R1bGVfaW5pdCh1Y2Q5MjAwX2luaXQpOwotbW9kdWxlX2V4aXQo
-dWNkOTIwMF9leGl0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vcG1idXMvemw2MTAwLmMg
-Yi9kcml2ZXJzL2h3bW9uL3BtYnVzL3psNjEwMC5jCmluZGV4IDQ4YzdiNGEuLjBiYjdiYmEgMTAw
-NjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vcG1idXMvemw2MTAwLmMKKysrIGIvZHJpdmVycy9od21v
-bi9wbWJ1cy96bDYxMDAuYwpAQCAtMjY4LDE4ICsyNjgsOCBAQCBzdGF0aWMgc3RydWN0IGkyY19k
-cml2ZXIgemw2MTAwX2RyaXZlciA9IHsKIAkuaWRfdGFibGUgPSB6bDYxMDBfaWQsCiB9OwogCi1z
-dGF0aWMgaW50IF9faW5pdCB6bDYxMDBfaW5pdCh2b2lkKQotewotCXJldHVybiBpMmNfYWRkX2Ry
-aXZlcigmemw2MTAwX2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCB6bDYxMDBfZXhp
-dCh2b2lkKQotewotCWkyY19kZWxfZHJpdmVyKCZ6bDYxMDBfZHJpdmVyKTsKLX0KK21vZHVsZV9p
-MmNfZHJpdmVyKHpsNjEwMF9kcml2ZXIpOwogCiBNT0RVTEVfQVVUSE9SKCJHdWVudGVyIFJvZWNr
-Iik7CiBNT0RVTEVfREVTQ1JJUFRJT04oIlBNQnVzIGRyaXZlciBmb3IgWkw2MTAwIGFuZCBjb21w
-YXRpYmxlcyIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwotbW9kdWxlX2luaXQoemw2MTAwX2lu
-aXQpOwotbW9kdWxlX2V4aXQoemw2MTAwX2V4aXQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21v
-bi9zaHQyMS5jIGIvZHJpdmVycy9od21vbi9zaHQyMS5jCmluZGV4IDE1Mzk4NzguLjZjMmRlZGUg
-MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vc2h0MjEuYworKysgYi9kcml2ZXJzL2h3bW9uL3No
-dDIxLmMKQEAgLTI2MSwyOCArMjYxLDcgQEAgc3RhdGljIHN0cnVjdCBpMmNfZHJpdmVyIHNodDIx
-X2RyaXZlciA9IHsKIAkuaWRfdGFibGUgICAgPSBzaHQyMV9pZCwKIH07CiAKLS8qKgotICogc2h0
-MjFfaW5pdCgpIC0gaW5pdGlhbGl6ZSBkcml2ZXIKLSAqCi0gKiBDYWxsZWQgd2hlbiBrZXJuZWwg
-aXMgYm9vdGVkIG9yIG1vZHVsZSBpcyBpbnNlcnRlZC4KLSAqIFJldHVybnMgMCBvbiBzdWNjZXNz
-LgotICovCi1zdGF0aWMgaW50IF9faW5pdCBzaHQyMV9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGky
-Y19hZGRfZHJpdmVyKCZzaHQyMV9kcml2ZXIpOwotfQotbW9kdWxlX2luaXQoc2h0MjFfaW5pdCk7
-Ci0KLS8qKgotICogc2h0MjFfaW5pdCgpIC0gY2xlYW4gdXAgZHJpdmVyCi0gKgotICogQ2FsbGVk
-IHdoZW4gbW9kdWxlIGlzIHJlbW92ZWQuCi0gKi8KLXN0YXRpYyB2b2lkIF9fZXhpdCBzaHQyMV9l
-eGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2ZXIoJnNodDIxX2RyaXZlcik7Ci19Ci1tb2R1bGVf
-ZXhpdChzaHQyMV9leGl0KTsKK21vZHVsZV9pMmNfZHJpdmVyKHNodDIxX2RyaXZlcik7CiAKIE1P
-RFVMRV9BVVRIT1IoIlVycyBGbGVpc2NoIDx1cnMuZmxlaXNjaEBzZW5zaXJpb24uY29tPiIpOwog
-TU9EVUxFX0RFU0NSSVBUSU9OKCJTZW5zaXJpb24gU0hUMjEgaHVtaWRpdHkgYW5kIHRlbXBlcmF0
-dXJlIHNlbnNvciBkcml2ZXIiKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vc21tNjY1LmMg
-Yi9kcml2ZXJzL2h3bW9uL3NtbTY2NS5jCmluZGV4IDFiNDMwMWYuLjI0MzgyYzcgMTAwNjQ0Ci0t
-LSBhL2RyaXZlcnMvaHdtb24vc21tNjY1LmMKKysrIGIvZHJpdmVycy9od21vbi9zbW02NjUuYwpA
-QCAtNzE4LDE5ICs3MTgsOCBAQCBzdGF0aWMgc3RydWN0IGkyY19kcml2ZXIgc21tNjY1X2RyaXZl
-ciA9IHsKIAkuaWRfdGFibGUgPSBzbW02NjVfaWQsCiB9OwogCi1zdGF0aWMgaW50IF9faW5pdCBz
-bW02NjVfaW5pdCh2b2lkKQotewotCXJldHVybiBpMmNfYWRkX2RyaXZlcigmc21tNjY1X2RyaXZl
-cik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBzbW02NjVfZXhpdCh2b2lkKQotewotCWkyY19k
-ZWxfZHJpdmVyKCZzbW02NjVfZHJpdmVyKTsKLX0KK21vZHVsZV9pMmNfZHJpdmVyKHNtbTY2NV9k
-cml2ZXIpOwogCiBNT0RVTEVfQVVUSE9SKCJHdWVudGVyIFJvZWNrIik7CiBNT0RVTEVfREVTQ1JJ
-UFRJT04oIlNNTTY2NSBkcml2ZXIiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKLQotbW9kdWxl
-X2luaXQoc21tNjY1X2luaXQpOwotbW9kdWxlX2V4aXQoc21tNjY1X2V4aXQpOwpkaWZmIC0tZ2l0
-IGEvZHJpdmVycy9od21vbi9zbXNjNDdtMTkyLmMgYi9kcml2ZXJzL2h3bW9uL3Ntc2M0N20xOTIu
-YwppbmRleCA5NTc2MWJkLi4zMDdlNmE2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2h3bW9uL3Ntc2M0
-N20xOTIuYworKysgYi9kcml2ZXJzL2h3bW9uL3Ntc2M0N20xOTIuYwpAQCAtNjY5LDE5ICs2Njks
-OCBAQCBzdGF0aWMgc3RydWN0IHNtc2M0N20xOTJfZGF0YSAqc21zYzQ3bTE5Ml91cGRhdGVfZGV2
-aWNlKHN0cnVjdCBkZXZpY2UgKmRldikKIAlyZXR1cm4gZGF0YTsKIH0KIAotc3RhdGljIGludCBf
-X2luaXQgc21zYzQ3bTE5Ml9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZz
-bXNjNDdtMTkyX2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBzbXNjNDdtMTkyX2V4
-aXQodm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmc21zYzQ3bTE5Ml9kcml2ZXIpOwotfQorbW9k
-dWxlX2kyY19kcml2ZXIoc21zYzQ3bTE5Ml9kcml2ZXIpOwogCiBNT0RVTEVfQVVUSE9SKCJIYXJ0
-bXV0IFJpY2sgPGxpbnV4QHJpY2suY2xhcmFuZXQuZGU+Iik7CiBNT0RVTEVfREVTQ1JJUFRJT04o
-IlNNU0M0N00xOTIgZHJpdmVyIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7Ci0KLW1vZHVsZV9p
-bml0KHNtc2M0N20xOTJfaW5pdCk7Ci1tb2R1bGVfZXhpdChzbXNjNDdtMTkyX2V4aXQpOwpkaWZm
-IC0tZ2l0IGEvZHJpdmVycy9od21vbi90aG1jNTAuYyBiL2RyaXZlcnMvaHdtb24vdGhtYzUwLmMK
-aW5kZXggYTE5NTkxNC4uNTFkZGIzNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi90aG1jNTAu
-YworKysgYi9kcml2ZXJzL2h3bW9uL3RobWM1MC5jCkBAIC00ODIsMTggKzQ4Miw3IEBAIHN0YXRp
-YyBzdHJ1Y3QgdGhtYzUwX2RhdGEgKnRobWM1MF91cGRhdGVfZGV2aWNlKHN0cnVjdCBkZXZpY2Ug
-KmRldikKIAlyZXR1cm4gZGF0YTsKIH0KIAotc3RhdGljIGludCBfX2luaXQgc21fdGhtYzUwX2lu
-aXQodm9pZCkKLXsKLQlyZXR1cm4gaTJjX2FkZF9kcml2ZXIoJnRobWM1MF9kcml2ZXIpOwotfQot
-Ci1zdGF0aWMgdm9pZCBfX2V4aXQgc21fdGhtYzUwX2V4aXQodm9pZCkKLXsKLQlpMmNfZGVsX2Ry
-aXZlcigmdGhtYzUwX2RyaXZlcik7Ci19Cittb2R1bGVfaTJjX2RyaXZlcih0aG1jNTBfZHJpdmVy
-KTsKIAogTU9EVUxFX0FVVEhPUigiS3J6eXN6dG9mIEhlbHQgPGtyenlzenRvZi5oMUB3cC5wbD4i
-KTsKIE1PRFVMRV9ERVNDUklQVElPTigiVEhNQzUwIGRyaXZlciIpOwotCi1tb2R1bGVfaW5pdChz
-bV90aG1jNTBfaW5pdCk7Ci1tb2R1bGVfZXhpdChzbV90aG1jNTBfZXhpdCk7CmRpZmYgLS1naXQg
-YS9kcml2ZXJzL2h3bW9uL3RtcDEwMi5jIGIvZHJpdmVycy9od21vbi90bXAxMDIuYwppbmRleCBj
-MDhlZWUyLi4wZDQ2NmI5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2h3bW9uL3RtcDEwMi5jCisrKyBi
-L2RyaXZlcnMvaHdtb24vdG1wMTAyLmMKQEAgLTI5MiwxNyArMjkyLDcgQEAgc3RhdGljIHN0cnVj
-dCBpMmNfZHJpdmVyIHRtcDEwMl9kcml2ZXIgPSB7CiAJLmlkX3RhYmxlCT0gdG1wMTAyX2lkLAog
-fTsKIAotc3RhdGljIGludCBfX2luaXQgdG1wMTAyX2luaXQodm9pZCkKLXsKLQlyZXR1cm4gaTJj
-X2FkZF9kcml2ZXIoJnRtcDEwMl9kcml2ZXIpOwotfQotbW9kdWxlX2luaXQodG1wMTAyX2luaXQp
-OwotCi1zdGF0aWMgdm9pZCBfX2V4aXQgdG1wMTAyX2V4aXQodm9pZCkKLXsKLQlpMmNfZGVsX2Ry
-aXZlcigmdG1wMTAyX2RyaXZlcik7Ci19Ci1tb2R1bGVfZXhpdCh0bXAxMDJfZXhpdCk7Cittb2R1
-bGVfaTJjX2RyaXZlcih0bXAxMDJfZHJpdmVyKTsKIAogTU9EVUxFX0FVVEhPUigiU3RldmVuIEtp
-bmcgPHNma2luZ0BmZHdkYy5jb20+Iik7CiBNT0RVTEVfREVTQ1JJUFRJT04oIlRleGFzIEluc3Ry
-dW1lbnRzIFRNUDEwMiB0ZW1wZXJhdHVyZSBzZW5zb3IgZHJpdmVyIik7CmRpZmYgLS1naXQgYS9k
-cml2ZXJzL2h3bW9uL3RtcDQwMS5jIGIvZHJpdmVycy9od21vbi90bXA0MDEuYwppbmRleCA4Yjlh
-Nzc0Li45MmI3ZjFiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2h3bW9uL3RtcDQwMS5jCisrKyBiL2Ry
-aXZlcnMvaHdtb24vdG1wNDAxLmMKQEAgLTY2MiwxOSArNjYyLDggQEAgc3RhdGljIHN0cnVjdCBp
-MmNfZHJpdmVyIHRtcDQwMV9kcml2ZXIgPSB7CiAJLmFkZHJlc3NfbGlzdAk9IG5vcm1hbF9pMmMs
-CiB9OwogCi1zdGF0aWMgaW50IF9faW5pdCB0bXA0MDFfaW5pdCh2b2lkKQotewotCXJldHVybiBp
-MmNfYWRkX2RyaXZlcigmdG1wNDAxX2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCB0
-bXA0MDFfZXhpdCh2b2lkKQotewotCWkyY19kZWxfZHJpdmVyKCZ0bXA0MDFfZHJpdmVyKTsKLX0K
-K21vZHVsZV9pMmNfZHJpdmVyKHRtcDQwMV9kcml2ZXIpOwogCiBNT0RVTEVfQVVUSE9SKCJIYW5z
-IGRlIEdvZWRlIDxoZGVnb2VkZUByZWRoYXQuY29tPiIpOwogTU9EVUxFX0RFU0NSSVBUSU9OKCJU
-ZXhhcyBJbnN0cnVtZW50cyBUTVA0MDEgdGVtcGVyYXR1cmUgc2Vuc29yIGRyaXZlciIpOwogTU9E
-VUxFX0xJQ0VOU0UoIkdQTCIpOwotCi1tb2R1bGVfaW5pdCh0bXA0MDFfaW5pdCk7Ci1tb2R1bGVf
-ZXhpdCh0bXA0MDFfZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL3RtcDQyMS5jIGIv
-ZHJpdmVycy9od21vbi90bXA0MjEuYwppbmRleCBjNDgzODFmLi44ZmFjODdhIDEwMDY0NAotLS0g
-YS9kcml2ZXJzL2h3bW9uL3RtcDQyMS5jCisrKyBiL2RyaXZlcnMvaHdtb24vdG1wNDIxLmMKQEAg
-LTMyNCwyMCArMzI0LDkgQEAgc3RhdGljIHN0cnVjdCBpMmNfZHJpdmVyIHRtcDQyMV9kcml2ZXIg
-PSB7CiAJLmFkZHJlc3NfbGlzdCA9IG5vcm1hbF9pMmMsCiB9OwogCi1zdGF0aWMgaW50IF9faW5p
-dCB0bXA0MjFfaW5pdCh2b2lkKQotewotCXJldHVybiBpMmNfYWRkX2RyaXZlcigmdG1wNDIxX2Ry
-aXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCB0bXA0MjFfZXhpdCh2b2lkKQotewotCWky
-Y19kZWxfZHJpdmVyKCZ0bXA0MjFfZHJpdmVyKTsKLX0KK21vZHVsZV9pMmNfZHJpdmVyKHRtcDQy
-MV9kcml2ZXIpOwogCiBNT0RVTEVfQVVUSE9SKCJBbmRyZSBQcmVuZGVsIDxhbmRyZS5wcmVuZGVs
-QGdteC5kZT4iKTsKIE1PRFVMRV9ERVNDUklQVElPTigiVGV4YXMgSW5zdHJ1bWVudHMgVE1QNDIx
-LzQyMi80MjMgdGVtcGVyYXR1cmUgc2Vuc29yIgogCQkgICAiIGRyaXZlciIpOwogTU9EVUxFX0xJ
-Q0VOU0UoIkdQTCIpOwotCi1tb2R1bGVfaW5pdCh0bXA0MjFfaW5pdCk7Ci1tb2R1bGVfZXhpdCh0
-bXA0MjFfZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL3c4Mzc5MWQuYyBiL2RyaXZl
-cnMvaHdtb24vdzgzNzkxZC5jCmluZGV4IDY3OTE0NmQuLmI5MmYwMWYgMTAwNjQ0Ci0tLSBhL2Ry
-aXZlcnMvaHdtb24vdzgzNzkxZC5jCisrKyBiL2RyaXZlcnMvaHdtb24vdzgzNzkxZC5jCkBAIC0x
-NjY4LDE5ICsxNjY4LDggQEAgc3RhdGljIHZvaWQgdzgzNzkxZF9wcmludF9kZWJ1ZyhzdHJ1Y3Qg
-dzgzNzkxZF9kYXRhICpkYXRhLCBzdHJ1Y3QgZGV2aWNlICpkZXYpCiB9CiAjZW5kaWYKIAotc3Rh
-dGljIGludCBfX2luaXQgc2Vuc29yc193ODM3OTFkX2luaXQodm9pZCkKLXsKLQlyZXR1cm4gaTJj
-X2FkZF9kcml2ZXIoJnc4Mzc5MWRfZHJpdmVyKTsKLX0KLQotc3RhdGljIHZvaWQgX19leGl0IHNl
-bnNvcnNfdzgzNzkxZF9leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2ZXIoJnc4Mzc5MWRfZHJp
-dmVyKTsKLX0KK21vZHVsZV9pMmNfZHJpdmVyKHc4Mzc5MWRfZHJpdmVyKTsKIAogTU9EVUxFX0FV
-VEhPUigiQ2hhcmxlcyBTcGlyYWtpcyA8YmV6YXVyQGdtYWlsLmNvbT4iKTsKIE1PRFVMRV9ERVND
-UklQVElPTigiVzgzNzkxRCBkcml2ZXIiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKLQotbW9k
-dWxlX2luaXQoc2Vuc29yc193ODM3OTFkX2luaXQpOwotbW9kdWxlX2V4aXQoc2Vuc29yc193ODM3
-OTFkX2V4aXQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi93ODM3OTJkLmMgYi9kcml2ZXJz
-L2h3bW9uL3c4Mzc5MmQuYwppbmRleCBlMzU2NjE4Li4xMTc1ZGNmIDEwMDY0NAotLS0gYS9kcml2
-ZXJzL2h3bW9uL3c4Mzc5MmQuYworKysgYi9kcml2ZXJzL2h3bW9uL3c4Mzc5MmQuYwpAQCAtMTcw
-OCwyMiArMTcwOCw4IEBAIHN0YXRpYyB2b2lkIHc4Mzc5MmRfcHJpbnRfZGVidWcoc3RydWN0IHc4
-Mzc5MmRfZGF0YSAqZGF0YSwgc3RydWN0IGRldmljZSAqZGV2KQogfQogI2VuZGlmCiAKLXN0YXRp
-YyBpbnQgX19pbml0Ci1zZW5zb3JzX3c4Mzc5MmRfaW5pdCh2b2lkKQotewotCXJldHVybiBpMmNf
-YWRkX2RyaXZlcigmdzgzNzkyZF9kcml2ZXIpOwotfQotCi1zdGF0aWMgdm9pZCBfX2V4aXQKLXNl
-bnNvcnNfdzgzNzkyZF9leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2ZXIoJnc4Mzc5MmRfZHJp
-dmVyKTsKLX0KK21vZHVsZV9pMmNfZHJpdmVyKHc4Mzc5MmRfZHJpdmVyKTsKIAogTU9EVUxFX0FV
-VEhPUigiQ2h1bmhhbyBIdWFuZyBAIFdpbmJvbmQgPERaU2hlbkBXaW5ib25kLmNvbS50dz4iKTsK
-IE1PRFVMRV9ERVNDUklQVElPTigiVzgzNzkyQUQvRCBkcml2ZXIgZm9yIGxpbnV4LTIuNiIpOwog
-TU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwotCi1tb2R1bGVfaW5pdChzZW5zb3JzX3c4Mzc5MmRfaW5p
-dCk7Ci1tb2R1bGVfZXhpdChzZW5zb3JzX3c4Mzc5MmRfZXhpdCk7Ci0KZGlmZiAtLWdpdCBhL2Ry
-aXZlcnMvaHdtb24vdzgzNzkzLmMgYi9kcml2ZXJzL2h3bW9uL3c4Mzc5My5jCmluZGV4IDU5Mjlk
-NDQuLjQ3Zjk3NWMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vdzgzNzkzLmMKKysrIGIvZHJp
-dmVycy9od21vbi93ODM3OTMuYwpAQCAtMjE2OSwxOSArMjE2OSw4IEBAIEVORDoKIAlyZXR1cm4g
-cmVzOwogfQogCi1zdGF0aWMgaW50IF9faW5pdCBzZW5zb3JzX3c4Mzc5M19pbml0KHZvaWQpCi17
-Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZ3ODM3OTNfZHJpdmVyKTsKLX0KLQotc3RhdGljIHZv
-aWQgX19leGl0IHNlbnNvcnNfdzgzNzkzX2V4aXQodm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigm
-dzgzNzkzX2RyaXZlcik7Ci19Cittb2R1bGVfaTJjX2RyaXZlcih3ODM3OTNfZHJpdmVyKTsKIAog
-TU9EVUxFX0FVVEhPUigiWXVhbiBNdSwgU3ZlbiBBbmRlcnMiKTsKIE1PRFVMRV9ERVNDUklQVElP
-TigidzgzNzkzIGRyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwotCi1tb2R1bGVfaW5p
-dChzZW5zb3JzX3c4Mzc5M19pbml0KTsKLW1vZHVsZV9leGl0KHNlbnNvcnNfdzgzNzkzX2V4aXQp
-OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi93ODM3OTUuYyBiL2RyaXZlcnMvaHdtb24vdzgz
-Nzk1LmMKaW5kZXggYWE1OGIyNS4uZGViMTJjOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi93
-ODM3OTUuYworKysgYi9kcml2ZXJzL2h3bW9uL3c4Mzc5NS5jCkBAIC0yMjQ0LDE5ICsyMjQ0LDgg
-QEAgc3RhdGljIHN0cnVjdCBpMmNfZHJpdmVyIHc4Mzc5NV9kcml2ZXIgPSB7CiAJLmFkZHJlc3Nf
-bGlzdAk9IG5vcm1hbF9pMmMsCiB9OwogCi1zdGF0aWMgaW50IF9faW5pdCBzZW5zb3JzX3c4Mzc5
-NV9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZ3ODM3OTVfZHJpdmVyKTsK
-LX0KLQotc3RhdGljIHZvaWQgX19leGl0IHNlbnNvcnNfdzgzNzk1X2V4aXQodm9pZCkKLXsKLQlp
-MmNfZGVsX2RyaXZlcigmdzgzNzk1X2RyaXZlcik7Ci19Cittb2R1bGVfaTJjX2RyaXZlcih3ODM3
-OTVfZHJpdmVyKTsKIAogTU9EVUxFX0FVVEhPUigiV2VpIFNvbmcsIEplYW4gRGVsdmFyZSA8a2hh
-bGlAbGludXgtZnIub3JnPiIpOwogTU9EVUxFX0RFU0NSSVBUSU9OKCJXODM3OTVHL0FERyBoYXJk
-d2FyZSBtb25pdG9yaW5nIGRyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwotCi1tb2R1
-bGVfaW5pdChzZW5zb3JzX3c4Mzc5NV9pbml0KTsKLW1vZHVsZV9leGl0KHNlbnNvcnNfdzgzNzk1
-X2V4aXQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi93ODNsNzg1dHMuYyBiL2RyaXZlcnMv
-aHdtb24vdzgzbDc4NXRzLmMKaW5kZXggZWRmYzFlYy4uYmMwNzE0NCAxMDA2NDQKLS0tIGEvZHJp
-dmVycy9od21vbi93ODNsNzg1dHMuYworKysgYi9kcml2ZXJzL2h3bW9uL3c4M2w3ODV0cy5jCkBA
-IC0zMDIsMTkgKzMwMiw4IEBAIHN0YXRpYyBzdHJ1Y3QgdzgzbDc4NXRzX2RhdGEgKnc4M2w3ODV0
-c191cGRhdGVfZGV2aWNlKHN0cnVjdCBkZXZpY2UgKmRldikKIAlyZXR1cm4gZGF0YTsKIH0KIAot
-c3RhdGljIGludCBfX2luaXQgc2Vuc29yc193ODNsNzg1dHNfaW5pdCh2b2lkKQotewotCXJldHVy
-biBpMmNfYWRkX2RyaXZlcigmdzgzbDc4NXRzX2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9f
-ZXhpdCBzZW5zb3JzX3c4M2w3ODV0c19leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2ZXIoJnc4
-M2w3ODV0c19kcml2ZXIpOwotfQorbW9kdWxlX2kyY19kcml2ZXIodzgzbDc4NXRzX2RyaXZlcik7
-CiAKIE1PRFVMRV9BVVRIT1IoIkplYW4gRGVsdmFyZSA8a2hhbGlAbGludXgtZnIub3JnPiIpOwog
-TU9EVUxFX0RFU0NSSVBUSU9OKCJXODNMNzg1VFMtUyBkcml2ZXIiKTsKIE1PRFVMRV9MSUNFTlNF
-KCJHUEwiKTsKLQotbW9kdWxlX2luaXQoc2Vuc29yc193ODNsNzg1dHNfaW5pdCk7Ci1tb2R1bGVf
-ZXhpdChzZW5zb3JzX3c4M2w3ODV0c19leGl0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24v
-dzgzbDc4Nm5nLmMgYi9kcml2ZXJzL2h3bW9uL3c4M2w3ODZuZy5jCmluZGV4IDZlYWM1ZDkuLmE2
-MzEwYjggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vdzgzbDc4Nm5nLmMKKysrIGIvZHJpdmVy
-cy9od21vbi93ODNsNzg2bmcuYwpAQCAtODA2LDIxICs4MDYsOCBAQCBzdGF0aWMgc3RydWN0IHc4
-M2w3ODZuZ19kYXRhICp3ODNsNzg2bmdfdXBkYXRlX2RldmljZShzdHJ1Y3QgZGV2aWNlICpkZXYp
-CiAJcmV0dXJuIGRhdGE7CiB9CiAKLXN0YXRpYyBpbnQgX19pbml0Ci1zZW5zb3JzX3c4M2w3ODZu
-Z19pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZ3ODNsNzg2bmdfZHJpdmVy
-KTsKLX0KLQotc3RhdGljIHZvaWQgX19leGl0Ci1zZW5zb3JzX3c4M2w3ODZuZ19leGl0KHZvaWQp
-Ci17Ci0JaTJjX2RlbF9kcml2ZXIoJnc4M2w3ODZuZ19kcml2ZXIpOwotfQorbW9kdWxlX2kyY19k
-cml2ZXIodzgzbDc4Nm5nX2RyaXZlcik7CiAKIE1PRFVMRV9BVVRIT1IoIktldmluIExvIik7CiBN
-T0RVTEVfREVTQ1JJUFRJT04oInc4M2w3ODZuZyBkcml2ZXIiKTsKIE1PRFVMRV9MSUNFTlNFKCJH
-UEwiKTsKLQotbW9kdWxlX2luaXQoc2Vuc29yc193ODNsNzg2bmdfaW5pdCk7Ci1tb2R1bGVfZXhp
-dChzZW5zb3JzX3c4M2w3ODZuZ19leGl0KTsKLS0gCjEuNy41LjQKCgoKCl9fX19fX19fX19fX19f
-X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxtLXNlbnNvcnMgbWFpbGluZyBsaXN0
-CmxtLXNlbnNvcnNAbG0tc2Vuc29ycy5vcmcKaHR0cDovL2xpc3RzLmxtLXNlbnNvcnMub3JnL21h
-aWxtYW4vbGlzdGluZm8vbG0tc2Vuc29ycw=
+This patch converts the drivers in drivers/hwmon/* to use the
+module_i2c_driver() macro which makes the code smaller and a bit simpler.
+
+Signed-off-by: Axel Lin <axel.lin@gmail.com>
+Cc: Corentin Labbe <corentin.labbe@geomatys.fr>
+Cc: Dirk Eibach <eibach@gdsys.de>
+Cc: "Mark M. Hoffman" <mhoffman@lightlink.com>
+Cc: Steve Glendinning <steve.glendinning@smsc.com>
+Cc: Riku Voipio <riku.voipio@iki.fi>
+Cc: Guillaume Ligneul <guillaume.ligneul@gmail.com>
+Cc: David George <david.george@ska.ac.za>
+Cc: "Hans J. Koch" <hjk@hansjkoch.de>
+Cc: Marc Hulsman <m.hulsman@tudelft.nl>
+Cc: Rudolf Marek <r.marek@assembler.cz>
+---
+ drivers/hwmon/ad7414.c         |   12 +-----------
+ drivers/hwmon/ad7418.c         |   13 +------------
+ drivers/hwmon/adm1021.c        |   13 +------------
+ drivers/hwmon/adm1025.c        |   13 +------------
+ drivers/hwmon/adm1026.c        |   13 +------------
+ drivers/hwmon/adm1029.c        |   18 +-----------------
+ drivers/hwmon/adm1031.c        |   13 +------------
+ drivers/hwmon/adm9240.c        |   14 +-------------
+ drivers/hwmon/ads1015.c        |   13 +------------
+ drivers/hwmon/adt7411.c        |   12 +-----------
+ drivers/hwmon/adt7462.c        |   13 +------------
+ drivers/hwmon/adt7470.c        |   13 +------------
+ drivers/hwmon/adt7475.c        |   13 +------------
+ drivers/hwmon/amc6821.c        |   15 +--------------
+ drivers/hwmon/asb100.c         |   13 +------------
+ drivers/hwmon/atxp1.c          |   13 +------------
+ drivers/hwmon/ds1621.c         |   14 +-------------
+ drivers/hwmon/ds620.c          |   13 +------------
+ drivers/hwmon/emc1403.c        |   13 +------------
+ drivers/hwmon/emc2103.c        |   13 +------------
+ drivers/hwmon/emc6w201.c       |   12 +-----------
+ drivers/hwmon/f75375s.c        |   13 +------------
+ drivers/hwmon/fschmd.c         |   13 +------------
+ drivers/hwmon/g760a.c          |   15 +--------------
+ drivers/hwmon/gl518sm.c        |   13 +------------
+ drivers/hwmon/gl520sm.c        |   15 +--------------
+ drivers/hwmon/jc42.c           |   13 +------------
+ drivers/hwmon/lineage-pem.c    |   13 +------------
+ drivers/hwmon/lm63.c           |   13 +------------
+ drivers/hwmon/lm73.c           |   15 +--------------
+ drivers/hwmon/lm75.c           |   17 +----------------
+ drivers/hwmon/lm77.c           |   13 +------------
+ drivers/hwmon/lm80.c           |   13 +------------
+ drivers/hwmon/lm83.c           |   13 +------------
+ drivers/hwmon/lm85.c           |   14 +-------------
+ drivers/hwmon/lm87.c           |   13 +------------
+ drivers/hwmon/lm90.c           |   13 +------------
+ drivers/hwmon/lm92.c           |   13 +------------
+ drivers/hwmon/lm93.c           |   13 +------------
+ drivers/hwmon/lm95241.c        |   13 +------------
+ drivers/hwmon/lm95245.c        |   13 +------------
+ drivers/hwmon/ltc4151.c        |   13 +------------
+ drivers/hwmon/ltc4215.c        |   13 +------------
+ drivers/hwmon/ltc4245.c        |   13 +------------
+ drivers/hwmon/ltc4261.c        |   13 +------------
+ drivers/hwmon/max16065.c       |   13 +------------
+ drivers/hwmon/max1619.c        |   13 +------------
+ drivers/hwmon/max1668.c        |   13 +------------
+ drivers/hwmon/max6639.c        |   13 +------------
+ drivers/hwmon/max6642.c        |   13 +------------
+ drivers/hwmon/max6650.c        |   13 +------------
+ drivers/hwmon/pmbus/adm1275.c  |   12 +-----------
+ drivers/hwmon/pmbus/lm25066.c  |   12 +-----------
+ drivers/hwmon/pmbus/ltc2978.c  |   12 +-----------
+ drivers/hwmon/pmbus/max16064.c |   12 +-----------
+ drivers/hwmon/pmbus/max34440.c |   12 +-----------
+ drivers/hwmon/pmbus/max8688.c  |   12 +-----------
+ drivers/hwmon/pmbus/pmbus.c    |   12 +-----------
+ drivers/hwmon/pmbus/ucd9000.c  |   12 +-----------
+ drivers/hwmon/pmbus/ucd9200.c  |   12 +-----------
+ drivers/hwmon/pmbus/zl6100.c   |   12 +-----------
+ drivers/hwmon/sht21.c          |   23 +----------------------
+ drivers/hwmon/smm665.c         |   13 +------------
+ drivers/hwmon/smsc47m192.c     |   13 +------------
+ drivers/hwmon/thmc50.c         |   13 +------------
+ drivers/hwmon/tmp102.c         |   12 +-----------
+ drivers/hwmon/tmp401.c         |   13 +------------
+ drivers/hwmon/tmp421.c         |   13 +------------
+ drivers/hwmon/w83791d.c        |   13 +------------
+ drivers/hwmon/w83792d.c        |   16 +---------------
+ drivers/hwmon/w83793.c         |   13 +------------
+ drivers/hwmon/w83795.c         |   13 +------------
+ drivers/hwmon/w83l785ts.c      |   13 +------------
+ drivers/hwmon/w83l786ng.c      |   15 +--------------
+ 74 files changed, 74 insertions(+), 909 deletions(-)
+
+diff --git a/drivers/hwmon/ad7414.c b/drivers/hwmon/ad7414.c
+index edbdb6d..3646500 100644
+--- a/drivers/hwmon/ad7414.c
++++ b/drivers/hwmon/ad7414.c
+@@ -256,17 +256,7 @@ static struct i2c_driver ad7414_driver = {
+ 	.id_table = ad7414_id,
+ };
+ 
+-static int __init ad7414_init(void)
+-{
+-	return i2c_add_driver(&ad7414_driver);
+-}
+-module_init(ad7414_init);
+-
+-static void __exit ad7414_exit(void)
+-{
+-	i2c_del_driver(&ad7414_driver);
+-}
+-module_exit(ad7414_exit);
++module_i2c_driver(ad7414_driver);
+ 
+ MODULE_AUTHOR("Stefan Roese <sr at denx.de>, "
+ 	      "Frank Edelhaeuser <frank.edelhaeuser at spansion.com>");
+diff --git a/drivers/hwmon/ad7418.c b/drivers/hwmon/ad7418.c
+index 42461d1..a50a6be 100644
+--- a/drivers/hwmon/ad7418.c
++++ b/drivers/hwmon/ad7418.c
+@@ -295,20 +295,9 @@ static int ad7418_remove(struct i2c_client *client)
+ 	return 0;
+ }
+ 
+-static int __init ad7418_init(void)
+-{
+-	return i2c_add_driver(&ad7418_driver);
+-}
+-
+-static void __exit ad7418_exit(void)
+-{
+-	i2c_del_driver(&ad7418_driver);
+-}
++module_i2c_driver(ad7418_driver);
+ 
+ MODULE_AUTHOR("Alessandro Zummo <a.zummo@towertech.it>");
+ MODULE_DESCRIPTION("AD7416/17/18 driver");
+ MODULE_LICENSE("GPL");
+ MODULE_VERSION(DRV_VERSION);
+-
+-module_init(ad7418_init);
+-module_exit(ad7418_exit);
+diff --git a/drivers/hwmon/adm1021.c b/drivers/hwmon/adm1021.c
+index e6fc006..ec84331 100644
+--- a/drivers/hwmon/adm1021.c
++++ b/drivers/hwmon/adm1021.c
+@@ -471,15 +471,7 @@ static struct adm1021_data *adm1021_update_device(struct device *dev)
+ 	return data;
+ }
+ 
+-static int __init sensors_adm1021_init(void)
+-{
+-	return i2c_add_driver(&adm1021_driver);
+-}
+-
+-static void __exit sensors_adm1021_exit(void)
+-{
+-	i2c_del_driver(&adm1021_driver);
+-}
++module_i2c_driver(adm1021_driver);
+ 
+ MODULE_AUTHOR("Frodo Looijaard <frodol@dds.nl> and "
+ 		"Philip Edelbrock <phil@netroedge.com>");
+@@ -488,6 +480,3 @@ MODULE_LICENSE("GPL");
+ 
+ module_param(read_only, bool, 0);
+ MODULE_PARM_DESC(read_only, "Don't set any values, read only mode");
+-
+-module_init(sensors_adm1021_init)
+-module_exit(sensors_adm1021_exit)
+diff --git a/drivers/hwmon/adm1025.c b/drivers/hwmon/adm1025.c
+index 14d8997..efbc9c9 100644
+--- a/drivers/hwmon/adm1025.c
++++ b/drivers/hwmon/adm1025.c
+@@ -618,19 +618,8 @@ static struct adm1025_data *adm1025_update_device(struct device *dev)
+ 	return data;
+ }
+ 
+-static int __init sensors_adm1025_init(void)
+-{
+-	return i2c_add_driver(&adm1025_driver);
+-}
+-
+-static void __exit sensors_adm1025_exit(void)
+-{
+-	i2c_del_driver(&adm1025_driver);
+-}
++module_i2c_driver(adm1025_driver);
+ 
+ MODULE_AUTHOR("Jean Delvare <khali@linux-fr.org>");
+ MODULE_DESCRIPTION("ADM1025 driver");
+ MODULE_LICENSE("GPL");
+-
+-module_init(sensors_adm1025_init);
+-module_exit(sensors_adm1025_exit);
+diff --git a/drivers/hwmon/adm1026.c b/drivers/hwmon/adm1026.c
+index cd773ce..1f4f5de 100644
+--- a/drivers/hwmon/adm1026.c
++++ b/drivers/hwmon/adm1026.c
+@@ -1881,20 +1881,9 @@ static int adm1026_remove(struct i2c_client *client)
+ 	return 0;
+ }
+ 
+-static int __init sm_adm1026_init(void)
+-{
+-	return i2c_add_driver(&adm1026_driver);
+-}
+-
+-static void __exit sm_adm1026_exit(void)
+-{
+-	i2c_del_driver(&adm1026_driver);
+-}
++module_i2c_driver(adm1026_driver);
+ 
+ MODULE_LICENSE("GPL");
+ MODULE_AUTHOR("Philip Pokorny <ppokorny@penguincomputing.com>, "
+ 	      "Justin Thiessen <jthiessen@penguincomputing.com>");
+ MODULE_DESCRIPTION("ADM1026 driver");
+-
+-module_init(sm_adm1026_init);
+-module_exit(sm_adm1026_exit);
+diff --git a/drivers/hwmon/adm1029.c b/drivers/hwmon/adm1029.c
+index d789c33..c6531a8 100644
+--- a/drivers/hwmon/adm1029.c
++++ b/drivers/hwmon/adm1029.c
+@@ -450,24 +450,8 @@ static struct adm1029_data *adm1029_update_device(struct device *dev)
+ 	return data;
+ }
+ 
+-/*
+-	Common module stuff
+-*/
+-static int __init sensors_adm1029_init(void)
+-{
+-
+-	return i2c_add_driver(&adm1029_driver);
+-}
+-
+-static void __exit sensors_adm1029_exit(void)
+-{
+-
+-	i2c_del_driver(&adm1029_driver);
+-}
++module_i2c_driver(adm1029_driver);
+ 
+ MODULE_AUTHOR("Corentin LABBE <corentin.labbe@geomatys.fr>");
+ MODULE_DESCRIPTION("adm1029 driver");
+ MODULE_LICENSE("GPL v2");
+-
+-module_init(sensors_adm1029_init);
+-module_exit(sensors_adm1029_exit);
+diff --git a/drivers/hwmon/adm1031.c b/drivers/hwmon/adm1031.c
+index 97e2cfb..71b5ec3 100644
+--- a/drivers/hwmon/adm1031.c
++++ b/drivers/hwmon/adm1031.c
+@@ -1131,19 +1131,8 @@ static struct adm1031_data *adm1031_update_device(struct device *dev)
+ 	return data;
+ }
+ 
+-static int __init sensors_adm1031_init(void)
+-{
+-	return i2c_add_driver(&adm1031_driver);
+-}
+-
+-static void __exit sensors_adm1031_exit(void)
+-{
+-	i2c_del_driver(&adm1031_driver);
+-}
++module_i2c_driver(adm1031_driver);
+ 
+ MODULE_AUTHOR("Alexandre d'Alton <alex@alexdalton.org>");
+ MODULE_DESCRIPTION("ADM1031/ADM1030 driver");
+ MODULE_LICENSE("GPL");
+-
+-module_init(sensors_adm1031_init);
+-module_exit(sensors_adm1031_exit);
+diff --git a/drivers/hwmon/adm9240.c b/drivers/hwmon/adm9240.c
+index 2de4511..340b842 100644
+--- a/drivers/hwmon/adm9240.c
++++ b/drivers/hwmon/adm9240.c
+@@ -821,21 +821,9 @@ static struct adm9240_data *adm9240_update_device(struct device *dev)
+ 	return data;
+ }
+ 
+-static int __init sensors_adm9240_init(void)
+-{
+-	return i2c_add_driver(&adm9240_driver);
+-}
+-
+-static void __exit sensors_adm9240_exit(void)
+-{
+-	i2c_del_driver(&adm9240_driver);
+-}
++module_i2c_driver(adm9240_driver);
+ 
+ MODULE_AUTHOR("Michiel Rook <michiel@grendelproject.nl>, "
+ 		"Grant Coady <gcoady.lk@gmail.com> and others");
+ MODULE_DESCRIPTION("ADM9240/DS1780/LM81 driver");
+ MODULE_LICENSE("GPL");
+-
+-module_init(sensors_adm9240_init);
+-module_exit(sensors_adm9240_exit);
+-
+diff --git a/drivers/hwmon/ads1015.c b/drivers/hwmon/ads1015.c
+index eedca3c..60be358 100644
+--- a/drivers/hwmon/ads1015.c
++++ b/drivers/hwmon/ads1015.c
+@@ -306,19 +306,8 @@ static struct i2c_driver ads1015_driver = {
+ 	.id_table = ads1015_id,
+ };
+ 
+-static int __init sensors_ads1015_init(void)
+-{
+-	return i2c_add_driver(&ads1015_driver);
+-}
+-
+-static void __exit sensors_ads1015_exit(void)
+-{
+-	i2c_del_driver(&ads1015_driver);
+-}
++module_i2c_driver(ads1015_driver);
+ 
+ MODULE_AUTHOR("Dirk Eibach <eibach@gdsys.de>");
+ MODULE_DESCRIPTION("ADS1015 driver");
+ MODULE_LICENSE("GPL");
+-
+-module_init(sensors_ads1015_init);
+-module_exit(sensors_ads1015_exit);
+diff --git a/drivers/hwmon/adt7411.c b/drivers/hwmon/adt7411.c
+index ffe64f8..71bacc5 100644
+--- a/drivers/hwmon/adt7411.c
++++ b/drivers/hwmon/adt7411.c
+@@ -348,17 +348,7 @@ static struct i2c_driver adt7411_driver = {
+ 	.class = I2C_CLASS_HWMON,
+ };
+ 
+-static int __init sensors_adt7411_init(void)
+-{
+-	return i2c_add_driver(&adt7411_driver);
+-}
+-module_init(sensors_adt7411_init)
+-
+-static void __exit sensors_adt7411_exit(void)
+-{
+-	i2c_del_driver(&adt7411_driver);
+-}
+-module_exit(sensors_adt7411_exit)
++module_i2c_driver(adt7411_driver);
+ 
+ MODULE_AUTHOR("Sascha Hauer <s.hauer@pengutronix.de> and "
+ 	"Wolfram Sang <w.sang@pengutronix.de>");
+diff --git a/drivers/hwmon/adt7462.c b/drivers/hwmon/adt7462.c
+index 3df331a..e4b1cc9 100644
+--- a/drivers/hwmon/adt7462.c
++++ b/drivers/hwmon/adt7462.c
+@@ -1974,19 +1974,8 @@ static int adt7462_remove(struct i2c_client *client)
+ 	return 0;
+ }
+ 
+-static int __init adt7462_init(void)
+-{
+-	return i2c_add_driver(&adt7462_driver);
+-}
+-
+-static void __exit adt7462_exit(void)
+-{
+-	i2c_del_driver(&adt7462_driver);
+-}
++module_i2c_driver(adt7462_driver);
+ 
+ MODULE_AUTHOR("Darrick J. Wong <djwong@us.ibm.com>");
+ MODULE_DESCRIPTION("ADT7462 driver");
+ MODULE_LICENSE("GPL");
+-
+-module_init(adt7462_init);
+-module_exit(adt7462_exit);
+diff --git a/drivers/hwmon/adt7470.c b/drivers/hwmon/adt7470.c
+index b23efd9..54ec890 100644
+--- a/drivers/hwmon/adt7470.c
++++ b/drivers/hwmon/adt7470.c
+@@ -1317,19 +1317,8 @@ static int adt7470_remove(struct i2c_client *client)
+ 	return 0;
+ }
+ 
+-static int __init adt7470_init(void)
+-{
+-	return i2c_add_driver(&adt7470_driver);
+-}
+-
+-static void __exit adt7470_exit(void)
+-{
+-	i2c_del_driver(&adt7470_driver);
+-}
++module_i2c_driver(adt7470_driver);
+ 
+ MODULE_AUTHOR("Darrick J. Wong <djwong@us.ibm.com>");
+ MODULE_DESCRIPTION("ADT7470 driver");
+ MODULE_LICENSE("GPL");
+-
+-module_init(adt7470_init);
+-module_exit(adt7470_exit);
+diff --git a/drivers/hwmon/adt7475.c b/drivers/hwmon/adt7475.c
+index 71e9ac4..522cb76 100644
+--- a/drivers/hwmon/adt7475.c
++++ b/drivers/hwmon/adt7475.c
+@@ -1600,19 +1600,8 @@ static struct adt7475_data *adt7475_update_device(struct device *dev)
+ 	return data;
+ }
+ 
+-static int __init sensors_adt7475_init(void)
+-{
+-	return i2c_add_driver(&adt7475_driver);
+-}
+-
+-static void __exit sensors_adt7475_exit(void)
+-{
+-	i2c_del_driver(&adt7475_driver);
+-}
++module_i2c_driver(adt7475_driver);
+ 
+ MODULE_AUTHOR("Advanced Micro Devices, Inc");
+ MODULE_DESCRIPTION("adt7475 driver");
+ MODULE_LICENSE("GPL");
+-
+-module_init(sensors_adt7475_init);
+-module_exit(sensors_adt7475_exit);
+diff --git a/drivers/hwmon/amc6821.c b/drivers/hwmon/amc6821.c
+index 4a4bfef..5298855 100644
+--- a/drivers/hwmon/amc6821.c
++++ b/drivers/hwmon/amc6821.c
+@@ -1095,20 +1095,7 @@ static struct amc6821_data *amc6821_update_device(struct device *dev)
+ 	return data;
+ }
+ 
+-
+-static int __init amc6821_init(void)
+-{
+-	return i2c_add_driver(&amc6821_driver);
+-}
+-
+-static void __exit amc6821_exit(void)
+-{
+-	i2c_del_driver(&amc6821_driver);
+-}
+-
+-module_init(amc6821_init);
+-module_exit(amc6821_exit);
+-
++module_i2c_driver(amc6821_driver);
+ 
+ MODULE_LICENSE("GPL");
+ MODULE_AUTHOR("T. Mertelj <tomaz.mertelj@guest.arnes.si>");
+diff --git a/drivers/hwmon/asb100.c b/drivers/hwmon/asb100.c
+index a5f1642..573fff5 100644
+--- a/drivers/hwmon/asb100.c
++++ b/drivers/hwmon/asb100.c
+@@ -1002,19 +1002,8 @@ static struct asb100_data *asb100_update_device(struct device *dev)
+ 	return data;
+ }
+ 
+-static int __init asb100_init(void)
+-{
+-	return i2c_add_driver(&asb100_driver);
+-}
+-
+-static void __exit asb100_exit(void)
+-{
+-	i2c_del_driver(&asb100_driver);
+-}
++module_i2c_driver(asb100_driver);
+ 
+ MODULE_AUTHOR("Mark M. Hoffman <mhoffman@lightlink.com>");
+ MODULE_DESCRIPTION("ASB100 Bach driver");
+ MODULE_LICENSE("GPL");
+-
+-module_init(asb100_init);
+-module_exit(asb100_exit);
+diff --git a/drivers/hwmon/atxp1.c b/drivers/hwmon/atxp1.c
+index d4a589b..5a671ca 100644
+--- a/drivers/hwmon/atxp1.c
++++ b/drivers/hwmon/atxp1.c
+@@ -390,15 +390,4 @@ static int atxp1_remove(struct i2c_client *client)
+ 	return 0;
+ };
+ 
+-static int __init atxp1_init(void)
+-{
+-	return i2c_add_driver(&atxp1_driver);
+-};
+-
+-static void __exit atxp1_exit(void)
+-{
+-	i2c_del_driver(&atxp1_driver);
+-};
+-
+-module_init(atxp1_init);
+-module_exit(atxp1_exit);
++module_i2c_driver(atxp1_driver);
+diff --git a/drivers/hwmon/ds1621.c b/drivers/hwmon/ds1621.c
+index e23a8ab..5dc5489 100644
+--- a/drivers/hwmon/ds1621.c
++++ b/drivers/hwmon/ds1621.c
+@@ -311,20 +311,8 @@ static struct i2c_driver ds1621_driver = {
+ 	.address_list	= normal_i2c,
+ };
+ 
+-static int __init ds1621_init(void)
+-{
+-	return i2c_add_driver(&ds1621_driver);
+-}
+-
+-static void __exit ds1621_exit(void)
+-{
+-	i2c_del_driver(&ds1621_driver);
+-}
+-
++module_i2c_driver(ds1621_driver);
+ 
+ MODULE_AUTHOR("Christian W. Zuckschwerdt <zany@triq.net>");
+ MODULE_DESCRIPTION("DS1621 driver");
+ MODULE_LICENSE("GPL");
+-
+-module_init(ds1621_init);
+-module_exit(ds1621_exit);
+diff --git a/drivers/hwmon/ds620.c b/drivers/hwmon/ds620.c
+index 300c3d4..50663ef 100644
+--- a/drivers/hwmon/ds620.c
++++ b/drivers/hwmon/ds620.c
+@@ -297,19 +297,8 @@ static struct i2c_driver ds620_driver = {
+ 	.id_table = ds620_id,
+ };
+ 
+-static int __init ds620_init(void)
+-{
+-	return i2c_add_driver(&ds620_driver);
+-}
+-
+-static void __exit ds620_exit(void)
+-{
+-	i2c_del_driver(&ds620_driver);
+-}
++module_i2c_driver(ds620_driver);
+ 
+ MODULE_AUTHOR("Roland Stigge <stigge@antcom.de>");
+ MODULE_DESCRIPTION("DS620 driver");
+ MODULE_LICENSE("GPL");
+-
+-module_init(ds620_init);
+-module_exit(ds620_exit);
+diff --git a/drivers/hwmon/emc1403.c b/drivers/hwmon/emc1403.c
+index 270ffab..99ac141 100644
+--- a/drivers/hwmon/emc1403.c
++++ b/drivers/hwmon/emc1403.c
+@@ -366,18 +366,7 @@ static struct i2c_driver sensor_emc1403 = {
+ 	.address_list = emc1403_address_list,
+ };
+ 
+-static int __init sensor_emc1403_init(void)
+-{
+-	return i2c_add_driver(&sensor_emc1403);
+-}
+-
+-static void  __exit sensor_emc1403_exit(void)
+-{
+-	i2c_del_driver(&sensor_emc1403);
+-}
+-
+-module_init(sensor_emc1403_init);
+-module_exit(sensor_emc1403_exit);
++module_i2c_driver(sensor_emc1403);
+ 
+ MODULE_AUTHOR("Kalhan Trisal <kalhan.trisal@intel.com");
+ MODULE_DESCRIPTION("emc1403 Thermal Driver");
+diff --git a/drivers/hwmon/emc2103.c b/drivers/hwmon/emc2103.c
+index 8650639..0f51382 100644
+--- a/drivers/hwmon/emc2103.c
++++ b/drivers/hwmon/emc2103.c
+@@ -722,19 +722,8 @@ static struct i2c_driver emc2103_driver = {
+ 	.address_list	= normal_i2c,
+ };
+ 
+-static int __init sensors_emc2103_init(void)
+-{
+-	return i2c_add_driver(&emc2103_driver);
+-}
+-
+-static void __exit sensors_emc2103_exit(void)
+-{
+-	i2c_del_driver(&emc2103_driver);
+-}
++module_i2c_driver(emc2103_driver);
+ 
+ MODULE_AUTHOR("Steve Glendinning <steve.glendinning@smsc.com>");
+ MODULE_DESCRIPTION("SMSC EMC2103 hwmon driver");
+ MODULE_LICENSE("GPL");
+-
+-module_init(sensors_emc2103_init);
+-module_exit(sensors_emc2103_exit);
+diff --git a/drivers/hwmon/emc6w201.c b/drivers/hwmon/emc6w201.c
+index 6ebb9b7..840f511 100644
+--- a/drivers/hwmon/emc6w201.c
++++ b/drivers/hwmon/emc6w201.c
+@@ -552,17 +552,7 @@ static struct i2c_driver emc6w201_driver = {
+ 	.address_list	= normal_i2c,
+ };
+ 
+-static int __init sensors_emc6w201_init(void)
+-{
+-	return i2c_add_driver(&emc6w201_driver);
+-}
+-module_init(sensors_emc6w201_init);
+-
+-static void __exit sensors_emc6w201_exit(void)
+-{
+-	i2c_del_driver(&emc6w201_driver);
+-}
+-module_exit(sensors_emc6w201_exit);
++module_i2c_driver(emc6w201_driver);
+ 
+ MODULE_AUTHOR("Jean Delvare <khali@linux-fr.org>");
+ MODULE_DESCRIPTION("SMSC EMC6W201 hardware monitoring driver");
+diff --git a/drivers/hwmon/f75375s.c b/drivers/hwmon/f75375s.c
+index eedf574..398dbc8 100644
+--- a/drivers/hwmon/f75375s.c
++++ b/drivers/hwmon/f75375s.c
+@@ -858,19 +858,8 @@ static int f75375_detect(struct i2c_client *client,
+ 	return 0;
+ }
+ 
+-static int __init sensors_f75375_init(void)
+-{
+-	return i2c_add_driver(&f75375_driver);
+-}
+-
+-static void __exit sensors_f75375_exit(void)
+-{
+-	i2c_del_driver(&f75375_driver);
+-}
++module_i2c_driver(f75375_driver);
+ 
+ MODULE_AUTHOR("Riku Voipio");
+ MODULE_LICENSE("GPL");
+ MODULE_DESCRIPTION("F75373/F75375/F75387 hardware monitoring driver");
+-
+-module_init(sensors_f75375_init);
+-module_exit(sensors_f75375_exit);
+diff --git a/drivers/hwmon/fschmd.c b/drivers/hwmon/fschmd.c
+index 06cbf77..35ddf6d 100644
+--- a/drivers/hwmon/fschmd.c
++++ b/drivers/hwmon/fschmd.c
+@@ -1341,20 +1341,9 @@ static struct fschmd_data *fschmd_update_device(struct device *dev)
+ 	return data;
+ }
+ 
+-static int __init fschmd_init(void)
+-{
+-	return i2c_add_driver(&fschmd_driver);
+-}
+-
+-static void __exit fschmd_exit(void)
+-{
+-	i2c_del_driver(&fschmd_driver);
+-}
++module_i2c_driver(fschmd_driver);
+ 
+ MODULE_AUTHOR("Hans de Goede <hdegoede@redhat.com>");
+ MODULE_DESCRIPTION("FSC Poseidon, Hermes, Scylla, Heracles, Heimdall, Hades "
+ 			"and Syleus driver");
+ MODULE_LICENSE("GPL");
+-
+-module_init(fschmd_init);
+-module_exit(fschmd_exit);
+diff --git a/drivers/hwmon/g760a.c b/drivers/hwmon/g760a.c
+index 81b6e35..052e304 100644
+--- a/drivers/hwmon/g760a.c
++++ b/drivers/hwmon/g760a.c
+@@ -250,21 +250,8 @@ static int g760a_remove(struct i2c_client *client)
+ 	return 0;
+ }
+ 
+-/* module management */
+-
+-static int __init g760a_init(void)
+-{
+-	return i2c_add_driver(&g760a_driver);
+-}
+-
+-static void __exit g760a_exit(void)
+-{
+-	i2c_del_driver(&g760a_driver);
+-}
++module_i2c_driver(g760a_driver);
+ 
+ MODULE_AUTHOR("Herbert Valerio Riedel <hvr@gnu.org>");
+ MODULE_DESCRIPTION("GMT G760A driver");
+ MODULE_LICENSE("GPL");
+-
+-module_init(g760a_init);
+-module_exit(g760a_exit);
+diff --git a/drivers/hwmon/gl518sm.c b/drivers/hwmon/gl518sm.c
+index 8d0f71d..ae193f0 100644
+--- a/drivers/hwmon/gl518sm.c
++++ b/drivers/hwmon/gl518sm.c
+@@ -710,21 +710,10 @@ static struct gl518_data *gl518_update_device(struct device *dev)
+ 	return data;
+ }
+ 
+-static int __init sensors_gl518sm_init(void)
+-{
+-	return i2c_add_driver(&gl518_driver);
+-}
+-
+-static void __exit sensors_gl518sm_exit(void)
+-{
+-	i2c_del_driver(&gl518_driver);
+-}
++module_i2c_driver(gl518_driver);
+ 
+ MODULE_AUTHOR("Frodo Looijaard <frodol@dds.nl>, "
+ 	"Kyosti Malkki <kmalkki@cc.hut.fi> and "
+ 	"Hong-Gunn Chew <hglinux@gunnet.org>");
+ MODULE_DESCRIPTION("GL518SM driver");
+ MODULE_LICENSE("GPL");
+-
+-module_init(sensors_gl518sm_init);
+-module_exit(sensors_gl518sm_exit);
+diff --git a/drivers/hwmon/gl520sm.c b/drivers/hwmon/gl520sm.c
+index 1909097..52dadb2 100644
+--- a/drivers/hwmon/gl520sm.c
++++ b/drivers/hwmon/gl520sm.c
+@@ -979,23 +979,10 @@ static struct gl520_data *gl520_update_device(struct device *dev)
+ 	return data;
+ }
+ 
+-
+-static int __init sensors_gl520sm_init(void)
+-{
+-	return i2c_add_driver(&gl520_driver);
+-}
+-
+-static void __exit sensors_gl520sm_exit(void)
+-{
+-	i2c_del_driver(&gl520_driver);
+-}
+-
++module_i2c_driver(gl520_driver);
+ 
+ MODULE_AUTHOR("Frodo Looijaard <frodol@dds.nl>, "
+ 	"Kyösti Mälkki <kmalkki@cc.hut.fi>, "
+ 	"Maarten Deprez <maartendeprez@users.sourceforge.net>");
+ MODULE_DESCRIPTION("GL520SM driver");
+ MODULE_LICENSE("GPL");
+-
+-module_init(sensors_gl520sm_init);
+-module_exit(sensors_gl520sm_exit);
+diff --git a/drivers/hwmon/jc42.c b/drivers/hwmon/jc42.c
+index 28c09ee..308346c 100644
+--- a/drivers/hwmon/jc42.c
++++ b/drivers/hwmon/jc42.c
+@@ -588,19 +588,8 @@ abort:
+ 	return ret;
+ }
+ 
+-static int __init sensors_jc42_init(void)
+-{
+-	return i2c_add_driver(&jc42_driver);
+-}
+-
+-static void __exit sensors_jc42_exit(void)
+-{
+-	i2c_del_driver(&jc42_driver);
+-}
++module_i2c_driver(jc42_driver);
+ 
+ MODULE_AUTHOR("Guenter Roeck <guenter.roeck@ericsson.com>");
+ MODULE_DESCRIPTION("JC42 driver");
+ MODULE_LICENSE("GPL");
+-
+-module_init(sensors_jc42_init);
+-module_exit(sensors_jc42_exit);
+diff --git a/drivers/hwmon/lineage-pem.c b/drivers/hwmon/lineage-pem.c
+index 58eded2..5b8c9ae 100644
+--- a/drivers/hwmon/lineage-pem.c
++++ b/drivers/hwmon/lineage-pem.c
+@@ -568,19 +568,8 @@ static struct i2c_driver pem_driver = {
+ 	.id_table = pem_id,
+ };
+ 
+-static int __init pem_init(void)
+-{
+-	return i2c_add_driver(&pem_driver);
+-}
+-
+-static void __exit pem_exit(void)
+-{
+-	i2c_del_driver(&pem_driver);
+-}
++module_i2c_driver(pem_driver);
+ 
+ MODULE_AUTHOR("Guenter Roeck <guenter.roeck@ericsson.com>");
+ MODULE_DESCRIPTION("Lineage CPL PEM hardware monitoring driver");
+ MODULE_LICENSE("GPL");
+-
+-module_init(pem_init);
+-module_exit(pem_exit);
+diff --git a/drivers/hwmon/lm63.c b/drivers/hwmon/lm63.c
+index 5e6457a..15c05cc 100644
+--- a/drivers/hwmon/lm63.c
++++ b/drivers/hwmon/lm63.c
+@@ -1119,19 +1119,8 @@ static struct lm63_data *lm63_update_device(struct device *dev)
+ 	return data;
+ }
+ 
+-static int __init sensors_lm63_init(void)
+-{
+-	return i2c_add_driver(&lm63_driver);
+-}
+-
+-static void __exit sensors_lm63_exit(void)
+-{
+-	i2c_del_driver(&lm63_driver);
+-}
++module_i2c_driver(lm63_driver);
+ 
+ MODULE_AUTHOR("Jean Delvare <khali@linux-fr.org>");
+ MODULE_DESCRIPTION("LM63 driver");
+ MODULE_LICENSE("GPL");
+-
+-module_init(sensors_lm63_init);
+-module_exit(sensors_lm63_exit);
+diff --git a/drivers/hwmon/lm73.c b/drivers/hwmon/lm73.c
+index 9c8093c..8fa2632 100644
+--- a/drivers/hwmon/lm73.c
++++ b/drivers/hwmon/lm73.c
+@@ -194,21 +194,8 @@ static struct i2c_driver lm73_driver = {
+ 	.address_list	= normal_i2c,
+ };
+ 
+-/* module glue */
+-
+-static int __init sensors_lm73_init(void)
+-{
+-	return i2c_add_driver(&lm73_driver);
+-}
+-
+-static void __exit sensors_lm73_exit(void)
+-{
+-	i2c_del_driver(&lm73_driver);
+-}
++module_i2c_driver(lm73_driver);
+ 
+ MODULE_AUTHOR("Guillaume Ligneul <guillaume.ligneul@gmail.com>");
+ MODULE_DESCRIPTION("LM73 driver");
+ MODULE_LICENSE("GPL");
+-
+-module_init(sensors_lm73_init);
+-module_exit(sensors_lm73_exit);
+diff --git a/drivers/hwmon/lm75.c b/drivers/hwmon/lm75.c
+index b3311b1..a83f206 100644
+--- a/drivers/hwmon/lm75.c
++++ b/drivers/hwmon/lm75.c
+@@ -438,23 +438,8 @@ abort:
+ 	return ret;
+ }
+ 
+-/*-----------------------------------------------------------------------*/
+-
+-/* module glue */
+-
+-static int __init sensors_lm75_init(void)
+-{
+-	return i2c_add_driver(&lm75_driver);
+-}
+-
+-static void __exit sensors_lm75_exit(void)
+-{
+-	i2c_del_driver(&lm75_driver);
+-}
++module_i2c_driver(lm75_driver);
+ 
+ MODULE_AUTHOR("Frodo Looijaard <frodol@dds.nl>");
+ MODULE_DESCRIPTION("LM75 driver");
+ MODULE_LICENSE("GPL");
+-
+-module_init(sensors_lm75_init);
+-module_exit(sensors_lm75_exit);
+diff --git a/drivers/hwmon/lm77.c b/drivers/hwmon/lm77.c
+index 08f7ffe..d8c1f35 100644
+--- a/drivers/hwmon/lm77.c
++++ b/drivers/hwmon/lm77.c
+@@ -443,19 +443,8 @@ static struct lm77_data *lm77_update_device(struct device *dev)
+ 	return data;
+ }
+ 
+-static int __init sensors_lm77_init(void)
+-{
+-	return i2c_add_driver(&lm77_driver);
+-}
+-
+-static void __exit sensors_lm77_exit(void)
+-{
+-	i2c_del_driver(&lm77_driver);
+-}
++module_i2c_driver(lm77_driver);
+ 
+ MODULE_AUTHOR("Andras BALI <drewie@freemail.hu>");
+ MODULE_DESCRIPTION("LM77 driver");
+ MODULE_LICENSE("GPL");
+-
+-module_init(sensors_lm77_init);
+-module_exit(sensors_lm77_exit);
+diff --git a/drivers/hwmon/lm80.c b/drivers/hwmon/lm80.c
+index dc6df4e..6a2a777 100644
+--- a/drivers/hwmon/lm80.c
++++ b/drivers/hwmon/lm80.c
+@@ -697,20 +697,9 @@ done:
+ 	return ret;
+ }
+ 
+-static int __init sensors_lm80_init(void)
+-{
+-	return i2c_add_driver(&lm80_driver);
+-}
+-
+-static void __exit sensors_lm80_exit(void)
+-{
+-	i2c_del_driver(&lm80_driver);
+-}
++module_i2c_driver(lm80_driver);
+ 
+ MODULE_AUTHOR("Frodo Looijaard <frodol@dds.nl> and "
+ 	"Philip Edelbrock <phil@netroedge.com>");
+ MODULE_DESCRIPTION("LM80 driver");
+ MODULE_LICENSE("GPL");
+-
+-module_init(sensors_lm80_init);
+-module_exit(sensors_lm80_exit);
+diff --git a/drivers/hwmon/lm83.c b/drivers/hwmon/lm83.c
+index 1fed265..cd45b9d 100644
+--- a/drivers/hwmon/lm83.c
++++ b/drivers/hwmon/lm83.c
+@@ -430,19 +430,8 @@ static struct lm83_data *lm83_update_device(struct device *dev)
+ 	return data;
+ }
+ 
+-static int __init sensors_lm83_init(void)
+-{
+-	return i2c_add_driver(&lm83_driver);
+-}
+-
+-static void __exit sensors_lm83_exit(void)
+-{
+-	i2c_del_driver(&lm83_driver);
+-}
++module_i2c_driver(lm83_driver);
+ 
+ MODULE_AUTHOR("Jean Delvare <khali@linux-fr.org>");
+ MODULE_DESCRIPTION("LM83 driver");
+ MODULE_LICENSE("GPL");
+-
+-module_init(sensors_lm83_init);
+-module_exit(sensors_lm83_exit);
+diff --git a/drivers/hwmon/lm85.c b/drivers/hwmon/lm85.c
+index 240b7f9..7e46ebb 100644
+--- a/drivers/hwmon/lm85.c
++++ b/drivers/hwmon/lm85.c
+@@ -1695,22 +1695,10 @@ static struct lm85_data *lm85_update_device(struct device *dev)
+ 	return data;
+ }
+ 
+-
+-static int __init sm_lm85_init(void)
+-{
+-	return i2c_add_driver(&lm85_driver);
+-}
+-
+-static void __exit sm_lm85_exit(void)
+-{
+-	i2c_del_driver(&lm85_driver);
+-}
++module_i2c_driver(lm85_driver);
+ 
+ MODULE_LICENSE("GPL");
+ MODULE_AUTHOR("Philip Pokorny <ppokorny@penguincomputing.com>, "
+ 	"Margit Schubert-While <margitsw@t-online.de>, "
+ 	"Justin Thiessen <jthiessen@penguincomputing.com>");
+ MODULE_DESCRIPTION("LM85-B, LM85-C driver");
+-
+-module_init(sm_lm85_init);
+-module_exit(sm_lm85_exit);
+diff --git a/drivers/hwmon/lm87.c b/drivers/hwmon/lm87.c
+index ebf4efd..090f5ef 100644
+--- a/drivers/hwmon/lm87.c
++++ b/drivers/hwmon/lm87.c
+@@ -1054,19 +1054,8 @@ static struct lm87_data *lm87_update_device(struct device *dev)
+ 	return data;
+ }
+ 
+-static int __init sensors_lm87_init(void)
+-{
+-	return i2c_add_driver(&lm87_driver);
+-}
+-
+-static void __exit sensors_lm87_exit(void)
+-{
+-	i2c_del_driver(&lm87_driver);
+-}
++module_i2c_driver(lm87_driver);
+ 
+ MODULE_AUTHOR("Jean Delvare <khali@linux-fr.org> and others");
+ MODULE_DESCRIPTION("LM87 driver");
+ MODULE_LICENSE("GPL");
+-
+-module_init(sensors_lm87_init);
+-module_exit(sensors_lm87_exit);
+diff --git a/drivers/hwmon/lm90.c b/drivers/hwmon/lm90.c
+index d2dd5f9..248f2b4 100644
+--- a/drivers/hwmon/lm90.c
++++ b/drivers/hwmon/lm90.c
+@@ -1514,19 +1514,8 @@ static struct i2c_driver lm90_driver = {
+ 	.address_list	= normal_i2c,
+ };
+ 
+-static int __init sensors_lm90_init(void)
+-{
+-	return i2c_add_driver(&lm90_driver);
+-}
+-
+-static void __exit sensors_lm90_exit(void)
+-{
+-	i2c_del_driver(&lm90_driver);
+-}
++module_i2c_driver(lm90_driver);
+ 
+ MODULE_AUTHOR("Jean Delvare <khali@linux-fr.org>");
+ MODULE_DESCRIPTION("LM90/ADM1032 driver");
+ MODULE_LICENSE("GPL");
+-
+-module_init(sensors_lm90_init);
+-module_exit(sensors_lm90_exit);
+diff --git a/drivers/hwmon/lm92.c b/drivers/hwmon/lm92.c
+index 95cda41..0fe2f37 100644
+--- a/drivers/hwmon/lm92.c
++++ b/drivers/hwmon/lm92.c
+@@ -432,19 +432,8 @@ static struct i2c_driver lm92_driver = {
+ 	.address_list	= normal_i2c,
+ };
+ 
+-static int __init sensors_lm92_init(void)
+-{
+-	return i2c_add_driver(&lm92_driver);
+-}
+-
+-static void __exit sensors_lm92_exit(void)
+-{
+-	i2c_del_driver(&lm92_driver);
+-}
++module_i2c_driver(lm92_driver);
+ 
+ MODULE_AUTHOR("Jean Delvare <khali@linux-fr.org>");
+ MODULE_DESCRIPTION("LM92/MAX6635 driver");
+ MODULE_LICENSE("GPL");
+-
+-module_init(sensors_lm92_init);
+-module_exit(sensors_lm92_exit);
+diff --git a/drivers/hwmon/lm93.c b/drivers/hwmon/lm93.c
+index d2fc4ac..22ae5f0 100644
+--- a/drivers/hwmon/lm93.c
++++ b/drivers/hwmon/lm93.c
+@@ -2761,20 +2761,9 @@ static struct i2c_driver lm93_driver = {
+ 	.address_list	= normal_i2c,
+ };
+ 
+-static int __init lm93_init(void)
+-{
+-	return i2c_add_driver(&lm93_driver);
+-}
+-
+-static void __exit lm93_exit(void)
+-{
+-	i2c_del_driver(&lm93_driver);
+-}
++module_i2c_driver(lm93_driver);
+ 
+ MODULE_AUTHOR("Mark M. Hoffman <mhoffman@lightlink.com>, "
+ 		"Hans J. Koch <hjk@hansjkoch.de>");
+ MODULE_DESCRIPTION("LM93 driver");
+ MODULE_LICENSE("GPL");
+-
+-module_init(lm93_init);
+-module_exit(lm93_exit);
+diff --git a/drivers/hwmon/lm95241.c b/drivers/hwmon/lm95241.c
+index 70bca67..bd8cdb7 100644
+--- a/drivers/hwmon/lm95241.c
++++ b/drivers/hwmon/lm95241.c
+@@ -455,19 +455,8 @@ static struct i2c_driver lm95241_driver = {
+ 	.address_list	= normal_i2c,
+ };
+ 
+-static int __init sensors_lm95241_init(void)
+-{
+-	return i2c_add_driver(&lm95241_driver);
+-}
+-
+-static void __exit sensors_lm95241_exit(void)
+-{
+-	i2c_del_driver(&lm95241_driver);
+-}
++module_i2c_driver(lm95241_driver);
+ 
+ MODULE_AUTHOR("Davide Rizzo <elpa.rizzo@gmail.com>");
+ MODULE_DESCRIPTION("LM95241 sensor driver");
+ MODULE_LICENSE("GPL");
+-
+-module_init(sensors_lm95241_init);
+-module_exit(sensors_lm95241_exit);
+diff --git a/drivers/hwmon/lm95245.c b/drivers/hwmon/lm95245.c
+index 5e5fc1b..9a46c10 100644
+--- a/drivers/hwmon/lm95245.c
++++ b/drivers/hwmon/lm95245.c
+@@ -525,19 +525,8 @@ static struct i2c_driver lm95245_driver = {
+ 	.address_list	= normal_i2c,
+ };
+ 
+-static int __init sensors_lm95245_init(void)
+-{
+-	return i2c_add_driver(&lm95245_driver);
+-}
+-
+-static void __exit sensors_lm95245_exit(void)
+-{
+-	i2c_del_driver(&lm95245_driver);
+-}
++module_i2c_driver(lm95245_driver);
+ 
+ MODULE_AUTHOR("Alexander Stein <alexander.stein@systec-electronic.com>");
+ MODULE_DESCRIPTION("LM95245 sensor driver");
+ MODULE_LICENSE("GPL");
+-
+-module_init(sensors_lm95245_init);
+-module_exit(sensors_lm95245_exit);
+diff --git a/drivers/hwmon/ltc4151.c b/drivers/hwmon/ltc4151.c
+index 4ac06b7..f646b45 100644
+--- a/drivers/hwmon/ltc4151.c
++++ b/drivers/hwmon/ltc4151.c
+@@ -238,19 +238,8 @@ static struct i2c_driver ltc4151_driver = {
+ 	.id_table	= ltc4151_id,
+ };
+ 
+-static int __init ltc4151_init(void)
+-{
+-	return i2c_add_driver(&ltc4151_driver);
+-}
+-
+-static void __exit ltc4151_exit(void)
+-{
+-	i2c_del_driver(&ltc4151_driver);
+-}
++module_i2c_driver(ltc4151_driver);
+ 
+ MODULE_AUTHOR("Per Dalen <per.dalen@appeartv.com>");
+ MODULE_DESCRIPTION("LTC4151 driver");
+ MODULE_LICENSE("GPL");
+-
+-module_init(ltc4151_init);
+-module_exit(ltc4151_exit);
+diff --git a/drivers/hwmon/ltc4215.c b/drivers/hwmon/ltc4215.c
+index c7e6d8e..0789b63 100644
+--- a/drivers/hwmon/ltc4215.c
++++ b/drivers/hwmon/ltc4215.c
+@@ -309,19 +309,8 @@ static struct i2c_driver ltc4215_driver = {
+ 	.id_table	= ltc4215_id,
+ };
+ 
+-static int __init ltc4215_init(void)
+-{
+-	return i2c_add_driver(&ltc4215_driver);
+-}
+-
+-static void __exit ltc4215_exit(void)
+-{
+-	i2c_del_driver(&ltc4215_driver);
+-}
++module_i2c_driver(ltc4215_driver);
+ 
+ MODULE_AUTHOR("Ira W. Snyder <iws@ovro.caltech.edu>");
+ MODULE_DESCRIPTION("LTC4215 driver");
+ MODULE_LICENSE("GPL");
+-
+-module_init(ltc4215_init);
+-module_exit(ltc4215_exit);
+diff --git a/drivers/hwmon/ltc4245.c b/drivers/hwmon/ltc4245.c
+index 6593083..693a6bd 100644
+--- a/drivers/hwmon/ltc4245.c
++++ b/drivers/hwmon/ltc4245.c
+@@ -578,19 +578,8 @@ static struct i2c_driver ltc4245_driver = {
+ 	.id_table	= ltc4245_id,
+ };
+ 
+-static int __init ltc4245_init(void)
+-{
+-	return i2c_add_driver(&ltc4245_driver);
+-}
+-
+-static void __exit ltc4245_exit(void)
+-{
+-	i2c_del_driver(&ltc4245_driver);
+-}
++module_i2c_driver(ltc4245_driver);
+ 
+ MODULE_AUTHOR("Ira W. Snyder <iws@ovro.caltech.edu>");
+ MODULE_DESCRIPTION("LTC4245 driver");
+ MODULE_LICENSE("GPL");
+-
+-module_init(ltc4245_init);
+-module_exit(ltc4245_exit);
+diff --git a/drivers/hwmon/ltc4261.c b/drivers/hwmon/ltc4261.c
+index ce52355..ab1bfbf 100644
+--- a/drivers/hwmon/ltc4261.c
++++ b/drivers/hwmon/ltc4261.c
+@@ -297,19 +297,8 @@ static struct i2c_driver ltc4261_driver = {
+ 	.id_table = ltc4261_id,
+ };
+ 
+-static int __init ltc4261_init(void)
+-{
+-	return i2c_add_driver(&ltc4261_driver);
+-}
+-
+-static void __exit ltc4261_exit(void)
+-{
+-	i2c_del_driver(&ltc4261_driver);
+-}
++module_i2c_driver(ltc4261_driver);
+ 
+ MODULE_AUTHOR("Guenter Roeck <guenter.roeck@ericsson.com>");
+ MODULE_DESCRIPTION("LTC4261 driver");
+ MODULE_LICENSE("GPL");
+-
+-module_init(ltc4261_init);
+-module_exit(ltc4261_exit);
+diff --git a/drivers/hwmon/max16065.c b/drivers/hwmon/max16065.c
+index f8e323a..51edae9 100644
+--- a/drivers/hwmon/max16065.c
++++ b/drivers/hwmon/max16065.c
+@@ -699,19 +699,8 @@ static struct i2c_driver max16065_driver = {
+ 	.id_table = max16065_id,
+ };
+ 
+-static int __init max16065_init(void)
+-{
+-	return i2c_add_driver(&max16065_driver);
+-}
+-
+-static void __exit max16065_exit(void)
+-{
+-	i2c_del_driver(&max16065_driver);
+-}
++module_i2c_driver(max16065_driver);
+ 
+ MODULE_AUTHOR("Guenter Roeck <guenter.roeck@ericsson.com>");
+ MODULE_DESCRIPTION("MAX16065 driver");
+ MODULE_LICENSE("GPL");
+-
+-module_init(max16065_init);
+-module_exit(max16065_exit);
+diff --git a/drivers/hwmon/max1619.c b/drivers/hwmon/max1619.c
+index f19599f..ecac04a 100644
+--- a/drivers/hwmon/max1619.c
++++ b/drivers/hwmon/max1619.c
+@@ -360,20 +360,9 @@ static struct max1619_data *max1619_update_device(struct device *dev)
+ 	return data;
+ }
+ 
+-static int __init sensors_max1619_init(void)
+-{
+-	return i2c_add_driver(&max1619_driver);
+-}
+-
+-static void __exit sensors_max1619_exit(void)
+-{
+-	i2c_del_driver(&max1619_driver);
+-}
++module_i2c_driver(max1619_driver);
+ 
+ MODULE_AUTHOR("Alexey Fisher <fishor@mail.ru> and "
+ 	"Jean Delvare <khali@linux-fr.org>");
+ MODULE_DESCRIPTION("MAX1619 sensor driver");
+ MODULE_LICENSE("GPL");
+-
+-module_init(sensors_max1619_init);
+-module_exit(sensors_max1619_exit);
+diff --git a/drivers/hwmon/max1668.c b/drivers/hwmon/max1668.c
+index 88953f9..12249f7 100644
+--- a/drivers/hwmon/max1668.c
++++ b/drivers/hwmon/max1668.c
+@@ -484,19 +484,8 @@ static struct i2c_driver max1668_driver = {
+ 	.address_list = max1668_addr_list,
+ };
+ 
+-static int __init sensors_max1668_init(void)
+-{
+-	return i2c_add_driver(&max1668_driver);
+-}
+-
+-static void __exit sensors_max1668_exit(void)
+-{
+-	i2c_del_driver(&max1668_driver);
+-}
++module_i2c_driver(max1668_driver);
+ 
+ MODULE_AUTHOR("David George <david.george@ska.ac.za>");
+ MODULE_DESCRIPTION("MAX1668 remote temperature sensor driver");
+ MODULE_LICENSE("GPL");
+-
+-module_init(sensors_max1668_init)
+-module_exit(sensors_max1668_exit)
+diff --git a/drivers/hwmon/max6639.c b/drivers/hwmon/max6639.c
+index e10a092..d203eb1 100644
+--- a/drivers/hwmon/max6639.c
++++ b/drivers/hwmon/max6639.c
+@@ -635,19 +635,8 @@ static struct i2c_driver max6639_driver = {
+ 	.address_list = normal_i2c,
+ };
+ 
+-static int __init max6639_init(void)
+-{
+-	return i2c_add_driver(&max6639_driver);
+-}
+-
+-static void __exit max6639_exit(void)
+-{
+-	i2c_del_driver(&max6639_driver);
+-}
++module_i2c_driver(max6639_driver);
+ 
+ MODULE_AUTHOR("Roland Stigge <stigge@antcom.de>");
+ MODULE_DESCRIPTION("max6639 driver");
+ MODULE_LICENSE("GPL");
+-
+-module_init(max6639_init);
+-module_exit(max6639_exit);
+diff --git a/drivers/hwmon/max6642.c b/drivers/hwmon/max6642.c
+index 209e8a5..4298909 100644
+--- a/drivers/hwmon/max6642.c
++++ b/drivers/hwmon/max6642.c
+@@ -352,19 +352,8 @@ static struct i2c_driver max6642_driver = {
+ 	.address_list	= normal_i2c,
+ };
+ 
+-static int __init max6642_init(void)
+-{
+-	return i2c_add_driver(&max6642_driver);
+-}
+-
+-static void __exit max6642_exit(void)
+-{
+-	i2c_del_driver(&max6642_driver);
+-}
++module_i2c_driver(max6642_driver);
+ 
+ MODULE_AUTHOR("Per Dalen <per.dalen@appeartv.com>");
+ MODULE_DESCRIPTION("MAX6642 sensor driver");
+ MODULE_LICENSE("GPL");
+-
+-module_init(max6642_init);
+-module_exit(max6642_exit);
+diff --git a/drivers/hwmon/max6650.c b/drivers/hwmon/max6650.c
+index 159ce02..3296e6e 100644
+--- a/drivers/hwmon/max6650.c
++++ b/drivers/hwmon/max6650.c
+@@ -726,19 +726,8 @@ static struct max6650_data *max6650_update_device(struct device *dev)
+ 	return data;
+ }
+ 
+-static int __init sensors_max6650_init(void)
+-{
+-	return i2c_add_driver(&max6650_driver);
+-}
+-
+-static void __exit sensors_max6650_exit(void)
+-{
+-	i2c_del_driver(&max6650_driver);
+-}
++module_i2c_driver(max6650_driver);
+ 
+ MODULE_AUTHOR("Hans J. Koch");
+ MODULE_DESCRIPTION("MAX6650 sensor driver");
+ MODULE_LICENSE("GPL");
+-
+-module_init(sensors_max6650_init);
+-module_exit(sensors_max6650_exit);
+diff --git a/drivers/hwmon/pmbus/adm1275.c b/drivers/hwmon/pmbus/adm1275.c
+index 81c7c2e..fe52c3c 100644
+--- a/drivers/hwmon/pmbus/adm1275.c
++++ b/drivers/hwmon/pmbus/adm1275.c
+@@ -326,18 +326,8 @@ static struct i2c_driver adm1275_driver = {
+ 	.id_table = adm1275_id,
+ };
+ 
+-static int __init adm1275_init(void)
+-{
+-	return i2c_add_driver(&adm1275_driver);
+-}
+-
+-static void __exit adm1275_exit(void)
+-{
+-	i2c_del_driver(&adm1275_driver);
+-}
++module_i2c_driver(adm1275_driver);
+ 
+ MODULE_AUTHOR("Guenter Roeck");
+ MODULE_DESCRIPTION("PMBus driver for Analog Devices ADM1275 and compatibles");
+ MODULE_LICENSE("GPL");
+-module_init(adm1275_init);
+-module_exit(adm1275_exit);
+diff --git a/drivers/hwmon/pmbus/lm25066.c b/drivers/hwmon/pmbus/lm25066.c
+index 84a37f0..86ac15a 100644
+--- a/drivers/hwmon/pmbus/lm25066.c
++++ b/drivers/hwmon/pmbus/lm25066.c
+@@ -334,18 +334,8 @@ static struct i2c_driver lm25066_driver = {
+ 	.id_table = lm25066_id,
+ };
+ 
+-static int __init lm25066_init(void)
+-{
+-	return i2c_add_driver(&lm25066_driver);
+-}
+-
+-static void __exit lm25066_exit(void)
+-{
+-	i2c_del_driver(&lm25066_driver);
+-}
++module_i2c_driver(lm25066_driver);
+ 
+ MODULE_AUTHOR("Guenter Roeck");
+ MODULE_DESCRIPTION("PMBus driver for LM25066/LM5064/LM5066");
+ MODULE_LICENSE("GPL");
+-module_init(lm25066_init);
+-module_exit(lm25066_exit);
+diff --git a/drivers/hwmon/pmbus/ltc2978.c b/drivers/hwmon/pmbus/ltc2978.c
+index 820fff4..c9e4dd2 100644
+--- a/drivers/hwmon/pmbus/ltc2978.c
++++ b/drivers/hwmon/pmbus/ltc2978.c
+@@ -391,18 +391,8 @@ static struct i2c_driver ltc2978_driver = {
+ 	.id_table = ltc2978_id,
+ };
+ 
+-static int __init ltc2978_init(void)
+-{
+-	return i2c_add_driver(&ltc2978_driver);
+-}
+-
+-static void __exit ltc2978_exit(void)
+-{
+-	i2c_del_driver(&ltc2978_driver);
+-}
++module_i2c_driver(ltc2978_driver);
+ 
+ MODULE_AUTHOR("Guenter Roeck");
+ MODULE_DESCRIPTION("PMBus driver for LTC2978 and LTC3880");
+ MODULE_LICENSE("GPL");
+-module_init(ltc2978_init);
+-module_exit(ltc2978_exit);
+diff --git a/drivers/hwmon/pmbus/max16064.c b/drivers/hwmon/pmbus/max16064.c
+index 1d77cf4..5cfe20f 100644
+--- a/drivers/hwmon/pmbus/max16064.c
++++ b/drivers/hwmon/pmbus/max16064.c
+@@ -126,18 +126,8 @@ static struct i2c_driver max16064_driver = {
+ 	.id_table = max16064_id,
+ };
+ 
+-static int __init max16064_init(void)
+-{
+-	return i2c_add_driver(&max16064_driver);
+-}
+-
+-static void __exit max16064_exit(void)
+-{
+-	i2c_del_driver(&max16064_driver);
+-}
++module_i2c_driver(max16064_driver);
+ 
+ MODULE_AUTHOR("Guenter Roeck");
+ MODULE_DESCRIPTION("PMBus driver for Maxim MAX16064");
+ MODULE_LICENSE("GPL");
+-module_init(max16064_init);
+-module_exit(max16064_exit);
+diff --git a/drivers/hwmon/pmbus/max34440.c b/drivers/hwmon/pmbus/max34440.c
+index beaf5a8..89ae303 100644
+--- a/drivers/hwmon/pmbus/max34440.c
++++ b/drivers/hwmon/pmbus/max34440.c
+@@ -248,18 +248,8 @@ static struct i2c_driver max34440_driver = {
+ 	.id_table = max34440_id,
+ };
+ 
+-static int __init max34440_init(void)
+-{
+-	return i2c_add_driver(&max34440_driver);
+-}
+-
+-static void __exit max34440_exit(void)
+-{
+-	i2c_del_driver(&max34440_driver);
+-}
++module_i2c_driver(max34440_driver);
+ 
+ MODULE_AUTHOR("Guenter Roeck");
+ MODULE_DESCRIPTION("PMBus driver for Maxim MAX34440/MAX34441");
+ MODULE_LICENSE("GPL");
+-module_init(max34440_init);
+-module_exit(max34440_exit);
+diff --git a/drivers/hwmon/pmbus/max8688.c b/drivers/hwmon/pmbus/max8688.c
+index e2b74bb..82c598d 100644
+--- a/drivers/hwmon/pmbus/max8688.c
++++ b/drivers/hwmon/pmbus/max8688.c
+@@ -203,18 +203,8 @@ static struct i2c_driver max8688_driver = {
+ 	.id_table = max8688_id,
+ };
+ 
+-static int __init max8688_init(void)
+-{
+-	return i2c_add_driver(&max8688_driver);
+-}
+-
+-static void __exit max8688_exit(void)
+-{
+-	i2c_del_driver(&max8688_driver);
+-}
++module_i2c_driver(max8688_driver);
+ 
+ MODULE_AUTHOR("Guenter Roeck");
+ MODULE_DESCRIPTION("PMBus driver for Maxim MAX8688");
+ MODULE_LICENSE("GPL");
+-module_init(max8688_init);
+-module_exit(max8688_exit);
+diff --git a/drivers/hwmon/pmbus/pmbus.c b/drivers/hwmon/pmbus/pmbus.c
+index 18a385e..da5fe36 100644
+--- a/drivers/hwmon/pmbus/pmbus.c
++++ b/drivers/hwmon/pmbus/pmbus.c
+@@ -224,18 +224,8 @@ static struct i2c_driver pmbus_driver = {
+ 	.id_table = pmbus_id,
+ };
+ 
+-static int __init pmbus_init(void)
+-{
+-	return i2c_add_driver(&pmbus_driver);
+-}
+-
+-static void __exit pmbus_exit(void)
+-{
+-	i2c_del_driver(&pmbus_driver);
+-}
++module_i2c_driver(pmbus_driver);
+ 
+ MODULE_AUTHOR("Guenter Roeck");
+ MODULE_DESCRIPTION("Generic PMBus driver");
+ MODULE_LICENSE("GPL");
+-module_init(pmbus_init);
+-module_exit(pmbus_exit);
+diff --git a/drivers/hwmon/pmbus/ucd9000.c b/drivers/hwmon/pmbus/ucd9000.c
+index 4ff6cf2..759a563 100644
+--- a/drivers/hwmon/pmbus/ucd9000.c
++++ b/drivers/hwmon/pmbus/ucd9000.c
+@@ -258,18 +258,8 @@ static struct i2c_driver ucd9000_driver = {
+ 	.id_table = ucd9000_id,
+ };
+ 
+-static int __init ucd9000_init(void)
+-{
+-	return i2c_add_driver(&ucd9000_driver);
+-}
+-
+-static void __exit ucd9000_exit(void)
+-{
+-	i2c_del_driver(&ucd9000_driver);
+-}
++module_i2c_driver(ucd9000_driver);
+ 
+ MODULE_AUTHOR("Guenter Roeck");
+ MODULE_DESCRIPTION("PMBus driver for TI UCD90xxx");
+ MODULE_LICENSE("GPL");
+-module_init(ucd9000_init);
+-module_exit(ucd9000_exit);
+diff --git a/drivers/hwmon/pmbus/ucd9200.c b/drivers/hwmon/pmbus/ucd9200.c
+index 6e1c1a8..629d0c9 100644
+--- a/drivers/hwmon/pmbus/ucd9200.c
++++ b/drivers/hwmon/pmbus/ucd9200.c
+@@ -190,18 +190,8 @@ static struct i2c_driver ucd9200_driver = {
+ 	.id_table = ucd9200_id,
+ };
+ 
+-static int __init ucd9200_init(void)
+-{
+-	return i2c_add_driver(&ucd9200_driver);
+-}
+-
+-static void __exit ucd9200_exit(void)
+-{
+-	i2c_del_driver(&ucd9200_driver);
+-}
++module_i2c_driver(ucd9200_driver);
+ 
+ MODULE_AUTHOR("Guenter Roeck");
+ MODULE_DESCRIPTION("PMBus driver for TI UCD922x, UCD924x");
+ MODULE_LICENSE("GPL");
+-module_init(ucd9200_init);
+-module_exit(ucd9200_exit);
+diff --git a/drivers/hwmon/pmbus/zl6100.c b/drivers/hwmon/pmbus/zl6100.c
+index 48c7b4a..0bb7bba 100644
+--- a/drivers/hwmon/pmbus/zl6100.c
++++ b/drivers/hwmon/pmbus/zl6100.c
+@@ -268,18 +268,8 @@ static struct i2c_driver zl6100_driver = {
+ 	.id_table = zl6100_id,
+ };
+ 
+-static int __init zl6100_init(void)
+-{
+-	return i2c_add_driver(&zl6100_driver);
+-}
+-
+-static void __exit zl6100_exit(void)
+-{
+-	i2c_del_driver(&zl6100_driver);
+-}
++module_i2c_driver(zl6100_driver);
+ 
+ MODULE_AUTHOR("Guenter Roeck");
+ MODULE_DESCRIPTION("PMBus driver for ZL6100 and compatibles");
+ MODULE_LICENSE("GPL");
+-module_init(zl6100_init);
+-module_exit(zl6100_exit);
+diff --git a/drivers/hwmon/sht21.c b/drivers/hwmon/sht21.c
+index 1539878..6c2dede 100644
+--- a/drivers/hwmon/sht21.c
++++ b/drivers/hwmon/sht21.c
+@@ -261,28 +261,7 @@ static struct i2c_driver sht21_driver = {
+ 	.id_table    = sht21_id,
+ };
+ 
+-/**
+- * sht21_init() - initialize driver
+- *
+- * Called when kernel is booted or module is inserted.
+- * Returns 0 on success.
+- */
+-static int __init sht21_init(void)
+-{
+-	return i2c_add_driver(&sht21_driver);
+-}
+-module_init(sht21_init);
+-
+-/**
+- * sht21_init() - clean up driver
+- *
+- * Called when module is removed.
+- */
+-static void __exit sht21_exit(void)
+-{
+-	i2c_del_driver(&sht21_driver);
+-}
+-module_exit(sht21_exit);
++module_i2c_driver(sht21_driver);
+ 
+ MODULE_AUTHOR("Urs Fleisch <urs.fleisch@sensirion.com>");
+ MODULE_DESCRIPTION("Sensirion SHT21 humidity and temperature sensor driver");
+diff --git a/drivers/hwmon/smm665.c b/drivers/hwmon/smm665.c
+index 1b4301f..24382c7 100644
+--- a/drivers/hwmon/smm665.c
++++ b/drivers/hwmon/smm665.c
+@@ -718,19 +718,8 @@ static struct i2c_driver smm665_driver = {
+ 	.id_table = smm665_id,
+ };
+ 
+-static int __init smm665_init(void)
+-{
+-	return i2c_add_driver(&smm665_driver);
+-}
+-
+-static void __exit smm665_exit(void)
+-{
+-	i2c_del_driver(&smm665_driver);
+-}
++module_i2c_driver(smm665_driver);
+ 
+ MODULE_AUTHOR("Guenter Roeck");
+ MODULE_DESCRIPTION("SMM665 driver");
+ MODULE_LICENSE("GPL");
+-
+-module_init(smm665_init);
+-module_exit(smm665_exit);
+diff --git a/drivers/hwmon/smsc47m192.c b/drivers/hwmon/smsc47m192.c
+index 95761bd..307e6a6 100644
+--- a/drivers/hwmon/smsc47m192.c
++++ b/drivers/hwmon/smsc47m192.c
+@@ -669,19 +669,8 @@ static struct smsc47m192_data *smsc47m192_update_device(struct device *dev)
+ 	return data;
+ }
+ 
+-static int __init smsc47m192_init(void)
+-{
+-	return i2c_add_driver(&smsc47m192_driver);
+-}
+-
+-static void __exit smsc47m192_exit(void)
+-{
+-	i2c_del_driver(&smsc47m192_driver);
+-}
++module_i2c_driver(smsc47m192_driver);
+ 
+ MODULE_AUTHOR("Hartmut Rick <linux@rick.claranet.de>");
+ MODULE_DESCRIPTION("SMSC47M192 driver");
+ MODULE_LICENSE("GPL");
+-
+-module_init(smsc47m192_init);
+-module_exit(smsc47m192_exit);
+diff --git a/drivers/hwmon/thmc50.c b/drivers/hwmon/thmc50.c
+index a195914..51ddb37 100644
+--- a/drivers/hwmon/thmc50.c
++++ b/drivers/hwmon/thmc50.c
+@@ -482,18 +482,7 @@ static struct thmc50_data *thmc50_update_device(struct device *dev)
+ 	return data;
+ }
+ 
+-static int __init sm_thmc50_init(void)
+-{
+-	return i2c_add_driver(&thmc50_driver);
+-}
+-
+-static void __exit sm_thmc50_exit(void)
+-{
+-	i2c_del_driver(&thmc50_driver);
+-}
++module_i2c_driver(thmc50_driver);
+ 
+ MODULE_AUTHOR("Krzysztof Helt <krzysztof.h1@wp.pl>");
+ MODULE_DESCRIPTION("THMC50 driver");
+-
+-module_init(sm_thmc50_init);
+-module_exit(sm_thmc50_exit);
+diff --git a/drivers/hwmon/tmp102.c b/drivers/hwmon/tmp102.c
+index c08eee2..0d466b9 100644
+--- a/drivers/hwmon/tmp102.c
++++ b/drivers/hwmon/tmp102.c
+@@ -292,17 +292,7 @@ static struct i2c_driver tmp102_driver = {
+ 	.id_table	= tmp102_id,
+ };
+ 
+-static int __init tmp102_init(void)
+-{
+-	return i2c_add_driver(&tmp102_driver);
+-}
+-module_init(tmp102_init);
+-
+-static void __exit tmp102_exit(void)
+-{
+-	i2c_del_driver(&tmp102_driver);
+-}
+-module_exit(tmp102_exit);
++module_i2c_driver(tmp102_driver);
+ 
+ MODULE_AUTHOR("Steven King <sfking@fdwdc.com>");
+ MODULE_DESCRIPTION("Texas Instruments TMP102 temperature sensor driver");
+diff --git a/drivers/hwmon/tmp401.c b/drivers/hwmon/tmp401.c
+index 8b9a774..92b7f1b 100644
+--- a/drivers/hwmon/tmp401.c
++++ b/drivers/hwmon/tmp401.c
+@@ -662,19 +662,8 @@ static struct i2c_driver tmp401_driver = {
+ 	.address_list	= normal_i2c,
+ };
+ 
+-static int __init tmp401_init(void)
+-{
+-	return i2c_add_driver(&tmp401_driver);
+-}
+-
+-static void __exit tmp401_exit(void)
+-{
+-	i2c_del_driver(&tmp401_driver);
+-}
++module_i2c_driver(tmp401_driver);
+ 
+ MODULE_AUTHOR("Hans de Goede <hdegoede@redhat.com>");
+ MODULE_DESCRIPTION("Texas Instruments TMP401 temperature sensor driver");
+ MODULE_LICENSE("GPL");
+-
+-module_init(tmp401_init);
+-module_exit(tmp401_exit);
+diff --git a/drivers/hwmon/tmp421.c b/drivers/hwmon/tmp421.c
+index c48381f..8fac87a 100644
+--- a/drivers/hwmon/tmp421.c
++++ b/drivers/hwmon/tmp421.c
+@@ -324,20 +324,9 @@ static struct i2c_driver tmp421_driver = {
+ 	.address_list = normal_i2c,
+ };
+ 
+-static int __init tmp421_init(void)
+-{
+-	return i2c_add_driver(&tmp421_driver);
+-}
+-
+-static void __exit tmp421_exit(void)
+-{
+-	i2c_del_driver(&tmp421_driver);
+-}
++module_i2c_driver(tmp421_driver);
+ 
+ MODULE_AUTHOR("Andre Prendel <andre.prendel@gmx.de>");
+ MODULE_DESCRIPTION("Texas Instruments TMP421/422/423 temperature sensor"
+ 		   " driver");
+ MODULE_LICENSE("GPL");
+-
+-module_init(tmp421_init);
+-module_exit(tmp421_exit);
+diff --git a/drivers/hwmon/w83791d.c b/drivers/hwmon/w83791d.c
+index 679146d..b92f01f 100644
+--- a/drivers/hwmon/w83791d.c
++++ b/drivers/hwmon/w83791d.c
+@@ -1668,19 +1668,8 @@ static void w83791d_print_debug(struct w83791d_data *data, struct device *dev)
+ }
+ #endif
+ 
+-static int __init sensors_w83791d_init(void)
+-{
+-	return i2c_add_driver(&w83791d_driver);
+-}
+-
+-static void __exit sensors_w83791d_exit(void)
+-{
+-	i2c_del_driver(&w83791d_driver);
+-}
++module_i2c_driver(w83791d_driver);
+ 
+ MODULE_AUTHOR("Charles Spirakis <bezaur@gmail.com>");
+ MODULE_DESCRIPTION("W83791D driver");
+ MODULE_LICENSE("GPL");
+-
+-module_init(sensors_w83791d_init);
+-module_exit(sensors_w83791d_exit);
+diff --git a/drivers/hwmon/w83792d.c b/drivers/hwmon/w83792d.c
+index e356618..1175dcf 100644
+--- a/drivers/hwmon/w83792d.c
++++ b/drivers/hwmon/w83792d.c
+@@ -1708,22 +1708,8 @@ static void w83792d_print_debug(struct w83792d_data *data, struct device *dev)
+ }
+ #endif
+ 
+-static int __init
+-sensors_w83792d_init(void)
+-{
+-	return i2c_add_driver(&w83792d_driver);
+-}
+-
+-static void __exit
+-sensors_w83792d_exit(void)
+-{
+-	i2c_del_driver(&w83792d_driver);
+-}
++module_i2c_driver(w83792d_driver);
+ 
+ MODULE_AUTHOR("Chunhao Huang @ Winbond <DZShen@Winbond.com.tw>");
+ MODULE_DESCRIPTION("W83792AD/D driver for linux-2.6");
+ MODULE_LICENSE("GPL");
+-
+-module_init(sensors_w83792d_init);
+-module_exit(sensors_w83792d_exit);
+-
+diff --git a/drivers/hwmon/w83793.c b/drivers/hwmon/w83793.c
+index 5929d44..47f975c 100644
+--- a/drivers/hwmon/w83793.c
++++ b/drivers/hwmon/w83793.c
+@@ -2169,19 +2169,8 @@ END:
+ 	return res;
+ }
+ 
+-static int __init sensors_w83793_init(void)
+-{
+-	return i2c_add_driver(&w83793_driver);
+-}
+-
+-static void __exit sensors_w83793_exit(void)
+-{
+-	i2c_del_driver(&w83793_driver);
+-}
++module_i2c_driver(w83793_driver);
+ 
+ MODULE_AUTHOR("Yuan Mu, Sven Anders");
+ MODULE_DESCRIPTION("w83793 driver");
+ MODULE_LICENSE("GPL");
+-
+-module_init(sensors_w83793_init);
+-module_exit(sensors_w83793_exit);
+diff --git a/drivers/hwmon/w83795.c b/drivers/hwmon/w83795.c
+index aa58b25..deb12c9 100644
+--- a/drivers/hwmon/w83795.c
++++ b/drivers/hwmon/w83795.c
+@@ -2244,19 +2244,8 @@ static struct i2c_driver w83795_driver = {
+ 	.address_list	= normal_i2c,
+ };
+ 
+-static int __init sensors_w83795_init(void)
+-{
+-	return i2c_add_driver(&w83795_driver);
+-}
+-
+-static void __exit sensors_w83795_exit(void)
+-{
+-	i2c_del_driver(&w83795_driver);
+-}
++module_i2c_driver(w83795_driver);
+ 
+ MODULE_AUTHOR("Wei Song, Jean Delvare <khali@linux-fr.org>");
+ MODULE_DESCRIPTION("W83795G/ADG hardware monitoring driver");
+ MODULE_LICENSE("GPL");
+-
+-module_init(sensors_w83795_init);
+-module_exit(sensors_w83795_exit);
+diff --git a/drivers/hwmon/w83l785ts.c b/drivers/hwmon/w83l785ts.c
+index edfc1ec..bc07144 100644
+--- a/drivers/hwmon/w83l785ts.c
++++ b/drivers/hwmon/w83l785ts.c
+@@ -302,19 +302,8 @@ static struct w83l785ts_data *w83l785ts_update_device(struct device *dev)
+ 	return data;
+ }
+ 
+-static int __init sensors_w83l785ts_init(void)
+-{
+-	return i2c_add_driver(&w83l785ts_driver);
+-}
+-
+-static void __exit sensors_w83l785ts_exit(void)
+-{
+-	i2c_del_driver(&w83l785ts_driver);
+-}
++module_i2c_driver(w83l785ts_driver);
+ 
+ MODULE_AUTHOR("Jean Delvare <khali@linux-fr.org>");
+ MODULE_DESCRIPTION("W83L785TS-S driver");
+ MODULE_LICENSE("GPL");
+-
+-module_init(sensors_w83l785ts_init);
+-module_exit(sensors_w83l785ts_exit);
+diff --git a/drivers/hwmon/w83l786ng.c b/drivers/hwmon/w83l786ng.c
+index 6eac5d9..a6310b8 100644
+--- a/drivers/hwmon/w83l786ng.c
++++ b/drivers/hwmon/w83l786ng.c
+@@ -806,21 +806,8 @@ static struct w83l786ng_data *w83l786ng_update_device(struct device *dev)
+ 	return data;
+ }
+ 
+-static int __init
+-sensors_w83l786ng_init(void)
+-{
+-	return i2c_add_driver(&w83l786ng_driver);
+-}
+-
+-static void __exit
+-sensors_w83l786ng_exit(void)
+-{
+-	i2c_del_driver(&w83l786ng_driver);
+-}
++module_i2c_driver(w83l786ng_driver);
+ 
+ MODULE_AUTHOR("Kevin Lo");
+ MODULE_DESCRIPTION("w83l786ng driver");
+ MODULE_LICENSE("GPL");
+-
+-module_init(sensors_w83l786ng_init);
+-module_exit(sensors_w83l786ng_exit);
+-- 
+1.7.5.4
diff --git a/a/content_digest b/N1/content_digest
index 15b0027..2257fec 100644
--- a/a/content_digest
+++ b/N1/content_digest
@@ -1,6 +1,6 @@
  "From\0Axel Lin <axel.lin@gmail.com>\0"
- "Subject\0[lm-sensors] [PATCH 1/2] hwmon: convert drivers/hwmon/* to use module_i2c_driver()\0"
- "Date\0Fri, 20 Jan 2012 07:38:18 +0000\0"
+ "Subject\0[PATCH 1/2] hwmon: convert drivers/hwmon/* to use module_i2c_driver()\0"
+ "Date\0Fri, 20 Jan 2012 15:38:18 +0800\0"
  "To\0linux-kernel@vger.kernel.org\0"
  "Cc\0Jean Delvare <khali@linux-fr.org>"
   Guenter Roeck <guenter.roeck@ericsson.com>
@@ -17,949 +17,1974 @@
  " lm-sensors@lm-sensors.org\0"
  "\00:1\0"
  "b\0"
- "VGhpcyBwYXRjaCBjb252ZXJ0cyB0aGUgZHJpdmVycyBpbiBkcml2ZXJzL2h3bW9uLyogdG8gdXNl\n"
- "IHRoZQptb2R1bGVfaTJjX2RyaXZlcigpIG1hY3JvIHdoaWNoIG1ha2VzIHRoZSBjb2RlIHNtYWxs\n"
- "ZXIgYW5kIGEgYml0IHNpbXBsZXIuCgpTaWduZWQtb2ZmLWJ5OiBBeGVsIExpbiA8YXhlbC5saW5A\n"
- "Z21haWwuY29tPgpDYzogQ29yZW50aW4gTGFiYmUgPGNvcmVudGluLmxhYmJlQGdlb21hdHlzLmZy\n"
- "PgpDYzogRGlyayBFaWJhY2ggPGVpYmFjaEBnZHN5cy5kZT4KQ2M6ICJNYXJrIE0uIEhvZmZtYW4i\n"
- "IDxtaG9mZm1hbkBsaWdodGxpbmsuY29tPgpDYzogU3RldmUgR2xlbmRpbm5pbmcgPHN0ZXZlLmds\n"
- "ZW5kaW5uaW5nQHNtc2MuY29tPgpDYzogUmlrdSBWb2lwaW8gPHJpa3Uudm9pcGlvQGlraS5maT4K\n"
- "Q2M6IEd1aWxsYXVtZSBMaWduZXVsIDxndWlsbGF1bWUubGlnbmV1bEBnbWFpbC5jb20+CkNjOiBE\n"
- "YXZpZCBHZW9yZ2UgPGRhdmlkLmdlb3JnZUBza2EuYWMuemE+CkNjOiAiSGFucyBKLiBLb2NoIiA8\n"
- "aGprQGhhbnNqa29jaC5kZT4KQ2M6IE1hcmMgSHVsc21hbiA8bS5odWxzbWFuQHR1ZGVsZnQubmw+\n"
- "CkNjOiBSdWRvbGYgTWFyZWsgPHIubWFyZWtAYXNzZW1ibGVyLmN6PgotLS0KIGRyaXZlcnMvaHdt\n"
- "b24vYWQ3NDE0LmMgICAgICAgICB8ICAgMTIgKy0tLS0tLS0tLS0tCiBkcml2ZXJzL2h3bW9uL2Fk\n"
- "NzQxOC5jICAgICAgICAgfCAgIDEzICstLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vYWRtMTAy\n"
- "MS5jICAgICAgICB8ICAgMTMgKy0tLS0tLS0tLS0tLQogZHJpdmVycy9od21vbi9hZG0xMDI1LmMg\n"
- "ICAgICAgIHwgICAxMyArLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2h3bW9uL2FkbTEwMjYuYyAgICAg\n"
- "ICAgfCAgIDEzICstLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vYWRtMTAyOS5jICAgICAgICB8\n"
- "ICAgMTggKy0tLS0tLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2h3bW9uL2FkbTEwMzEuYyAgICAgICAg\n"
- "fCAgIDEzICstLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vYWRtOTI0MC5jICAgICAgICB8ICAg\n"
- "MTQgKy0tLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vYWRzMTAxNS5jICAgICAgICB8ICAgMTMg\n"
- "Ky0tLS0tLS0tLS0tLQogZHJpdmVycy9od21vbi9hZHQ3NDExLmMgICAgICAgIHwgICAxMiArLS0t\n"
- "LS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vYWR0NzQ2Mi5jICAgICAgICB8ICAgMTMgKy0tLS0tLS0t\n"
- "LS0tLQogZHJpdmVycy9od21vbi9hZHQ3NDcwLmMgICAgICAgIHwgICAxMyArLS0tLS0tLS0tLS0t\n"
- "CiBkcml2ZXJzL2h3bW9uL2FkdDc0NzUuYyAgICAgICAgfCAgIDEzICstLS0tLS0tLS0tLS0KIGRy\n"
- "aXZlcnMvaHdtb24vYW1jNjgyMS5jICAgICAgICB8ICAgMTUgKy0tLS0tLS0tLS0tLS0tCiBkcml2\n"
- "ZXJzL2h3bW9uL2FzYjEwMC5jICAgICAgICAgfCAgIDEzICstLS0tLS0tLS0tLS0KIGRyaXZlcnMv\n"
- "aHdtb24vYXR4cDEuYyAgICAgICAgICB8ICAgMTMgKy0tLS0tLS0tLS0tLQogZHJpdmVycy9od21v\n"
- "bi9kczE2MjEuYyAgICAgICAgIHwgICAxNCArLS0tLS0tLS0tLS0tLQogZHJpdmVycy9od21vbi9k\n"
- "czYyMC5jICAgICAgICAgIHwgICAxMyArLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2h3bW9uL2VtYzE0\n"
- "MDMuYyAgICAgICAgfCAgIDEzICstLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vZW1jMjEwMy5j\n"
- "ICAgICAgICB8ICAgMTMgKy0tLS0tLS0tLS0tLQogZHJpdmVycy9od21vbi9lbWM2dzIwMS5jICAg\n"
- "ICAgIHwgICAxMiArLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vZjc1Mzc1cy5jICAgICAgICB8\n"
- "ICAgMTMgKy0tLS0tLS0tLS0tLQogZHJpdmVycy9od21vbi9mc2NobWQuYyAgICAgICAgIHwgICAx\n"
- "MyArLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2h3bW9uL2c3NjBhLmMgICAgICAgICAgfCAgIDE1ICst\n"
- "LS0tLS0tLS0tLS0tLQogZHJpdmVycy9od21vbi9nbDUxOHNtLmMgICAgICAgIHwgICAxMyArLS0t\n"
- "LS0tLS0tLS0tCiBkcml2ZXJzL2h3bW9uL2dsNTIwc20uYyAgICAgICAgfCAgIDE1ICstLS0tLS0t\n"
- "LS0tLS0tLQogZHJpdmVycy9od21vbi9qYzQyLmMgICAgICAgICAgIHwgICAxMyArLS0tLS0tLS0t\n"
- "LS0tCiBkcml2ZXJzL2h3bW9uL2xpbmVhZ2UtcGVtLmMgICAgfCAgIDEzICstLS0tLS0tLS0tLS0K\n"
- "IGRyaXZlcnMvaHdtb24vbG02My5jICAgICAgICAgICB8ICAgMTMgKy0tLS0tLS0tLS0tLQogZHJp\n"
- "dmVycy9od21vbi9sbTczLmMgICAgICAgICAgIHwgICAxNSArLS0tLS0tLS0tLS0tLS0KIGRyaXZl\n"
- "cnMvaHdtb24vbG03NS5jICAgICAgICAgICB8ICAgMTcgKy0tLS0tLS0tLS0tLS0tLS0KIGRyaXZl\n"
- "cnMvaHdtb24vbG03Ny5jICAgICAgICAgICB8ICAgMTMgKy0tLS0tLS0tLS0tLQogZHJpdmVycy9o\n"
- "d21vbi9sbTgwLmMgICAgICAgICAgIHwgICAxMyArLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2h3bW9u\n"
- "L2xtODMuYyAgICAgICAgICAgfCAgIDEzICstLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vbG04\n"
- "NS5jICAgICAgICAgICB8ICAgMTQgKy0tLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vbG04Ny5j\n"
- "ICAgICAgICAgICB8ICAgMTMgKy0tLS0tLS0tLS0tLQogZHJpdmVycy9od21vbi9sbTkwLmMgICAg\n"
- "ICAgICAgIHwgICAxMyArLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2h3bW9uL2xtOTIuYyAgICAgICAg\n"
- "ICAgfCAgIDEzICstLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vbG05My5jICAgICAgICAgICB8\n"
- "ICAgMTMgKy0tLS0tLS0tLS0tLQogZHJpdmVycy9od21vbi9sbTk1MjQxLmMgICAgICAgIHwgICAx\n"
- "MyArLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2h3bW9uL2xtOTUyNDUuYyAgICAgICAgfCAgIDEzICst\n"
- "LS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vbHRjNDE1MS5jICAgICAgICB8ICAgMTMgKy0tLS0t\n"
- "LS0tLS0tLQogZHJpdmVycy9od21vbi9sdGM0MjE1LmMgICAgICAgIHwgICAxMyArLS0tLS0tLS0t\n"
- "LS0tCiBkcml2ZXJzL2h3bW9uL2x0YzQyNDUuYyAgICAgICAgfCAgIDEzICstLS0tLS0tLS0tLS0K\n"
- "IGRyaXZlcnMvaHdtb24vbHRjNDI2MS5jICAgICAgICB8ICAgMTMgKy0tLS0tLS0tLS0tLQogZHJp\n"
- "dmVycy9od21vbi9tYXgxNjA2NS5jICAgICAgIHwgICAxMyArLS0tLS0tLS0tLS0tCiBkcml2ZXJz\n"
- "L2h3bW9uL21heDE2MTkuYyAgICAgICAgfCAgIDEzICstLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdt\n"
- "b24vbWF4MTY2OC5jICAgICAgICB8ICAgMTMgKy0tLS0tLS0tLS0tLQogZHJpdmVycy9od21vbi9t\n"
- "YXg2NjM5LmMgICAgICAgIHwgICAxMyArLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2h3bW9uL21heDY2\n"
- "NDIuYyAgICAgICAgfCAgIDEzICstLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vbWF4NjY1MC5j\n"
- "ICAgICAgICB8ICAgMTMgKy0tLS0tLS0tLS0tLQogZHJpdmVycy9od21vbi9wbWJ1cy9hZG0xMjc1\n"
- "LmMgIHwgICAxMiArLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vcG1idXMvbG0yNTA2Ni5jICB8\n"
- "ICAgMTIgKy0tLS0tLS0tLS0tCiBkcml2ZXJzL2h3bW9uL3BtYnVzL2x0YzI5NzguYyAgfCAgIDEy\n"
- "ICstLS0tLS0tLS0tLQogZHJpdmVycy9od21vbi9wbWJ1cy9tYXgxNjA2NC5jIHwgICAxMiArLS0t\n"
- "LS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vcG1idXMvbWF4MzQ0NDAuYyB8ICAgMTIgKy0tLS0tLS0t\n"
- "LS0tCiBkcml2ZXJzL2h3bW9uL3BtYnVzL21heDg2ODguYyAgfCAgIDEyICstLS0tLS0tLS0tLQog\n"
- "ZHJpdmVycy9od21vbi9wbWJ1cy9wbWJ1cy5jICAgIHwgICAxMiArLS0tLS0tLS0tLS0KIGRyaXZl\n"
- "cnMvaHdtb24vcG1idXMvdWNkOTAwMC5jICB8ICAgMTIgKy0tLS0tLS0tLS0tCiBkcml2ZXJzL2h3\n"
- "bW9uL3BtYnVzL3VjZDkyMDAuYyAgfCAgIDEyICstLS0tLS0tLS0tLQogZHJpdmVycy9od21vbi9w\n"
- "bWJ1cy96bDYxMDAuYyAgIHwgICAxMiArLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vc2h0MjEu\n"
- "YyAgICAgICAgICB8ICAgMjMgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24v\n"
- "c21tNjY1LmMgICAgICAgICB8ICAgMTMgKy0tLS0tLS0tLS0tLQogZHJpdmVycy9od21vbi9zbXNj\n"
- "NDdtMTkyLmMgICAgIHwgICAxMyArLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2h3bW9uL3RobWM1MC5j\n"
- "ICAgICAgICAgfCAgIDEzICstLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vdG1wMTAyLmMgICAg\n"
- "ICAgICB8ICAgMTIgKy0tLS0tLS0tLS0tCiBkcml2ZXJzL2h3bW9uL3RtcDQwMS5jICAgICAgICAg\n"
- "fCAgIDEzICstLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vdG1wNDIxLmMgICAgICAgICB8ICAg\n"
- "MTMgKy0tLS0tLS0tLS0tLQogZHJpdmVycy9od21vbi93ODM3OTFkLmMgICAgICAgIHwgICAxMyAr\n"
- "LS0tLS0tLS0tLS0tCiBkcml2ZXJzL2h3bW9uL3c4Mzc5MmQuYyAgICAgICAgfCAgIDE2ICstLS0t\n"
- "LS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vdzgzNzkzLmMgICAgICAgICB8ICAgMTMgKy0tLS0t\n"
- "LS0tLS0tLQogZHJpdmVycy9od21vbi93ODM3OTUuYyAgICAgICAgIHwgICAxMyArLS0tLS0tLS0t\n"
- "LS0tCiBkcml2ZXJzL2h3bW9uL3c4M2w3ODV0cy5jICAgICAgfCAgIDEzICstLS0tLS0tLS0tLS0K\n"
- "IGRyaXZlcnMvaHdtb24vdzgzbDc4Nm5nLmMgICAgICB8ICAgMTUgKy0tLS0tLS0tLS0tLS0tCiA3\n"
- "NCBmaWxlcyBjaGFuZ2VkLCA3NCBpbnNlcnRpb25zKCspLCA5MDkgZGVsZXRpb25zKC0pCgpkaWZm\n"
- "IC0tZ2l0IGEvZHJpdmVycy9od21vbi9hZDc0MTQuYyBiL2RyaXZlcnMvaHdtb24vYWQ3NDE0LmMK\n"
- "aW5kZXggZWRiZGI2ZC4uMzY0NjUwMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9hZDc0MTQu\n"
- "YworKysgYi9kcml2ZXJzL2h3bW9uL2FkNzQxNC5jCkBAIC0yNTYsMTcgKzI1Niw3IEBAIHN0YXRp\n"
- "YyBzdHJ1Y3QgaTJjX2RyaXZlciBhZDc0MTRfZHJpdmVyID0gewogCS5pZF90YWJsZSA9IGFkNzQx\n"
- "NF9pZCwKIH07CiAKLXN0YXRpYyBpbnQgX19pbml0IGFkNzQxNF9pbml0KHZvaWQpCi17Ci0JcmV0\n"
- "dXJuIGkyY19hZGRfZHJpdmVyKCZhZDc0MTRfZHJpdmVyKTsKLX0KLW1vZHVsZV9pbml0KGFkNzQx\n"
- "NF9pbml0KTsKLQotc3RhdGljIHZvaWQgX19leGl0IGFkNzQxNF9leGl0KHZvaWQpCi17Ci0JaTJj\n"
- "X2RlbF9kcml2ZXIoJmFkNzQxNF9kcml2ZXIpOwotfQotbW9kdWxlX2V4aXQoYWQ3NDE0X2V4aXQp\n"
- "OworbW9kdWxlX2kyY19kcml2ZXIoYWQ3NDE0X2RyaXZlcik7CiAKIE1PRFVMRV9BVVRIT1IoIlN0\n"
- "ZWZhbiBSb2VzZSA8c3IgYXQgZGVueC5kZT4sICIKIAkgICAgICAiRnJhbmsgRWRlbGhhZXVzZXIg\n"
- "PGZyYW5rLmVkZWxoYWV1c2VyIGF0IHNwYW5zaW9uLmNvbT4iKTsKZGlmZiAtLWdpdCBhL2RyaXZl\n"
- "cnMvaHdtb24vYWQ3NDE4LmMgYi9kcml2ZXJzL2h3bW9uL2FkNzQxOC5jCmluZGV4IDQyNDYxZDEu\n"
- "LmE1MGE2YmUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vYWQ3NDE4LmMKKysrIGIvZHJpdmVy\n"
- "cy9od21vbi9hZDc0MTguYwpAQCAtMjk1LDIwICsyOTUsOSBAQCBzdGF0aWMgaW50IGFkNzQxOF9y\n"
- "ZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGlj\n"
- "IGludCBfX2luaXQgYWQ3NDE4X2luaXQodm9pZCkKLXsKLQlyZXR1cm4gaTJjX2FkZF9kcml2ZXIo\n"
- "JmFkNzQxOF9kcml2ZXIpOwotfQotCi1zdGF0aWMgdm9pZCBfX2V4aXQgYWQ3NDE4X2V4aXQodm9p\n"
- "ZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmYWQ3NDE4X2RyaXZlcik7Ci19Cittb2R1bGVfaTJjX2Ry\n"
- "aXZlcihhZDc0MThfZHJpdmVyKTsKIAogTU9EVUxFX0FVVEhPUigiQWxlc3NhbmRybyBadW1tbyA8\n"
- "YS56dW1tb0B0b3dlcnRlY2guaXQ+Iik7CiBNT0RVTEVfREVTQ1JJUFRJT04oIkFENzQxNi8xNy8x\n"
- "OCBkcml2ZXIiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKIE1PRFVMRV9WRVJTSU9OKERSVl9W\n"
- "RVJTSU9OKTsKLQotbW9kdWxlX2luaXQoYWQ3NDE4X2luaXQpOwotbW9kdWxlX2V4aXQoYWQ3NDE4\n"
- "X2V4aXQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9hZG0xMDIxLmMgYi9kcml2ZXJzL2h3\n"
- "bW9uL2FkbTEwMjEuYwppbmRleCBlNmZjMDA2Li5lYzg0MzMxIDEwMDY0NAotLS0gYS9kcml2ZXJz\n"
- "L2h3bW9uL2FkbTEwMjEuYworKysgYi9kcml2ZXJzL2h3bW9uL2FkbTEwMjEuYwpAQCAtNDcxLDE1\n"
- "ICs0NzEsNyBAQCBzdGF0aWMgc3RydWN0IGFkbTEwMjFfZGF0YSAqYWRtMTAyMV91cGRhdGVfZGV2\n"
- "aWNlKHN0cnVjdCBkZXZpY2UgKmRldikKIAlyZXR1cm4gZGF0YTsKIH0KIAotc3RhdGljIGludCBf\n"
- "X2luaXQgc2Vuc29yc19hZG0xMDIxX2luaXQodm9pZCkKLXsKLQlyZXR1cm4gaTJjX2FkZF9kcml2\n"
- "ZXIoJmFkbTEwMjFfZHJpdmVyKTsKLX0KLQotc3RhdGljIHZvaWQgX19leGl0IHNlbnNvcnNfYWRt\n"
- "MTAyMV9leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2ZXIoJmFkbTEwMjFfZHJpdmVyKTsKLX0K\n"
- "K21vZHVsZV9pMmNfZHJpdmVyKGFkbTEwMjFfZHJpdmVyKTsKIAogTU9EVUxFX0FVVEhPUigiRnJv\n"
- "ZG8gTG9vaWphYXJkIDxmcm9kb2xAZGRzLm5sPiBhbmQgIgogCQkiUGhpbGlwIEVkZWxicm9jayA8\n"
- "cGhpbEBuZXRyb2VkZ2UuY29tPiIpOwpAQCAtNDg4LDYgKzQ4MCwzIEBAIE1PRFVMRV9MSUNFTlNF\n"
- "KCJHUEwiKTsKIAogbW9kdWxlX3BhcmFtKHJlYWRfb25seSwgYm9vbCwgMCk7CiBNT0RVTEVfUEFS\n"
- "TV9ERVNDKHJlYWRfb25seSwgIkRvbid0IHNldCBhbnkgdmFsdWVzLCByZWFkIG9ubHkgbW9kZSIp\n"
- "OwotCi1tb2R1bGVfaW5pdChzZW5zb3JzX2FkbTEwMjFfaW5pdCkKLW1vZHVsZV9leGl0KHNlbnNv\n"
- "cnNfYWRtMTAyMV9leGl0KQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9hZG0xMDI1LmMgYi9k\n"
- "cml2ZXJzL2h3bW9uL2FkbTEwMjUuYwppbmRleCAxNGQ4OTk3Li5lZmJjOWM5IDEwMDY0NAotLS0g\n"
- "YS9kcml2ZXJzL2h3bW9uL2FkbTEwMjUuYworKysgYi9kcml2ZXJzL2h3bW9uL2FkbTEwMjUuYwpA\n"
- "QCAtNjE4LDE5ICs2MTgsOCBAQCBzdGF0aWMgc3RydWN0IGFkbTEwMjVfZGF0YSAqYWRtMTAyNV91\n"
- "cGRhdGVfZGV2aWNlKHN0cnVjdCBkZXZpY2UgKmRldikKIAlyZXR1cm4gZGF0YTsKIH0KIAotc3Rh\n"
- "dGljIGludCBfX2luaXQgc2Vuc29yc19hZG0xMDI1X2luaXQodm9pZCkKLXsKLQlyZXR1cm4gaTJj\n"
- "X2FkZF9kcml2ZXIoJmFkbTEwMjVfZHJpdmVyKTsKLX0KLQotc3RhdGljIHZvaWQgX19leGl0IHNl\n"
- "bnNvcnNfYWRtMTAyNV9leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2ZXIoJmFkbTEwMjVfZHJp\n"
- "dmVyKTsKLX0KK21vZHVsZV9pMmNfZHJpdmVyKGFkbTEwMjVfZHJpdmVyKTsKIAogTU9EVUxFX0FV\n"
- "VEhPUigiSmVhbiBEZWx2YXJlIDxraGFsaUBsaW51eC1mci5vcmc+Iik7CiBNT0RVTEVfREVTQ1JJ\n"
- "UFRJT04oIkFETTEwMjUgZHJpdmVyIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7Ci0KLW1vZHVs\n"
- "ZV9pbml0KHNlbnNvcnNfYWRtMTAyNV9pbml0KTsKLW1vZHVsZV9leGl0KHNlbnNvcnNfYWRtMTAy\n"
- "NV9leGl0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vYWRtMTAyNi5jIGIvZHJpdmVycy9o\n"
- "d21vbi9hZG0xMDI2LmMKaW5kZXggY2Q3NzNjZS4uMWY0ZjVkZSAxMDA2NDQKLS0tIGEvZHJpdmVy\n"
- "cy9od21vbi9hZG0xMDI2LmMKKysrIGIvZHJpdmVycy9od21vbi9hZG0xMDI2LmMKQEAgLTE4ODEs\n"
- "MjAgKzE4ODEsOSBAQCBzdGF0aWMgaW50IGFkbTEwMjZfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50\n"
- "ICpjbGllbnQpCiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBpbnQgX19pbml0IHNtX2FkbTEwMjZf\n"
- "aW5pdCh2b2lkKQotewotCXJldHVybiBpMmNfYWRkX2RyaXZlcigmYWRtMTAyNl9kcml2ZXIpOwot\n"
- "fQotCi1zdGF0aWMgdm9pZCBfX2V4aXQgc21fYWRtMTAyNl9leGl0KHZvaWQpCi17Ci0JaTJjX2Rl\n"
- "bF9kcml2ZXIoJmFkbTEwMjZfZHJpdmVyKTsKLX0KK21vZHVsZV9pMmNfZHJpdmVyKGFkbTEwMjZf\n"
- "ZHJpdmVyKTsKIAogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwogTU9EVUxFX0FVVEhPUigiUGhpbGlw\n"
- "IFBva29ybnkgPHBwb2tvcm55QHBlbmd1aW5jb21wdXRpbmcuY29tPiwgIgogCSAgICAgICJKdXN0\n"
- "aW4gVGhpZXNzZW4gPGp0aGllc3NlbkBwZW5ndWluY29tcHV0aW5nLmNvbT4iKTsKIE1PRFVMRV9E\n"
- "RVNDUklQVElPTigiQURNMTAyNiBkcml2ZXIiKTsKLQotbW9kdWxlX2luaXQoc21fYWRtMTAyNl9p\n"
- "bml0KTsKLW1vZHVsZV9leGl0KHNtX2FkbTEwMjZfZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJz\n"
- "L2h3bW9uL2FkbTEwMjkuYyBiL2RyaXZlcnMvaHdtb24vYWRtMTAyOS5jCmluZGV4IGQ3ODljMzMu\n"
- "LmM2NTMxYTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vYWRtMTAyOS5jCisrKyBiL2RyaXZl\n"
- "cnMvaHdtb24vYWRtMTAyOS5jCkBAIC00NTAsMjQgKzQ1MCw4IEBAIHN0YXRpYyBzdHJ1Y3QgYWRt\n"
- "MTAyOV9kYXRhICphZG0xMDI5X3VwZGF0ZV9kZXZpY2Uoc3RydWN0IGRldmljZSAqZGV2KQogCXJl\n"
- "dHVybiBkYXRhOwogfQogCi0vKgotCUNvbW1vbiBtb2R1bGUgc3R1ZmYKLSovCi1zdGF0aWMgaW50\n"
- "IF9faW5pdCBzZW5zb3JzX2FkbTEwMjlfaW5pdCh2b2lkKQotewotCi0JcmV0dXJuIGkyY19hZGRf\n"
- "ZHJpdmVyKCZhZG0xMDI5X2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBzZW5zb3Jz\n"
- "X2FkbTEwMjlfZXhpdCh2b2lkKQotewotCi0JaTJjX2RlbF9kcml2ZXIoJmFkbTEwMjlfZHJpdmVy\n"
- "KTsKLX0KK21vZHVsZV9pMmNfZHJpdmVyKGFkbTEwMjlfZHJpdmVyKTsKIAogTU9EVUxFX0FVVEhP\n"
- "UigiQ29yZW50aW4gTEFCQkUgPGNvcmVudGluLmxhYmJlQGdlb21hdHlzLmZyPiIpOwogTU9EVUxF\n"
- "X0RFU0NSSVBUSU9OKCJhZG0xMDI5IGRyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCB2MiIp\n"
- "OwotCi1tb2R1bGVfaW5pdChzZW5zb3JzX2FkbTEwMjlfaW5pdCk7Ci1tb2R1bGVfZXhpdChzZW5z\n"
- "b3JzX2FkbTEwMjlfZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2FkbTEwMzEuYyBi\n"
- "L2RyaXZlcnMvaHdtb24vYWRtMTAzMS5jCmluZGV4IDk3ZTJjZmIuLjcxYjVlYzMgMTAwNjQ0Ci0t\n"
- "LSBhL2RyaXZlcnMvaHdtb24vYWRtMTAzMS5jCisrKyBiL2RyaXZlcnMvaHdtb24vYWRtMTAzMS5j\n"
- "CkBAIC0xMTMxLDE5ICsxMTMxLDggQEAgc3RhdGljIHN0cnVjdCBhZG0xMDMxX2RhdGEgKmFkbTEw\n"
- "MzFfdXBkYXRlX2RldmljZShzdHJ1Y3QgZGV2aWNlICpkZXYpCiAJcmV0dXJuIGRhdGE7CiB9CiAK\n"
- "LXN0YXRpYyBpbnQgX19pbml0IHNlbnNvcnNfYWRtMTAzMV9pbml0KHZvaWQpCi17Ci0JcmV0dXJu\n"
- "IGkyY19hZGRfZHJpdmVyKCZhZG0xMDMxX2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhp\n"
- "dCBzZW5zb3JzX2FkbTEwMzFfZXhpdCh2b2lkKQotewotCWkyY19kZWxfZHJpdmVyKCZhZG0xMDMx\n"
- "X2RyaXZlcik7Ci19Cittb2R1bGVfaTJjX2RyaXZlcihhZG0xMDMxX2RyaXZlcik7CiAKIE1PRFVM\n"
- "RV9BVVRIT1IoIkFsZXhhbmRyZSBkJ0FsdG9uIDxhbGV4QGFsZXhkYWx0b24ub3JnPiIpOwogTU9E\n"
- "VUxFX0RFU0NSSVBUSU9OKCJBRE0xMDMxL0FETTEwMzAgZHJpdmVyIik7CiBNT0RVTEVfTElDRU5T\n"
- "RSgiR1BMIik7Ci0KLW1vZHVsZV9pbml0KHNlbnNvcnNfYWRtMTAzMV9pbml0KTsKLW1vZHVsZV9l\n"
- "eGl0KHNlbnNvcnNfYWRtMTAzMV9leGl0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vYWRt\n"
- "OTI0MC5jIGIvZHJpdmVycy9od21vbi9hZG05MjQwLmMKaW5kZXggMmRlNDUxMS4uMzQwYjg0MiAx\n"
- "MDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9hZG05MjQwLmMKKysrIGIvZHJpdmVycy9od21vbi9h\n"
- "ZG05MjQwLmMKQEAgLTgyMSwyMSArODIxLDkgQEAgc3RhdGljIHN0cnVjdCBhZG05MjQwX2RhdGEg\n"
- "KmFkbTkyNDBfdXBkYXRlX2RldmljZShzdHJ1Y3QgZGV2aWNlICpkZXYpCiAJcmV0dXJuIGRhdGE7\n"
- "CiB9CiAKLXN0YXRpYyBpbnQgX19pbml0IHNlbnNvcnNfYWRtOTI0MF9pbml0KHZvaWQpCi17Ci0J\n"
- "cmV0dXJuIGkyY19hZGRfZHJpdmVyKCZhZG05MjQwX2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lk\n"
- "IF9fZXhpdCBzZW5zb3JzX2FkbTkyNDBfZXhpdCh2b2lkKQotewotCWkyY19kZWxfZHJpdmVyKCZh\n"
- "ZG05MjQwX2RyaXZlcik7Ci19Cittb2R1bGVfaTJjX2RyaXZlcihhZG05MjQwX2RyaXZlcik7CiAK\n"
- "IE1PRFVMRV9BVVRIT1IoIk1pY2hpZWwgUm9vayA8bWljaGllbEBncmVuZGVscHJvamVjdC5ubD4s\n"
- "ICIKIAkJIkdyYW50IENvYWR5IDxnY29hZHkubGtAZ21haWwuY29tPiBhbmQgb3RoZXJzIik7CiBN\n"
- "T0RVTEVfREVTQ1JJUFRJT04oIkFETTkyNDAvRFMxNzgwL0xNODEgZHJpdmVyIik7CiBNT0RVTEVf\n"
- "TElDRU5TRSgiR1BMIik7Ci0KLW1vZHVsZV9pbml0KHNlbnNvcnNfYWRtOTI0MF9pbml0KTsKLW1v\n"
- "ZHVsZV9leGl0KHNlbnNvcnNfYWRtOTI0MF9leGl0KTsKLQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9o\n"
- "d21vbi9hZHMxMDE1LmMgYi9kcml2ZXJzL2h3bW9uL2FkczEwMTUuYwppbmRleCBlZWRjYTNjLi42\n"
- "MGJlMzU4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2h3bW9uL2FkczEwMTUuYworKysgYi9kcml2ZXJz\n"
- "L2h3bW9uL2FkczEwMTUuYwpAQCAtMzA2LDE5ICszMDYsOCBAQCBzdGF0aWMgc3RydWN0IGkyY19k\n"
- "cml2ZXIgYWRzMTAxNV9kcml2ZXIgPSB7CiAJLmlkX3RhYmxlID0gYWRzMTAxNV9pZCwKIH07CiAK\n"
- "LXN0YXRpYyBpbnQgX19pbml0IHNlbnNvcnNfYWRzMTAxNV9pbml0KHZvaWQpCi17Ci0JcmV0dXJu\n"
- "IGkyY19hZGRfZHJpdmVyKCZhZHMxMDE1X2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhp\n"
- "dCBzZW5zb3JzX2FkczEwMTVfZXhpdCh2b2lkKQotewotCWkyY19kZWxfZHJpdmVyKCZhZHMxMDE1\n"
- "X2RyaXZlcik7Ci19Cittb2R1bGVfaTJjX2RyaXZlcihhZHMxMDE1X2RyaXZlcik7CiAKIE1PRFVM\n"
- "RV9BVVRIT1IoIkRpcmsgRWliYWNoIDxlaWJhY2hAZ2RzeXMuZGU+Iik7CiBNT0RVTEVfREVTQ1JJ\n"
- "UFRJT04oIkFEUzEwMTUgZHJpdmVyIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7Ci0KLW1vZHVs\n"
- "ZV9pbml0KHNlbnNvcnNfYWRzMTAxNV9pbml0KTsKLW1vZHVsZV9leGl0KHNlbnNvcnNfYWRzMTAx\n"
- "NV9leGl0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vYWR0NzQxMS5jIGIvZHJpdmVycy9o\n"
- "d21vbi9hZHQ3NDExLmMKaW5kZXggZmZlNjRmOC4uNzFiYWNjNSAxMDA2NDQKLS0tIGEvZHJpdmVy\n"
- "cy9od21vbi9hZHQ3NDExLmMKKysrIGIvZHJpdmVycy9od21vbi9hZHQ3NDExLmMKQEAgLTM0OCwx\n"
- "NyArMzQ4LDcgQEAgc3RhdGljIHN0cnVjdCBpMmNfZHJpdmVyIGFkdDc0MTFfZHJpdmVyID0gewog\n"
- "CS5jbGFzcyA9IEkyQ19DTEFTU19IV01PTiwKIH07CiAKLXN0YXRpYyBpbnQgX19pbml0IHNlbnNv\n"
- "cnNfYWR0NzQxMV9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZhZHQ3NDEx\n"
- "X2RyaXZlcik7Ci19Ci1tb2R1bGVfaW5pdChzZW5zb3JzX2FkdDc0MTFfaW5pdCkKLQotc3RhdGlj\n"
- "IHZvaWQgX19leGl0IHNlbnNvcnNfYWR0NzQxMV9leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2\n"
- "ZXIoJmFkdDc0MTFfZHJpdmVyKTsKLX0KLW1vZHVsZV9leGl0KHNlbnNvcnNfYWR0NzQxMV9leGl0\n"
- "KQorbW9kdWxlX2kyY19kcml2ZXIoYWR0NzQxMV9kcml2ZXIpOwogCiBNT0RVTEVfQVVUSE9SKCJT\n"
- "YXNjaGEgSGF1ZXIgPHMuaGF1ZXJAcGVuZ3V0cm9uaXguZGU+IGFuZCAiCiAJIldvbGZyYW0gU2Fu\n"
- "ZyA8dy5zYW5nQHBlbmd1dHJvbml4LmRlPiIpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9h\n"
- "ZHQ3NDYyLmMgYi9kcml2ZXJzL2h3bW9uL2FkdDc0NjIuYwppbmRleCAzZGYzMzFhLi5lNGIxY2M5\n"
- "IDEwMDY0NAotLS0gYS9kcml2ZXJzL2h3bW9uL2FkdDc0NjIuYworKysgYi9kcml2ZXJzL2h3bW9u\n"
- "L2FkdDc0NjIuYwpAQCAtMTk3NCwxOSArMTk3NCw4IEBAIHN0YXRpYyBpbnQgYWR0NzQ2Ml9yZW1v\n"
- "dmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGlu\n"
- "dCBfX2luaXQgYWR0NzQ2Ml9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZh\n"
- "ZHQ3NDYyX2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBhZHQ3NDYyX2V4aXQodm9p\n"
- "ZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmYWR0NzQ2Ml9kcml2ZXIpOwotfQorbW9kdWxlX2kyY19k\n"
- "cml2ZXIoYWR0NzQ2Ml9kcml2ZXIpOwogCiBNT0RVTEVfQVVUSE9SKCJEYXJyaWNrIEouIFdvbmcg\n"
- "PGRqd29uZ0B1cy5pYm0uY29tPiIpOwogTU9EVUxFX0RFU0NSSVBUSU9OKCJBRFQ3NDYyIGRyaXZl\n"
- "ciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwotCi1tb2R1bGVfaW5pdChhZHQ3NDYyX2luaXQp\n"
- "OwotbW9kdWxlX2V4aXQoYWR0NzQ2Ml9leGl0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24v\n"
- "YWR0NzQ3MC5jIGIvZHJpdmVycy9od21vbi9hZHQ3NDcwLmMKaW5kZXggYjIzZWZkOS4uNTRlYzg5\n"
- "MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9hZHQ3NDcwLmMKKysrIGIvZHJpdmVycy9od21v\n"
- "bi9hZHQ3NDcwLmMKQEAgLTEzMTcsMTkgKzEzMTcsOCBAQCBzdGF0aWMgaW50IGFkdDc0NzBfcmVt\n"
- "b3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBp\n"
- "bnQgX19pbml0IGFkdDc0NzBfaW5pdCh2b2lkKQotewotCXJldHVybiBpMmNfYWRkX2RyaXZlcigm\n"
- "YWR0NzQ3MF9kcml2ZXIpOwotfQotCi1zdGF0aWMgdm9pZCBfX2V4aXQgYWR0NzQ3MF9leGl0KHZv\n"
- "aWQpCi17Ci0JaTJjX2RlbF9kcml2ZXIoJmFkdDc0NzBfZHJpdmVyKTsKLX0KK21vZHVsZV9pMmNf\n"
- "ZHJpdmVyKGFkdDc0NzBfZHJpdmVyKTsKIAogTU9EVUxFX0FVVEhPUigiRGFycmljayBKLiBXb25n\n"
- "IDxkandvbmdAdXMuaWJtLmNvbT4iKTsKIE1PRFVMRV9ERVNDUklQVElPTigiQURUNzQ3MCBkcml2\n"
- "ZXIiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKLQotbW9kdWxlX2luaXQoYWR0NzQ3MF9pbml0\n"
- "KTsKLW1vZHVsZV9leGl0KGFkdDc0NzBfZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9u\n"
- "L2FkdDc0NzUuYyBiL2RyaXZlcnMvaHdtb24vYWR0NzQ3NS5jCmluZGV4IDcxZTlhYzQuLjUyMmNi\n"
- "NzYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vYWR0NzQ3NS5jCisrKyBiL2RyaXZlcnMvaHdt\n"
- "b24vYWR0NzQ3NS5jCkBAIC0xNjAwLDE5ICsxNjAwLDggQEAgc3RhdGljIHN0cnVjdCBhZHQ3NDc1\n"
- "X2RhdGEgKmFkdDc0NzVfdXBkYXRlX2RldmljZShzdHJ1Y3QgZGV2aWNlICpkZXYpCiAJcmV0dXJu\n"
- "IGRhdGE7CiB9CiAKLXN0YXRpYyBpbnQgX19pbml0IHNlbnNvcnNfYWR0NzQ3NV9pbml0KHZvaWQp\n"
- "Ci17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZhZHQ3NDc1X2RyaXZlcik7Ci19Ci0KLXN0YXRp\n"
- "YyB2b2lkIF9fZXhpdCBzZW5zb3JzX2FkdDc0NzVfZXhpdCh2b2lkKQotewotCWkyY19kZWxfZHJp\n"
- "dmVyKCZhZHQ3NDc1X2RyaXZlcik7Ci19Cittb2R1bGVfaTJjX2RyaXZlcihhZHQ3NDc1X2RyaXZl\n"
- "cik7CiAKIE1PRFVMRV9BVVRIT1IoIkFkdmFuY2VkIE1pY3JvIERldmljZXMsIEluYyIpOwogTU9E\n"
- "VUxFX0RFU0NSSVBUSU9OKCJhZHQ3NDc1IGRyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIp\n"
- "OwotCi1tb2R1bGVfaW5pdChzZW5zb3JzX2FkdDc0NzVfaW5pdCk7Ci1tb2R1bGVfZXhpdChzZW5z\n"
- "b3JzX2FkdDc0NzVfZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2FtYzY4MjEuYyBi\n"
- "L2RyaXZlcnMvaHdtb24vYW1jNjgyMS5jCmluZGV4IDRhNGJmZWYuLjUyOTg4NTUgMTAwNjQ0Ci0t\n"
- "LSBhL2RyaXZlcnMvaHdtb24vYW1jNjgyMS5jCisrKyBiL2RyaXZlcnMvaHdtb24vYW1jNjgyMS5j\n"
- "CkBAIC0xMDk1LDIwICsxMDk1LDcgQEAgc3RhdGljIHN0cnVjdCBhbWM2ODIxX2RhdGEgKmFtYzY4\n"
- "MjFfdXBkYXRlX2RldmljZShzdHJ1Y3QgZGV2aWNlICpkZXYpCiAJcmV0dXJuIGRhdGE7CiB9CiAK\n"
- "LQotc3RhdGljIGludCBfX2luaXQgYW1jNjgyMV9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19h\n"
- "ZGRfZHJpdmVyKCZhbWM2ODIxX2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBhbWM2\n"
- "ODIxX2V4aXQodm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmYW1jNjgyMV9kcml2ZXIpOwotfQot\n"
- "Ci1tb2R1bGVfaW5pdChhbWM2ODIxX2luaXQpOwotbW9kdWxlX2V4aXQoYW1jNjgyMV9leGl0KTsK\n"
- "LQorbW9kdWxlX2kyY19kcml2ZXIoYW1jNjgyMV9kcml2ZXIpOwogCiBNT0RVTEVfTElDRU5TRSgi\n"
- "R1BMIik7CiBNT0RVTEVfQVVUSE9SKCJULiBNZXJ0ZWxqIDx0b21hei5tZXJ0ZWxqQGd1ZXN0LmFy\n"
- "bmVzLnNpPiIpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9hc2IxMDAuYyBiL2RyaXZlcnMv\n"
- "aHdtb24vYXNiMTAwLmMKaW5kZXggYTVmMTY0Mi4uNTczZmZmNSAxMDA2NDQKLS0tIGEvZHJpdmVy\n"
- "cy9od21vbi9hc2IxMDAuYworKysgYi9kcml2ZXJzL2h3bW9uL2FzYjEwMC5jCkBAIC0xMDAyLDE5\n"
- "ICsxMDAyLDggQEAgc3RhdGljIHN0cnVjdCBhc2IxMDBfZGF0YSAqYXNiMTAwX3VwZGF0ZV9kZXZp\n"
- "Y2Uoc3RydWN0IGRldmljZSAqZGV2KQogCXJldHVybiBkYXRhOwogfQogCi1zdGF0aWMgaW50IF9f\n"
- "aW5pdCBhc2IxMDBfaW5pdCh2b2lkKQotewotCXJldHVybiBpMmNfYWRkX2RyaXZlcigmYXNiMTAw\n"
- "X2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBhc2IxMDBfZXhpdCh2b2lkKQotewot\n"
- "CWkyY19kZWxfZHJpdmVyKCZhc2IxMDBfZHJpdmVyKTsKLX0KK21vZHVsZV9pMmNfZHJpdmVyKGFz\n"
- "YjEwMF9kcml2ZXIpOwogCiBNT0RVTEVfQVVUSE9SKCJNYXJrIE0uIEhvZmZtYW4gPG1ob2ZmbWFu\n"
- "QGxpZ2h0bGluay5jb20+Iik7CiBNT0RVTEVfREVTQ1JJUFRJT04oIkFTQjEwMCBCYWNoIGRyaXZl\n"
- "ciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwotCi1tb2R1bGVfaW5pdChhc2IxMDBfaW5pdCk7\n"
- "Ci1tb2R1bGVfZXhpdChhc2IxMDBfZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2F0\n"
- "eHAxLmMgYi9kcml2ZXJzL2h3bW9uL2F0eHAxLmMKaW5kZXggZDRhNTg5Yi4uNWE2NzFjYSAxMDA2\n"
- "NDQKLS0tIGEvZHJpdmVycy9od21vbi9hdHhwMS5jCisrKyBiL2RyaXZlcnMvaHdtb24vYXR4cDEu\n"
- "YwpAQCAtMzkwLDE1ICszOTAsNCBAQCBzdGF0aWMgaW50IGF0eHAxX3JlbW92ZShzdHJ1Y3QgaTJj\n"
- "X2NsaWVudCAqY2xpZW50KQogCXJldHVybiAwOwogfTsKIAotc3RhdGljIGludCBfX2luaXQgYXR4\n"
- "cDFfaW5pdCh2b2lkKQotewotCXJldHVybiBpMmNfYWRkX2RyaXZlcigmYXR4cDFfZHJpdmVyKTsK\n"
- "LX07Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBhdHhwMV9leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9k\n"
- "cml2ZXIoJmF0eHAxX2RyaXZlcik7Ci19OwotCi1tb2R1bGVfaW5pdChhdHhwMV9pbml0KTsKLW1v\n"
- "ZHVsZV9leGl0KGF0eHAxX2V4aXQpOworbW9kdWxlX2kyY19kcml2ZXIoYXR4cDFfZHJpdmVyKTsK\n"
- "ZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vZHMxNjIxLmMgYi9kcml2ZXJzL2h3bW9uL2RzMTYy\n"
- "MS5jCmluZGV4IGUyM2E4YWIuLjVkYzU0ODkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vZHMx\n"
- "NjIxLmMKKysrIGIvZHJpdmVycy9od21vbi9kczE2MjEuYwpAQCAtMzExLDIwICszMTEsOCBAQCBz\n"
- "dGF0aWMgc3RydWN0IGkyY19kcml2ZXIgZHMxNjIxX2RyaXZlciA9IHsKIAkuYWRkcmVzc19saXN0\n"
- "CT0gbm9ybWFsX2kyYywKIH07CiAKLXN0YXRpYyBpbnQgX19pbml0IGRzMTYyMV9pbml0KHZvaWQp\n"
- "Ci17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZkczE2MjFfZHJpdmVyKTsKLX0KLQotc3RhdGlj\n"
- "IHZvaWQgX19leGl0IGRzMTYyMV9leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2ZXIoJmRzMTYy\n"
- "MV9kcml2ZXIpOwotfQotCittb2R1bGVfaTJjX2RyaXZlcihkczE2MjFfZHJpdmVyKTsKIAogTU9E\n"
- "VUxFX0FVVEhPUigiQ2hyaXN0aWFuIFcuIFp1Y2tzY2h3ZXJkdCA8emFueUB0cmlxLm5ldD4iKTsK\n"
- "IE1PRFVMRV9ERVNDUklQVElPTigiRFMxNjIxIGRyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQ\n"
- "TCIpOwotCi1tb2R1bGVfaW5pdChkczE2MjFfaW5pdCk7Ci1tb2R1bGVfZXhpdChkczE2MjFfZXhp\n"
- "dCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2RzNjIwLmMgYi9kcml2ZXJzL2h3bW9uL2Rz\n"
- "NjIwLmMKaW5kZXggMzAwYzNkNC4uNTA2NjNlZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9k\n"
- "czYyMC5jCisrKyBiL2RyaXZlcnMvaHdtb24vZHM2MjAuYwpAQCAtMjk3LDE5ICsyOTcsOCBAQCBz\n"
- "dGF0aWMgc3RydWN0IGkyY19kcml2ZXIgZHM2MjBfZHJpdmVyID0gewogCS5pZF90YWJsZSA9IGRz\n"
- "NjIwX2lkLAogfTsKIAotc3RhdGljIGludCBfX2luaXQgZHM2MjBfaW5pdCh2b2lkKQotewotCXJl\n"
- "dHVybiBpMmNfYWRkX2RyaXZlcigmZHM2MjBfZHJpdmVyKTsKLX0KLQotc3RhdGljIHZvaWQgX19l\n"
- "eGl0IGRzNjIwX2V4aXQodm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmZHM2MjBfZHJpdmVyKTsK\n"
- "LX0KK21vZHVsZV9pMmNfZHJpdmVyKGRzNjIwX2RyaXZlcik7CiAKIE1PRFVMRV9BVVRIT1IoIlJv\n"
- "bGFuZCBTdGlnZ2UgPHN0aWdnZUBhbnRjb20uZGU+Iik7CiBNT0RVTEVfREVTQ1JJUFRJT04oIkRT\n"
- "NjIwIGRyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwotCi1tb2R1bGVfaW5pdChkczYy\n"
- "MF9pbml0KTsKLW1vZHVsZV9leGl0KGRzNjIwX2V4aXQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9o\n"
- "d21vbi9lbWMxNDAzLmMgYi9kcml2ZXJzL2h3bW9uL2VtYzE0MDMuYwppbmRleCAyNzBmZmFiLi45\n"
- "OWFjMTQxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2h3bW9uL2VtYzE0MDMuYworKysgYi9kcml2ZXJz\n"
- "L2h3bW9uL2VtYzE0MDMuYwpAQCAtMzY2LDE4ICszNjYsNyBAQCBzdGF0aWMgc3RydWN0IGkyY19k\n"
- "cml2ZXIgc2Vuc29yX2VtYzE0MDMgPSB7CiAJLmFkZHJlc3NfbGlzdCA9IGVtYzE0MDNfYWRkcmVz\n"
- "c19saXN0LAogfTsKIAotc3RhdGljIGludCBfX2luaXQgc2Vuc29yX2VtYzE0MDNfaW5pdCh2b2lk\n"
- "KQotewotCXJldHVybiBpMmNfYWRkX2RyaXZlcigmc2Vuc29yX2VtYzE0MDMpOwotfQotCi1zdGF0\n"
- "aWMgdm9pZCAgX19leGl0IHNlbnNvcl9lbWMxNDAzX2V4aXQodm9pZCkKLXsKLQlpMmNfZGVsX2Ry\n"
- "aXZlcigmc2Vuc29yX2VtYzE0MDMpOwotfQotCi1tb2R1bGVfaW5pdChzZW5zb3JfZW1jMTQwM19p\n"
- "bml0KTsKLW1vZHVsZV9leGl0KHNlbnNvcl9lbWMxNDAzX2V4aXQpOworbW9kdWxlX2kyY19kcml2\n"
- "ZXIoc2Vuc29yX2VtYzE0MDMpOwogCiBNT0RVTEVfQVVUSE9SKCJLYWxoYW4gVHJpc2FsIDxrYWxo\n"
- "YW4udHJpc2FsQGludGVsLmNvbSIpOwogTU9EVUxFX0RFU0NSSVBUSU9OKCJlbWMxNDAzIFRoZXJt\n"
- "YWwgRHJpdmVyIik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2VtYzIxMDMuYyBiL2RyaXZl\n"
- "cnMvaHdtb24vZW1jMjEwMy5jCmluZGV4IDg2NTA2MzkuLjBmNTEzODIgMTAwNjQ0Ci0tLSBhL2Ry\n"
- "aXZlcnMvaHdtb24vZW1jMjEwMy5jCisrKyBiL2RyaXZlcnMvaHdtb24vZW1jMjEwMy5jCkBAIC03\n"
- "MjIsMTkgKzcyMiw4IEBAIHN0YXRpYyBzdHJ1Y3QgaTJjX2RyaXZlciBlbWMyMTAzX2RyaXZlciA9\n"
- "IHsKIAkuYWRkcmVzc19saXN0CT0gbm9ybWFsX2kyYywKIH07CiAKLXN0YXRpYyBpbnQgX19pbml0\n"
- "IHNlbnNvcnNfZW1jMjEwM19pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZl\n"
- "bWMyMTAzX2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBzZW5zb3JzX2VtYzIxMDNf\n"
- "ZXhpdCh2b2lkKQotewotCWkyY19kZWxfZHJpdmVyKCZlbWMyMTAzX2RyaXZlcik7Ci19Cittb2R1\n"
- "bGVfaTJjX2RyaXZlcihlbWMyMTAzX2RyaXZlcik7CiAKIE1PRFVMRV9BVVRIT1IoIlN0ZXZlIEds\n"
- "ZW5kaW5uaW5nIDxzdGV2ZS5nbGVuZGlubmluZ0BzbXNjLmNvbT4iKTsKIE1PRFVMRV9ERVNDUklQ\n"
- "VElPTigiU01TQyBFTUMyMTAzIGh3bW9uIGRyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIp\n"
- "OwotCi1tb2R1bGVfaW5pdChzZW5zb3JzX2VtYzIxMDNfaW5pdCk7Ci1tb2R1bGVfZXhpdChzZW5z\n"
- "b3JzX2VtYzIxMDNfZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2VtYzZ3MjAxLmMg\n"
- "Yi9kcml2ZXJzL2h3bW9uL2VtYzZ3MjAxLmMKaW5kZXggNmViYjliNy4uODQwZjUxMSAxMDA2NDQK\n"
- "LS0tIGEvZHJpdmVycy9od21vbi9lbWM2dzIwMS5jCisrKyBiL2RyaXZlcnMvaHdtb24vZW1jNncy\n"
- "MDEuYwpAQCAtNTUyLDE3ICs1NTIsNyBAQCBzdGF0aWMgc3RydWN0IGkyY19kcml2ZXIgZW1jNncy\n"
- "MDFfZHJpdmVyID0gewogCS5hZGRyZXNzX2xpc3QJPSBub3JtYWxfaTJjLAogfTsKIAotc3RhdGlj\n"
- "IGludCBfX2luaXQgc2Vuc29yc19lbWM2dzIwMV9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19h\n"
- "ZGRfZHJpdmVyKCZlbWM2dzIwMV9kcml2ZXIpOwotfQotbW9kdWxlX2luaXQoc2Vuc29yc19lbWM2\n"
- "dzIwMV9pbml0KTsKLQotc3RhdGljIHZvaWQgX19leGl0IHNlbnNvcnNfZW1jNncyMDFfZXhpdCh2\n"
- "b2lkKQotewotCWkyY19kZWxfZHJpdmVyKCZlbWM2dzIwMV9kcml2ZXIpOwotfQotbW9kdWxlX2V4\n"
- "aXQoc2Vuc29yc19lbWM2dzIwMV9leGl0KTsKK21vZHVsZV9pMmNfZHJpdmVyKGVtYzZ3MjAxX2Ry\n"
- "aXZlcik7CiAKIE1PRFVMRV9BVVRIT1IoIkplYW4gRGVsdmFyZSA8a2hhbGlAbGludXgtZnIub3Jn\n"
- "PiIpOwogTU9EVUxFX0RFU0NSSVBUSU9OKCJTTVNDIEVNQzZXMjAxIGhhcmR3YXJlIG1vbml0b3Jp\n"
- "bmcgZHJpdmVyIik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2Y3NTM3NXMuYyBiL2RyaXZl\n"
- "cnMvaHdtb24vZjc1Mzc1cy5jCmluZGV4IGVlZGY1NzQuLjM5OGRiYzggMTAwNjQ0Ci0tLSBhL2Ry\n"
- "aXZlcnMvaHdtb24vZjc1Mzc1cy5jCisrKyBiL2RyaXZlcnMvaHdtb24vZjc1Mzc1cy5jCkBAIC04\n"
- "NTgsMTkgKzg1OCw4IEBAIHN0YXRpYyBpbnQgZjc1Mzc1X2RldGVjdChzdHJ1Y3QgaTJjX2NsaWVu\n"
- "dCAqY2xpZW50LAogCXJldHVybiAwOwogfQogCi1zdGF0aWMgaW50IF9faW5pdCBzZW5zb3JzX2Y3\n"
- "NTM3NV9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZmNzUzNzVfZHJpdmVy\n"
- "KTsKLX0KLQotc3RhdGljIHZvaWQgX19leGl0IHNlbnNvcnNfZjc1Mzc1X2V4aXQodm9pZCkKLXsK\n"
- "LQlpMmNfZGVsX2RyaXZlcigmZjc1Mzc1X2RyaXZlcik7Ci19Cittb2R1bGVfaTJjX2RyaXZlcihm\n"
- "NzUzNzVfZHJpdmVyKTsKIAogTU9EVUxFX0FVVEhPUigiUmlrdSBWb2lwaW8iKTsKIE1PRFVMRV9M\n"
- "SUNFTlNFKCJHUEwiKTsKIE1PRFVMRV9ERVNDUklQVElPTigiRjc1MzczL0Y3NTM3NS9GNzUzODcg\n"
- "aGFyZHdhcmUgbW9uaXRvcmluZyBkcml2ZXIiKTsKLQotbW9kdWxlX2luaXQoc2Vuc29yc19mNzUz\n"
- "NzVfaW5pdCk7Ci1tb2R1bGVfZXhpdChzZW5zb3JzX2Y3NTM3NV9leGl0KTsKZGlmZiAtLWdpdCBh\n"
- "L2RyaXZlcnMvaHdtb24vZnNjaG1kLmMgYi9kcml2ZXJzL2h3bW9uL2ZzY2htZC5jCmluZGV4IDA2\n"
- "Y2JmNzcuLjM1ZGRmNmQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vZnNjaG1kLmMKKysrIGIv\n"
- "ZHJpdmVycy9od21vbi9mc2NobWQuYwpAQCAtMTM0MSwyMCArMTM0MSw5IEBAIHN0YXRpYyBzdHJ1\n"
- "Y3QgZnNjaG1kX2RhdGEgKmZzY2htZF91cGRhdGVfZGV2aWNlKHN0cnVjdCBkZXZpY2UgKmRldikK\n"
- "IAlyZXR1cm4gZGF0YTsKIH0KIAotc3RhdGljIGludCBfX2luaXQgZnNjaG1kX2luaXQodm9pZCkK\n"
- "LXsKLQlyZXR1cm4gaTJjX2FkZF9kcml2ZXIoJmZzY2htZF9kcml2ZXIpOwotfQotCi1zdGF0aWMg\n"
- "dm9pZCBfX2V4aXQgZnNjaG1kX2V4aXQodm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmZnNjaG1k\n"
- "X2RyaXZlcik7Ci19Cittb2R1bGVfaTJjX2RyaXZlcihmc2NobWRfZHJpdmVyKTsKIAogTU9EVUxF\n"
- "X0FVVEhPUigiSGFucyBkZSBHb2VkZSA8aGRlZ29lZGVAcmVkaGF0LmNvbT4iKTsKIE1PRFVMRV9E\n"
- "RVNDUklQVElPTigiRlNDIFBvc2VpZG9uLCBIZXJtZXMsIFNjeWxsYSwgSGVyYWNsZXMsIEhlaW1k\n"
- "YWxsLCBIYWRlcyAiCiAJCQkiYW5kIFN5bGV1cyBkcml2ZXIiKTsKIE1PRFVMRV9MSUNFTlNFKCJH\n"
- "UEwiKTsKLQotbW9kdWxlX2luaXQoZnNjaG1kX2luaXQpOwotbW9kdWxlX2V4aXQoZnNjaG1kX2V4\n"
- "aXQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9nNzYwYS5jIGIvZHJpdmVycy9od21vbi9n\n"
- "NzYwYS5jCmluZGV4IDgxYjZlMzUuLjA1MmUzMDQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24v\n"
- "Zzc2MGEuYworKysgYi9kcml2ZXJzL2h3bW9uL2c3NjBhLmMKQEAgLTI1MCwyMSArMjUwLDggQEAg\n"
- "c3RhdGljIGludCBnNzYwYV9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKIAlyZXR1\n"
- "cm4gMDsKIH0KIAotLyogbW9kdWxlIG1hbmFnZW1lbnQgKi8KLQotc3RhdGljIGludCBfX2luaXQg\n"
- "Zzc2MGFfaW5pdCh2b2lkKQotewotCXJldHVybiBpMmNfYWRkX2RyaXZlcigmZzc2MGFfZHJpdmVy\n"
- "KTsKLX0KLQotc3RhdGljIHZvaWQgX19leGl0IGc3NjBhX2V4aXQodm9pZCkKLXsKLQlpMmNfZGVs\n"
- "X2RyaXZlcigmZzc2MGFfZHJpdmVyKTsKLX0KK21vZHVsZV9pMmNfZHJpdmVyKGc3NjBhX2RyaXZl\n"
- "cik7CiAKIE1PRFVMRV9BVVRIT1IoIkhlcmJlcnQgVmFsZXJpbyBSaWVkZWwgPGh2ckBnbnUub3Jn\n"
- "PiIpOwogTU9EVUxFX0RFU0NSSVBUSU9OKCJHTVQgRzc2MEEgZHJpdmVyIik7CiBNT0RVTEVfTElD\n"
- "RU5TRSgiR1BMIik7Ci0KLW1vZHVsZV9pbml0KGc3NjBhX2luaXQpOwotbW9kdWxlX2V4aXQoZzc2\n"
- "MGFfZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2dsNTE4c20uYyBiL2RyaXZlcnMv\n"
- "aHdtb24vZ2w1MThzbS5jCmluZGV4IDhkMGY3MWQuLmFlMTkzZjAgMTAwNjQ0Ci0tLSBhL2RyaXZl\n"
- "cnMvaHdtb24vZ2w1MThzbS5jCisrKyBiL2RyaXZlcnMvaHdtb24vZ2w1MThzbS5jCkBAIC03MTAs\n"
- "MjEgKzcxMCwxMCBAQCBzdGF0aWMgc3RydWN0IGdsNTE4X2RhdGEgKmdsNTE4X3VwZGF0ZV9kZXZp\n"
- "Y2Uoc3RydWN0IGRldmljZSAqZGV2KQogCXJldHVybiBkYXRhOwogfQogCi1zdGF0aWMgaW50IF9f\n"
- "aW5pdCBzZW5zb3JzX2dsNTE4c21faW5pdCh2b2lkKQotewotCXJldHVybiBpMmNfYWRkX2RyaXZl\n"
- "cigmZ2w1MThfZHJpdmVyKTsKLX0KLQotc3RhdGljIHZvaWQgX19leGl0IHNlbnNvcnNfZ2w1MThz\n"
- "bV9leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2ZXIoJmdsNTE4X2RyaXZlcik7Ci19Cittb2R1\n"
- "bGVfaTJjX2RyaXZlcihnbDUxOF9kcml2ZXIpOwogCiBNT0RVTEVfQVVUSE9SKCJGcm9kbyBMb29p\n"
- "amFhcmQgPGZyb2RvbEBkZHMubmw+LCAiCiAJIkt5b3N0aSBNYWxra2kgPGttYWxra2lAY2MuaHV0\n"
- "LmZpPiBhbmQgIgogCSJIb25nLUd1bm4gQ2hldyA8aGdsaW51eEBndW5uZXQub3JnPiIpOwogTU9E\n"
- "VUxFX0RFU0NSSVBUSU9OKCJHTDUxOFNNIGRyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIp\n"
- "OwotCi1tb2R1bGVfaW5pdChzZW5zb3JzX2dsNTE4c21faW5pdCk7Ci1tb2R1bGVfZXhpdChzZW5z\n"
- "b3JzX2dsNTE4c21fZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2dsNTIwc20uYyBi\n"
- "L2RyaXZlcnMvaHdtb24vZ2w1MjBzbS5jCmluZGV4IDE5MDkwOTcuLjUyZGFkYjIgMTAwNjQ0Ci0t\n"
- "LSBhL2RyaXZlcnMvaHdtb24vZ2w1MjBzbS5jCisrKyBiL2RyaXZlcnMvaHdtb24vZ2w1MjBzbS5j\n"
- "CkBAIC05NzksMjMgKzk3OSwxMCBAQCBzdGF0aWMgc3RydWN0IGdsNTIwX2RhdGEgKmdsNTIwX3Vw\n"
- "ZGF0ZV9kZXZpY2Uoc3RydWN0IGRldmljZSAqZGV2KQogCXJldHVybiBkYXRhOwogfQogCi0KLXN0\n"
- "YXRpYyBpbnQgX19pbml0IHNlbnNvcnNfZ2w1MjBzbV9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGky\n"
- "Y19hZGRfZHJpdmVyKCZnbDUyMF9kcml2ZXIpOwotfQotCi1zdGF0aWMgdm9pZCBfX2V4aXQgc2Vu\n"
- "c29yc19nbDUyMHNtX2V4aXQodm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmZ2w1MjBfZHJpdmVy\n"
- "KTsKLX0KLQorbW9kdWxlX2kyY19kcml2ZXIoZ2w1MjBfZHJpdmVyKTsKIAogTU9EVUxFX0FVVEhP\n"
- "UigiRnJvZG8gTG9vaWphYXJkIDxmcm9kb2xAZGRzLm5sPiwgIgogCSJLecO2c3RpIE3DpGxra2kg\n"
- "PGttYWxra2lAY2MuaHV0LmZpPiwgIgogCSJNYWFydGVuIERlcHJleiA8bWFhcnRlbmRlcHJlekB1\n"
- "c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Iik7CiBNT0RVTEVfREVTQ1JJUFRJT04oIkdMNTIwU00gZHJp\n"
- "dmVyIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7Ci0KLW1vZHVsZV9pbml0KHNlbnNvcnNfZ2w1\n"
- "MjBzbV9pbml0KTsKLW1vZHVsZV9leGl0KHNlbnNvcnNfZ2w1MjBzbV9leGl0KTsKZGlmZiAtLWdp\n"
- "dCBhL2RyaXZlcnMvaHdtb24vamM0Mi5jIGIvZHJpdmVycy9od21vbi9qYzQyLmMKaW5kZXggMjhj\n"
- "MDllZS4uMzA4MzQ2YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9qYzQyLmMKKysrIGIvZHJp\n"
- "dmVycy9od21vbi9qYzQyLmMKQEAgLTU4OCwxOSArNTg4LDggQEAgYWJvcnQ6CiAJcmV0dXJuIHJl\n"
- "dDsKIH0KIAotc3RhdGljIGludCBfX2luaXQgc2Vuc29yc19qYzQyX2luaXQodm9pZCkKLXsKLQly\n"
- "ZXR1cm4gaTJjX2FkZF9kcml2ZXIoJmpjNDJfZHJpdmVyKTsKLX0KLQotc3RhdGljIHZvaWQgX19l\n"
- "eGl0IHNlbnNvcnNfamM0Ml9leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2ZXIoJmpjNDJfZHJp\n"
- "dmVyKTsKLX0KK21vZHVsZV9pMmNfZHJpdmVyKGpjNDJfZHJpdmVyKTsKIAogTU9EVUxFX0FVVEhP\n"
- "UigiR3VlbnRlciBSb2VjayA8Z3VlbnRlci5yb2Vja0Blcmljc3Nvbi5jb20+Iik7CiBNT0RVTEVf\n"
- "REVTQ1JJUFRJT04oIkpDNDIgZHJpdmVyIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7Ci0KLW1v\n"
- "ZHVsZV9pbml0KHNlbnNvcnNfamM0Ml9pbml0KTsKLW1vZHVsZV9leGl0KHNlbnNvcnNfamM0Ml9l\n"
- "eGl0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vbGluZWFnZS1wZW0uYyBiL2RyaXZlcnMv\n"
- "aHdtb24vbGluZWFnZS1wZW0uYwppbmRleCA1OGVkZWQyLi41YjhjOWFlIDEwMDY0NAotLS0gYS9k\n"
- "cml2ZXJzL2h3bW9uL2xpbmVhZ2UtcGVtLmMKKysrIGIvZHJpdmVycy9od21vbi9saW5lYWdlLXBl\n"
- "bS5jCkBAIC01NjgsMTkgKzU2OCw4IEBAIHN0YXRpYyBzdHJ1Y3QgaTJjX2RyaXZlciBwZW1fZHJp\n"
- "dmVyID0gewogCS5pZF90YWJsZSA9IHBlbV9pZCwKIH07CiAKLXN0YXRpYyBpbnQgX19pbml0IHBl\n"
- "bV9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZwZW1fZHJpdmVyKTsKLX0K\n"
- "LQotc3RhdGljIHZvaWQgX19leGl0IHBlbV9leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2ZXIo\n"
- "JnBlbV9kcml2ZXIpOwotfQorbW9kdWxlX2kyY19kcml2ZXIocGVtX2RyaXZlcik7CiAKIE1PRFVM\n"
- "RV9BVVRIT1IoIkd1ZW50ZXIgUm9lY2sgPGd1ZW50ZXIucm9lY2tAZXJpY3Nzb24uY29tPiIpOwog\n"
- "TU9EVUxFX0RFU0NSSVBUSU9OKCJMaW5lYWdlIENQTCBQRU0gaGFyZHdhcmUgbW9uaXRvcmluZyBk\n"
- "cml2ZXIiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKLQotbW9kdWxlX2luaXQocGVtX2luaXQp\n"
- "OwotbW9kdWxlX2V4aXQocGVtX2V4aXQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9sbTYz\n"
- "LmMgYi9kcml2ZXJzL2h3bW9uL2xtNjMuYwppbmRleCA1ZTY0NTdhLi4xNWMwNWNjIDEwMDY0NAot\n"
- "LS0gYS9kcml2ZXJzL2h3bW9uL2xtNjMuYworKysgYi9kcml2ZXJzL2h3bW9uL2xtNjMuYwpAQCAt\n"
- "MTExOSwxOSArMTExOSw4IEBAIHN0YXRpYyBzdHJ1Y3QgbG02M19kYXRhICpsbTYzX3VwZGF0ZV9k\n"
- "ZXZpY2Uoc3RydWN0IGRldmljZSAqZGV2KQogCXJldHVybiBkYXRhOwogfQogCi1zdGF0aWMgaW50\n"
- "IF9faW5pdCBzZW5zb3JzX2xtNjNfaW5pdCh2b2lkKQotewotCXJldHVybiBpMmNfYWRkX2RyaXZl\n"
- "cigmbG02M19kcml2ZXIpOwotfQotCi1zdGF0aWMgdm9pZCBfX2V4aXQgc2Vuc29yc19sbTYzX2V4\n"
- "aXQodm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmbG02M19kcml2ZXIpOwotfQorbW9kdWxlX2ky\n"
- "Y19kcml2ZXIobG02M19kcml2ZXIpOwogCiBNT0RVTEVfQVVUSE9SKCJKZWFuIERlbHZhcmUgPGto\n"
- "YWxpQGxpbnV4LWZyLm9yZz4iKTsKIE1PRFVMRV9ERVNDUklQVElPTigiTE02MyBkcml2ZXIiKTsK\n"
- "IE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKLQotbW9kdWxlX2luaXQoc2Vuc29yc19sbTYzX2luaXQp\n"
- "OwotbW9kdWxlX2V4aXQoc2Vuc29yc19sbTYzX2V4aXQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9o\n"
- "d21vbi9sbTczLmMgYi9kcml2ZXJzL2h3bW9uL2xtNzMuYwppbmRleCA5YzgwOTNjLi44ZmEyNjMy\n"
- "IDEwMDY0NAotLS0gYS9kcml2ZXJzL2h3bW9uL2xtNzMuYworKysgYi9kcml2ZXJzL2h3bW9uL2xt\n"
- "NzMuYwpAQCAtMTk0LDIxICsxOTQsOCBAQCBzdGF0aWMgc3RydWN0IGkyY19kcml2ZXIgbG03M19k\n"
- "cml2ZXIgPSB7CiAJLmFkZHJlc3NfbGlzdAk9IG5vcm1hbF9pMmMsCiB9OwogCi0vKiBtb2R1bGUg\n"
- "Z2x1ZSAqLwotCi1zdGF0aWMgaW50IF9faW5pdCBzZW5zb3JzX2xtNzNfaW5pdCh2b2lkKQotewot\n"
- "CXJldHVybiBpMmNfYWRkX2RyaXZlcigmbG03M19kcml2ZXIpOwotfQotCi1zdGF0aWMgdm9pZCBf\n"
- "X2V4aXQgc2Vuc29yc19sbTczX2V4aXQodm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmbG03M19k\n"
- "cml2ZXIpOwotfQorbW9kdWxlX2kyY19kcml2ZXIobG03M19kcml2ZXIpOwogCiBNT0RVTEVfQVVU\n"
- "SE9SKCJHdWlsbGF1bWUgTGlnbmV1bCA8Z3VpbGxhdW1lLmxpZ25ldWxAZ21haWwuY29tPiIpOwog\n"
- "TU9EVUxFX0RFU0NSSVBUSU9OKCJMTTczIGRyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIp\n"
- "OwotCi1tb2R1bGVfaW5pdChzZW5zb3JzX2xtNzNfaW5pdCk7Ci1tb2R1bGVfZXhpdChzZW5zb3Jz\n"
- "X2xtNzNfZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2xtNzUuYyBiL2RyaXZlcnMv\n"
- "aHdtb24vbG03NS5jCmluZGV4IGIzMzExYjEuLmE4M2YyMDYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv\n"
- "aHdtb24vbG03NS5jCisrKyBiL2RyaXZlcnMvaHdtb24vbG03NS5jCkBAIC00MzgsMjMgKzQzOCw4\n"
- "IEBAIGFib3J0OgogCXJldHVybiByZXQ7CiB9CiAKLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t\n"
- "LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotCi0vKiBt\n"
- "b2R1bGUgZ2x1ZSAqLwotCi1zdGF0aWMgaW50IF9faW5pdCBzZW5zb3JzX2xtNzVfaW5pdCh2b2lk\n"
- "KQotewotCXJldHVybiBpMmNfYWRkX2RyaXZlcigmbG03NV9kcml2ZXIpOwotfQotCi1zdGF0aWMg\n"
- "dm9pZCBfX2V4aXQgc2Vuc29yc19sbTc1X2V4aXQodm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigm\n"
- "bG03NV9kcml2ZXIpOwotfQorbW9kdWxlX2kyY19kcml2ZXIobG03NV9kcml2ZXIpOwogCiBNT0RV\n"
- "TEVfQVVUSE9SKCJGcm9kbyBMb29pamFhcmQgPGZyb2RvbEBkZHMubmw+Iik7CiBNT0RVTEVfREVT\n"
- "Q1JJUFRJT04oIkxNNzUgZHJpdmVyIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7Ci0KLW1vZHVs\n"
- "ZV9pbml0KHNlbnNvcnNfbG03NV9pbml0KTsKLW1vZHVsZV9leGl0KHNlbnNvcnNfbG03NV9leGl0\n"
- "KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vbG03Ny5jIGIvZHJpdmVycy9od21vbi9sbTc3\n"
- "LmMKaW5kZXggMDhmN2ZmZS4uZDhjMWYzNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9sbTc3\n"
- "LmMKKysrIGIvZHJpdmVycy9od21vbi9sbTc3LmMKQEAgLTQ0MywxOSArNDQzLDggQEAgc3RhdGlj\n"
- "IHN0cnVjdCBsbTc3X2RhdGEgKmxtNzdfdXBkYXRlX2RldmljZShzdHJ1Y3QgZGV2aWNlICpkZXYp\n"
- "CiAJcmV0dXJuIGRhdGE7CiB9CiAKLXN0YXRpYyBpbnQgX19pbml0IHNlbnNvcnNfbG03N19pbml0\n"
- "KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZsbTc3X2RyaXZlcik7Ci19Ci0KLXN0\n"
- "YXRpYyB2b2lkIF9fZXhpdCBzZW5zb3JzX2xtNzdfZXhpdCh2b2lkKQotewotCWkyY19kZWxfZHJp\n"
- "dmVyKCZsbTc3X2RyaXZlcik7Ci19Cittb2R1bGVfaTJjX2RyaXZlcihsbTc3X2RyaXZlcik7CiAK\n"
- "IE1PRFVMRV9BVVRIT1IoIkFuZHJhcyBCQUxJIDxkcmV3aWVAZnJlZW1haWwuaHU+Iik7CiBNT0RV\n"
- "TEVfREVTQ1JJUFRJT04oIkxNNzcgZHJpdmVyIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7Ci0K\n"
- "LW1vZHVsZV9pbml0KHNlbnNvcnNfbG03N19pbml0KTsKLW1vZHVsZV9leGl0KHNlbnNvcnNfbG03\n"
- "N19leGl0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vbG04MC5jIGIvZHJpdmVycy9od21v\n"
- "bi9sbTgwLmMKaW5kZXggZGM2ZGY0ZS4uNmEyYTc3NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21v\n"
- "bi9sbTgwLmMKKysrIGIvZHJpdmVycy9od21vbi9sbTgwLmMKQEAgLTY5NywyMCArNjk3LDkgQEAg\n"
- "ZG9uZToKIAlyZXR1cm4gcmV0OwogfQogCi1zdGF0aWMgaW50IF9faW5pdCBzZW5zb3JzX2xtODBf\n"
- "aW5pdCh2b2lkKQotewotCXJldHVybiBpMmNfYWRkX2RyaXZlcigmbG04MF9kcml2ZXIpOwotfQot\n"
- "Ci1zdGF0aWMgdm9pZCBfX2V4aXQgc2Vuc29yc19sbTgwX2V4aXQodm9pZCkKLXsKLQlpMmNfZGVs\n"
- "X2RyaXZlcigmbG04MF9kcml2ZXIpOwotfQorbW9kdWxlX2kyY19kcml2ZXIobG04MF9kcml2ZXIp\n"
- "OwogCiBNT0RVTEVfQVVUSE9SKCJGcm9kbyBMb29pamFhcmQgPGZyb2RvbEBkZHMubmw+IGFuZCAi\n"
- "CiAJIlBoaWxpcCBFZGVsYnJvY2sgPHBoaWxAbmV0cm9lZGdlLmNvbT4iKTsKIE1PRFVMRV9ERVND\n"
- "UklQVElPTigiTE04MCBkcml2ZXIiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKLQotbW9kdWxl\n"
- "X2luaXQoc2Vuc29yc19sbTgwX2luaXQpOwotbW9kdWxlX2V4aXQoc2Vuc29yc19sbTgwX2V4aXQp\n"
- "OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9sbTgzLmMgYi9kcml2ZXJzL2h3bW9uL2xtODMu\n"
- "YwppbmRleCAxZmVkMjY1Li5jZDQ1YjlkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2h3bW9uL2xtODMu\n"
- "YworKysgYi9kcml2ZXJzL2h3bW9uL2xtODMuYwpAQCAtNDMwLDE5ICs0MzAsOCBAQCBzdGF0aWMg\n"
- "c3RydWN0IGxtODNfZGF0YSAqbG04M191cGRhdGVfZGV2aWNlKHN0cnVjdCBkZXZpY2UgKmRldikK\n"
- "IAlyZXR1cm4gZGF0YTsKIH0KIAotc3RhdGljIGludCBfX2luaXQgc2Vuc29yc19sbTgzX2luaXQo\n"
- "dm9pZCkKLXsKLQlyZXR1cm4gaTJjX2FkZF9kcml2ZXIoJmxtODNfZHJpdmVyKTsKLX0KLQotc3Rh\n"
- "dGljIHZvaWQgX19leGl0IHNlbnNvcnNfbG04M19leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2\n"
- "ZXIoJmxtODNfZHJpdmVyKTsKLX0KK21vZHVsZV9pMmNfZHJpdmVyKGxtODNfZHJpdmVyKTsKIAog\n"
- "TU9EVUxFX0FVVEhPUigiSmVhbiBEZWx2YXJlIDxraGFsaUBsaW51eC1mci5vcmc+Iik7CiBNT0RV\n"
- "TEVfREVTQ1JJUFRJT04oIkxNODMgZHJpdmVyIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7Ci0K\n"
- "LW1vZHVsZV9pbml0KHNlbnNvcnNfbG04M19pbml0KTsKLW1vZHVsZV9leGl0KHNlbnNvcnNfbG04\n"
- "M19leGl0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vbG04NS5jIGIvZHJpdmVycy9od21v\n"
- "bi9sbTg1LmMKaW5kZXggMjQwYjdmOS4uN2U0NmViYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21v\n"
- "bi9sbTg1LmMKKysrIGIvZHJpdmVycy9od21vbi9sbTg1LmMKQEAgLTE2OTUsMjIgKzE2OTUsMTAg\n"
- "QEAgc3RhdGljIHN0cnVjdCBsbTg1X2RhdGEgKmxtODVfdXBkYXRlX2RldmljZShzdHJ1Y3QgZGV2\n"
- "aWNlICpkZXYpCiAJcmV0dXJuIGRhdGE7CiB9CiAKLQotc3RhdGljIGludCBfX2luaXQgc21fbG04\n"
- "NV9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZsbTg1X2RyaXZlcik7Ci19\n"
- "Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBzbV9sbTg1X2V4aXQodm9pZCkKLXsKLQlpMmNfZGVsX2Ry\n"
- "aXZlcigmbG04NV9kcml2ZXIpOwotfQorbW9kdWxlX2kyY19kcml2ZXIobG04NV9kcml2ZXIpOwog\n"
- "CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7CiBNT0RVTEVfQVVUSE9SKCJQaGlsaXAgUG9rb3JueSA8\n"
- "cHBva29ybnlAcGVuZ3VpbmNvbXB1dGluZy5jb20+LCAiCiAJIk1hcmdpdCBTY2h1YmVydC1XaGls\n"
- "ZSA8bWFyZ2l0c3dAdC1vbmxpbmUuZGU+LCAiCiAJIkp1c3RpbiBUaGllc3NlbiA8anRoaWVzc2Vu\n"
- "QHBlbmd1aW5jb21wdXRpbmcuY29tPiIpOwogTU9EVUxFX0RFU0NSSVBUSU9OKCJMTTg1LUIsIExN\n"
- "ODUtQyBkcml2ZXIiKTsKLQotbW9kdWxlX2luaXQoc21fbG04NV9pbml0KTsKLW1vZHVsZV9leGl0\n"
- "KHNtX2xtODVfZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2xtODcuYyBiL2RyaXZl\n"
- "cnMvaHdtb24vbG04Ny5jCmluZGV4IGViZjRlZmQuLjA5MGY1ZWYgMTAwNjQ0Ci0tLSBhL2RyaXZl\n"
- "cnMvaHdtb24vbG04Ny5jCisrKyBiL2RyaXZlcnMvaHdtb24vbG04Ny5jCkBAIC0xMDU0LDE5ICsx\n"
- "MDU0LDggQEAgc3RhdGljIHN0cnVjdCBsbTg3X2RhdGEgKmxtODdfdXBkYXRlX2RldmljZShzdHJ1\n"
- "Y3QgZGV2aWNlICpkZXYpCiAJcmV0dXJuIGRhdGE7CiB9CiAKLXN0YXRpYyBpbnQgX19pbml0IHNl\n"
- "bnNvcnNfbG04N19pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZsbTg3X2Ry\n"
- "aXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBzZW5zb3JzX2xtODdfZXhpdCh2b2lkKQot\n"
- "ewotCWkyY19kZWxfZHJpdmVyKCZsbTg3X2RyaXZlcik7Ci19Cittb2R1bGVfaTJjX2RyaXZlcihs\n"
- "bTg3X2RyaXZlcik7CiAKIE1PRFVMRV9BVVRIT1IoIkplYW4gRGVsdmFyZSA8a2hhbGlAbGludXgt\n"
- "ZnIub3JnPiBhbmQgb3RoZXJzIik7CiBNT0RVTEVfREVTQ1JJUFRJT04oIkxNODcgZHJpdmVyIik7\n"
- "CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7Ci0KLW1vZHVsZV9pbml0KHNlbnNvcnNfbG04N19pbml0\n"
- "KTsKLW1vZHVsZV9leGl0KHNlbnNvcnNfbG04N19leGl0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMv\n"
- "aHdtb24vbG05MC5jIGIvZHJpdmVycy9od21vbi9sbTkwLmMKaW5kZXggZDJkZDVmOS4uMjQ4ZjJi\n"
- "NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9sbTkwLmMKKysrIGIvZHJpdmVycy9od21vbi9s\n"
- "bTkwLmMKQEAgLTE1MTQsMTkgKzE1MTQsOCBAQCBzdGF0aWMgc3RydWN0IGkyY19kcml2ZXIgbG05\n"
- "MF9kcml2ZXIgPSB7CiAJLmFkZHJlc3NfbGlzdAk9IG5vcm1hbF9pMmMsCiB9OwogCi1zdGF0aWMg\n"
- "aW50IF9faW5pdCBzZW5zb3JzX2xtOTBfaW5pdCh2b2lkKQotewotCXJldHVybiBpMmNfYWRkX2Ry\n"
- "aXZlcigmbG05MF9kcml2ZXIpOwotfQotCi1zdGF0aWMgdm9pZCBfX2V4aXQgc2Vuc29yc19sbTkw\n"
- "X2V4aXQodm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmbG05MF9kcml2ZXIpOwotfQorbW9kdWxl\n"
- "X2kyY19kcml2ZXIobG05MF9kcml2ZXIpOwogCiBNT0RVTEVfQVVUSE9SKCJKZWFuIERlbHZhcmUg\n"
- "PGtoYWxpQGxpbnV4LWZyLm9yZz4iKTsKIE1PRFVMRV9ERVNDUklQVElPTigiTE05MC9BRE0xMDMy\n"
- "IGRyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwotCi1tb2R1bGVfaW5pdChzZW5zb3Jz\n"
- "X2xtOTBfaW5pdCk7Ci1tb2R1bGVfZXhpdChzZW5zb3JzX2xtOTBfZXhpdCk7CmRpZmYgLS1naXQg\n"
- "YS9kcml2ZXJzL2h3bW9uL2xtOTIuYyBiL2RyaXZlcnMvaHdtb24vbG05Mi5jCmluZGV4IDk1Y2Rh\n"
- "NDEuLjBmZTJmMzcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vbG05Mi5jCisrKyBiL2RyaXZl\n"
- "cnMvaHdtb24vbG05Mi5jCkBAIC00MzIsMTkgKzQzMiw4IEBAIHN0YXRpYyBzdHJ1Y3QgaTJjX2Ry\n"
- "aXZlciBsbTkyX2RyaXZlciA9IHsKIAkuYWRkcmVzc19saXN0CT0gbm9ybWFsX2kyYywKIH07CiAK\n"
- "LXN0YXRpYyBpbnQgX19pbml0IHNlbnNvcnNfbG05Ml9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGky\n"
- "Y19hZGRfZHJpdmVyKCZsbTkyX2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBzZW5z\n"
- "b3JzX2xtOTJfZXhpdCh2b2lkKQotewotCWkyY19kZWxfZHJpdmVyKCZsbTkyX2RyaXZlcik7Ci19\n"
- "Cittb2R1bGVfaTJjX2RyaXZlcihsbTkyX2RyaXZlcik7CiAKIE1PRFVMRV9BVVRIT1IoIkplYW4g\n"
- "RGVsdmFyZSA8a2hhbGlAbGludXgtZnIub3JnPiIpOwogTU9EVUxFX0RFU0NSSVBUSU9OKCJMTTky\n"
- "L01BWDY2MzUgZHJpdmVyIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7Ci0KLW1vZHVsZV9pbml0\n"
- "KHNlbnNvcnNfbG05Ml9pbml0KTsKLW1vZHVsZV9leGl0KHNlbnNvcnNfbG05Ml9leGl0KTsKZGlm\n"
- "ZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vbG05My5jIGIvZHJpdmVycy9od21vbi9sbTkzLmMKaW5k\n"
- "ZXggZDJmYzRhYy4uMjJhZTVmMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9sbTkzLmMKKysr\n"
- "IGIvZHJpdmVycy9od21vbi9sbTkzLmMKQEAgLTI3NjEsMjAgKzI3NjEsOSBAQCBzdGF0aWMgc3Ry\n"
- "dWN0IGkyY19kcml2ZXIgbG05M19kcml2ZXIgPSB7CiAJLmFkZHJlc3NfbGlzdAk9IG5vcm1hbF9p\n"
- "MmMsCiB9OwogCi1zdGF0aWMgaW50IF9faW5pdCBsbTkzX2luaXQodm9pZCkKLXsKLQlyZXR1cm4g\n"
- "aTJjX2FkZF9kcml2ZXIoJmxtOTNfZHJpdmVyKTsKLX0KLQotc3RhdGljIHZvaWQgX19leGl0IGxt\n"
- "OTNfZXhpdCh2b2lkKQotewotCWkyY19kZWxfZHJpdmVyKCZsbTkzX2RyaXZlcik7Ci19Cittb2R1\n"
- "bGVfaTJjX2RyaXZlcihsbTkzX2RyaXZlcik7CiAKIE1PRFVMRV9BVVRIT1IoIk1hcmsgTS4gSG9m\n"
- "Zm1hbiA8bWhvZmZtYW5AbGlnaHRsaW5rLmNvbT4sICIKIAkJIkhhbnMgSi4gS29jaCA8aGprQGhh\n"
- "bnNqa29jaC5kZT4iKTsKIE1PRFVMRV9ERVNDUklQVElPTigiTE05MyBkcml2ZXIiKTsKIE1PRFVM\n"
- "RV9MSUNFTlNFKCJHUEwiKTsKLQotbW9kdWxlX2luaXQobG05M19pbml0KTsKLW1vZHVsZV9leGl0\n"
- "KGxtOTNfZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2xtOTUyNDEuYyBiL2RyaXZl\n"
- "cnMvaHdtb24vbG05NTI0MS5jCmluZGV4IDcwYmNhNjcuLmJkOGNkYjcgMTAwNjQ0Ci0tLSBhL2Ry\n"
- "aXZlcnMvaHdtb24vbG05NTI0MS5jCisrKyBiL2RyaXZlcnMvaHdtb24vbG05NTI0MS5jCkBAIC00\n"
- "NTUsMTkgKzQ1NSw4IEBAIHN0YXRpYyBzdHJ1Y3QgaTJjX2RyaXZlciBsbTk1MjQxX2RyaXZlciA9\n"
- "IHsKIAkuYWRkcmVzc19saXN0CT0gbm9ybWFsX2kyYywKIH07CiAKLXN0YXRpYyBpbnQgX19pbml0\n"
- "IHNlbnNvcnNfbG05NTI0MV9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZs\n"
- "bTk1MjQxX2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBzZW5zb3JzX2xtOTUyNDFf\n"
- "ZXhpdCh2b2lkKQotewotCWkyY19kZWxfZHJpdmVyKCZsbTk1MjQxX2RyaXZlcik7Ci19Cittb2R1\n"
- "bGVfaTJjX2RyaXZlcihsbTk1MjQxX2RyaXZlcik7CiAKIE1PRFVMRV9BVVRIT1IoIkRhdmlkZSBS\n"
- "aXp6byA8ZWxwYS5yaXp6b0BnbWFpbC5jb20+Iik7CiBNT0RVTEVfREVTQ1JJUFRJT04oIkxNOTUy\n"
- "NDEgc2Vuc29yIGRyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwotCi1tb2R1bGVfaW5p\n"
- "dChzZW5zb3JzX2xtOTUyNDFfaW5pdCk7Ci1tb2R1bGVfZXhpdChzZW5zb3JzX2xtOTUyNDFfZXhp\n"
- "dCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2xtOTUyNDUuYyBiL2RyaXZlcnMvaHdtb24v\n"
- "bG05NTI0NS5jCmluZGV4IDVlNWZjMWIuLjlhNDZjMTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdt\n"
- "b24vbG05NTI0NS5jCisrKyBiL2RyaXZlcnMvaHdtb24vbG05NTI0NS5jCkBAIC01MjUsMTkgKzUy\n"
- "NSw4IEBAIHN0YXRpYyBzdHJ1Y3QgaTJjX2RyaXZlciBsbTk1MjQ1X2RyaXZlciA9IHsKIAkuYWRk\n"
- "cmVzc19saXN0CT0gbm9ybWFsX2kyYywKIH07CiAKLXN0YXRpYyBpbnQgX19pbml0IHNlbnNvcnNf\n"
- "bG05NTI0NV9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZsbTk1MjQ1X2Ry\n"
- "aXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBzZW5zb3JzX2xtOTUyNDVfZXhpdCh2b2lk\n"
- "KQotewotCWkyY19kZWxfZHJpdmVyKCZsbTk1MjQ1X2RyaXZlcik7Ci19Cittb2R1bGVfaTJjX2Ry\n"
- "aXZlcihsbTk1MjQ1X2RyaXZlcik7CiAKIE1PRFVMRV9BVVRIT1IoIkFsZXhhbmRlciBTdGVpbiA8\n"
- "YWxleGFuZGVyLnN0ZWluQHN5c3RlYy1lbGVjdHJvbmljLmNvbT4iKTsKIE1PRFVMRV9ERVNDUklQ\n"
- "VElPTigiTE05NTI0NSBzZW5zb3IgZHJpdmVyIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7Ci0K\n"
- "LW1vZHVsZV9pbml0KHNlbnNvcnNfbG05NTI0NV9pbml0KTsKLW1vZHVsZV9leGl0KHNlbnNvcnNf\n"
- "bG05NTI0NV9leGl0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vbHRjNDE1MS5jIGIvZHJp\n"
- "dmVycy9od21vbi9sdGM0MTUxLmMKaW5kZXggNGFjMDZiNy4uZjY0NmI0NSAxMDA2NDQKLS0tIGEv\n"
- "ZHJpdmVycy9od21vbi9sdGM0MTUxLmMKKysrIGIvZHJpdmVycy9od21vbi9sdGM0MTUxLmMKQEAg\n"
- "LTIzOCwxOSArMjM4LDggQEAgc3RhdGljIHN0cnVjdCBpMmNfZHJpdmVyIGx0YzQxNTFfZHJpdmVy\n"
- "ID0gewogCS5pZF90YWJsZQk9IGx0YzQxNTFfaWQsCiB9OwogCi1zdGF0aWMgaW50IF9faW5pdCBs\n"
- "dGM0MTUxX2luaXQodm9pZCkKLXsKLQlyZXR1cm4gaTJjX2FkZF9kcml2ZXIoJmx0YzQxNTFfZHJp\n"
- "dmVyKTsKLX0KLQotc3RhdGljIHZvaWQgX19leGl0IGx0YzQxNTFfZXhpdCh2b2lkKQotewotCWky\n"
- "Y19kZWxfZHJpdmVyKCZsdGM0MTUxX2RyaXZlcik7Ci19Cittb2R1bGVfaTJjX2RyaXZlcihsdGM0\n"
- "MTUxX2RyaXZlcik7CiAKIE1PRFVMRV9BVVRIT1IoIlBlciBEYWxlbiA8cGVyLmRhbGVuQGFwcGVh\n"
- "cnR2LmNvbT4iKTsKIE1PRFVMRV9ERVNDUklQVElPTigiTFRDNDE1MSBkcml2ZXIiKTsKIE1PRFVM\n"
- "RV9MSUNFTlNFKCJHUEwiKTsKLQotbW9kdWxlX2luaXQobHRjNDE1MV9pbml0KTsKLW1vZHVsZV9l\n"
- "eGl0KGx0YzQxNTFfZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2x0YzQyMTUuYyBi\n"
- "L2RyaXZlcnMvaHdtb24vbHRjNDIxNS5jCmluZGV4IGM3ZTZkOGUuLjA3ODliNjMgMTAwNjQ0Ci0t\n"
- "LSBhL2RyaXZlcnMvaHdtb24vbHRjNDIxNS5jCisrKyBiL2RyaXZlcnMvaHdtb24vbHRjNDIxNS5j\n"
- "CkBAIC0zMDksMTkgKzMwOSw4IEBAIHN0YXRpYyBzdHJ1Y3QgaTJjX2RyaXZlciBsdGM0MjE1X2Ry\n"
- "aXZlciA9IHsKIAkuaWRfdGFibGUJPSBsdGM0MjE1X2lkLAogfTsKIAotc3RhdGljIGludCBfX2lu\n"
- "aXQgbHRjNDIxNV9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZsdGM0MjE1\n"
- "X2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBsdGM0MjE1X2V4aXQodm9pZCkKLXsK\n"
- "LQlpMmNfZGVsX2RyaXZlcigmbHRjNDIxNV9kcml2ZXIpOwotfQorbW9kdWxlX2kyY19kcml2ZXIo\n"
- "bHRjNDIxNV9kcml2ZXIpOwogCiBNT0RVTEVfQVVUSE9SKCJJcmEgVy4gU255ZGVyIDxpd3NAb3Zy\n"
- "by5jYWx0ZWNoLmVkdT4iKTsKIE1PRFVMRV9ERVNDUklQVElPTigiTFRDNDIxNSBkcml2ZXIiKTsK\n"
- "IE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKLQotbW9kdWxlX2luaXQobHRjNDIxNV9pbml0KTsKLW1v\n"
- "ZHVsZV9leGl0KGx0YzQyMTVfZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2x0YzQy\n"
- "NDUuYyBiL2RyaXZlcnMvaHdtb24vbHRjNDI0NS5jCmluZGV4IDY1OTMwODMuLjY5M2E2YmQgMTAw\n"
- "NjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vbHRjNDI0NS5jCisrKyBiL2RyaXZlcnMvaHdtb24vbHRj\n"
- "NDI0NS5jCkBAIC01NzgsMTkgKzU3OCw4IEBAIHN0YXRpYyBzdHJ1Y3QgaTJjX2RyaXZlciBsdGM0\n"
- "MjQ1X2RyaXZlciA9IHsKIAkuaWRfdGFibGUJPSBsdGM0MjQ1X2lkLAogfTsKIAotc3RhdGljIGlu\n"
- "dCBfX2luaXQgbHRjNDI0NV9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZs\n"
- "dGM0MjQ1X2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBsdGM0MjQ1X2V4aXQodm9p\n"
- "ZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmbHRjNDI0NV9kcml2ZXIpOwotfQorbW9kdWxlX2kyY19k\n"
- "cml2ZXIobHRjNDI0NV9kcml2ZXIpOwogCiBNT0RVTEVfQVVUSE9SKCJJcmEgVy4gU255ZGVyIDxp\n"
- "d3NAb3Zyby5jYWx0ZWNoLmVkdT4iKTsKIE1PRFVMRV9ERVNDUklQVElPTigiTFRDNDI0NSBkcml2\n"
- "ZXIiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKLQotbW9kdWxlX2luaXQobHRjNDI0NV9pbml0\n"
- "KTsKLW1vZHVsZV9leGl0KGx0YzQyNDVfZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9u\n"
- "L2x0YzQyNjEuYyBiL2RyaXZlcnMvaHdtb24vbHRjNDI2MS5jCmluZGV4IGNlNTIzNTUuLmFiMWJm\n"
- "YmYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vbHRjNDI2MS5jCisrKyBiL2RyaXZlcnMvaHdt\n"
- "b24vbHRjNDI2MS5jCkBAIC0yOTcsMTkgKzI5Nyw4IEBAIHN0YXRpYyBzdHJ1Y3QgaTJjX2RyaXZl\n"
- "ciBsdGM0MjYxX2RyaXZlciA9IHsKIAkuaWRfdGFibGUgPSBsdGM0MjYxX2lkLAogfTsKIAotc3Rh\n"
- "dGljIGludCBfX2luaXQgbHRjNDI2MV9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJp\n"
- "dmVyKCZsdGM0MjYxX2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBsdGM0MjYxX2V4\n"
- "aXQodm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmbHRjNDI2MV9kcml2ZXIpOwotfQorbW9kdWxl\n"
- "X2kyY19kcml2ZXIobHRjNDI2MV9kcml2ZXIpOwogCiBNT0RVTEVfQVVUSE9SKCJHdWVudGVyIFJv\n"
- "ZWNrIDxndWVudGVyLnJvZWNrQGVyaWNzc29uLmNvbT4iKTsKIE1PRFVMRV9ERVNDUklQVElPTigi\n"
- "TFRDNDI2MSBkcml2ZXIiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKLQotbW9kdWxlX2luaXQo\n"
- "bHRjNDI2MV9pbml0KTsKLW1vZHVsZV9leGl0KGx0YzQyNjFfZXhpdCk7CmRpZmYgLS1naXQgYS9k\n"
- "cml2ZXJzL2h3bW9uL21heDE2MDY1LmMgYi9kcml2ZXJzL2h3bW9uL21heDE2MDY1LmMKaW5kZXgg\n"
- "ZjhlMzIzYS4uNTFlZGFlOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9tYXgxNjA2NS5jCisr\n"
- "KyBiL2RyaXZlcnMvaHdtb24vbWF4MTYwNjUuYwpAQCAtNjk5LDE5ICs2OTksOCBAQCBzdGF0aWMg\n"
- "c3RydWN0IGkyY19kcml2ZXIgbWF4MTYwNjVfZHJpdmVyID0gewogCS5pZF90YWJsZSA9IG1heDE2\n"
- "MDY1X2lkLAogfTsKIAotc3RhdGljIGludCBfX2luaXQgbWF4MTYwNjVfaW5pdCh2b2lkKQotewot\n"
- "CXJldHVybiBpMmNfYWRkX2RyaXZlcigmbWF4MTYwNjVfZHJpdmVyKTsKLX0KLQotc3RhdGljIHZv\n"
- "aWQgX19leGl0IG1heDE2MDY1X2V4aXQodm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmbWF4MTYw\n"
- "NjVfZHJpdmVyKTsKLX0KK21vZHVsZV9pMmNfZHJpdmVyKG1heDE2MDY1X2RyaXZlcik7CiAKIE1P\n"
- "RFVMRV9BVVRIT1IoIkd1ZW50ZXIgUm9lY2sgPGd1ZW50ZXIucm9lY2tAZXJpY3Nzb24uY29tPiIp\n"
- "OwogTU9EVUxFX0RFU0NSSVBUSU9OKCJNQVgxNjA2NSBkcml2ZXIiKTsKIE1PRFVMRV9MSUNFTlNF\n"
- "KCJHUEwiKTsKLQotbW9kdWxlX2luaXQobWF4MTYwNjVfaW5pdCk7Ci1tb2R1bGVfZXhpdChtYXgx\n"
- "NjA2NV9leGl0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vbWF4MTYxOS5jIGIvZHJpdmVy\n"
- "cy9od21vbi9tYXgxNjE5LmMKaW5kZXggZjE5NTk5Zi4uZWNhYzA0YSAxMDA2NDQKLS0tIGEvZHJp\n"
- "dmVycy9od21vbi9tYXgxNjE5LmMKKysrIGIvZHJpdmVycy9od21vbi9tYXgxNjE5LmMKQEAgLTM2\n"
- "MCwyMCArMzYwLDkgQEAgc3RhdGljIHN0cnVjdCBtYXgxNjE5X2RhdGEgKm1heDE2MTlfdXBkYXRl\n"
- "X2RldmljZShzdHJ1Y3QgZGV2aWNlICpkZXYpCiAJcmV0dXJuIGRhdGE7CiB9CiAKLXN0YXRpYyBp\n"
- "bnQgX19pbml0IHNlbnNvcnNfbWF4MTYxOV9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRf\n"
- "ZHJpdmVyKCZtYXgxNjE5X2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBzZW5zb3Jz\n"
- "X21heDE2MTlfZXhpdCh2b2lkKQotewotCWkyY19kZWxfZHJpdmVyKCZtYXgxNjE5X2RyaXZlcik7\n"
- "Ci19Cittb2R1bGVfaTJjX2RyaXZlcihtYXgxNjE5X2RyaXZlcik7CiAKIE1PRFVMRV9BVVRIT1Io\n"
- "IkFsZXhleSBGaXNoZXIgPGZpc2hvckBtYWlsLnJ1PiBhbmQgIgogCSJKZWFuIERlbHZhcmUgPGto\n"
- "YWxpQGxpbnV4LWZyLm9yZz4iKTsKIE1PRFVMRV9ERVNDUklQVElPTigiTUFYMTYxOSBzZW5zb3Ig\n"
- "ZHJpdmVyIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7Ci0KLW1vZHVsZV9pbml0KHNlbnNvcnNf\n"
- "bWF4MTYxOV9pbml0KTsKLW1vZHVsZV9leGl0KHNlbnNvcnNfbWF4MTYxOV9leGl0KTsKZGlmZiAt\n"
- "LWdpdCBhL2RyaXZlcnMvaHdtb24vbWF4MTY2OC5jIGIvZHJpdmVycy9od21vbi9tYXgxNjY4LmMK\n"
- "aW5kZXggODg5NTNmOS4uMTIyNDlmNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9tYXgxNjY4\n"
- "LmMKKysrIGIvZHJpdmVycy9od21vbi9tYXgxNjY4LmMKQEAgLTQ4NCwxOSArNDg0LDggQEAgc3Rh\n"
- "dGljIHN0cnVjdCBpMmNfZHJpdmVyIG1heDE2NjhfZHJpdmVyID0gewogCS5hZGRyZXNzX2xpc3Qg\n"
- "PSBtYXgxNjY4X2FkZHJfbGlzdCwKIH07CiAKLXN0YXRpYyBpbnQgX19pbml0IHNlbnNvcnNfbWF4\n"
- "MTY2OF9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZtYXgxNjY4X2RyaXZl\n"
- "cik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBzZW5zb3JzX21heDE2NjhfZXhpdCh2b2lkKQot\n"
- "ewotCWkyY19kZWxfZHJpdmVyKCZtYXgxNjY4X2RyaXZlcik7Ci19Cittb2R1bGVfaTJjX2RyaXZl\n"
- "cihtYXgxNjY4X2RyaXZlcik7CiAKIE1PRFVMRV9BVVRIT1IoIkRhdmlkIEdlb3JnZSA8ZGF2aWQu\n"
- "Z2VvcmdlQHNrYS5hYy56YT4iKTsKIE1PRFVMRV9ERVNDUklQVElPTigiTUFYMTY2OCByZW1vdGUg\n"
- "dGVtcGVyYXR1cmUgc2Vuc29yIGRyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwotCi1t\n"
- "b2R1bGVfaW5pdChzZW5zb3JzX21heDE2NjhfaW5pdCkKLW1vZHVsZV9leGl0KHNlbnNvcnNfbWF4\n"
- "MTY2OF9leGl0KQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9tYXg2NjM5LmMgYi9kcml2ZXJz\n"
- "L2h3bW9uL21heDY2MzkuYwppbmRleCBlMTBhMDkyLi5kMjAzZWIxIDEwMDY0NAotLS0gYS9kcml2\n"
- "ZXJzL2h3bW9uL21heDY2MzkuYworKysgYi9kcml2ZXJzL2h3bW9uL21heDY2MzkuYwpAQCAtNjM1\n"
- "LDE5ICs2MzUsOCBAQCBzdGF0aWMgc3RydWN0IGkyY19kcml2ZXIgbWF4NjYzOV9kcml2ZXIgPSB7\n"
- "CiAJLmFkZHJlc3NfbGlzdCA9IG5vcm1hbF9pMmMsCiB9OwogCi1zdGF0aWMgaW50IF9faW5pdCBt\n"
- "YXg2NjM5X2luaXQodm9pZCkKLXsKLQlyZXR1cm4gaTJjX2FkZF9kcml2ZXIoJm1heDY2MzlfZHJp\n"
- "dmVyKTsKLX0KLQotc3RhdGljIHZvaWQgX19leGl0IG1heDY2MzlfZXhpdCh2b2lkKQotewotCWky\n"
- "Y19kZWxfZHJpdmVyKCZtYXg2NjM5X2RyaXZlcik7Ci19Cittb2R1bGVfaTJjX2RyaXZlcihtYXg2\n"
- "NjM5X2RyaXZlcik7CiAKIE1PRFVMRV9BVVRIT1IoIlJvbGFuZCBTdGlnZ2UgPHN0aWdnZUBhbnRj\n"
- "b20uZGU+Iik7CiBNT0RVTEVfREVTQ1JJUFRJT04oIm1heDY2MzkgZHJpdmVyIik7CiBNT0RVTEVf\n"
- "TElDRU5TRSgiR1BMIik7Ci0KLW1vZHVsZV9pbml0KG1heDY2MzlfaW5pdCk7Ci1tb2R1bGVfZXhp\n"
- "dChtYXg2NjM5X2V4aXQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9tYXg2NjQyLmMgYi9k\n"
- "cml2ZXJzL2h3bW9uL21heDY2NDIuYwppbmRleCAyMDllOGE1Li40Mjk4OTA5IDEwMDY0NAotLS0g\n"
- "YS9kcml2ZXJzL2h3bW9uL21heDY2NDIuYworKysgYi9kcml2ZXJzL2h3bW9uL21heDY2NDIuYwpA\n"
- "QCAtMzUyLDE5ICszNTIsOCBAQCBzdGF0aWMgc3RydWN0IGkyY19kcml2ZXIgbWF4NjY0Ml9kcml2\n"
- "ZXIgPSB7CiAJLmFkZHJlc3NfbGlzdAk9IG5vcm1hbF9pMmMsCiB9OwogCi1zdGF0aWMgaW50IF9f\n"
- "aW5pdCBtYXg2NjQyX2luaXQodm9pZCkKLXsKLQlyZXR1cm4gaTJjX2FkZF9kcml2ZXIoJm1heDY2\n"
- "NDJfZHJpdmVyKTsKLX0KLQotc3RhdGljIHZvaWQgX19leGl0IG1heDY2NDJfZXhpdCh2b2lkKQot\n"
- "ewotCWkyY19kZWxfZHJpdmVyKCZtYXg2NjQyX2RyaXZlcik7Ci19Cittb2R1bGVfaTJjX2RyaXZl\n"
- "cihtYXg2NjQyX2RyaXZlcik7CiAKIE1PRFVMRV9BVVRIT1IoIlBlciBEYWxlbiA8cGVyLmRhbGVu\n"
- "QGFwcGVhcnR2LmNvbT4iKTsKIE1PRFVMRV9ERVNDUklQVElPTigiTUFYNjY0MiBzZW5zb3IgZHJp\n"
- "dmVyIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7Ci0KLW1vZHVsZV9pbml0KG1heDY2NDJfaW5p\n"
- "dCk7Ci1tb2R1bGVfZXhpdChtYXg2NjQyX2V4aXQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21v\n"
- "bi9tYXg2NjUwLmMgYi9kcml2ZXJzL2h3bW9uL21heDY2NTAuYwppbmRleCAxNTljZTAyLi4zMjk2\n"
- "ZTZlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2h3bW9uL21heDY2NTAuYworKysgYi9kcml2ZXJzL2h3\n"
- "bW9uL21heDY2NTAuYwpAQCAtNzI2LDE5ICs3MjYsOCBAQCBzdGF0aWMgc3RydWN0IG1heDY2NTBf\n"
- "ZGF0YSAqbWF4NjY1MF91cGRhdGVfZGV2aWNlKHN0cnVjdCBkZXZpY2UgKmRldikKIAlyZXR1cm4g\n"
- "ZGF0YTsKIH0KIAotc3RhdGljIGludCBfX2luaXQgc2Vuc29yc19tYXg2NjUwX2luaXQodm9pZCkK\n"
- "LXsKLQlyZXR1cm4gaTJjX2FkZF9kcml2ZXIoJm1heDY2NTBfZHJpdmVyKTsKLX0KLQotc3RhdGlj\n"
- "IHZvaWQgX19leGl0IHNlbnNvcnNfbWF4NjY1MF9leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2\n"
- "ZXIoJm1heDY2NTBfZHJpdmVyKTsKLX0KK21vZHVsZV9pMmNfZHJpdmVyKG1heDY2NTBfZHJpdmVy\n"
- "KTsKIAogTU9EVUxFX0FVVEhPUigiSGFucyBKLiBLb2NoIik7CiBNT0RVTEVfREVTQ1JJUFRJT04o\n"
- "Ik1BWDY2NTAgc2Vuc29yIGRyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwotCi1tb2R1\n"
- "bGVfaW5pdChzZW5zb3JzX21heDY2NTBfaW5pdCk7Ci1tb2R1bGVfZXhpdChzZW5zb3JzX21heDY2\n"
- "NTBfZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL3BtYnVzL2FkbTEyNzUuYyBiL2Ry\n"
- "aXZlcnMvaHdtb24vcG1idXMvYWRtMTI3NS5jCmluZGV4IDgxYzdjMmUuLmZlNTJjM2MgMTAwNjQ0\n"
- "Ci0tLSBhL2RyaXZlcnMvaHdtb24vcG1idXMvYWRtMTI3NS5jCisrKyBiL2RyaXZlcnMvaHdtb24v\n"
- "cG1idXMvYWRtMTI3NS5jCkBAIC0zMjYsMTggKzMyNiw4IEBAIHN0YXRpYyBzdHJ1Y3QgaTJjX2Ry\n"
- "aXZlciBhZG0xMjc1X2RyaXZlciA9IHsKIAkuaWRfdGFibGUgPSBhZG0xMjc1X2lkLAogfTsKIAot\n"
- "c3RhdGljIGludCBfX2luaXQgYWRtMTI3NV9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRf\n"
- "ZHJpdmVyKCZhZG0xMjc1X2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBhZG0xMjc1\n"
- "X2V4aXQodm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmYWRtMTI3NV9kcml2ZXIpOwotfQorbW9k\n"
- "dWxlX2kyY19kcml2ZXIoYWRtMTI3NV9kcml2ZXIpOwogCiBNT0RVTEVfQVVUSE9SKCJHdWVudGVy\n"
- "IFJvZWNrIik7CiBNT0RVTEVfREVTQ1JJUFRJT04oIlBNQnVzIGRyaXZlciBmb3IgQW5hbG9nIERl\n"
- "dmljZXMgQURNMTI3NSBhbmQgY29tcGF0aWJsZXMiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsK\n"
- "LW1vZHVsZV9pbml0KGFkbTEyNzVfaW5pdCk7Ci1tb2R1bGVfZXhpdChhZG0xMjc1X2V4aXQpOwpk\n"
- "aWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9wbWJ1cy9sbTI1MDY2LmMgYi9kcml2ZXJzL2h3bW9u\n"
- "L3BtYnVzL2xtMjUwNjYuYwppbmRleCA4NGEzN2YwLi44NmFjMTVhIDEwMDY0NAotLS0gYS9kcml2\n"
- "ZXJzL2h3bW9uL3BtYnVzL2xtMjUwNjYuYworKysgYi9kcml2ZXJzL2h3bW9uL3BtYnVzL2xtMjUw\n"
- "NjYuYwpAQCAtMzM0LDE4ICszMzQsOCBAQCBzdGF0aWMgc3RydWN0IGkyY19kcml2ZXIgbG0yNTA2\n"
- "Nl9kcml2ZXIgPSB7CiAJLmlkX3RhYmxlID0gbG0yNTA2Nl9pZCwKIH07CiAKLXN0YXRpYyBpbnQg\n"
- "X19pbml0IGxtMjUwNjZfaW5pdCh2b2lkKQotewotCXJldHVybiBpMmNfYWRkX2RyaXZlcigmbG0y\n"
- "NTA2Nl9kcml2ZXIpOwotfQotCi1zdGF0aWMgdm9pZCBfX2V4aXQgbG0yNTA2Nl9leGl0KHZvaWQp\n"
- "Ci17Ci0JaTJjX2RlbF9kcml2ZXIoJmxtMjUwNjZfZHJpdmVyKTsKLX0KK21vZHVsZV9pMmNfZHJp\n"
- "dmVyKGxtMjUwNjZfZHJpdmVyKTsKIAogTU9EVUxFX0FVVEhPUigiR3VlbnRlciBSb2VjayIpOwog\n"
- "TU9EVUxFX0RFU0NSSVBUSU9OKCJQTUJ1cyBkcml2ZXIgZm9yIExNMjUwNjYvTE01MDY0L0xNNTA2\n"
- "NiIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwotbW9kdWxlX2luaXQobG0yNTA2Nl9pbml0KTsK\n"
- "LW1vZHVsZV9leGl0KGxtMjUwNjZfZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL3Bt\n"
- "YnVzL2x0YzI5NzguYyBiL2RyaXZlcnMvaHdtb24vcG1idXMvbHRjMjk3OC5jCmluZGV4IDgyMGZm\n"
- "ZjQuLmM5ZTRkZDIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vcG1idXMvbHRjMjk3OC5jCisr\n"
- "KyBiL2RyaXZlcnMvaHdtb24vcG1idXMvbHRjMjk3OC5jCkBAIC0zOTEsMTggKzM5MSw4IEBAIHN0\n"
- "YXRpYyBzdHJ1Y3QgaTJjX2RyaXZlciBsdGMyOTc4X2RyaXZlciA9IHsKIAkuaWRfdGFibGUgPSBs\n"
- "dGMyOTc4X2lkLAogfTsKIAotc3RhdGljIGludCBfX2luaXQgbHRjMjk3OF9pbml0KHZvaWQpCi17\n"
- "Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZsdGMyOTc4X2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2\n"
- "b2lkIF9fZXhpdCBsdGMyOTc4X2V4aXQodm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmbHRjMjk3\n"
- "OF9kcml2ZXIpOwotfQorbW9kdWxlX2kyY19kcml2ZXIobHRjMjk3OF9kcml2ZXIpOwogCiBNT0RV\n"
- "TEVfQVVUSE9SKCJHdWVudGVyIFJvZWNrIik7CiBNT0RVTEVfREVTQ1JJUFRJT04oIlBNQnVzIGRy\n"
- "aXZlciBmb3IgTFRDMjk3OCBhbmQgTFRDMzg4MCIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwot\n"
- "bW9kdWxlX2luaXQobHRjMjk3OF9pbml0KTsKLW1vZHVsZV9leGl0KGx0YzI5NzhfZXhpdCk7CmRp\n"
- "ZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL3BtYnVzL21heDE2MDY0LmMgYi9kcml2ZXJzL2h3bW9u\n"
- "L3BtYnVzL21heDE2MDY0LmMKaW5kZXggMWQ3N2NmNC4uNWNmZTIwZiAxMDA2NDQKLS0tIGEvZHJp\n"
- "dmVycy9od21vbi9wbWJ1cy9tYXgxNjA2NC5jCisrKyBiL2RyaXZlcnMvaHdtb24vcG1idXMvbWF4\n"
- "MTYwNjQuYwpAQCAtMTI2LDE4ICsxMjYsOCBAQCBzdGF0aWMgc3RydWN0IGkyY19kcml2ZXIgbWF4\n"
- "MTYwNjRfZHJpdmVyID0gewogCS5pZF90YWJsZSA9IG1heDE2MDY0X2lkLAogfTsKIAotc3RhdGlj\n"
- "IGludCBfX2luaXQgbWF4MTYwNjRfaW5pdCh2b2lkKQotewotCXJldHVybiBpMmNfYWRkX2RyaXZl\n"
- "cigmbWF4MTYwNjRfZHJpdmVyKTsKLX0KLQotc3RhdGljIHZvaWQgX19leGl0IG1heDE2MDY0X2V4\n"
- "aXQodm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmbWF4MTYwNjRfZHJpdmVyKTsKLX0KK21vZHVs\n"
- "ZV9pMmNfZHJpdmVyKG1heDE2MDY0X2RyaXZlcik7CiAKIE1PRFVMRV9BVVRIT1IoIkd1ZW50ZXIg\n"
- "Um9lY2siKTsKIE1PRFVMRV9ERVNDUklQVElPTigiUE1CdXMgZHJpdmVyIGZvciBNYXhpbSBNQVgx\n"
- "NjA2NCIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwotbW9kdWxlX2luaXQobWF4MTYwNjRfaW5p\n"
- "dCk7Ci1tb2R1bGVfZXhpdChtYXgxNjA2NF9leGl0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdt\n"
- "b24vcG1idXMvbWF4MzQ0NDAuYyBiL2RyaXZlcnMvaHdtb24vcG1idXMvbWF4MzQ0NDAuYwppbmRl\n"
- "eCBiZWFmNWE4Li44OWFlMzAzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2h3bW9uL3BtYnVzL21heDM0\n"
- "NDQwLmMKKysrIGIvZHJpdmVycy9od21vbi9wbWJ1cy9tYXgzNDQ0MC5jCkBAIC0yNDgsMTggKzI0\n"
- "OCw4IEBAIHN0YXRpYyBzdHJ1Y3QgaTJjX2RyaXZlciBtYXgzNDQ0MF9kcml2ZXIgPSB7CiAJLmlk\n"
- "X3RhYmxlID0gbWF4MzQ0NDBfaWQsCiB9OwogCi1zdGF0aWMgaW50IF9faW5pdCBtYXgzNDQ0MF9p\n"
- "bml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZtYXgzNDQ0MF9kcml2ZXIpOwot\n"
- "fQotCi1zdGF0aWMgdm9pZCBfX2V4aXQgbWF4MzQ0NDBfZXhpdCh2b2lkKQotewotCWkyY19kZWxf\n"
- "ZHJpdmVyKCZtYXgzNDQ0MF9kcml2ZXIpOwotfQorbW9kdWxlX2kyY19kcml2ZXIobWF4MzQ0NDBf\n"
- "ZHJpdmVyKTsKIAogTU9EVUxFX0FVVEhPUigiR3VlbnRlciBSb2VjayIpOwogTU9EVUxFX0RFU0NS\n"
- "SVBUSU9OKCJQTUJ1cyBkcml2ZXIgZm9yIE1heGltIE1BWDM0NDQwL01BWDM0NDQxIik7CiBNT0RV\n"
- "TEVfTElDRU5TRSgiR1BMIik7Ci1tb2R1bGVfaW5pdChtYXgzNDQ0MF9pbml0KTsKLW1vZHVsZV9l\n"
- "eGl0KG1heDM0NDQwX2V4aXQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9wbWJ1cy9tYXg4\n"
- "Njg4LmMgYi9kcml2ZXJzL2h3bW9uL3BtYnVzL21heDg2ODguYwppbmRleCBlMmI3NGJiLi44MmM1\n"
- "OThkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2h3bW9uL3BtYnVzL21heDg2ODguYworKysgYi9kcml2\n"
- "ZXJzL2h3bW9uL3BtYnVzL21heDg2ODguYwpAQCAtMjAzLDE4ICsyMDMsOCBAQCBzdGF0aWMgc3Ry\n"
- "dWN0IGkyY19kcml2ZXIgbWF4ODY4OF9kcml2ZXIgPSB7CiAJLmlkX3RhYmxlID0gbWF4ODY4OF9p\n"
- "ZCwKIH07CiAKLXN0YXRpYyBpbnQgX19pbml0IG1heDg2ODhfaW5pdCh2b2lkKQotewotCXJldHVy\n"
- "biBpMmNfYWRkX2RyaXZlcigmbWF4ODY4OF9kcml2ZXIpOwotfQotCi1zdGF0aWMgdm9pZCBfX2V4\n"
- "aXQgbWF4ODY4OF9leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2ZXIoJm1heDg2ODhfZHJpdmVy\n"
- "KTsKLX0KK21vZHVsZV9pMmNfZHJpdmVyKG1heDg2ODhfZHJpdmVyKTsKIAogTU9EVUxFX0FVVEhP\n"
- "UigiR3VlbnRlciBSb2VjayIpOwogTU9EVUxFX0RFU0NSSVBUSU9OKCJQTUJ1cyBkcml2ZXIgZm9y\n"
- "IE1heGltIE1BWDg2ODgiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKLW1vZHVsZV9pbml0KG1h\n"
- "eDg2ODhfaW5pdCk7Ci1tb2R1bGVfZXhpdChtYXg4Njg4X2V4aXQpOwpkaWZmIC0tZ2l0IGEvZHJp\n"
- "dmVycy9od21vbi9wbWJ1cy9wbWJ1cy5jIGIvZHJpdmVycy9od21vbi9wbWJ1cy9wbWJ1cy5jCmlu\n"
- "ZGV4IDE4YTM4NWUuLmRhNWZlMzYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vcG1idXMvcG1i\n"
- "dXMuYworKysgYi9kcml2ZXJzL2h3bW9uL3BtYnVzL3BtYnVzLmMKQEAgLTIyNCwxOCArMjI0LDgg\n"
- "QEAgc3RhdGljIHN0cnVjdCBpMmNfZHJpdmVyIHBtYnVzX2RyaXZlciA9IHsKIAkuaWRfdGFibGUg\n"
- "PSBwbWJ1c19pZCwKIH07CiAKLXN0YXRpYyBpbnQgX19pbml0IHBtYnVzX2luaXQodm9pZCkKLXsK\n"
- "LQlyZXR1cm4gaTJjX2FkZF9kcml2ZXIoJnBtYnVzX2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lk\n"
- "IF9fZXhpdCBwbWJ1c19leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2ZXIoJnBtYnVzX2RyaXZl\n"
- "cik7Ci19Cittb2R1bGVfaTJjX2RyaXZlcihwbWJ1c19kcml2ZXIpOwogCiBNT0RVTEVfQVVUSE9S\n"
- "KCJHdWVudGVyIFJvZWNrIik7CiBNT0RVTEVfREVTQ1JJUFRJT04oIkdlbmVyaWMgUE1CdXMgZHJp\n"
- "dmVyIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7Ci1tb2R1bGVfaW5pdChwbWJ1c19pbml0KTsK\n"
- "LW1vZHVsZV9leGl0KHBtYnVzX2V4aXQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9wbWJ1\n"
- "cy91Y2Q5MDAwLmMgYi9kcml2ZXJzL2h3bW9uL3BtYnVzL3VjZDkwMDAuYwppbmRleCA0ZmY2Y2Yy\n"
- "Li43NTlhNTYzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2h3bW9uL3BtYnVzL3VjZDkwMDAuYworKysg\n"
- "Yi9kcml2ZXJzL2h3bW9uL3BtYnVzL3VjZDkwMDAuYwpAQCAtMjU4LDE4ICsyNTgsOCBAQCBzdGF0\n"
- "aWMgc3RydWN0IGkyY19kcml2ZXIgdWNkOTAwMF9kcml2ZXIgPSB7CiAJLmlkX3RhYmxlID0gdWNk\n"
- "OTAwMF9pZCwKIH07CiAKLXN0YXRpYyBpbnQgX19pbml0IHVjZDkwMDBfaW5pdCh2b2lkKQotewot\n"
- "CXJldHVybiBpMmNfYWRkX2RyaXZlcigmdWNkOTAwMF9kcml2ZXIpOwotfQotCi1zdGF0aWMgdm9p\n"
- "ZCBfX2V4aXQgdWNkOTAwMF9leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2ZXIoJnVjZDkwMDBf\n"
- "ZHJpdmVyKTsKLX0KK21vZHVsZV9pMmNfZHJpdmVyKHVjZDkwMDBfZHJpdmVyKTsKIAogTU9EVUxF\n"
- "X0FVVEhPUigiR3VlbnRlciBSb2VjayIpOwogTU9EVUxFX0RFU0NSSVBUSU9OKCJQTUJ1cyBkcml2\n"
- "ZXIgZm9yIFRJIFVDRDkweHh4Iik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7Ci1tb2R1bGVfaW5p\n"
- "dCh1Y2Q5MDAwX2luaXQpOwotbW9kdWxlX2V4aXQodWNkOTAwMF9leGl0KTsKZGlmZiAtLWdpdCBh\n"
- "L2RyaXZlcnMvaHdtb24vcG1idXMvdWNkOTIwMC5jIGIvZHJpdmVycy9od21vbi9wbWJ1cy91Y2Q5\n"
- "MjAwLmMKaW5kZXggNmUxYzFhOC4uNjI5ZDBjOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9w\n"
- "bWJ1cy91Y2Q5MjAwLmMKKysrIGIvZHJpdmVycy9od21vbi9wbWJ1cy91Y2Q5MjAwLmMKQEAgLTE5\n"
- "MCwxOCArMTkwLDggQEAgc3RhdGljIHN0cnVjdCBpMmNfZHJpdmVyIHVjZDkyMDBfZHJpdmVyID0g\n"
- "ewogCS5pZF90YWJsZSA9IHVjZDkyMDBfaWQsCiB9OwogCi1zdGF0aWMgaW50IF9faW5pdCB1Y2Q5\n"
- "MjAwX2luaXQodm9pZCkKLXsKLQlyZXR1cm4gaTJjX2FkZF9kcml2ZXIoJnVjZDkyMDBfZHJpdmVy\n"
- "KTsKLX0KLQotc3RhdGljIHZvaWQgX19leGl0IHVjZDkyMDBfZXhpdCh2b2lkKQotewotCWkyY19k\n"
- "ZWxfZHJpdmVyKCZ1Y2Q5MjAwX2RyaXZlcik7Ci19Cittb2R1bGVfaTJjX2RyaXZlcih1Y2Q5MjAw\n"
- "X2RyaXZlcik7CiAKIE1PRFVMRV9BVVRIT1IoIkd1ZW50ZXIgUm9lY2siKTsKIE1PRFVMRV9ERVND\n"
- "UklQVElPTigiUE1CdXMgZHJpdmVyIGZvciBUSSBVQ0Q5MjJ4LCBVQ0Q5MjR4Iik7CiBNT0RVTEVf\n"
- "TElDRU5TRSgiR1BMIik7Ci1tb2R1bGVfaW5pdCh1Y2Q5MjAwX2luaXQpOwotbW9kdWxlX2V4aXQo\n"
- "dWNkOTIwMF9leGl0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vcG1idXMvemw2MTAwLmMg\n"
- "Yi9kcml2ZXJzL2h3bW9uL3BtYnVzL3psNjEwMC5jCmluZGV4IDQ4YzdiNGEuLjBiYjdiYmEgMTAw\n"
- "NjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vcG1idXMvemw2MTAwLmMKKysrIGIvZHJpdmVycy9od21v\n"
- "bi9wbWJ1cy96bDYxMDAuYwpAQCAtMjY4LDE4ICsyNjgsOCBAQCBzdGF0aWMgc3RydWN0IGkyY19k\n"
- "cml2ZXIgemw2MTAwX2RyaXZlciA9IHsKIAkuaWRfdGFibGUgPSB6bDYxMDBfaWQsCiB9OwogCi1z\n"
- "dGF0aWMgaW50IF9faW5pdCB6bDYxMDBfaW5pdCh2b2lkKQotewotCXJldHVybiBpMmNfYWRkX2Ry\n"
- "aXZlcigmemw2MTAwX2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCB6bDYxMDBfZXhp\n"
- "dCh2b2lkKQotewotCWkyY19kZWxfZHJpdmVyKCZ6bDYxMDBfZHJpdmVyKTsKLX0KK21vZHVsZV9p\n"
- "MmNfZHJpdmVyKHpsNjEwMF9kcml2ZXIpOwogCiBNT0RVTEVfQVVUSE9SKCJHdWVudGVyIFJvZWNr\n"
- "Iik7CiBNT0RVTEVfREVTQ1JJUFRJT04oIlBNQnVzIGRyaXZlciBmb3IgWkw2MTAwIGFuZCBjb21w\n"
- "YXRpYmxlcyIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwotbW9kdWxlX2luaXQoemw2MTAwX2lu\n"
- "aXQpOwotbW9kdWxlX2V4aXQoemw2MTAwX2V4aXQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21v\n"
- "bi9zaHQyMS5jIGIvZHJpdmVycy9od21vbi9zaHQyMS5jCmluZGV4IDE1Mzk4NzguLjZjMmRlZGUg\n"
- "MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vc2h0MjEuYworKysgYi9kcml2ZXJzL2h3bW9uL3No\n"
- "dDIxLmMKQEAgLTI2MSwyOCArMjYxLDcgQEAgc3RhdGljIHN0cnVjdCBpMmNfZHJpdmVyIHNodDIx\n"
- "X2RyaXZlciA9IHsKIAkuaWRfdGFibGUgICAgPSBzaHQyMV9pZCwKIH07CiAKLS8qKgotICogc2h0\n"
- "MjFfaW5pdCgpIC0gaW5pdGlhbGl6ZSBkcml2ZXIKLSAqCi0gKiBDYWxsZWQgd2hlbiBrZXJuZWwg\n"
- "aXMgYm9vdGVkIG9yIG1vZHVsZSBpcyBpbnNlcnRlZC4KLSAqIFJldHVybnMgMCBvbiBzdWNjZXNz\n"
- "LgotICovCi1zdGF0aWMgaW50IF9faW5pdCBzaHQyMV9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGky\n"
- "Y19hZGRfZHJpdmVyKCZzaHQyMV9kcml2ZXIpOwotfQotbW9kdWxlX2luaXQoc2h0MjFfaW5pdCk7\n"
- "Ci0KLS8qKgotICogc2h0MjFfaW5pdCgpIC0gY2xlYW4gdXAgZHJpdmVyCi0gKgotICogQ2FsbGVk\n"
- "IHdoZW4gbW9kdWxlIGlzIHJlbW92ZWQuCi0gKi8KLXN0YXRpYyB2b2lkIF9fZXhpdCBzaHQyMV9l\n"
- "eGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2ZXIoJnNodDIxX2RyaXZlcik7Ci19Ci1tb2R1bGVf\n"
- "ZXhpdChzaHQyMV9leGl0KTsKK21vZHVsZV9pMmNfZHJpdmVyKHNodDIxX2RyaXZlcik7CiAKIE1P\n"
- "RFVMRV9BVVRIT1IoIlVycyBGbGVpc2NoIDx1cnMuZmxlaXNjaEBzZW5zaXJpb24uY29tPiIpOwog\n"
- "TU9EVUxFX0RFU0NSSVBUSU9OKCJTZW5zaXJpb24gU0hUMjEgaHVtaWRpdHkgYW5kIHRlbXBlcmF0\n"
- "dXJlIHNlbnNvciBkcml2ZXIiKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vc21tNjY1LmMg\n"
- "Yi9kcml2ZXJzL2h3bW9uL3NtbTY2NS5jCmluZGV4IDFiNDMwMWYuLjI0MzgyYzcgMTAwNjQ0Ci0t\n"
- "LSBhL2RyaXZlcnMvaHdtb24vc21tNjY1LmMKKysrIGIvZHJpdmVycy9od21vbi9zbW02NjUuYwpA\n"
- "QCAtNzE4LDE5ICs3MTgsOCBAQCBzdGF0aWMgc3RydWN0IGkyY19kcml2ZXIgc21tNjY1X2RyaXZl\n"
- "ciA9IHsKIAkuaWRfdGFibGUgPSBzbW02NjVfaWQsCiB9OwogCi1zdGF0aWMgaW50IF9faW5pdCBz\n"
- "bW02NjVfaW5pdCh2b2lkKQotewotCXJldHVybiBpMmNfYWRkX2RyaXZlcigmc21tNjY1X2RyaXZl\n"
- "cik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBzbW02NjVfZXhpdCh2b2lkKQotewotCWkyY19k\n"
- "ZWxfZHJpdmVyKCZzbW02NjVfZHJpdmVyKTsKLX0KK21vZHVsZV9pMmNfZHJpdmVyKHNtbTY2NV9k\n"
- "cml2ZXIpOwogCiBNT0RVTEVfQVVUSE9SKCJHdWVudGVyIFJvZWNrIik7CiBNT0RVTEVfREVTQ1JJ\n"
- "UFRJT04oIlNNTTY2NSBkcml2ZXIiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKLQotbW9kdWxl\n"
- "X2luaXQoc21tNjY1X2luaXQpOwotbW9kdWxlX2V4aXQoc21tNjY1X2V4aXQpOwpkaWZmIC0tZ2l0\n"
- "IGEvZHJpdmVycy9od21vbi9zbXNjNDdtMTkyLmMgYi9kcml2ZXJzL2h3bW9uL3Ntc2M0N20xOTIu\n"
- "YwppbmRleCA5NTc2MWJkLi4zMDdlNmE2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2h3bW9uL3Ntc2M0\n"
- "N20xOTIuYworKysgYi9kcml2ZXJzL2h3bW9uL3Ntc2M0N20xOTIuYwpAQCAtNjY5LDE5ICs2Njks\n"
- "OCBAQCBzdGF0aWMgc3RydWN0IHNtc2M0N20xOTJfZGF0YSAqc21zYzQ3bTE5Ml91cGRhdGVfZGV2\n"
- "aWNlKHN0cnVjdCBkZXZpY2UgKmRldikKIAlyZXR1cm4gZGF0YTsKIH0KIAotc3RhdGljIGludCBf\n"
- "X2luaXQgc21zYzQ3bTE5Ml9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZz\n"
- "bXNjNDdtMTkyX2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBzbXNjNDdtMTkyX2V4\n"
- "aXQodm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmc21zYzQ3bTE5Ml9kcml2ZXIpOwotfQorbW9k\n"
- "dWxlX2kyY19kcml2ZXIoc21zYzQ3bTE5Ml9kcml2ZXIpOwogCiBNT0RVTEVfQVVUSE9SKCJIYXJ0\n"
- "bXV0IFJpY2sgPGxpbnV4QHJpY2suY2xhcmFuZXQuZGU+Iik7CiBNT0RVTEVfREVTQ1JJUFRJT04o\n"
- "IlNNU0M0N00xOTIgZHJpdmVyIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7Ci0KLW1vZHVsZV9p\n"
- "bml0KHNtc2M0N20xOTJfaW5pdCk7Ci1tb2R1bGVfZXhpdChzbXNjNDdtMTkyX2V4aXQpOwpkaWZm\n"
- "IC0tZ2l0IGEvZHJpdmVycy9od21vbi90aG1jNTAuYyBiL2RyaXZlcnMvaHdtb24vdGhtYzUwLmMK\n"
- "aW5kZXggYTE5NTkxNC4uNTFkZGIzNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi90aG1jNTAu\n"
- "YworKysgYi9kcml2ZXJzL2h3bW9uL3RobWM1MC5jCkBAIC00ODIsMTggKzQ4Miw3IEBAIHN0YXRp\n"
- "YyBzdHJ1Y3QgdGhtYzUwX2RhdGEgKnRobWM1MF91cGRhdGVfZGV2aWNlKHN0cnVjdCBkZXZpY2Ug\n"
- "KmRldikKIAlyZXR1cm4gZGF0YTsKIH0KIAotc3RhdGljIGludCBfX2luaXQgc21fdGhtYzUwX2lu\n"
- "aXQodm9pZCkKLXsKLQlyZXR1cm4gaTJjX2FkZF9kcml2ZXIoJnRobWM1MF9kcml2ZXIpOwotfQot\n"
- "Ci1zdGF0aWMgdm9pZCBfX2V4aXQgc21fdGhtYzUwX2V4aXQodm9pZCkKLXsKLQlpMmNfZGVsX2Ry\n"
- "aXZlcigmdGhtYzUwX2RyaXZlcik7Ci19Cittb2R1bGVfaTJjX2RyaXZlcih0aG1jNTBfZHJpdmVy\n"
- "KTsKIAogTU9EVUxFX0FVVEhPUigiS3J6eXN6dG9mIEhlbHQgPGtyenlzenRvZi5oMUB3cC5wbD4i\n"
- "KTsKIE1PRFVMRV9ERVNDUklQVElPTigiVEhNQzUwIGRyaXZlciIpOwotCi1tb2R1bGVfaW5pdChz\n"
- "bV90aG1jNTBfaW5pdCk7Ci1tb2R1bGVfZXhpdChzbV90aG1jNTBfZXhpdCk7CmRpZmYgLS1naXQg\n"
- "YS9kcml2ZXJzL2h3bW9uL3RtcDEwMi5jIGIvZHJpdmVycy9od21vbi90bXAxMDIuYwppbmRleCBj\n"
- "MDhlZWUyLi4wZDQ2NmI5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2h3bW9uL3RtcDEwMi5jCisrKyBi\n"
- "L2RyaXZlcnMvaHdtb24vdG1wMTAyLmMKQEAgLTI5MiwxNyArMjkyLDcgQEAgc3RhdGljIHN0cnVj\n"
- "dCBpMmNfZHJpdmVyIHRtcDEwMl9kcml2ZXIgPSB7CiAJLmlkX3RhYmxlCT0gdG1wMTAyX2lkLAog\n"
- "fTsKIAotc3RhdGljIGludCBfX2luaXQgdG1wMTAyX2luaXQodm9pZCkKLXsKLQlyZXR1cm4gaTJj\n"
- "X2FkZF9kcml2ZXIoJnRtcDEwMl9kcml2ZXIpOwotfQotbW9kdWxlX2luaXQodG1wMTAyX2luaXQp\n"
- "OwotCi1zdGF0aWMgdm9pZCBfX2V4aXQgdG1wMTAyX2V4aXQodm9pZCkKLXsKLQlpMmNfZGVsX2Ry\n"
- "aXZlcigmdG1wMTAyX2RyaXZlcik7Ci19Ci1tb2R1bGVfZXhpdCh0bXAxMDJfZXhpdCk7Cittb2R1\n"
- "bGVfaTJjX2RyaXZlcih0bXAxMDJfZHJpdmVyKTsKIAogTU9EVUxFX0FVVEhPUigiU3RldmVuIEtp\n"
- "bmcgPHNma2luZ0BmZHdkYy5jb20+Iik7CiBNT0RVTEVfREVTQ1JJUFRJT04oIlRleGFzIEluc3Ry\n"
- "dW1lbnRzIFRNUDEwMiB0ZW1wZXJhdHVyZSBzZW5zb3IgZHJpdmVyIik7CmRpZmYgLS1naXQgYS9k\n"
- "cml2ZXJzL2h3bW9uL3RtcDQwMS5jIGIvZHJpdmVycy9od21vbi90bXA0MDEuYwppbmRleCA4Yjlh\n"
- "Nzc0Li45MmI3ZjFiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2h3bW9uL3RtcDQwMS5jCisrKyBiL2Ry\n"
- "aXZlcnMvaHdtb24vdG1wNDAxLmMKQEAgLTY2MiwxOSArNjYyLDggQEAgc3RhdGljIHN0cnVjdCBp\n"
- "MmNfZHJpdmVyIHRtcDQwMV9kcml2ZXIgPSB7CiAJLmFkZHJlc3NfbGlzdAk9IG5vcm1hbF9pMmMs\n"
- "CiB9OwogCi1zdGF0aWMgaW50IF9faW5pdCB0bXA0MDFfaW5pdCh2b2lkKQotewotCXJldHVybiBp\n"
- "MmNfYWRkX2RyaXZlcigmdG1wNDAxX2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCB0\n"
- "bXA0MDFfZXhpdCh2b2lkKQotewotCWkyY19kZWxfZHJpdmVyKCZ0bXA0MDFfZHJpdmVyKTsKLX0K\n"
- "K21vZHVsZV9pMmNfZHJpdmVyKHRtcDQwMV9kcml2ZXIpOwogCiBNT0RVTEVfQVVUSE9SKCJIYW5z\n"
- "IGRlIEdvZWRlIDxoZGVnb2VkZUByZWRoYXQuY29tPiIpOwogTU9EVUxFX0RFU0NSSVBUSU9OKCJU\n"
- "ZXhhcyBJbnN0cnVtZW50cyBUTVA0MDEgdGVtcGVyYXR1cmUgc2Vuc29yIGRyaXZlciIpOwogTU9E\n"
- "VUxFX0xJQ0VOU0UoIkdQTCIpOwotCi1tb2R1bGVfaW5pdCh0bXA0MDFfaW5pdCk7Ci1tb2R1bGVf\n"
- "ZXhpdCh0bXA0MDFfZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL3RtcDQyMS5jIGIv\n"
- "ZHJpdmVycy9od21vbi90bXA0MjEuYwppbmRleCBjNDgzODFmLi44ZmFjODdhIDEwMDY0NAotLS0g\n"
- "YS9kcml2ZXJzL2h3bW9uL3RtcDQyMS5jCisrKyBiL2RyaXZlcnMvaHdtb24vdG1wNDIxLmMKQEAg\n"
- "LTMyNCwyMCArMzI0LDkgQEAgc3RhdGljIHN0cnVjdCBpMmNfZHJpdmVyIHRtcDQyMV9kcml2ZXIg\n"
- "PSB7CiAJLmFkZHJlc3NfbGlzdCA9IG5vcm1hbF9pMmMsCiB9OwogCi1zdGF0aWMgaW50IF9faW5p\n"
- "dCB0bXA0MjFfaW5pdCh2b2lkKQotewotCXJldHVybiBpMmNfYWRkX2RyaXZlcigmdG1wNDIxX2Ry\n"
- "aXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCB0bXA0MjFfZXhpdCh2b2lkKQotewotCWky\n"
- "Y19kZWxfZHJpdmVyKCZ0bXA0MjFfZHJpdmVyKTsKLX0KK21vZHVsZV9pMmNfZHJpdmVyKHRtcDQy\n"
- "MV9kcml2ZXIpOwogCiBNT0RVTEVfQVVUSE9SKCJBbmRyZSBQcmVuZGVsIDxhbmRyZS5wcmVuZGVs\n"
- "QGdteC5kZT4iKTsKIE1PRFVMRV9ERVNDUklQVElPTigiVGV4YXMgSW5zdHJ1bWVudHMgVE1QNDIx\n"
- "LzQyMi80MjMgdGVtcGVyYXR1cmUgc2Vuc29yIgogCQkgICAiIGRyaXZlciIpOwogTU9EVUxFX0xJ\n"
- "Q0VOU0UoIkdQTCIpOwotCi1tb2R1bGVfaW5pdCh0bXA0MjFfaW5pdCk7Ci1tb2R1bGVfZXhpdCh0\n"
- "bXA0MjFfZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL3c4Mzc5MWQuYyBiL2RyaXZl\n"
- "cnMvaHdtb24vdzgzNzkxZC5jCmluZGV4IDY3OTE0NmQuLmI5MmYwMWYgMTAwNjQ0Ci0tLSBhL2Ry\n"
- "aXZlcnMvaHdtb24vdzgzNzkxZC5jCisrKyBiL2RyaXZlcnMvaHdtb24vdzgzNzkxZC5jCkBAIC0x\n"
- "NjY4LDE5ICsxNjY4LDggQEAgc3RhdGljIHZvaWQgdzgzNzkxZF9wcmludF9kZWJ1ZyhzdHJ1Y3Qg\n"
- "dzgzNzkxZF9kYXRhICpkYXRhLCBzdHJ1Y3QgZGV2aWNlICpkZXYpCiB9CiAjZW5kaWYKIAotc3Rh\n"
- "dGljIGludCBfX2luaXQgc2Vuc29yc193ODM3OTFkX2luaXQodm9pZCkKLXsKLQlyZXR1cm4gaTJj\n"
- "X2FkZF9kcml2ZXIoJnc4Mzc5MWRfZHJpdmVyKTsKLX0KLQotc3RhdGljIHZvaWQgX19leGl0IHNl\n"
- "bnNvcnNfdzgzNzkxZF9leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2ZXIoJnc4Mzc5MWRfZHJp\n"
- "dmVyKTsKLX0KK21vZHVsZV9pMmNfZHJpdmVyKHc4Mzc5MWRfZHJpdmVyKTsKIAogTU9EVUxFX0FV\n"
- "VEhPUigiQ2hhcmxlcyBTcGlyYWtpcyA8YmV6YXVyQGdtYWlsLmNvbT4iKTsKIE1PRFVMRV9ERVND\n"
- "UklQVElPTigiVzgzNzkxRCBkcml2ZXIiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKLQotbW9k\n"
- "dWxlX2luaXQoc2Vuc29yc193ODM3OTFkX2luaXQpOwotbW9kdWxlX2V4aXQoc2Vuc29yc193ODM3\n"
- "OTFkX2V4aXQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi93ODM3OTJkLmMgYi9kcml2ZXJz\n"
- "L2h3bW9uL3c4Mzc5MmQuYwppbmRleCBlMzU2NjE4Li4xMTc1ZGNmIDEwMDY0NAotLS0gYS9kcml2\n"
- "ZXJzL2h3bW9uL3c4Mzc5MmQuYworKysgYi9kcml2ZXJzL2h3bW9uL3c4Mzc5MmQuYwpAQCAtMTcw\n"
- "OCwyMiArMTcwOCw4IEBAIHN0YXRpYyB2b2lkIHc4Mzc5MmRfcHJpbnRfZGVidWcoc3RydWN0IHc4\n"
- "Mzc5MmRfZGF0YSAqZGF0YSwgc3RydWN0IGRldmljZSAqZGV2KQogfQogI2VuZGlmCiAKLXN0YXRp\n"
- "YyBpbnQgX19pbml0Ci1zZW5zb3JzX3c4Mzc5MmRfaW5pdCh2b2lkKQotewotCXJldHVybiBpMmNf\n"
- "YWRkX2RyaXZlcigmdzgzNzkyZF9kcml2ZXIpOwotfQotCi1zdGF0aWMgdm9pZCBfX2V4aXQKLXNl\n"
- "bnNvcnNfdzgzNzkyZF9leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2ZXIoJnc4Mzc5MmRfZHJp\n"
- "dmVyKTsKLX0KK21vZHVsZV9pMmNfZHJpdmVyKHc4Mzc5MmRfZHJpdmVyKTsKIAogTU9EVUxFX0FV\n"
- "VEhPUigiQ2h1bmhhbyBIdWFuZyBAIFdpbmJvbmQgPERaU2hlbkBXaW5ib25kLmNvbS50dz4iKTsK\n"
- "IE1PRFVMRV9ERVNDUklQVElPTigiVzgzNzkyQUQvRCBkcml2ZXIgZm9yIGxpbnV4LTIuNiIpOwog\n"
- "TU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwotCi1tb2R1bGVfaW5pdChzZW5zb3JzX3c4Mzc5MmRfaW5p\n"
- "dCk7Ci1tb2R1bGVfZXhpdChzZW5zb3JzX3c4Mzc5MmRfZXhpdCk7Ci0KZGlmZiAtLWdpdCBhL2Ry\n"
- "aXZlcnMvaHdtb24vdzgzNzkzLmMgYi9kcml2ZXJzL2h3bW9uL3c4Mzc5My5jCmluZGV4IDU5Mjlk\n"
- "NDQuLjQ3Zjk3NWMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vdzgzNzkzLmMKKysrIGIvZHJp\n"
- "dmVycy9od21vbi93ODM3OTMuYwpAQCAtMjE2OSwxOSArMjE2OSw4IEBAIEVORDoKIAlyZXR1cm4g\n"
- "cmVzOwogfQogCi1zdGF0aWMgaW50IF9faW5pdCBzZW5zb3JzX3c4Mzc5M19pbml0KHZvaWQpCi17\n"
- "Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZ3ODM3OTNfZHJpdmVyKTsKLX0KLQotc3RhdGljIHZv\n"
- "aWQgX19leGl0IHNlbnNvcnNfdzgzNzkzX2V4aXQodm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigm\n"
- "dzgzNzkzX2RyaXZlcik7Ci19Cittb2R1bGVfaTJjX2RyaXZlcih3ODM3OTNfZHJpdmVyKTsKIAog\n"
- "TU9EVUxFX0FVVEhPUigiWXVhbiBNdSwgU3ZlbiBBbmRlcnMiKTsKIE1PRFVMRV9ERVNDUklQVElP\n"
- "TigidzgzNzkzIGRyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwotCi1tb2R1bGVfaW5p\n"
- "dChzZW5zb3JzX3c4Mzc5M19pbml0KTsKLW1vZHVsZV9leGl0KHNlbnNvcnNfdzgzNzkzX2V4aXQp\n"
- "OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi93ODM3OTUuYyBiL2RyaXZlcnMvaHdtb24vdzgz\n"
- "Nzk1LmMKaW5kZXggYWE1OGIyNS4uZGViMTJjOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi93\n"
- "ODM3OTUuYworKysgYi9kcml2ZXJzL2h3bW9uL3c4Mzc5NS5jCkBAIC0yMjQ0LDE5ICsyMjQ0LDgg\n"
- "QEAgc3RhdGljIHN0cnVjdCBpMmNfZHJpdmVyIHc4Mzc5NV9kcml2ZXIgPSB7CiAJLmFkZHJlc3Nf\n"
- "bGlzdAk9IG5vcm1hbF9pMmMsCiB9OwogCi1zdGF0aWMgaW50IF9faW5pdCBzZW5zb3JzX3c4Mzc5\n"
- "NV9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZ3ODM3OTVfZHJpdmVyKTsK\n"
- "LX0KLQotc3RhdGljIHZvaWQgX19leGl0IHNlbnNvcnNfdzgzNzk1X2V4aXQodm9pZCkKLXsKLQlp\n"
- "MmNfZGVsX2RyaXZlcigmdzgzNzk1X2RyaXZlcik7Ci19Cittb2R1bGVfaTJjX2RyaXZlcih3ODM3\n"
- "OTVfZHJpdmVyKTsKIAogTU9EVUxFX0FVVEhPUigiV2VpIFNvbmcsIEplYW4gRGVsdmFyZSA8a2hh\n"
- "bGlAbGludXgtZnIub3JnPiIpOwogTU9EVUxFX0RFU0NSSVBUSU9OKCJXODM3OTVHL0FERyBoYXJk\n"
- "d2FyZSBtb25pdG9yaW5nIGRyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwotCi1tb2R1\n"
- "bGVfaW5pdChzZW5zb3JzX3c4Mzc5NV9pbml0KTsKLW1vZHVsZV9leGl0KHNlbnNvcnNfdzgzNzk1\n"
- "X2V4aXQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi93ODNsNzg1dHMuYyBiL2RyaXZlcnMv\n"
- "aHdtb24vdzgzbDc4NXRzLmMKaW5kZXggZWRmYzFlYy4uYmMwNzE0NCAxMDA2NDQKLS0tIGEvZHJp\n"
- "dmVycy9od21vbi93ODNsNzg1dHMuYworKysgYi9kcml2ZXJzL2h3bW9uL3c4M2w3ODV0cy5jCkBA\n"
- "IC0zMDIsMTkgKzMwMiw4IEBAIHN0YXRpYyBzdHJ1Y3QgdzgzbDc4NXRzX2RhdGEgKnc4M2w3ODV0\n"
- "c191cGRhdGVfZGV2aWNlKHN0cnVjdCBkZXZpY2UgKmRldikKIAlyZXR1cm4gZGF0YTsKIH0KIAot\n"
- "c3RhdGljIGludCBfX2luaXQgc2Vuc29yc193ODNsNzg1dHNfaW5pdCh2b2lkKQotewotCXJldHVy\n"
- "biBpMmNfYWRkX2RyaXZlcigmdzgzbDc4NXRzX2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9f\n"
- "ZXhpdCBzZW5zb3JzX3c4M2w3ODV0c19leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2ZXIoJnc4\n"
- "M2w3ODV0c19kcml2ZXIpOwotfQorbW9kdWxlX2kyY19kcml2ZXIodzgzbDc4NXRzX2RyaXZlcik7\n"
- "CiAKIE1PRFVMRV9BVVRIT1IoIkplYW4gRGVsdmFyZSA8a2hhbGlAbGludXgtZnIub3JnPiIpOwog\n"
- "TU9EVUxFX0RFU0NSSVBUSU9OKCJXODNMNzg1VFMtUyBkcml2ZXIiKTsKIE1PRFVMRV9MSUNFTlNF\n"
- "KCJHUEwiKTsKLQotbW9kdWxlX2luaXQoc2Vuc29yc193ODNsNzg1dHNfaW5pdCk7Ci1tb2R1bGVf\n"
- "ZXhpdChzZW5zb3JzX3c4M2w3ODV0c19leGl0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24v\n"
- "dzgzbDc4Nm5nLmMgYi9kcml2ZXJzL2h3bW9uL3c4M2w3ODZuZy5jCmluZGV4IDZlYWM1ZDkuLmE2\n"
- "MzEwYjggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vdzgzbDc4Nm5nLmMKKysrIGIvZHJpdmVy\n"
- "cy9od21vbi93ODNsNzg2bmcuYwpAQCAtODA2LDIxICs4MDYsOCBAQCBzdGF0aWMgc3RydWN0IHc4\n"
- "M2w3ODZuZ19kYXRhICp3ODNsNzg2bmdfdXBkYXRlX2RldmljZShzdHJ1Y3QgZGV2aWNlICpkZXYp\n"
- "CiAJcmV0dXJuIGRhdGE7CiB9CiAKLXN0YXRpYyBpbnQgX19pbml0Ci1zZW5zb3JzX3c4M2w3ODZu\n"
- "Z19pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZ3ODNsNzg2bmdfZHJpdmVy\n"
- "KTsKLX0KLQotc3RhdGljIHZvaWQgX19leGl0Ci1zZW5zb3JzX3c4M2w3ODZuZ19leGl0KHZvaWQp\n"
- "Ci17Ci0JaTJjX2RlbF9kcml2ZXIoJnc4M2w3ODZuZ19kcml2ZXIpOwotfQorbW9kdWxlX2kyY19k\n"
- "cml2ZXIodzgzbDc4Nm5nX2RyaXZlcik7CiAKIE1PRFVMRV9BVVRIT1IoIktldmluIExvIik7CiBN\n"
- "T0RVTEVfREVTQ1JJUFRJT04oInc4M2w3ODZuZyBkcml2ZXIiKTsKIE1PRFVMRV9MSUNFTlNFKCJH\n"
- "UEwiKTsKLQotbW9kdWxlX2luaXQoc2Vuc29yc193ODNsNzg2bmdfaW5pdCk7Ci1tb2R1bGVfZXhp\n"
- "dChzZW5zb3JzX3c4M2w3ODZuZ19leGl0KTsKLS0gCjEuNy41LjQKCgoKCl9fX19fX19fX19fX19f\n"
- "X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxtLXNlbnNvcnMgbWFpbGluZyBsaXN0\n"
- "CmxtLXNlbnNvcnNAbG0tc2Vuc29ycy5vcmcKaHR0cDovL2xpc3RzLmxtLXNlbnNvcnMub3JnL21h\n"
- aWxtYW4vbGlzdGluZm8vbG0tc2Vuc29ycw=
+ "This patch converts the drivers in drivers/hwmon/* to use the\n"
+ "module_i2c_driver() macro which makes the code smaller and a bit simpler.\n"
+ "\n"
+ "Signed-off-by: Axel Lin <axel.lin@gmail.com>\n"
+ "Cc: Corentin Labbe <corentin.labbe@geomatys.fr>\n"
+ "Cc: Dirk Eibach <eibach@gdsys.de>\n"
+ "Cc: \"Mark M. Hoffman\" <mhoffman@lightlink.com>\n"
+ "Cc: Steve Glendinning <steve.glendinning@smsc.com>\n"
+ "Cc: Riku Voipio <riku.voipio@iki.fi>\n"
+ "Cc: Guillaume Ligneul <guillaume.ligneul@gmail.com>\n"
+ "Cc: David George <david.george@ska.ac.za>\n"
+ "Cc: \"Hans J. Koch\" <hjk@hansjkoch.de>\n"
+ "Cc: Marc Hulsman <m.hulsman@tudelft.nl>\n"
+ "Cc: Rudolf Marek <r.marek@assembler.cz>\n"
+ "---\n"
+ " drivers/hwmon/ad7414.c         |   12 +-----------\n"
+ " drivers/hwmon/ad7418.c         |   13 +------------\n"
+ " drivers/hwmon/adm1021.c        |   13 +------------\n"
+ " drivers/hwmon/adm1025.c        |   13 +------------\n"
+ " drivers/hwmon/adm1026.c        |   13 +------------\n"
+ " drivers/hwmon/adm1029.c        |   18 +-----------------\n"
+ " drivers/hwmon/adm1031.c        |   13 +------------\n"
+ " drivers/hwmon/adm9240.c        |   14 +-------------\n"
+ " drivers/hwmon/ads1015.c        |   13 +------------\n"
+ " drivers/hwmon/adt7411.c        |   12 +-----------\n"
+ " drivers/hwmon/adt7462.c        |   13 +------------\n"
+ " drivers/hwmon/adt7470.c        |   13 +------------\n"
+ " drivers/hwmon/adt7475.c        |   13 +------------\n"
+ " drivers/hwmon/amc6821.c        |   15 +--------------\n"
+ " drivers/hwmon/asb100.c         |   13 +------------\n"
+ " drivers/hwmon/atxp1.c          |   13 +------------\n"
+ " drivers/hwmon/ds1621.c         |   14 +-------------\n"
+ " drivers/hwmon/ds620.c          |   13 +------------\n"
+ " drivers/hwmon/emc1403.c        |   13 +------------\n"
+ " drivers/hwmon/emc2103.c        |   13 +------------\n"
+ " drivers/hwmon/emc6w201.c       |   12 +-----------\n"
+ " drivers/hwmon/f75375s.c        |   13 +------------\n"
+ " drivers/hwmon/fschmd.c         |   13 +------------\n"
+ " drivers/hwmon/g760a.c          |   15 +--------------\n"
+ " drivers/hwmon/gl518sm.c        |   13 +------------\n"
+ " drivers/hwmon/gl520sm.c        |   15 +--------------\n"
+ " drivers/hwmon/jc42.c           |   13 +------------\n"
+ " drivers/hwmon/lineage-pem.c    |   13 +------------\n"
+ " drivers/hwmon/lm63.c           |   13 +------------\n"
+ " drivers/hwmon/lm73.c           |   15 +--------------\n"
+ " drivers/hwmon/lm75.c           |   17 +----------------\n"
+ " drivers/hwmon/lm77.c           |   13 +------------\n"
+ " drivers/hwmon/lm80.c           |   13 +------------\n"
+ " drivers/hwmon/lm83.c           |   13 +------------\n"
+ " drivers/hwmon/lm85.c           |   14 +-------------\n"
+ " drivers/hwmon/lm87.c           |   13 +------------\n"
+ " drivers/hwmon/lm90.c           |   13 +------------\n"
+ " drivers/hwmon/lm92.c           |   13 +------------\n"
+ " drivers/hwmon/lm93.c           |   13 +------------\n"
+ " drivers/hwmon/lm95241.c        |   13 +------------\n"
+ " drivers/hwmon/lm95245.c        |   13 +------------\n"
+ " drivers/hwmon/ltc4151.c        |   13 +------------\n"
+ " drivers/hwmon/ltc4215.c        |   13 +------------\n"
+ " drivers/hwmon/ltc4245.c        |   13 +------------\n"
+ " drivers/hwmon/ltc4261.c        |   13 +------------\n"
+ " drivers/hwmon/max16065.c       |   13 +------------\n"
+ " drivers/hwmon/max1619.c        |   13 +------------\n"
+ " drivers/hwmon/max1668.c        |   13 +------------\n"
+ " drivers/hwmon/max6639.c        |   13 +------------\n"
+ " drivers/hwmon/max6642.c        |   13 +------------\n"
+ " drivers/hwmon/max6650.c        |   13 +------------\n"
+ " drivers/hwmon/pmbus/adm1275.c  |   12 +-----------\n"
+ " drivers/hwmon/pmbus/lm25066.c  |   12 +-----------\n"
+ " drivers/hwmon/pmbus/ltc2978.c  |   12 +-----------\n"
+ " drivers/hwmon/pmbus/max16064.c |   12 +-----------\n"
+ " drivers/hwmon/pmbus/max34440.c |   12 +-----------\n"
+ " drivers/hwmon/pmbus/max8688.c  |   12 +-----------\n"
+ " drivers/hwmon/pmbus/pmbus.c    |   12 +-----------\n"
+ " drivers/hwmon/pmbus/ucd9000.c  |   12 +-----------\n"
+ " drivers/hwmon/pmbus/ucd9200.c  |   12 +-----------\n"
+ " drivers/hwmon/pmbus/zl6100.c   |   12 +-----------\n"
+ " drivers/hwmon/sht21.c          |   23 +----------------------\n"
+ " drivers/hwmon/smm665.c         |   13 +------------\n"
+ " drivers/hwmon/smsc47m192.c     |   13 +------------\n"
+ " drivers/hwmon/thmc50.c         |   13 +------------\n"
+ " drivers/hwmon/tmp102.c         |   12 +-----------\n"
+ " drivers/hwmon/tmp401.c         |   13 +------------\n"
+ " drivers/hwmon/tmp421.c         |   13 +------------\n"
+ " drivers/hwmon/w83791d.c        |   13 +------------\n"
+ " drivers/hwmon/w83792d.c        |   16 +---------------\n"
+ " drivers/hwmon/w83793.c         |   13 +------------\n"
+ " drivers/hwmon/w83795.c         |   13 +------------\n"
+ " drivers/hwmon/w83l785ts.c      |   13 +------------\n"
+ " drivers/hwmon/w83l786ng.c      |   15 +--------------\n"
+ " 74 files changed, 74 insertions(+), 909 deletions(-)\n"
+ "\n"
+ "diff --git a/drivers/hwmon/ad7414.c b/drivers/hwmon/ad7414.c\n"
+ "index edbdb6d..3646500 100644\n"
+ "--- a/drivers/hwmon/ad7414.c\n"
+ "+++ b/drivers/hwmon/ad7414.c\n"
+ "@@ -256,17 +256,7 @@ static struct i2c_driver ad7414_driver = {\n"
+ " \t.id_table = ad7414_id,\n"
+ " };\n"
+ " \n"
+ "-static int __init ad7414_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&ad7414_driver);\n"
+ "-}\n"
+ "-module_init(ad7414_init);\n"
+ "-\n"
+ "-static void __exit ad7414_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&ad7414_driver);\n"
+ "-}\n"
+ "-module_exit(ad7414_exit);\n"
+ "+module_i2c_driver(ad7414_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Stefan Roese <sr at denx.de>, \"\n"
+ " \t      \"Frank Edelhaeuser <frank.edelhaeuser at spansion.com>\");\n"
+ "diff --git a/drivers/hwmon/ad7418.c b/drivers/hwmon/ad7418.c\n"
+ "index 42461d1..a50a6be 100644\n"
+ "--- a/drivers/hwmon/ad7418.c\n"
+ "+++ b/drivers/hwmon/ad7418.c\n"
+ "@@ -295,20 +295,9 @@ static int ad7418_remove(struct i2c_client *client)\n"
+ " \treturn 0;\n"
+ " }\n"
+ " \n"
+ "-static int __init ad7418_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&ad7418_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit ad7418_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&ad7418_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(ad7418_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Alessandro Zummo <a.zummo@towertech.it>\");\n"
+ " MODULE_DESCRIPTION(\"AD7416/17/18 driver\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ " MODULE_VERSION(DRV_VERSION);\n"
+ "-\n"
+ "-module_init(ad7418_init);\n"
+ "-module_exit(ad7418_exit);\n"
+ "diff --git a/drivers/hwmon/adm1021.c b/drivers/hwmon/adm1021.c\n"
+ "index e6fc006..ec84331 100644\n"
+ "--- a/drivers/hwmon/adm1021.c\n"
+ "+++ b/drivers/hwmon/adm1021.c\n"
+ "@@ -471,15 +471,7 @@ static struct adm1021_data *adm1021_update_device(struct device *dev)\n"
+ " \treturn data;\n"
+ " }\n"
+ " \n"
+ "-static int __init sensors_adm1021_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&adm1021_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit sensors_adm1021_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&adm1021_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(adm1021_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Frodo Looijaard <frodol@dds.nl> and \"\n"
+ " \t\t\"Philip Edelbrock <phil@netroedge.com>\");\n"
+ "@@ -488,6 +480,3 @@ MODULE_LICENSE(\"GPL\");\n"
+ " \n"
+ " module_param(read_only, bool, 0);\n"
+ " MODULE_PARM_DESC(read_only, \"Don't set any values, read only mode\");\n"
+ "-\n"
+ "-module_init(sensors_adm1021_init)\n"
+ "-module_exit(sensors_adm1021_exit)\n"
+ "diff --git a/drivers/hwmon/adm1025.c b/drivers/hwmon/adm1025.c\n"
+ "index 14d8997..efbc9c9 100644\n"
+ "--- a/drivers/hwmon/adm1025.c\n"
+ "+++ b/drivers/hwmon/adm1025.c\n"
+ "@@ -618,19 +618,8 @@ static struct adm1025_data *adm1025_update_device(struct device *dev)\n"
+ " \treturn data;\n"
+ " }\n"
+ " \n"
+ "-static int __init sensors_adm1025_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&adm1025_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit sensors_adm1025_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&adm1025_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(adm1025_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Jean Delvare <khali@linux-fr.org>\");\n"
+ " MODULE_DESCRIPTION(\"ADM1025 driver\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-\n"
+ "-module_init(sensors_adm1025_init);\n"
+ "-module_exit(sensors_adm1025_exit);\n"
+ "diff --git a/drivers/hwmon/adm1026.c b/drivers/hwmon/adm1026.c\n"
+ "index cd773ce..1f4f5de 100644\n"
+ "--- a/drivers/hwmon/adm1026.c\n"
+ "+++ b/drivers/hwmon/adm1026.c\n"
+ "@@ -1881,20 +1881,9 @@ static int adm1026_remove(struct i2c_client *client)\n"
+ " \treturn 0;\n"
+ " }\n"
+ " \n"
+ "-static int __init sm_adm1026_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&adm1026_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit sm_adm1026_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&adm1026_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(adm1026_driver);\n"
+ " \n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ " MODULE_AUTHOR(\"Philip Pokorny <ppokorny@penguincomputing.com>, \"\n"
+ " \t      \"Justin Thiessen <jthiessen@penguincomputing.com>\");\n"
+ " MODULE_DESCRIPTION(\"ADM1026 driver\");\n"
+ "-\n"
+ "-module_init(sm_adm1026_init);\n"
+ "-module_exit(sm_adm1026_exit);\n"
+ "diff --git a/drivers/hwmon/adm1029.c b/drivers/hwmon/adm1029.c\n"
+ "index d789c33..c6531a8 100644\n"
+ "--- a/drivers/hwmon/adm1029.c\n"
+ "+++ b/drivers/hwmon/adm1029.c\n"
+ "@@ -450,24 +450,8 @@ static struct adm1029_data *adm1029_update_device(struct device *dev)\n"
+ " \treturn data;\n"
+ " }\n"
+ " \n"
+ "-/*\n"
+ "-\tCommon module stuff\n"
+ "-*/\n"
+ "-static int __init sensors_adm1029_init(void)\n"
+ "-{\n"
+ "-\n"
+ "-\treturn i2c_add_driver(&adm1029_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit sensors_adm1029_exit(void)\n"
+ "-{\n"
+ "-\n"
+ "-\ti2c_del_driver(&adm1029_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(adm1029_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Corentin LABBE <corentin.labbe@geomatys.fr>\");\n"
+ " MODULE_DESCRIPTION(\"adm1029 driver\");\n"
+ " MODULE_LICENSE(\"GPL v2\");\n"
+ "-\n"
+ "-module_init(sensors_adm1029_init);\n"
+ "-module_exit(sensors_adm1029_exit);\n"
+ "diff --git a/drivers/hwmon/adm1031.c b/drivers/hwmon/adm1031.c\n"
+ "index 97e2cfb..71b5ec3 100644\n"
+ "--- a/drivers/hwmon/adm1031.c\n"
+ "+++ b/drivers/hwmon/adm1031.c\n"
+ "@@ -1131,19 +1131,8 @@ static struct adm1031_data *adm1031_update_device(struct device *dev)\n"
+ " \treturn data;\n"
+ " }\n"
+ " \n"
+ "-static int __init sensors_adm1031_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&adm1031_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit sensors_adm1031_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&adm1031_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(adm1031_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Alexandre d'Alton <alex@alexdalton.org>\");\n"
+ " MODULE_DESCRIPTION(\"ADM1031/ADM1030 driver\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-\n"
+ "-module_init(sensors_adm1031_init);\n"
+ "-module_exit(sensors_adm1031_exit);\n"
+ "diff --git a/drivers/hwmon/adm9240.c b/drivers/hwmon/adm9240.c\n"
+ "index 2de4511..340b842 100644\n"
+ "--- a/drivers/hwmon/adm9240.c\n"
+ "+++ b/drivers/hwmon/adm9240.c\n"
+ "@@ -821,21 +821,9 @@ static struct adm9240_data *adm9240_update_device(struct device *dev)\n"
+ " \treturn data;\n"
+ " }\n"
+ " \n"
+ "-static int __init sensors_adm9240_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&adm9240_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit sensors_adm9240_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&adm9240_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(adm9240_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Michiel Rook <michiel@grendelproject.nl>, \"\n"
+ " \t\t\"Grant Coady <gcoady.lk@gmail.com> and others\");\n"
+ " MODULE_DESCRIPTION(\"ADM9240/DS1780/LM81 driver\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-\n"
+ "-module_init(sensors_adm9240_init);\n"
+ "-module_exit(sensors_adm9240_exit);\n"
+ "-\n"
+ "diff --git a/drivers/hwmon/ads1015.c b/drivers/hwmon/ads1015.c\n"
+ "index eedca3c..60be358 100644\n"
+ "--- a/drivers/hwmon/ads1015.c\n"
+ "+++ b/drivers/hwmon/ads1015.c\n"
+ "@@ -306,19 +306,8 @@ static struct i2c_driver ads1015_driver = {\n"
+ " \t.id_table = ads1015_id,\n"
+ " };\n"
+ " \n"
+ "-static int __init sensors_ads1015_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&ads1015_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit sensors_ads1015_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&ads1015_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(ads1015_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Dirk Eibach <eibach@gdsys.de>\");\n"
+ " MODULE_DESCRIPTION(\"ADS1015 driver\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-\n"
+ "-module_init(sensors_ads1015_init);\n"
+ "-module_exit(sensors_ads1015_exit);\n"
+ "diff --git a/drivers/hwmon/adt7411.c b/drivers/hwmon/adt7411.c\n"
+ "index ffe64f8..71bacc5 100644\n"
+ "--- a/drivers/hwmon/adt7411.c\n"
+ "+++ b/drivers/hwmon/adt7411.c\n"
+ "@@ -348,17 +348,7 @@ static struct i2c_driver adt7411_driver = {\n"
+ " \t.class = I2C_CLASS_HWMON,\n"
+ " };\n"
+ " \n"
+ "-static int __init sensors_adt7411_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&adt7411_driver);\n"
+ "-}\n"
+ "-module_init(sensors_adt7411_init)\n"
+ "-\n"
+ "-static void __exit sensors_adt7411_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&adt7411_driver);\n"
+ "-}\n"
+ "-module_exit(sensors_adt7411_exit)\n"
+ "+module_i2c_driver(adt7411_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Sascha Hauer <s.hauer@pengutronix.de> and \"\n"
+ " \t\"Wolfram Sang <w.sang@pengutronix.de>\");\n"
+ "diff --git a/drivers/hwmon/adt7462.c b/drivers/hwmon/adt7462.c\n"
+ "index 3df331a..e4b1cc9 100644\n"
+ "--- a/drivers/hwmon/adt7462.c\n"
+ "+++ b/drivers/hwmon/adt7462.c\n"
+ "@@ -1974,19 +1974,8 @@ static int adt7462_remove(struct i2c_client *client)\n"
+ " \treturn 0;\n"
+ " }\n"
+ " \n"
+ "-static int __init adt7462_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&adt7462_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit adt7462_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&adt7462_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(adt7462_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Darrick J. Wong <djwong@us.ibm.com>\");\n"
+ " MODULE_DESCRIPTION(\"ADT7462 driver\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-\n"
+ "-module_init(adt7462_init);\n"
+ "-module_exit(adt7462_exit);\n"
+ "diff --git a/drivers/hwmon/adt7470.c b/drivers/hwmon/adt7470.c\n"
+ "index b23efd9..54ec890 100644\n"
+ "--- a/drivers/hwmon/adt7470.c\n"
+ "+++ b/drivers/hwmon/adt7470.c\n"
+ "@@ -1317,19 +1317,8 @@ static int adt7470_remove(struct i2c_client *client)\n"
+ " \treturn 0;\n"
+ " }\n"
+ " \n"
+ "-static int __init adt7470_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&adt7470_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit adt7470_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&adt7470_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(adt7470_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Darrick J. Wong <djwong@us.ibm.com>\");\n"
+ " MODULE_DESCRIPTION(\"ADT7470 driver\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-\n"
+ "-module_init(adt7470_init);\n"
+ "-module_exit(adt7470_exit);\n"
+ "diff --git a/drivers/hwmon/adt7475.c b/drivers/hwmon/adt7475.c\n"
+ "index 71e9ac4..522cb76 100644\n"
+ "--- a/drivers/hwmon/adt7475.c\n"
+ "+++ b/drivers/hwmon/adt7475.c\n"
+ "@@ -1600,19 +1600,8 @@ static struct adt7475_data *adt7475_update_device(struct device *dev)\n"
+ " \treturn data;\n"
+ " }\n"
+ " \n"
+ "-static int __init sensors_adt7475_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&adt7475_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit sensors_adt7475_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&adt7475_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(adt7475_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Advanced Micro Devices, Inc\");\n"
+ " MODULE_DESCRIPTION(\"adt7475 driver\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-\n"
+ "-module_init(sensors_adt7475_init);\n"
+ "-module_exit(sensors_adt7475_exit);\n"
+ "diff --git a/drivers/hwmon/amc6821.c b/drivers/hwmon/amc6821.c\n"
+ "index 4a4bfef..5298855 100644\n"
+ "--- a/drivers/hwmon/amc6821.c\n"
+ "+++ b/drivers/hwmon/amc6821.c\n"
+ "@@ -1095,20 +1095,7 @@ static struct amc6821_data *amc6821_update_device(struct device *dev)\n"
+ " \treturn data;\n"
+ " }\n"
+ " \n"
+ "-\n"
+ "-static int __init amc6821_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&amc6821_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit amc6821_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&amc6821_driver);\n"
+ "-}\n"
+ "-\n"
+ "-module_init(amc6821_init);\n"
+ "-module_exit(amc6821_exit);\n"
+ "-\n"
+ "+module_i2c_driver(amc6821_driver);\n"
+ " \n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ " MODULE_AUTHOR(\"T. Mertelj <tomaz.mertelj@guest.arnes.si>\");\n"
+ "diff --git a/drivers/hwmon/asb100.c b/drivers/hwmon/asb100.c\n"
+ "index a5f1642..573fff5 100644\n"
+ "--- a/drivers/hwmon/asb100.c\n"
+ "+++ b/drivers/hwmon/asb100.c\n"
+ "@@ -1002,19 +1002,8 @@ static struct asb100_data *asb100_update_device(struct device *dev)\n"
+ " \treturn data;\n"
+ " }\n"
+ " \n"
+ "-static int __init asb100_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&asb100_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit asb100_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&asb100_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(asb100_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Mark M. Hoffman <mhoffman@lightlink.com>\");\n"
+ " MODULE_DESCRIPTION(\"ASB100 Bach driver\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-\n"
+ "-module_init(asb100_init);\n"
+ "-module_exit(asb100_exit);\n"
+ "diff --git a/drivers/hwmon/atxp1.c b/drivers/hwmon/atxp1.c\n"
+ "index d4a589b..5a671ca 100644\n"
+ "--- a/drivers/hwmon/atxp1.c\n"
+ "+++ b/drivers/hwmon/atxp1.c\n"
+ "@@ -390,15 +390,4 @@ static int atxp1_remove(struct i2c_client *client)\n"
+ " \treturn 0;\n"
+ " };\n"
+ " \n"
+ "-static int __init atxp1_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&atxp1_driver);\n"
+ "-};\n"
+ "-\n"
+ "-static void __exit atxp1_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&atxp1_driver);\n"
+ "-};\n"
+ "-\n"
+ "-module_init(atxp1_init);\n"
+ "-module_exit(atxp1_exit);\n"
+ "+module_i2c_driver(atxp1_driver);\n"
+ "diff --git a/drivers/hwmon/ds1621.c b/drivers/hwmon/ds1621.c\n"
+ "index e23a8ab..5dc5489 100644\n"
+ "--- a/drivers/hwmon/ds1621.c\n"
+ "+++ b/drivers/hwmon/ds1621.c\n"
+ "@@ -311,20 +311,8 @@ static struct i2c_driver ds1621_driver = {\n"
+ " \t.address_list\t= normal_i2c,\n"
+ " };\n"
+ " \n"
+ "-static int __init ds1621_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&ds1621_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit ds1621_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&ds1621_driver);\n"
+ "-}\n"
+ "-\n"
+ "+module_i2c_driver(ds1621_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Christian W. Zuckschwerdt <zany@triq.net>\");\n"
+ " MODULE_DESCRIPTION(\"DS1621 driver\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-\n"
+ "-module_init(ds1621_init);\n"
+ "-module_exit(ds1621_exit);\n"
+ "diff --git a/drivers/hwmon/ds620.c b/drivers/hwmon/ds620.c\n"
+ "index 300c3d4..50663ef 100644\n"
+ "--- a/drivers/hwmon/ds620.c\n"
+ "+++ b/drivers/hwmon/ds620.c\n"
+ "@@ -297,19 +297,8 @@ static struct i2c_driver ds620_driver = {\n"
+ " \t.id_table = ds620_id,\n"
+ " };\n"
+ " \n"
+ "-static int __init ds620_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&ds620_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit ds620_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&ds620_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(ds620_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Roland Stigge <stigge@antcom.de>\");\n"
+ " MODULE_DESCRIPTION(\"DS620 driver\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-\n"
+ "-module_init(ds620_init);\n"
+ "-module_exit(ds620_exit);\n"
+ "diff --git a/drivers/hwmon/emc1403.c b/drivers/hwmon/emc1403.c\n"
+ "index 270ffab..99ac141 100644\n"
+ "--- a/drivers/hwmon/emc1403.c\n"
+ "+++ b/drivers/hwmon/emc1403.c\n"
+ "@@ -366,18 +366,7 @@ static struct i2c_driver sensor_emc1403 = {\n"
+ " \t.address_list = emc1403_address_list,\n"
+ " };\n"
+ " \n"
+ "-static int __init sensor_emc1403_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&sensor_emc1403);\n"
+ "-}\n"
+ "-\n"
+ "-static void  __exit sensor_emc1403_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&sensor_emc1403);\n"
+ "-}\n"
+ "-\n"
+ "-module_init(sensor_emc1403_init);\n"
+ "-module_exit(sensor_emc1403_exit);\n"
+ "+module_i2c_driver(sensor_emc1403);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Kalhan Trisal <kalhan.trisal@intel.com\");\n"
+ " MODULE_DESCRIPTION(\"emc1403 Thermal Driver\");\n"
+ "diff --git a/drivers/hwmon/emc2103.c b/drivers/hwmon/emc2103.c\n"
+ "index 8650639..0f51382 100644\n"
+ "--- a/drivers/hwmon/emc2103.c\n"
+ "+++ b/drivers/hwmon/emc2103.c\n"
+ "@@ -722,19 +722,8 @@ static struct i2c_driver emc2103_driver = {\n"
+ " \t.address_list\t= normal_i2c,\n"
+ " };\n"
+ " \n"
+ "-static int __init sensors_emc2103_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&emc2103_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit sensors_emc2103_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&emc2103_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(emc2103_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Steve Glendinning <steve.glendinning@smsc.com>\");\n"
+ " MODULE_DESCRIPTION(\"SMSC EMC2103 hwmon driver\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-\n"
+ "-module_init(sensors_emc2103_init);\n"
+ "-module_exit(sensors_emc2103_exit);\n"
+ "diff --git a/drivers/hwmon/emc6w201.c b/drivers/hwmon/emc6w201.c\n"
+ "index 6ebb9b7..840f511 100644\n"
+ "--- a/drivers/hwmon/emc6w201.c\n"
+ "+++ b/drivers/hwmon/emc6w201.c\n"
+ "@@ -552,17 +552,7 @@ static struct i2c_driver emc6w201_driver = {\n"
+ " \t.address_list\t= normal_i2c,\n"
+ " };\n"
+ " \n"
+ "-static int __init sensors_emc6w201_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&emc6w201_driver);\n"
+ "-}\n"
+ "-module_init(sensors_emc6w201_init);\n"
+ "-\n"
+ "-static void __exit sensors_emc6w201_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&emc6w201_driver);\n"
+ "-}\n"
+ "-module_exit(sensors_emc6w201_exit);\n"
+ "+module_i2c_driver(emc6w201_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Jean Delvare <khali@linux-fr.org>\");\n"
+ " MODULE_DESCRIPTION(\"SMSC EMC6W201 hardware monitoring driver\");\n"
+ "diff --git a/drivers/hwmon/f75375s.c b/drivers/hwmon/f75375s.c\n"
+ "index eedf574..398dbc8 100644\n"
+ "--- a/drivers/hwmon/f75375s.c\n"
+ "+++ b/drivers/hwmon/f75375s.c\n"
+ "@@ -858,19 +858,8 @@ static int f75375_detect(struct i2c_client *client,\n"
+ " \treturn 0;\n"
+ " }\n"
+ " \n"
+ "-static int __init sensors_f75375_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&f75375_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit sensors_f75375_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&f75375_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(f75375_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Riku Voipio\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ " MODULE_DESCRIPTION(\"F75373/F75375/F75387 hardware monitoring driver\");\n"
+ "-\n"
+ "-module_init(sensors_f75375_init);\n"
+ "-module_exit(sensors_f75375_exit);\n"
+ "diff --git a/drivers/hwmon/fschmd.c b/drivers/hwmon/fschmd.c\n"
+ "index 06cbf77..35ddf6d 100644\n"
+ "--- a/drivers/hwmon/fschmd.c\n"
+ "+++ b/drivers/hwmon/fschmd.c\n"
+ "@@ -1341,20 +1341,9 @@ static struct fschmd_data *fschmd_update_device(struct device *dev)\n"
+ " \treturn data;\n"
+ " }\n"
+ " \n"
+ "-static int __init fschmd_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&fschmd_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit fschmd_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&fschmd_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(fschmd_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Hans de Goede <hdegoede@redhat.com>\");\n"
+ " MODULE_DESCRIPTION(\"FSC Poseidon, Hermes, Scylla, Heracles, Heimdall, Hades \"\n"
+ " \t\t\t\"and Syleus driver\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-\n"
+ "-module_init(fschmd_init);\n"
+ "-module_exit(fschmd_exit);\n"
+ "diff --git a/drivers/hwmon/g760a.c b/drivers/hwmon/g760a.c\n"
+ "index 81b6e35..052e304 100644\n"
+ "--- a/drivers/hwmon/g760a.c\n"
+ "+++ b/drivers/hwmon/g760a.c\n"
+ "@@ -250,21 +250,8 @@ static int g760a_remove(struct i2c_client *client)\n"
+ " \treturn 0;\n"
+ " }\n"
+ " \n"
+ "-/* module management */\n"
+ "-\n"
+ "-static int __init g760a_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&g760a_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit g760a_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&g760a_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(g760a_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Herbert Valerio Riedel <hvr@gnu.org>\");\n"
+ " MODULE_DESCRIPTION(\"GMT G760A driver\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-\n"
+ "-module_init(g760a_init);\n"
+ "-module_exit(g760a_exit);\n"
+ "diff --git a/drivers/hwmon/gl518sm.c b/drivers/hwmon/gl518sm.c\n"
+ "index 8d0f71d..ae193f0 100644\n"
+ "--- a/drivers/hwmon/gl518sm.c\n"
+ "+++ b/drivers/hwmon/gl518sm.c\n"
+ "@@ -710,21 +710,10 @@ static struct gl518_data *gl518_update_device(struct device *dev)\n"
+ " \treturn data;\n"
+ " }\n"
+ " \n"
+ "-static int __init sensors_gl518sm_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&gl518_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit sensors_gl518sm_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&gl518_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(gl518_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Frodo Looijaard <frodol@dds.nl>, \"\n"
+ " \t\"Kyosti Malkki <kmalkki@cc.hut.fi> and \"\n"
+ " \t\"Hong-Gunn Chew <hglinux@gunnet.org>\");\n"
+ " MODULE_DESCRIPTION(\"GL518SM driver\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-\n"
+ "-module_init(sensors_gl518sm_init);\n"
+ "-module_exit(sensors_gl518sm_exit);\n"
+ "diff --git a/drivers/hwmon/gl520sm.c b/drivers/hwmon/gl520sm.c\n"
+ "index 1909097..52dadb2 100644\n"
+ "--- a/drivers/hwmon/gl520sm.c\n"
+ "+++ b/drivers/hwmon/gl520sm.c\n"
+ "@@ -979,23 +979,10 @@ static struct gl520_data *gl520_update_device(struct device *dev)\n"
+ " \treturn data;\n"
+ " }\n"
+ " \n"
+ "-\n"
+ "-static int __init sensors_gl520sm_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&gl520_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit sensors_gl520sm_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&gl520_driver);\n"
+ "-}\n"
+ "-\n"
+ "+module_i2c_driver(gl520_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Frodo Looijaard <frodol@dds.nl>, \"\n"
+ " \t\"Ky\303\266sti M\303\244lkki <kmalkki@cc.hut.fi>, \"\n"
+ " \t\"Maarten Deprez <maartendeprez@users.sourceforge.net>\");\n"
+ " MODULE_DESCRIPTION(\"GL520SM driver\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-\n"
+ "-module_init(sensors_gl520sm_init);\n"
+ "-module_exit(sensors_gl520sm_exit);\n"
+ "diff --git a/drivers/hwmon/jc42.c b/drivers/hwmon/jc42.c\n"
+ "index 28c09ee..308346c 100644\n"
+ "--- a/drivers/hwmon/jc42.c\n"
+ "+++ b/drivers/hwmon/jc42.c\n"
+ "@@ -588,19 +588,8 @@ abort:\n"
+ " \treturn ret;\n"
+ " }\n"
+ " \n"
+ "-static int __init sensors_jc42_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&jc42_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit sensors_jc42_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&jc42_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(jc42_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Guenter Roeck <guenter.roeck@ericsson.com>\");\n"
+ " MODULE_DESCRIPTION(\"JC42 driver\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-\n"
+ "-module_init(sensors_jc42_init);\n"
+ "-module_exit(sensors_jc42_exit);\n"
+ "diff --git a/drivers/hwmon/lineage-pem.c b/drivers/hwmon/lineage-pem.c\n"
+ "index 58eded2..5b8c9ae 100644\n"
+ "--- a/drivers/hwmon/lineage-pem.c\n"
+ "+++ b/drivers/hwmon/lineage-pem.c\n"
+ "@@ -568,19 +568,8 @@ static struct i2c_driver pem_driver = {\n"
+ " \t.id_table = pem_id,\n"
+ " };\n"
+ " \n"
+ "-static int __init pem_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&pem_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit pem_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&pem_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(pem_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Guenter Roeck <guenter.roeck@ericsson.com>\");\n"
+ " MODULE_DESCRIPTION(\"Lineage CPL PEM hardware monitoring driver\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-\n"
+ "-module_init(pem_init);\n"
+ "-module_exit(pem_exit);\n"
+ "diff --git a/drivers/hwmon/lm63.c b/drivers/hwmon/lm63.c\n"
+ "index 5e6457a..15c05cc 100644\n"
+ "--- a/drivers/hwmon/lm63.c\n"
+ "+++ b/drivers/hwmon/lm63.c\n"
+ "@@ -1119,19 +1119,8 @@ static struct lm63_data *lm63_update_device(struct device *dev)\n"
+ " \treturn data;\n"
+ " }\n"
+ " \n"
+ "-static int __init sensors_lm63_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&lm63_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit sensors_lm63_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&lm63_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(lm63_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Jean Delvare <khali@linux-fr.org>\");\n"
+ " MODULE_DESCRIPTION(\"LM63 driver\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-\n"
+ "-module_init(sensors_lm63_init);\n"
+ "-module_exit(sensors_lm63_exit);\n"
+ "diff --git a/drivers/hwmon/lm73.c b/drivers/hwmon/lm73.c\n"
+ "index 9c8093c..8fa2632 100644\n"
+ "--- a/drivers/hwmon/lm73.c\n"
+ "+++ b/drivers/hwmon/lm73.c\n"
+ "@@ -194,21 +194,8 @@ static struct i2c_driver lm73_driver = {\n"
+ " \t.address_list\t= normal_i2c,\n"
+ " };\n"
+ " \n"
+ "-/* module glue */\n"
+ "-\n"
+ "-static int __init sensors_lm73_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&lm73_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit sensors_lm73_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&lm73_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(lm73_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Guillaume Ligneul <guillaume.ligneul@gmail.com>\");\n"
+ " MODULE_DESCRIPTION(\"LM73 driver\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-\n"
+ "-module_init(sensors_lm73_init);\n"
+ "-module_exit(sensors_lm73_exit);\n"
+ "diff --git a/drivers/hwmon/lm75.c b/drivers/hwmon/lm75.c\n"
+ "index b3311b1..a83f206 100644\n"
+ "--- a/drivers/hwmon/lm75.c\n"
+ "+++ b/drivers/hwmon/lm75.c\n"
+ "@@ -438,23 +438,8 @@ abort:\n"
+ " \treturn ret;\n"
+ " }\n"
+ " \n"
+ "-/*-----------------------------------------------------------------------*/\n"
+ "-\n"
+ "-/* module glue */\n"
+ "-\n"
+ "-static int __init sensors_lm75_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&lm75_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit sensors_lm75_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&lm75_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(lm75_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Frodo Looijaard <frodol@dds.nl>\");\n"
+ " MODULE_DESCRIPTION(\"LM75 driver\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-\n"
+ "-module_init(sensors_lm75_init);\n"
+ "-module_exit(sensors_lm75_exit);\n"
+ "diff --git a/drivers/hwmon/lm77.c b/drivers/hwmon/lm77.c\n"
+ "index 08f7ffe..d8c1f35 100644\n"
+ "--- a/drivers/hwmon/lm77.c\n"
+ "+++ b/drivers/hwmon/lm77.c\n"
+ "@@ -443,19 +443,8 @@ static struct lm77_data *lm77_update_device(struct device *dev)\n"
+ " \treturn data;\n"
+ " }\n"
+ " \n"
+ "-static int __init sensors_lm77_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&lm77_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit sensors_lm77_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&lm77_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(lm77_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Andras BALI <drewie@freemail.hu>\");\n"
+ " MODULE_DESCRIPTION(\"LM77 driver\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-\n"
+ "-module_init(sensors_lm77_init);\n"
+ "-module_exit(sensors_lm77_exit);\n"
+ "diff --git a/drivers/hwmon/lm80.c b/drivers/hwmon/lm80.c\n"
+ "index dc6df4e..6a2a777 100644\n"
+ "--- a/drivers/hwmon/lm80.c\n"
+ "+++ b/drivers/hwmon/lm80.c\n"
+ "@@ -697,20 +697,9 @@ done:\n"
+ " \treturn ret;\n"
+ " }\n"
+ " \n"
+ "-static int __init sensors_lm80_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&lm80_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit sensors_lm80_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&lm80_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(lm80_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Frodo Looijaard <frodol@dds.nl> and \"\n"
+ " \t\"Philip Edelbrock <phil@netroedge.com>\");\n"
+ " MODULE_DESCRIPTION(\"LM80 driver\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-\n"
+ "-module_init(sensors_lm80_init);\n"
+ "-module_exit(sensors_lm80_exit);\n"
+ "diff --git a/drivers/hwmon/lm83.c b/drivers/hwmon/lm83.c\n"
+ "index 1fed265..cd45b9d 100644\n"
+ "--- a/drivers/hwmon/lm83.c\n"
+ "+++ b/drivers/hwmon/lm83.c\n"
+ "@@ -430,19 +430,8 @@ static struct lm83_data *lm83_update_device(struct device *dev)\n"
+ " \treturn data;\n"
+ " }\n"
+ " \n"
+ "-static int __init sensors_lm83_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&lm83_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit sensors_lm83_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&lm83_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(lm83_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Jean Delvare <khali@linux-fr.org>\");\n"
+ " MODULE_DESCRIPTION(\"LM83 driver\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-\n"
+ "-module_init(sensors_lm83_init);\n"
+ "-module_exit(sensors_lm83_exit);\n"
+ "diff --git a/drivers/hwmon/lm85.c b/drivers/hwmon/lm85.c\n"
+ "index 240b7f9..7e46ebb 100644\n"
+ "--- a/drivers/hwmon/lm85.c\n"
+ "+++ b/drivers/hwmon/lm85.c\n"
+ "@@ -1695,22 +1695,10 @@ static struct lm85_data *lm85_update_device(struct device *dev)\n"
+ " \treturn data;\n"
+ " }\n"
+ " \n"
+ "-\n"
+ "-static int __init sm_lm85_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&lm85_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit sm_lm85_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&lm85_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(lm85_driver);\n"
+ " \n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ " MODULE_AUTHOR(\"Philip Pokorny <ppokorny@penguincomputing.com>, \"\n"
+ " \t\"Margit Schubert-While <margitsw@t-online.de>, \"\n"
+ " \t\"Justin Thiessen <jthiessen@penguincomputing.com>\");\n"
+ " MODULE_DESCRIPTION(\"LM85-B, LM85-C driver\");\n"
+ "-\n"
+ "-module_init(sm_lm85_init);\n"
+ "-module_exit(sm_lm85_exit);\n"
+ "diff --git a/drivers/hwmon/lm87.c b/drivers/hwmon/lm87.c\n"
+ "index ebf4efd..090f5ef 100644\n"
+ "--- a/drivers/hwmon/lm87.c\n"
+ "+++ b/drivers/hwmon/lm87.c\n"
+ "@@ -1054,19 +1054,8 @@ static struct lm87_data *lm87_update_device(struct device *dev)\n"
+ " \treturn data;\n"
+ " }\n"
+ " \n"
+ "-static int __init sensors_lm87_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&lm87_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit sensors_lm87_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&lm87_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(lm87_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Jean Delvare <khali@linux-fr.org> and others\");\n"
+ " MODULE_DESCRIPTION(\"LM87 driver\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-\n"
+ "-module_init(sensors_lm87_init);\n"
+ "-module_exit(sensors_lm87_exit);\n"
+ "diff --git a/drivers/hwmon/lm90.c b/drivers/hwmon/lm90.c\n"
+ "index d2dd5f9..248f2b4 100644\n"
+ "--- a/drivers/hwmon/lm90.c\n"
+ "+++ b/drivers/hwmon/lm90.c\n"
+ "@@ -1514,19 +1514,8 @@ static struct i2c_driver lm90_driver = {\n"
+ " \t.address_list\t= normal_i2c,\n"
+ " };\n"
+ " \n"
+ "-static int __init sensors_lm90_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&lm90_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit sensors_lm90_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&lm90_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(lm90_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Jean Delvare <khali@linux-fr.org>\");\n"
+ " MODULE_DESCRIPTION(\"LM90/ADM1032 driver\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-\n"
+ "-module_init(sensors_lm90_init);\n"
+ "-module_exit(sensors_lm90_exit);\n"
+ "diff --git a/drivers/hwmon/lm92.c b/drivers/hwmon/lm92.c\n"
+ "index 95cda41..0fe2f37 100644\n"
+ "--- a/drivers/hwmon/lm92.c\n"
+ "+++ b/drivers/hwmon/lm92.c\n"
+ "@@ -432,19 +432,8 @@ static struct i2c_driver lm92_driver = {\n"
+ " \t.address_list\t= normal_i2c,\n"
+ " };\n"
+ " \n"
+ "-static int __init sensors_lm92_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&lm92_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit sensors_lm92_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&lm92_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(lm92_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Jean Delvare <khali@linux-fr.org>\");\n"
+ " MODULE_DESCRIPTION(\"LM92/MAX6635 driver\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-\n"
+ "-module_init(sensors_lm92_init);\n"
+ "-module_exit(sensors_lm92_exit);\n"
+ "diff --git a/drivers/hwmon/lm93.c b/drivers/hwmon/lm93.c\n"
+ "index d2fc4ac..22ae5f0 100644\n"
+ "--- a/drivers/hwmon/lm93.c\n"
+ "+++ b/drivers/hwmon/lm93.c\n"
+ "@@ -2761,20 +2761,9 @@ static struct i2c_driver lm93_driver = {\n"
+ " \t.address_list\t= normal_i2c,\n"
+ " };\n"
+ " \n"
+ "-static int __init lm93_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&lm93_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit lm93_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&lm93_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(lm93_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Mark M. Hoffman <mhoffman@lightlink.com>, \"\n"
+ " \t\t\"Hans J. Koch <hjk@hansjkoch.de>\");\n"
+ " MODULE_DESCRIPTION(\"LM93 driver\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-\n"
+ "-module_init(lm93_init);\n"
+ "-module_exit(lm93_exit);\n"
+ "diff --git a/drivers/hwmon/lm95241.c b/drivers/hwmon/lm95241.c\n"
+ "index 70bca67..bd8cdb7 100644\n"
+ "--- a/drivers/hwmon/lm95241.c\n"
+ "+++ b/drivers/hwmon/lm95241.c\n"
+ "@@ -455,19 +455,8 @@ static struct i2c_driver lm95241_driver = {\n"
+ " \t.address_list\t= normal_i2c,\n"
+ " };\n"
+ " \n"
+ "-static int __init sensors_lm95241_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&lm95241_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit sensors_lm95241_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&lm95241_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(lm95241_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Davide Rizzo <elpa.rizzo@gmail.com>\");\n"
+ " MODULE_DESCRIPTION(\"LM95241 sensor driver\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-\n"
+ "-module_init(sensors_lm95241_init);\n"
+ "-module_exit(sensors_lm95241_exit);\n"
+ "diff --git a/drivers/hwmon/lm95245.c b/drivers/hwmon/lm95245.c\n"
+ "index 5e5fc1b..9a46c10 100644\n"
+ "--- a/drivers/hwmon/lm95245.c\n"
+ "+++ b/drivers/hwmon/lm95245.c\n"
+ "@@ -525,19 +525,8 @@ static struct i2c_driver lm95245_driver = {\n"
+ " \t.address_list\t= normal_i2c,\n"
+ " };\n"
+ " \n"
+ "-static int __init sensors_lm95245_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&lm95245_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit sensors_lm95245_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&lm95245_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(lm95245_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Alexander Stein <alexander.stein@systec-electronic.com>\");\n"
+ " MODULE_DESCRIPTION(\"LM95245 sensor driver\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-\n"
+ "-module_init(sensors_lm95245_init);\n"
+ "-module_exit(sensors_lm95245_exit);\n"
+ "diff --git a/drivers/hwmon/ltc4151.c b/drivers/hwmon/ltc4151.c\n"
+ "index 4ac06b7..f646b45 100644\n"
+ "--- a/drivers/hwmon/ltc4151.c\n"
+ "+++ b/drivers/hwmon/ltc4151.c\n"
+ "@@ -238,19 +238,8 @@ static struct i2c_driver ltc4151_driver = {\n"
+ " \t.id_table\t= ltc4151_id,\n"
+ " };\n"
+ " \n"
+ "-static int __init ltc4151_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&ltc4151_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit ltc4151_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&ltc4151_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(ltc4151_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Per Dalen <per.dalen@appeartv.com>\");\n"
+ " MODULE_DESCRIPTION(\"LTC4151 driver\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-\n"
+ "-module_init(ltc4151_init);\n"
+ "-module_exit(ltc4151_exit);\n"
+ "diff --git a/drivers/hwmon/ltc4215.c b/drivers/hwmon/ltc4215.c\n"
+ "index c7e6d8e..0789b63 100644\n"
+ "--- a/drivers/hwmon/ltc4215.c\n"
+ "+++ b/drivers/hwmon/ltc4215.c\n"
+ "@@ -309,19 +309,8 @@ static struct i2c_driver ltc4215_driver = {\n"
+ " \t.id_table\t= ltc4215_id,\n"
+ " };\n"
+ " \n"
+ "-static int __init ltc4215_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&ltc4215_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit ltc4215_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&ltc4215_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(ltc4215_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Ira W. Snyder <iws@ovro.caltech.edu>\");\n"
+ " MODULE_DESCRIPTION(\"LTC4215 driver\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-\n"
+ "-module_init(ltc4215_init);\n"
+ "-module_exit(ltc4215_exit);\n"
+ "diff --git a/drivers/hwmon/ltc4245.c b/drivers/hwmon/ltc4245.c\n"
+ "index 6593083..693a6bd 100644\n"
+ "--- a/drivers/hwmon/ltc4245.c\n"
+ "+++ b/drivers/hwmon/ltc4245.c\n"
+ "@@ -578,19 +578,8 @@ static struct i2c_driver ltc4245_driver = {\n"
+ " \t.id_table\t= ltc4245_id,\n"
+ " };\n"
+ " \n"
+ "-static int __init ltc4245_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&ltc4245_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit ltc4245_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&ltc4245_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(ltc4245_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Ira W. Snyder <iws@ovro.caltech.edu>\");\n"
+ " MODULE_DESCRIPTION(\"LTC4245 driver\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-\n"
+ "-module_init(ltc4245_init);\n"
+ "-module_exit(ltc4245_exit);\n"
+ "diff --git a/drivers/hwmon/ltc4261.c b/drivers/hwmon/ltc4261.c\n"
+ "index ce52355..ab1bfbf 100644\n"
+ "--- a/drivers/hwmon/ltc4261.c\n"
+ "+++ b/drivers/hwmon/ltc4261.c\n"
+ "@@ -297,19 +297,8 @@ static struct i2c_driver ltc4261_driver = {\n"
+ " \t.id_table = ltc4261_id,\n"
+ " };\n"
+ " \n"
+ "-static int __init ltc4261_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&ltc4261_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit ltc4261_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&ltc4261_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(ltc4261_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Guenter Roeck <guenter.roeck@ericsson.com>\");\n"
+ " MODULE_DESCRIPTION(\"LTC4261 driver\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-\n"
+ "-module_init(ltc4261_init);\n"
+ "-module_exit(ltc4261_exit);\n"
+ "diff --git a/drivers/hwmon/max16065.c b/drivers/hwmon/max16065.c\n"
+ "index f8e323a..51edae9 100644\n"
+ "--- a/drivers/hwmon/max16065.c\n"
+ "+++ b/drivers/hwmon/max16065.c\n"
+ "@@ -699,19 +699,8 @@ static struct i2c_driver max16065_driver = {\n"
+ " \t.id_table = max16065_id,\n"
+ " };\n"
+ " \n"
+ "-static int __init max16065_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&max16065_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit max16065_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&max16065_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(max16065_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Guenter Roeck <guenter.roeck@ericsson.com>\");\n"
+ " MODULE_DESCRIPTION(\"MAX16065 driver\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-\n"
+ "-module_init(max16065_init);\n"
+ "-module_exit(max16065_exit);\n"
+ "diff --git a/drivers/hwmon/max1619.c b/drivers/hwmon/max1619.c\n"
+ "index f19599f..ecac04a 100644\n"
+ "--- a/drivers/hwmon/max1619.c\n"
+ "+++ b/drivers/hwmon/max1619.c\n"
+ "@@ -360,20 +360,9 @@ static struct max1619_data *max1619_update_device(struct device *dev)\n"
+ " \treturn data;\n"
+ " }\n"
+ " \n"
+ "-static int __init sensors_max1619_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&max1619_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit sensors_max1619_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&max1619_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(max1619_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Alexey Fisher <fishor@mail.ru> and \"\n"
+ " \t\"Jean Delvare <khali@linux-fr.org>\");\n"
+ " MODULE_DESCRIPTION(\"MAX1619 sensor driver\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-\n"
+ "-module_init(sensors_max1619_init);\n"
+ "-module_exit(sensors_max1619_exit);\n"
+ "diff --git a/drivers/hwmon/max1668.c b/drivers/hwmon/max1668.c\n"
+ "index 88953f9..12249f7 100644\n"
+ "--- a/drivers/hwmon/max1668.c\n"
+ "+++ b/drivers/hwmon/max1668.c\n"
+ "@@ -484,19 +484,8 @@ static struct i2c_driver max1668_driver = {\n"
+ " \t.address_list = max1668_addr_list,\n"
+ " };\n"
+ " \n"
+ "-static int __init sensors_max1668_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&max1668_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit sensors_max1668_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&max1668_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(max1668_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"David George <david.george@ska.ac.za>\");\n"
+ " MODULE_DESCRIPTION(\"MAX1668 remote temperature sensor driver\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-\n"
+ "-module_init(sensors_max1668_init)\n"
+ "-module_exit(sensors_max1668_exit)\n"
+ "diff --git a/drivers/hwmon/max6639.c b/drivers/hwmon/max6639.c\n"
+ "index e10a092..d203eb1 100644\n"
+ "--- a/drivers/hwmon/max6639.c\n"
+ "+++ b/drivers/hwmon/max6639.c\n"
+ "@@ -635,19 +635,8 @@ static struct i2c_driver max6639_driver = {\n"
+ " \t.address_list = normal_i2c,\n"
+ " };\n"
+ " \n"
+ "-static int __init max6639_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&max6639_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit max6639_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&max6639_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(max6639_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Roland Stigge <stigge@antcom.de>\");\n"
+ " MODULE_DESCRIPTION(\"max6639 driver\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-\n"
+ "-module_init(max6639_init);\n"
+ "-module_exit(max6639_exit);\n"
+ "diff --git a/drivers/hwmon/max6642.c b/drivers/hwmon/max6642.c\n"
+ "index 209e8a5..4298909 100644\n"
+ "--- a/drivers/hwmon/max6642.c\n"
+ "+++ b/drivers/hwmon/max6642.c\n"
+ "@@ -352,19 +352,8 @@ static struct i2c_driver max6642_driver = {\n"
+ " \t.address_list\t= normal_i2c,\n"
+ " };\n"
+ " \n"
+ "-static int __init max6642_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&max6642_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit max6642_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&max6642_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(max6642_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Per Dalen <per.dalen@appeartv.com>\");\n"
+ " MODULE_DESCRIPTION(\"MAX6642 sensor driver\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-\n"
+ "-module_init(max6642_init);\n"
+ "-module_exit(max6642_exit);\n"
+ "diff --git a/drivers/hwmon/max6650.c b/drivers/hwmon/max6650.c\n"
+ "index 159ce02..3296e6e 100644\n"
+ "--- a/drivers/hwmon/max6650.c\n"
+ "+++ b/drivers/hwmon/max6650.c\n"
+ "@@ -726,19 +726,8 @@ static struct max6650_data *max6650_update_device(struct device *dev)\n"
+ " \treturn data;\n"
+ " }\n"
+ " \n"
+ "-static int __init sensors_max6650_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&max6650_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit sensors_max6650_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&max6650_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(max6650_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Hans J. Koch\");\n"
+ " MODULE_DESCRIPTION(\"MAX6650 sensor driver\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-\n"
+ "-module_init(sensors_max6650_init);\n"
+ "-module_exit(sensors_max6650_exit);\n"
+ "diff --git a/drivers/hwmon/pmbus/adm1275.c b/drivers/hwmon/pmbus/adm1275.c\n"
+ "index 81c7c2e..fe52c3c 100644\n"
+ "--- a/drivers/hwmon/pmbus/adm1275.c\n"
+ "+++ b/drivers/hwmon/pmbus/adm1275.c\n"
+ "@@ -326,18 +326,8 @@ static struct i2c_driver adm1275_driver = {\n"
+ " \t.id_table = adm1275_id,\n"
+ " };\n"
+ " \n"
+ "-static int __init adm1275_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&adm1275_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit adm1275_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&adm1275_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(adm1275_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Guenter Roeck\");\n"
+ " MODULE_DESCRIPTION(\"PMBus driver for Analog Devices ADM1275 and compatibles\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-module_init(adm1275_init);\n"
+ "-module_exit(adm1275_exit);\n"
+ "diff --git a/drivers/hwmon/pmbus/lm25066.c b/drivers/hwmon/pmbus/lm25066.c\n"
+ "index 84a37f0..86ac15a 100644\n"
+ "--- a/drivers/hwmon/pmbus/lm25066.c\n"
+ "+++ b/drivers/hwmon/pmbus/lm25066.c\n"
+ "@@ -334,18 +334,8 @@ static struct i2c_driver lm25066_driver = {\n"
+ " \t.id_table = lm25066_id,\n"
+ " };\n"
+ " \n"
+ "-static int __init lm25066_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&lm25066_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit lm25066_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&lm25066_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(lm25066_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Guenter Roeck\");\n"
+ " MODULE_DESCRIPTION(\"PMBus driver for LM25066/LM5064/LM5066\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-module_init(lm25066_init);\n"
+ "-module_exit(lm25066_exit);\n"
+ "diff --git a/drivers/hwmon/pmbus/ltc2978.c b/drivers/hwmon/pmbus/ltc2978.c\n"
+ "index 820fff4..c9e4dd2 100644\n"
+ "--- a/drivers/hwmon/pmbus/ltc2978.c\n"
+ "+++ b/drivers/hwmon/pmbus/ltc2978.c\n"
+ "@@ -391,18 +391,8 @@ static struct i2c_driver ltc2978_driver = {\n"
+ " \t.id_table = ltc2978_id,\n"
+ " };\n"
+ " \n"
+ "-static int __init ltc2978_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&ltc2978_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit ltc2978_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&ltc2978_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(ltc2978_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Guenter Roeck\");\n"
+ " MODULE_DESCRIPTION(\"PMBus driver for LTC2978 and LTC3880\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-module_init(ltc2978_init);\n"
+ "-module_exit(ltc2978_exit);\n"
+ "diff --git a/drivers/hwmon/pmbus/max16064.c b/drivers/hwmon/pmbus/max16064.c\n"
+ "index 1d77cf4..5cfe20f 100644\n"
+ "--- a/drivers/hwmon/pmbus/max16064.c\n"
+ "+++ b/drivers/hwmon/pmbus/max16064.c\n"
+ "@@ -126,18 +126,8 @@ static struct i2c_driver max16064_driver = {\n"
+ " \t.id_table = max16064_id,\n"
+ " };\n"
+ " \n"
+ "-static int __init max16064_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&max16064_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit max16064_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&max16064_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(max16064_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Guenter Roeck\");\n"
+ " MODULE_DESCRIPTION(\"PMBus driver for Maxim MAX16064\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-module_init(max16064_init);\n"
+ "-module_exit(max16064_exit);\n"
+ "diff --git a/drivers/hwmon/pmbus/max34440.c b/drivers/hwmon/pmbus/max34440.c\n"
+ "index beaf5a8..89ae303 100644\n"
+ "--- a/drivers/hwmon/pmbus/max34440.c\n"
+ "+++ b/drivers/hwmon/pmbus/max34440.c\n"
+ "@@ -248,18 +248,8 @@ static struct i2c_driver max34440_driver = {\n"
+ " \t.id_table = max34440_id,\n"
+ " };\n"
+ " \n"
+ "-static int __init max34440_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&max34440_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit max34440_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&max34440_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(max34440_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Guenter Roeck\");\n"
+ " MODULE_DESCRIPTION(\"PMBus driver for Maxim MAX34440/MAX34441\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-module_init(max34440_init);\n"
+ "-module_exit(max34440_exit);\n"
+ "diff --git a/drivers/hwmon/pmbus/max8688.c b/drivers/hwmon/pmbus/max8688.c\n"
+ "index e2b74bb..82c598d 100644\n"
+ "--- a/drivers/hwmon/pmbus/max8688.c\n"
+ "+++ b/drivers/hwmon/pmbus/max8688.c\n"
+ "@@ -203,18 +203,8 @@ static struct i2c_driver max8688_driver = {\n"
+ " \t.id_table = max8688_id,\n"
+ " };\n"
+ " \n"
+ "-static int __init max8688_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&max8688_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit max8688_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&max8688_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(max8688_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Guenter Roeck\");\n"
+ " MODULE_DESCRIPTION(\"PMBus driver for Maxim MAX8688\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-module_init(max8688_init);\n"
+ "-module_exit(max8688_exit);\n"
+ "diff --git a/drivers/hwmon/pmbus/pmbus.c b/drivers/hwmon/pmbus/pmbus.c\n"
+ "index 18a385e..da5fe36 100644\n"
+ "--- a/drivers/hwmon/pmbus/pmbus.c\n"
+ "+++ b/drivers/hwmon/pmbus/pmbus.c\n"
+ "@@ -224,18 +224,8 @@ static struct i2c_driver pmbus_driver = {\n"
+ " \t.id_table = pmbus_id,\n"
+ " };\n"
+ " \n"
+ "-static int __init pmbus_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&pmbus_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit pmbus_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&pmbus_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(pmbus_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Guenter Roeck\");\n"
+ " MODULE_DESCRIPTION(\"Generic PMBus driver\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-module_init(pmbus_init);\n"
+ "-module_exit(pmbus_exit);\n"
+ "diff --git a/drivers/hwmon/pmbus/ucd9000.c b/drivers/hwmon/pmbus/ucd9000.c\n"
+ "index 4ff6cf2..759a563 100644\n"
+ "--- a/drivers/hwmon/pmbus/ucd9000.c\n"
+ "+++ b/drivers/hwmon/pmbus/ucd9000.c\n"
+ "@@ -258,18 +258,8 @@ static struct i2c_driver ucd9000_driver = {\n"
+ " \t.id_table = ucd9000_id,\n"
+ " };\n"
+ " \n"
+ "-static int __init ucd9000_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&ucd9000_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit ucd9000_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&ucd9000_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(ucd9000_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Guenter Roeck\");\n"
+ " MODULE_DESCRIPTION(\"PMBus driver for TI UCD90xxx\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-module_init(ucd9000_init);\n"
+ "-module_exit(ucd9000_exit);\n"
+ "diff --git a/drivers/hwmon/pmbus/ucd9200.c b/drivers/hwmon/pmbus/ucd9200.c\n"
+ "index 6e1c1a8..629d0c9 100644\n"
+ "--- a/drivers/hwmon/pmbus/ucd9200.c\n"
+ "+++ b/drivers/hwmon/pmbus/ucd9200.c\n"
+ "@@ -190,18 +190,8 @@ static struct i2c_driver ucd9200_driver = {\n"
+ " \t.id_table = ucd9200_id,\n"
+ " };\n"
+ " \n"
+ "-static int __init ucd9200_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&ucd9200_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit ucd9200_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&ucd9200_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(ucd9200_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Guenter Roeck\");\n"
+ " MODULE_DESCRIPTION(\"PMBus driver for TI UCD922x, UCD924x\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-module_init(ucd9200_init);\n"
+ "-module_exit(ucd9200_exit);\n"
+ "diff --git a/drivers/hwmon/pmbus/zl6100.c b/drivers/hwmon/pmbus/zl6100.c\n"
+ "index 48c7b4a..0bb7bba 100644\n"
+ "--- a/drivers/hwmon/pmbus/zl6100.c\n"
+ "+++ b/drivers/hwmon/pmbus/zl6100.c\n"
+ "@@ -268,18 +268,8 @@ static struct i2c_driver zl6100_driver = {\n"
+ " \t.id_table = zl6100_id,\n"
+ " };\n"
+ " \n"
+ "-static int __init zl6100_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&zl6100_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit zl6100_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&zl6100_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(zl6100_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Guenter Roeck\");\n"
+ " MODULE_DESCRIPTION(\"PMBus driver for ZL6100 and compatibles\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-module_init(zl6100_init);\n"
+ "-module_exit(zl6100_exit);\n"
+ "diff --git a/drivers/hwmon/sht21.c b/drivers/hwmon/sht21.c\n"
+ "index 1539878..6c2dede 100644\n"
+ "--- a/drivers/hwmon/sht21.c\n"
+ "+++ b/drivers/hwmon/sht21.c\n"
+ "@@ -261,28 +261,7 @@ static struct i2c_driver sht21_driver = {\n"
+ " \t.id_table    = sht21_id,\n"
+ " };\n"
+ " \n"
+ "-/**\n"
+ "- * sht21_init() - initialize driver\n"
+ "- *\n"
+ "- * Called when kernel is booted or module is inserted.\n"
+ "- * Returns 0 on success.\n"
+ "- */\n"
+ "-static int __init sht21_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&sht21_driver);\n"
+ "-}\n"
+ "-module_init(sht21_init);\n"
+ "-\n"
+ "-/**\n"
+ "- * sht21_init() - clean up driver\n"
+ "- *\n"
+ "- * Called when module is removed.\n"
+ "- */\n"
+ "-static void __exit sht21_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&sht21_driver);\n"
+ "-}\n"
+ "-module_exit(sht21_exit);\n"
+ "+module_i2c_driver(sht21_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Urs Fleisch <urs.fleisch@sensirion.com>\");\n"
+ " MODULE_DESCRIPTION(\"Sensirion SHT21 humidity and temperature sensor driver\");\n"
+ "diff --git a/drivers/hwmon/smm665.c b/drivers/hwmon/smm665.c\n"
+ "index 1b4301f..24382c7 100644\n"
+ "--- a/drivers/hwmon/smm665.c\n"
+ "+++ b/drivers/hwmon/smm665.c\n"
+ "@@ -718,19 +718,8 @@ static struct i2c_driver smm665_driver = {\n"
+ " \t.id_table = smm665_id,\n"
+ " };\n"
+ " \n"
+ "-static int __init smm665_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&smm665_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit smm665_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&smm665_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(smm665_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Guenter Roeck\");\n"
+ " MODULE_DESCRIPTION(\"SMM665 driver\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-\n"
+ "-module_init(smm665_init);\n"
+ "-module_exit(smm665_exit);\n"
+ "diff --git a/drivers/hwmon/smsc47m192.c b/drivers/hwmon/smsc47m192.c\n"
+ "index 95761bd..307e6a6 100644\n"
+ "--- a/drivers/hwmon/smsc47m192.c\n"
+ "+++ b/drivers/hwmon/smsc47m192.c\n"
+ "@@ -669,19 +669,8 @@ static struct smsc47m192_data *smsc47m192_update_device(struct device *dev)\n"
+ " \treturn data;\n"
+ " }\n"
+ " \n"
+ "-static int __init smsc47m192_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&smsc47m192_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit smsc47m192_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&smsc47m192_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(smsc47m192_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Hartmut Rick <linux@rick.claranet.de>\");\n"
+ " MODULE_DESCRIPTION(\"SMSC47M192 driver\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-\n"
+ "-module_init(smsc47m192_init);\n"
+ "-module_exit(smsc47m192_exit);\n"
+ "diff --git a/drivers/hwmon/thmc50.c b/drivers/hwmon/thmc50.c\n"
+ "index a195914..51ddb37 100644\n"
+ "--- a/drivers/hwmon/thmc50.c\n"
+ "+++ b/drivers/hwmon/thmc50.c\n"
+ "@@ -482,18 +482,7 @@ static struct thmc50_data *thmc50_update_device(struct device *dev)\n"
+ " \treturn data;\n"
+ " }\n"
+ " \n"
+ "-static int __init sm_thmc50_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&thmc50_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit sm_thmc50_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&thmc50_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(thmc50_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Krzysztof Helt <krzysztof.h1@wp.pl>\");\n"
+ " MODULE_DESCRIPTION(\"THMC50 driver\");\n"
+ "-\n"
+ "-module_init(sm_thmc50_init);\n"
+ "-module_exit(sm_thmc50_exit);\n"
+ "diff --git a/drivers/hwmon/tmp102.c b/drivers/hwmon/tmp102.c\n"
+ "index c08eee2..0d466b9 100644\n"
+ "--- a/drivers/hwmon/tmp102.c\n"
+ "+++ b/drivers/hwmon/tmp102.c\n"
+ "@@ -292,17 +292,7 @@ static struct i2c_driver tmp102_driver = {\n"
+ " \t.id_table\t= tmp102_id,\n"
+ " };\n"
+ " \n"
+ "-static int __init tmp102_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&tmp102_driver);\n"
+ "-}\n"
+ "-module_init(tmp102_init);\n"
+ "-\n"
+ "-static void __exit tmp102_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&tmp102_driver);\n"
+ "-}\n"
+ "-module_exit(tmp102_exit);\n"
+ "+module_i2c_driver(tmp102_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Steven King <sfking@fdwdc.com>\");\n"
+ " MODULE_DESCRIPTION(\"Texas Instruments TMP102 temperature sensor driver\");\n"
+ "diff --git a/drivers/hwmon/tmp401.c b/drivers/hwmon/tmp401.c\n"
+ "index 8b9a774..92b7f1b 100644\n"
+ "--- a/drivers/hwmon/tmp401.c\n"
+ "+++ b/drivers/hwmon/tmp401.c\n"
+ "@@ -662,19 +662,8 @@ static struct i2c_driver tmp401_driver = {\n"
+ " \t.address_list\t= normal_i2c,\n"
+ " };\n"
+ " \n"
+ "-static int __init tmp401_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&tmp401_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit tmp401_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&tmp401_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(tmp401_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Hans de Goede <hdegoede@redhat.com>\");\n"
+ " MODULE_DESCRIPTION(\"Texas Instruments TMP401 temperature sensor driver\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-\n"
+ "-module_init(tmp401_init);\n"
+ "-module_exit(tmp401_exit);\n"
+ "diff --git a/drivers/hwmon/tmp421.c b/drivers/hwmon/tmp421.c\n"
+ "index c48381f..8fac87a 100644\n"
+ "--- a/drivers/hwmon/tmp421.c\n"
+ "+++ b/drivers/hwmon/tmp421.c\n"
+ "@@ -324,20 +324,9 @@ static struct i2c_driver tmp421_driver = {\n"
+ " \t.address_list = normal_i2c,\n"
+ " };\n"
+ " \n"
+ "-static int __init tmp421_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&tmp421_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit tmp421_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&tmp421_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(tmp421_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Andre Prendel <andre.prendel@gmx.de>\");\n"
+ " MODULE_DESCRIPTION(\"Texas Instruments TMP421/422/423 temperature sensor\"\n"
+ " \t\t   \" driver\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-\n"
+ "-module_init(tmp421_init);\n"
+ "-module_exit(tmp421_exit);\n"
+ "diff --git a/drivers/hwmon/w83791d.c b/drivers/hwmon/w83791d.c\n"
+ "index 679146d..b92f01f 100644\n"
+ "--- a/drivers/hwmon/w83791d.c\n"
+ "+++ b/drivers/hwmon/w83791d.c\n"
+ "@@ -1668,19 +1668,8 @@ static void w83791d_print_debug(struct w83791d_data *data, struct device *dev)\n"
+ " }\n"
+ " #endif\n"
+ " \n"
+ "-static int __init sensors_w83791d_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&w83791d_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit sensors_w83791d_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&w83791d_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(w83791d_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Charles Spirakis <bezaur@gmail.com>\");\n"
+ " MODULE_DESCRIPTION(\"W83791D driver\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-\n"
+ "-module_init(sensors_w83791d_init);\n"
+ "-module_exit(sensors_w83791d_exit);\n"
+ "diff --git a/drivers/hwmon/w83792d.c b/drivers/hwmon/w83792d.c\n"
+ "index e356618..1175dcf 100644\n"
+ "--- a/drivers/hwmon/w83792d.c\n"
+ "+++ b/drivers/hwmon/w83792d.c\n"
+ "@@ -1708,22 +1708,8 @@ static void w83792d_print_debug(struct w83792d_data *data, struct device *dev)\n"
+ " }\n"
+ " #endif\n"
+ " \n"
+ "-static int __init\n"
+ "-sensors_w83792d_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&w83792d_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit\n"
+ "-sensors_w83792d_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&w83792d_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(w83792d_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Chunhao Huang @ Winbond <DZShen@Winbond.com.tw>\");\n"
+ " MODULE_DESCRIPTION(\"W83792AD/D driver for linux-2.6\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-\n"
+ "-module_init(sensors_w83792d_init);\n"
+ "-module_exit(sensors_w83792d_exit);\n"
+ "-\n"
+ "diff --git a/drivers/hwmon/w83793.c b/drivers/hwmon/w83793.c\n"
+ "index 5929d44..47f975c 100644\n"
+ "--- a/drivers/hwmon/w83793.c\n"
+ "+++ b/drivers/hwmon/w83793.c\n"
+ "@@ -2169,19 +2169,8 @@ END:\n"
+ " \treturn res;\n"
+ " }\n"
+ " \n"
+ "-static int __init sensors_w83793_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&w83793_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit sensors_w83793_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&w83793_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(w83793_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Yuan Mu, Sven Anders\");\n"
+ " MODULE_DESCRIPTION(\"w83793 driver\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-\n"
+ "-module_init(sensors_w83793_init);\n"
+ "-module_exit(sensors_w83793_exit);\n"
+ "diff --git a/drivers/hwmon/w83795.c b/drivers/hwmon/w83795.c\n"
+ "index aa58b25..deb12c9 100644\n"
+ "--- a/drivers/hwmon/w83795.c\n"
+ "+++ b/drivers/hwmon/w83795.c\n"
+ "@@ -2244,19 +2244,8 @@ static struct i2c_driver w83795_driver = {\n"
+ " \t.address_list\t= normal_i2c,\n"
+ " };\n"
+ " \n"
+ "-static int __init sensors_w83795_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&w83795_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit sensors_w83795_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&w83795_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(w83795_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Wei Song, Jean Delvare <khali@linux-fr.org>\");\n"
+ " MODULE_DESCRIPTION(\"W83795G/ADG hardware monitoring driver\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-\n"
+ "-module_init(sensors_w83795_init);\n"
+ "-module_exit(sensors_w83795_exit);\n"
+ "diff --git a/drivers/hwmon/w83l785ts.c b/drivers/hwmon/w83l785ts.c\n"
+ "index edfc1ec..bc07144 100644\n"
+ "--- a/drivers/hwmon/w83l785ts.c\n"
+ "+++ b/drivers/hwmon/w83l785ts.c\n"
+ "@@ -302,19 +302,8 @@ static struct w83l785ts_data *w83l785ts_update_device(struct device *dev)\n"
+ " \treturn data;\n"
+ " }\n"
+ " \n"
+ "-static int __init sensors_w83l785ts_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&w83l785ts_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit sensors_w83l785ts_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&w83l785ts_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(w83l785ts_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Jean Delvare <khali@linux-fr.org>\");\n"
+ " MODULE_DESCRIPTION(\"W83L785TS-S driver\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-\n"
+ "-module_init(sensors_w83l785ts_init);\n"
+ "-module_exit(sensors_w83l785ts_exit);\n"
+ "diff --git a/drivers/hwmon/w83l786ng.c b/drivers/hwmon/w83l786ng.c\n"
+ "index 6eac5d9..a6310b8 100644\n"
+ "--- a/drivers/hwmon/w83l786ng.c\n"
+ "+++ b/drivers/hwmon/w83l786ng.c\n"
+ "@@ -806,21 +806,8 @@ static struct w83l786ng_data *w83l786ng_update_device(struct device *dev)\n"
+ " \treturn data;\n"
+ " }\n"
+ " \n"
+ "-static int __init\n"
+ "-sensors_w83l786ng_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&w83l786ng_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit\n"
+ "-sensors_w83l786ng_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&w83l786ng_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(w83l786ng_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Kevin Lo\");\n"
+ " MODULE_DESCRIPTION(\"w83l786ng driver\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-\n"
+ "-module_init(sensors_w83l786ng_init);\n"
+ "-module_exit(sensors_w83l786ng_exit);\n"
+ "-- \n"
+ 1.7.5.4
 
-0bf3f07c97e9d184b153e0460758d0712f46c662d4f8382f7583cbf1ff8c3e28
+464d2b268879981eee20bf014a1cf2dfcb67637a33c4d6e316726a2e461d76b7

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.