From mboxrd@z Thu Jan 1 00:00:00 1970 From: Barry Song Subject: [PATCH v5 1/3] ARM: CSR: Adding CSR SiRFprimaII board support Date: Fri, 8 Jul 2011 02:40:12 -0700 Message-ID: <1310118014-24509-2-git-send-email-bs14@csr.com> References: <1310118014-24509-1-git-send-email-bs14@csr.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1310118014-24509-1-git-send-email-bs14@csr.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: linux-arm-kernel-bounces@lists.infradead.org Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=m.gmane.org@lists.infradead.org To: linux@arm.linux.org.uk, arnd@arndb.de, nico@fluxnic.net, tglx@linutronix.de Cc: Bin Shi , devicetree-discuss@lists.ozlabs.org, workgroup.linux@csr.com, Zhiwu Song , grant.likely@secretlab.ca, Rongjun Ying , Binghua Duan , Barry Song , Huayi Li , Yuping Luo , linux-arm-kernel@lists.infradead.org List-Id: devicetree@vger.kernel.org RnJvbTogQmluZ2h1YSBEdWFuIDxiaW5naHVhLmR1YW5AY3NyLmNvbT4KClNpUkZwcmltYUlJIGlz IHRoZSBsYXRlc3QgZ2VuZXJhdGlvbiBhcHBsaWNhdGlvbiBwcm9jZXNzb3IgZnJvbSBDU1LigJlz Ck11bHRpZnVuY3Rpb24gU29DIHByb2R1Y3QgZmFtaWx5LiBEZXNpZ25lZCBhcm91bmQgYW4gQVJN IGNvcnRleCBBOSBjb3JlLApoaWdoLXNwZWVkIG1lbW9yeSBidXMsIGFkdmFuY2VkIDNEIGFjY2Vs ZXJhdG9yIGFuZCBmdWxsLUhEIG11bHRpLWZvcm1hdAp2aWRlbyBkZWNvZGVyLCBTaVJGcHJpbWFJ SSBpcyBhYmxlIHRvIG1lZXQgdGhlIG5lZWRzIG9mIGNvbXBsaWNhdGVkCmFwcGxpY2F0aW9ucyBm b3IgbW9kZXJuIG11bHRpZnVuY3Rpb24gZGV2aWNlcyB0aGF0IHJlcXVpcmUgaGVhdnkgY29uY3Vy cmVudAphcHBsaWNhdGlvbnMgYW5kIGZsdWlkIHVzZXIgZXhwZXJpZW5jZS4gSW50ZWdyYXRlZCB3 aXRoIEdQUyBiYXNlYmFuZCwKYW5hbG9nIGFuZCBQTVUsIHRoaXMgbmV3IHBsYXRmb3JtIGlzIGRl c2lnbmVkIHRvIHByb3ZpZGUgYSBjb3N0IGVmZmVjdGl2ZQpzb2x1dGlvbiBmb3IgQXV0b21vdGl2 ZSBhbmQgQ29uc3VtZXIgbWFya2V0cy4KClRoaXMgcGF0Y2ggYWRkcyB0aGUgYmFzaWMgc3VwcG9y dCBmb3IgdGhpcyBTb0MgYW5kIEVWQiBib2FyZCBiYXNlZCBvbiBkZXZpY2UKdHJlZS4gSXQgaXMg Zm9sbG93aW5nIHRoZSBaWU5RIG9mIFhpbGlueCBpbiBzb21lIGRlZ3JlZS4KClNpZ25lZC1vZmYt Ynk6IEJpbmdodWEgRHVhbiA8QmluZ2h1YS5EdWFuQGNzci5jb20+ClNpZ25lZC1vZmYtYnk6IFJv bmdqdW4gWWluZyA8Um9uZ2p1bi5ZaW5nQGNzci5jb20+ClNpZ25lZC1vZmYtYnk6IFpoaXd1IFNv bmcgPFpoaXd1LlNvbmdAY3NyLmNvbT4KU2lnbmVkLW9mZi1ieTogWXVwaW5nIEx1byA8WXVwaW5n Lkx1b0Bjc3IuY29tPgpTaWduZWQtb2ZmLWJ5OiBCaW4gU2hpIDxCaW4uU2hpQGNzci5jb20+ClNp Z25lZC1vZmYtYnk6IEh1YXlpIExpIDxIdWF5aS5MaUBjc3IuY29tPgpTaWduZWQtb2ZmLWJ5OiBC YXJyeSBTb25nIDxCYW9odWEuU29uZ0Bjc3IuY29tPgpSZXZpZXdlZC1ieTogQXJuZCBCZXJnbWFu biA8YXJuZEBhcm5kYi5kZT4KLS0tCiBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mv YXJtL3NpcmYudHh0ICB8ICAgIDMgKwogYXJjaC9hcm0vS2NvbmZpZyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfCAgIDE0ICsKIGFyY2gvYXJtL01ha2VmaWxlICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgICAgMSArCiBhcmNoL2FybS9ib290L2R0cy9wcmltYTItY2IuZHRz ICAgICAgICAgICAgICAgICB8ICA0MTYgKysrKysrKysrKysrKysrKysrCiBhcmNoL2FybS9tYWNo LXByaW1hMi9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICB8ICAgIDUgKwogYXJjaC9hcm0vbWFj aC1wcmltYTIvTWFrZWZpbGUuYm9vdCAgICAgICAgICAgICAgfCAgICAzICsKIGFyY2gvYXJtL21h Y2gtcHJpbWEyL2Nsb2NrLmMgICAgICAgICAgICAgICAgICAgIHwgIDUwOSArKysrKysrKysrKysr KysrKysrKysrKwogYXJjaC9hcm0vbWFjaC1wcmltYTIvY29tbW9uLmggICAgICAgICAgICAgICAg ICAgfCAgIDIwICsKIGFyY2gvYXJtL21hY2gtcHJpbWEyL2luY2x1ZGUvbWFjaC9jbGtkZXYuaCAg ICAgIHwgICAxNSArCiBhcmNoL2FybS9tYWNoLXByaW1hMi9pbmNsdWRlL21hY2gvZGVidWctbWFj cm8uUyB8ICAgMjkgKysKIGFyY2gvYXJtL21hY2gtcHJpbWEyL2luY2x1ZGUvbWFjaC9lbnRyeS1t YWNyby5TIHwgICAyOSArKwogYXJjaC9hcm0vbWFjaC1wcmltYTIvaW5jbHVkZS9tYWNoL2hhcmR3 YXJlLmggICAgfCAgIDE1ICsKIGFyY2gvYXJtL21hY2gtcHJpbWEyL2luY2x1ZGUvbWFjaC9pby5o ICAgICAgICAgIHwgICAxNiArCiBhcmNoL2FybS9tYWNoLXByaW1hMi9pbmNsdWRlL21hY2gvaXJx cy5oICAgICAgICB8ICAgMTcgKwogYXJjaC9hcm0vbWFjaC1wcmltYTIvaW5jbHVkZS9tYWNoL21h cC5oICAgICAgICAgfCAgIDE2ICsKIGFyY2gvYXJtL21hY2gtcHJpbWEyL2luY2x1ZGUvbWFjaC9t ZW1vcnkuaCAgICAgIHwgICAyMSArCiBhcmNoL2FybS9tYWNoLXByaW1hMi9pbmNsdWRlL21hY2gv c3lzdGVtLmggICAgICB8ICAgMjkgKysKIGFyY2gvYXJtL21hY2gtcHJpbWEyL2luY2x1ZGUvbWFj aC90aW1leC5oICAgICAgIHwgICAxNCArCiBhcmNoL2FybS9tYWNoLXByaW1hMi9pbmNsdWRlL21h Y2gvdWFydC5oICAgICAgICB8ICAgMjMgKwogYXJjaC9hcm0vbWFjaC1wcmltYTIvaW5jbHVkZS9t YWNoL3VuY29tcHJlc3MuaCAgfCAgIDQwICsrCiBhcmNoL2FybS9tYWNoLXByaW1hMi9pbmNsdWRl L21hY2gvdm1hbGxvYy5oICAgICB8ICAgMTYgKwogYXJjaC9hcm0vbWFjaC1wcmltYTIvaXJxLmMg ICAgICAgICAgICAgICAgICAgICAgfCAgIDcxICsrKysKIGFyY2gvYXJtL21hY2gtcHJpbWEyL3By aW1hMi5jICAgICAgICAgICAgICAgICAgIHwgICA0MCArKwogYXJjaC9hcm0vbWFjaC1wcmltYTIv cnN0Yy5jICAgICAgICAgICAgICAgICAgICAgfCAgIDY5ICsrKwogYXJjaC9hcm0vbWFjaC1wcmlt YTIvdGltZXIuYyAgICAgICAgICAgICAgICAgICAgfCAgMjE3ICsrKysrKysrKysKIGFyY2gvYXJt L21tL0tjb25maWcgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMiArLQogMjYgZmls ZXMgY2hhbmdlZCwgMTY0OSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9ucygtKQogY3JlYXRlIG1v ZGUgMTAwNjQ0IERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vc2lyZi50eHQK IGNyZWF0ZSBtb2RlIDEwMDY0NCBhcmNoL2FybS9ib290L2R0cy9wcmltYTItY2IuZHRzCiBjcmVh dGUgbW9kZSAxMDA2NDQgYXJjaC9hcm0vbWFjaC1wcmltYTIvTWFrZWZpbGUKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBhcmNoL2FybS9tYWNoLXByaW1hMi9NYWtlZmlsZS5ib290CiBjcmVhdGUgbW9kZSAx MDA2NDQgYXJjaC9hcm0vbWFjaC1wcmltYTIvY2xvY2suYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGFy Y2gvYXJtL21hY2gtcHJpbWEyL2NvbW1vbi5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9hcm0v bWFjaC1wcmltYTIvaW5jbHVkZS9tYWNoL2Nsa2Rldi5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgYXJj aC9hcm0vbWFjaC1wcmltYTIvaW5jbHVkZS9tYWNoL2RlYnVnLW1hY3JvLlMKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBhcmNoL2FybS9tYWNoLXByaW1hMi9pbmNsdWRlL21hY2gvZW50cnktbWFjcm8uUwog Y3JlYXRlIG1vZGUgMTAwNjQ0IGFyY2gvYXJtL21hY2gtcHJpbWEyL2luY2x1ZGUvbWFjaC9oYXJk d2FyZS5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9hcm0vbWFjaC1wcmltYTIvaW5jbHVkZS9t YWNoL2lvLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBhcmNoL2FybS9tYWNoLXByaW1hMi9pbmNsdWRl L21hY2gvaXJxcy5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9hcm0vbWFjaC1wcmltYTIvaW5j bHVkZS9tYWNoL21hcC5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9hcm0vbWFjaC1wcmltYTIv aW5jbHVkZS9tYWNoL21lbW9yeS5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9hcm0vbWFjaC1w cmltYTIvaW5jbHVkZS9tYWNoL3N5c3RlbS5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9hcm0v bWFjaC1wcmltYTIvaW5jbHVkZS9tYWNoL3RpbWV4LmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBhcmNo L2FybS9tYWNoLXByaW1hMi9pbmNsdWRlL21hY2gvdWFydC5oCiBjcmVhdGUgbW9kZSAxMDA2NDQg YXJjaC9hcm0vbWFjaC1wcmltYTIvaW5jbHVkZS9tYWNoL3VuY29tcHJlc3MuaAogY3JlYXRlIG1v ZGUgMTAwNjQ0IGFyY2gvYXJtL21hY2gtcHJpbWEyL2luY2x1ZGUvbWFjaC92bWFsbG9jLmgKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBhcmNoL2FybS9tYWNoLXByaW1hMi9pcnEuYwogY3JlYXRlIG1vZGUg MTAwNjQ0IGFyY2gvYXJtL21hY2gtcHJpbWEyL3ByaW1hMi5jCiBjcmVhdGUgbW9kZSAxMDA2NDQg YXJjaC9hcm0vbWFjaC1wcmltYTIvcnN0Yy5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9hcm0v bWFjaC1wcmltYTIvdGltZXIuYwoKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJl ZS9iaW5kaW5ncy9hcm0vc2lyZi50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGlu Z3MvYXJtL3NpcmYudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiMDdm NjUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mv YXJtL3NpcmYudHh0CkBAIC0wLDAgKzEsMyBAQAorcHJpbWEyICJjYiIgZXZhbHV0YXRpb24gYm9h cmQKK1JlcXVpcmVkIHJvb3Qgbm9kZSBwcm9wZXJ0aWVzOgorICAgIC0gY29tcGF0aWJsZSA9ICJz aXJmLHByaW1hMi1jYiIsICJzaXJmLHByaW1hMiI7CmRpZmYgLS1naXQgYS9hcmNoL2FybS9LY29u ZmlnIGIvYXJjaC9hcm0vS2NvbmZpZwppbmRleCA5YWRjMjc4Li5hYTZjOTFkIDEwMDY0NAotLS0g YS9hcmNoL2FybS9LY29uZmlnCisrKyBiL2FyY2gvYXJtL0tjb25maWcKQEAgLTg3OSw2ICs4Nzks MjAgQEAgY29uZmlnIEFSQ0hfVlQ4NTAwCiAJc2VsZWN0IEhBVkVfUFdNCiAJaGVscAogCSAgU3Vw cG9ydCBmb3IgVklBL1dvbmRlck1lZGlhIFZUODUwMC9XTTg1eHggU3lzdGVtLW9uLUNoaXAuCisK K2NvbmZpZyBBUkNIX1BSSU1BMgorCWJvb2wgIkNTUiBTaVJGU29DIFBSSU1BMiBBUk0gQ29ydGV4 IEE5IFBsYXRmb3JtIgorCXNlbGVjdCBDUFVfVjcKKwlzZWxlY3QgR0VORVJJQ19USU1FCisJc2Vs ZWN0IE5PX0lPUE9SVAorCXNlbGVjdCBHRU5FUklDX0NMT0NLRVZFTlRTCisJc2VsZWN0IENMS0RF Vl9MT09LVVAKKwlzZWxlY3QgR0VORVJJQ19JUlFfQ0hJUAorCXNlbGVjdCBVU0VfT0YKKwlzZWxl Y3QgWk9ORV9ETUEKKwloZWxwCisgICAgICAgICAgU3VwcG9ydCBmb3IgQ1NSIFNpUkZTb0MgQVJN IENvcnRleCBBOSBQbGF0Zm9ybQorCiBlbmRjaG9pY2UKIAogIwpkaWZmIC0tZ2l0IGEvYXJjaC9h cm0vTWFrZWZpbGUgYi9hcmNoL2FybS9NYWtlZmlsZQppbmRleCBmNWIyYjM5Li4xZDY5M2QwIDEw MDY0NAotLS0gYS9hcmNoL2FybS9NYWtlZmlsZQorKysgYi9hcmNoL2FybS9NYWtlZmlsZQpAQCAt MTY5LDYgKzE2OSw3IEBAIG1hY2hpbmUtJChDT05GSUdfQVJDSF9PTUFQMykJCTo9IG9tYXAyCiBt YWNoaW5lLSQoQ09ORklHX0FSQ0hfT01BUDQpCQk6PSBvbWFwMgogbWFjaGluZS0kKENPTkZJR19B UkNIX09SSU9ONVgpCQk6PSBvcmlvbjV4CiBtYWNoaW5lLSQoQ09ORklHX0FSQ0hfUE5YNDAwOCkJ CTo9IHBueDQwMDgKK21hY2hpbmUtJChDT05GSUdfQVJDSF9QUklNQTIpCQk6PSBwcmltYTIKIG1h Y2hpbmUtJChDT05GSUdfQVJDSF9QWEEpCQk6PSBweGEKIG1hY2hpbmUtJChDT05GSUdfQVJDSF9S RUFMVklFVykJCTo9IHJlYWx2aWV3CiBtYWNoaW5lLSQoQ09ORklHX0FSQ0hfUlBDKQkJOj0gcnBj CmRpZmYgLS1naXQgYS9hcmNoL2FybS9ib290L2R0cy9wcmltYTItY2IuZHRzIGIvYXJjaC9hcm0v Ym9vdC9kdHMvcHJpbWEyLWNiLmR0cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li42ZmVjYzg4Ci0tLSAvZGV2L251bGwKKysrIGIvYXJjaC9hcm0vYm9vdC9kdHMvcHJpbWEyLWNi LmR0cwpAQCAtMCwwICsxLDQxNiBAQAorL2R0cy12MS87CisvIHsKKwltb2RlbCA9ICJTaVJGIFBy aW1hMiBlVkIiOworCWNvbXBhdGlibGUgPSAic2lyZixwcmltYTItY2IiLCAic2lyZixwcmltYTIi OworCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCSNzaXplLWNlbGxzID0gPDE+OworCWludGVycnVw dC1wYXJlbnQgPSA8JmludGM+OworCisJbWVtb3J5IHsKKwkJcmVnID0gPDB4MDAwMDAwMDAgMHgy MDAwMDAwMD47CisJfTsKKworCWNob3NlbiB7CisJCWJvb3RhcmdzID0gIm1lbT01MTJNIHJlYWxf cm9vdD0vZGV2L21tY2JsazBwMiBjb25zb2xlPXR0eVMwIHBhbmVsPTEgYm9vdHNwbGFzaD10cnVl IGJwcD0xNiBhbmRyb2lkYm9vdC5jb25zb2xlPXR0eVMxIjsKKwkJbGludXgsc3Rkb3V0LXBhdGgg PSAmdWFydDE7CisJfTsKKworCWNwdXMgeworCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJI3Np emUtY2VsbHMgPSA8MD47CisKKwkJY3B1QDAgeworCQkJcmVnID0gPDB4MD47CisJCQlkLWNhY2hl LWxpbmUtc2l6ZSA9IDwzMj47CisJCQlpLWNhY2hlLWxpbmUtc2l6ZSA9IDwzMj47CisJCQlkLWNh Y2hlLXNpemUgPSA8MzI3Njg+OworCQkJaS1jYWNoZS1zaXplID0gPDMyNzY4PjsKKwkJCS8qIGZy b20gYm9vdGxvYWRlciAqLworCQkJdGltZWJhc2UtZnJlcXVlbmN5ID0gPDA+OworCQkJYnVzLWZy ZXF1ZW5jeSA9IDwwPjsKKwkJCWNsb2NrLWZyZXF1ZW5jeSA9IDwwPjsKKwkJfTsKKwl9OworCisJ YXhpIHsKKwkJY29tcGF0aWJsZSA9ICJzaW1wbGUtYnVzIjsKKwkJI2FkZHJlc3MtY2VsbHMgPSA8 MT47CisJCSNzaXplLWNlbGxzID0gPDE+OworCQlyYW5nZXMgPSA8MHg0MDAwMDAwMCAweDQwMDAw MDAwIDB4ODAwMDAwMDA+OworCisJCWwyLWNhY2hlLWNvbnRyb2xsZXJAODAwNDAwMDAgeworCQkJ Y29tcGF0aWJsZSA9ICJhcm0scGwzMTAtY2FjaGUiOworCQkJcmVnID0gPDB4ODAwNDAwMDAgMHgx MDAwPjsKKwkJCWludGVycnVwdHMgPSA8NTk+OworCQl9OworCisJCWludGM6IGludGVycnVwdC1j b250cm9sbGVyQDgwMDIwMDAwIHsKKwkJCSNpbnRlcnJ1cHQtY2VsbHMgPSA8MT47CisJCQlpbnRl cnJ1cHQtY29udHJvbGxlcjsKKwkJCWNvbXBhdGlibGUgPSAic2lyZixwcmltYTItaW50YyI7CisJ CQlyZWcgPSA8MHg4MDAyMDAwMCAweDEwMDA+OworCQl9OworCisJCXN5cy1pb2JnIHsKKwkJCWNv bXBhdGlibGUgPSAic2ltcGxlLWJ1cyI7CisJCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJCSNz aXplLWNlbGxzID0gPDE+OworCQkJcmFuZ2VzID0gPDB4ODgwMDAwMDAgMHg4ODAwMDAwMCAweDQw MDAwPjsKKworCQkJY2xvY2stY29udHJvbGxlckA4ODAwMDAwMCB7CisJCQkJY29tcGF0aWJsZSA9 ICJzaXJmLHByaW1hMi1jbGtjIjsKKwkJCQlyZWcgPSA8MHg4ODAwMDAwMCAweDEwMDA+OworCQkJ CWludGVycnVwdHMgPSA8Mz47CisJCQl9OworCisJCQlyZXNldC1jb250cm9sbGVyQDg4MDEwMDAw IHsKKwkJCQljb21wYXRpYmxlID0gInNpcmYscHJpbWEyLXJzdGMiOworCQkJCXJlZyA9IDwweDg4 MDEwMDAwIDB4MTAwMD47CisJCQl9OworCQl9OworCisJCW1lbS1pb2JnIHsKKwkJCWNvbXBhdGli bGUgPSAic2ltcGxlLWJ1cyI7CisJCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJCSNzaXplLWNl bGxzID0gPDE+OworCQkJcmFuZ2VzID0gPDB4OTAwMDAwMDAgMHg5MDAwMDAwMCAweDEwMDAwPjsK KworCQkJbWVtb3J5LWNvbnRyb2xsZXJAOTAwMDAwMDAgeworCQkJCWNvbXBhdGlibGUgPSAic2ly ZixwcmltYTItbWVtYyI7CisJCQkJcmVnID0gPDB4OTAwMDAwMDAgMHgxMDAwMD47CisJCQkJaW50 ZXJydXB0cyA9IDwyNz47CisJCQl9OworCQl9OworCisJCWRpc3AtaW9iZyB7CisJCQljb21wYXRp YmxlID0gInNpbXBsZS1idXMiOworCQkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCQkjc2l6ZS1j ZWxscyA9IDwxPjsKKwkJCXJhbmdlcyA9IDwweDkwMDEwMDAwIDB4OTAwMTAwMDAgMHgzMDAwMD47 CisKKwkJCWRpc3BsYXlAOTAwMTAwMDAgeworCQkJCWNvbXBhdGlibGUgPSAic2lyZixwcmltYTIt bGNkIjsKKwkJCQlyZWcgPSA8MHg5MDAxMDAwMCAweDIwMDAwPjsKKwkJCQlpbnRlcnJ1cHRzID0g PDMwPjsKKwkJCX07CisKKwkJCXZwcEA5MDAyMDAwMCB7CisJCQkJY29tcGF0aWJsZSA9ICJzaXJm LHByaW1hMi12cHAiOworCQkJCXJlZyA9IDwweDkwMDIwMDAwIDB4MTAwMDA+OworCQkJCWludGVy cnVwdHMgPSA8MzE+OworCQkJfTsKKwkJfTsKKworCQlncmFwaGljcy1pb2JnIHsKKwkJCWNvbXBh dGlibGUgPSAic2ltcGxlLWJ1cyI7CisJCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJCSNzaXpl LWNlbGxzID0gPDE+OworCQkJcmFuZ2VzID0gPDB4OTgwMDAwMDAgMHg5ODAwMDAwMCAweDgwMDAw MDA+OworCisJCQlncmFwaGljc0A5ODAwMDAwMCB7CisJCQkJY29tcGF0aWJsZSA9ICJwb3dlcnZy LHNneDUzMSI7CisJCQkJcmVnID0gPDB4OTgwMDAwMDAgMHg4MDAwMDAwPjsKKwkJCQlpbnRlcnJ1 cHRzID0gPDY+OworCQkJfTsKKwkJfTsKKworCQltdWx0aW1lZGlhLWlvYmcgeworCQkJY29tcGF0 aWJsZSA9ICJzaW1wbGUtYnVzIjsKKwkJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkJI3NpemUt Y2VsbHMgPSA8MT47CisJCQlyYW5nZXMgPSA8MHhhMDAwMDAwMCAweGEwMDAwMDAwIDB4ODAwMDAw MD47CisKKwkJCW11bHRpbWVkaWFAYTAwMDAwMDAgeworCQkJCWNvbXBhdGlibGUgPSAic2lyZixw cmltYTItdmlkZW8tY29kZWMiOworCQkJCXJlZyA9IDwweGEwMDAwMDAwIDB4ODAwMDAwMD47CisJ CQkJaW50ZXJydXB0cyA9IDw1PjsKKwkJCX07CisJCX07CisKKwkJZHNwLWlvYmcgeworCQkJY29t cGF0aWJsZSA9ICJzaW1wbGUtYnVzIjsKKwkJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkJI3Np emUtY2VsbHMgPSA8MT47CisJCQlyYW5nZXMgPSA8MHhhODAwMDAwMCAweGE4MDAwMDAwIDB4MjAw MDAwMD47CisKKwkJCWRzcGlmQGE4MDAwMDAwIHsKKwkJCQljb21wYXRpYmxlID0gInNpcmYscHJp bWEyLWRzcGlmIjsKKwkJCQlyZWcgPSA8MHhhODAwMDAwMCAweDEwMDAwPjsKKwkJCQlpbnRlcnJ1 cHRzID0gPDk+OworCQkJfTsKKworCQkJZ3BzQGE4MDEwMDAwIHsKKwkJCQljb21wYXRpYmxlID0g InNpcmYscHJpbWEyLWdwcyI7CisJCQkJcmVnID0gPDB4YTgwMTAwMDAgMHgxMDAwMD47CisJCQkJ aW50ZXJydXB0cyA9IDw3PjsKKwkJCX07CisKKwkJCWRzcEBhOTAwMDAwMCB7CisJCQkJY29tcGF0 aWJsZSA9ICJzaXJmLHByaW1hMi1kc3AiOworCQkJCXJlZyA9IDwweGE5MDAwMDAwIDB4MTAwMDAw MD47CisJCQkJaW50ZXJydXB0cyA9IDw4PjsKKwkJCX07CisJCX07CisKKwkJcGVyaS1pb2JnIHsK KwkJCWNvbXBhdGlibGUgPSAic2ltcGxlLWJ1cyI7CisJCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsK KwkJCSNzaXplLWNlbGxzID0gPDE+OworCQkJcmFuZ2VzID0gPDB4YjAwMDAwMDAgMHhiMDAwMDAw MCAweDE4MDAwMD47CisKKwkJCXRpbWVyQGIwMDIwMDAwIHsKKwkJCQljb21wYXRpYmxlID0gInNp cmYscHJpbWEyLXRpY2siOworCQkJCXJlZyA9IDwweGIwMDIwMDAwIDB4MTAwMD47CisJCQkJaW50 ZXJydXB0cyA9IDwwPjsKKwkJCX07CisKKwkJCW5hbmRAYjAwMzAwMDAgeworCQkJCWNvbXBhdGli bGUgPSAic2lyZixwcmltYTItbmFuZCI7CisJCQkJcmVnID0gPDB4YjAwMzAwMDAgMHgxMDAwMD47 CisJCQkJaW50ZXJydXB0cyA9IDw0MT47CisJCQl9OworCisJCQlhdWRpb0BiMDA0MDAwMCB7CisJ CQkJY29tcGF0aWJsZSA9ICJzaXJmLHByaW1hMi1hdWRpbyI7CisJCQkJcmVnID0gPDB4YjAwNDAw MDAgMHgxMDAwMD47CisJCQkJaW50ZXJydXB0cyA9IDwzNT47CisJCQl9OworCisJCQl1YXJ0MDog dWFydEBiMDA1MDAwMCB7CisJCQkJY2VsbC1pbmRleCA9IDwwPjsKKwkJCQljb21wYXRpYmxlID0g InNpcmYscHJpbWEyLXVhcnQiOworCQkJCXJlZyA9IDwweGIwMDUwMDAwIDB4MTAwMDA+OworCQkJ CWludGVycnVwdHMgPSA8MTc+OworCQkJfTsKKworCQkJdWFydDE6IHVhcnRAYjAwNjAwMDAgewor CQkJCWNlbGwtaW5kZXggPSA8MT47CisJCQkJY29tcGF0aWJsZSA9ICJzaXJmLHByaW1hMi11YXJ0 IjsKKwkJCQlyZWcgPSA8MHhiMDA2MDAwMCAweDEwMDAwPjsKKwkJCQlpbnRlcnJ1cHRzID0gPDE4 PjsKKwkJCX07CisKKwkJCXVhcnQyOiB1YXJ0QGIwMDcwMDAwIHsKKwkJCQljZWxsLWluZGV4ID0g PDI+OworCQkJCWNvbXBhdGlibGUgPSAic2lyZixwcmltYTItdWFydCI7CisJCQkJcmVnID0gPDB4 YjAwNzAwMDAgMHgxMDAwMD47CisJCQkJaW50ZXJydXB0cyA9IDwxOT47CisJCQl9OworCisJCQl1 c3AwOiB1c3BAYjAwODAwMDAgeworCQkJCWNlbGwtaW5kZXggPSA8MD47CisJCQkJY29tcGF0aWJs ZSA9ICJzaXJmLHByaW1hMi11c3AiOworCQkJCXJlZyA9IDwweGIwMDgwMDAwIDB4MTAwMDA+Owor CQkJCWludGVycnVwdHMgPSA8MjA+OworCQkJfTsKKworCQkJdXNwMTogdXNwQGIwMDkwMDAwIHsK KwkJCQljZWxsLWluZGV4ID0gPDE+OworCQkJCWNvbXBhdGlibGUgPSAic2lyZixwcmltYTItdXNw IjsKKwkJCQlyZWcgPSA8MHhiMDA5MDAwMCAweDEwMDAwPjsKKwkJCQlpbnRlcnJ1cHRzID0gPDIx PjsKKwkJCX07CisKKwkJCXVzcDI6IHVzcEBiMDBhMDAwMCB7CisJCQkJY2VsbC1pbmRleCA9IDwy PjsKKwkJCQljb21wYXRpYmxlID0gInNpcmYscHJpbWEyLXVzcCI7CisJCQkJcmVnID0gPDB4YjAw YTAwMDAgMHgxMDAwMD47CisJCQkJaW50ZXJydXB0cyA9IDwyMj47CisJCQl9OworCisJCQlkbWFj MDogZG1hLWNvbnRyb2xsZXJAYjAwYjAwMDAgeworCQkJCWNlbGwtaW5kZXggPSA8MD47CisJCQkJ Y29tcGF0aWJsZSA9ICJzaXJmLHByaW1hMi1kbWFjIjsKKwkJCQlyZWcgPSA8MHhiMDBiMDAwMCAw eDEwMDAwPjsKKwkJCQlpbnRlcnJ1cHRzID0gPDEyPjsKKwkJCX07CisKKwkJCWRtYWMxOiBkbWEt Y29udHJvbGxlckBiMDE2MDAwMCB7CisJCQkJY2VsbC1pbmRleCA9IDwxPjsKKwkJCQljb21wYXRp YmxlID0gInNpcmYscHJpbWEyLWRtYWMiOworCQkJCXJlZyA9IDwweGIwMTYwMDAwIDB4MTAwMDA+ OworCQkJCWludGVycnVwdHMgPSA8MTM+OworCQkJfTsKKworCQkJdmlwQGIwMEMwMDAwIHsKKwkJ CQljb21wYXRpYmxlID0gInNpcmYscHJpbWEyLXZpcCI7CisJCQkJcmVnID0gPDB4YjAwQzAwMDAg MHgxMDAwMD47CisJCQl9OworCisJCQlzcGkwOiBzcGlAYjAwZDAwMDAgeworCQkJCWNlbGwtaW5k ZXggPSA8MD47CisJCQkJY29tcGF0aWJsZSA9ICJzaXJmLHByaW1hMi1zcGkiOworCQkJCXJlZyA9 IDwweGIwMGQwMDAwIDB4MTAwMDA+OworCQkJCWludGVycnVwdHMgPSA8MTU+OworCQkJfTsKKwor CQkJc3BpMTogc3BpQGIwMTcwMDAwIHsKKwkJCQljZWxsLWluZGV4ID0gPDE+OworCQkJCWNvbXBh dGlibGUgPSAic2lyZixwcmltYTItc3BpIjsKKwkJCQlyZWcgPSA8MHhiMDE3MDAwMCAweDEwMDAw PjsKKwkJCQlpbnRlcnJ1cHRzID0gPDE2PjsKKwkJCX07CisKKwkJCWkyYzA6IGkyY0BiMDBlMDAw MCB7CisJCQkJY2VsbC1pbmRleCA9IDwwPjsKKwkJCQljb21wYXRpYmxlID0gInNpcmYscHJpbWEy LWkyYyI7CisJCQkJcmVnID0gPDB4YjAwZTAwMDAgMHgxMDAwMD47CisJCQkJaW50ZXJydXB0cyA9 IDwyND47CisJCQl9OworCisJCQlpMmMxOiBpMmNAYjAwZjAwMDAgeworCQkJCWNlbGwtaW5kZXgg PSA8MT47CisJCQkJY29tcGF0aWJsZSA9ICJzaXJmLHByaW1hMi1pMmMiOworCQkJCXJlZyA9IDww eGIwMGYwMDAwIDB4MTAwMDA+OworCQkJCWludGVycnVwdHMgPSA8MjU+OworCQkJfTsKKworCQkJ dHNjQGIwMTEwMDAwIHsKKwkJCQljb21wYXRpYmxlID0gInNpcmYscHJpbWEyLXRzYyI7CisJCQkJ cmVnID0gPDB4YjAxMTAwMDAgMHgxMDAwMD47CisJCQkJaW50ZXJydXB0cyA9IDwzMz47CisJCQl9 OworCisJCQlncGlvOiBncGlvLWNvbnRyb2xsZXJAYjAxMjAwMDAgeworCQkJCSNncGlvLWNlbGxz ID0gPDI+OworCQkJCSNpbnRlcnJ1cHQtY2VsbHMgPSA8Mj47CisJCQkJY29tcGF0aWJsZSA9ICJz aXJmLHByaW1hMi1ncGlvIjsKKwkJCQlyZWcgPSA8MHhiMDEyMDAwMCAweDEwMDAwPjsKKwkJCQln cGlvLWNvbnRyb2xsZXI7CisJCQkJaW50ZXJydXB0LWNvbnRyb2xsZXI7CisJCQl9OworCisJCQlw d21AYjAxMzAwMDAgeworCQkJCWNvbXBhdGlibGUgPSAic2lyZixwcmltYTItcHdtIjsKKwkJCQly ZWcgPSA8MHhiMDEzMDAwMCAweDEwMDAwPjsKKwkJCX07CisKKwkJCWVmdXNlc3lzQGIwMTQwMDAw IHsKKwkJCQljb21wYXRpYmxlID0gInNpcmYscHJpbWEyLWVmdXNlIjsKKwkJCQlyZWcgPSA8MHhi MDE0MDAwMCAweDEwMDAwPjsKKwkJCX07CisKKwkJCXB1bHNlY0BiMDE1MDAwMCB7CisJCQkJY29t cGF0aWJsZSA9ICJzaXJmLHByaW1hMi1wdWxzZWMiOworCQkJCXJlZyA9IDwweGIwMTUwMDAwIDB4 MTAwMDA+OworCQkJCWludGVycnVwdHMgPSA8NDg+OworCQkJfTsKKworCQkJcGNpLWlvYmcgewor CQkJCWNvbXBhdGlibGUgPSAic2lyZixwcmltYTItcGNpaW9iZyIsICJzaW1wbGUtYnVzIjsKKwkJ CQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJCQkjc2l6ZS1jZWxscyA9IDwxPjsKKwkJCQlyYW5n ZXMgPSA8MHg1NjAwMDAwMCAweDU2MDAwMDAwIDB4MWIwMDAwMD47CisKKwkJCQlzZDA6IHNkaGNp QDU2MDAwMDAwIHsKKwkJCQkJY2VsbC1pbmRleCA9IDwwPjsKKwkJCQkJY29tcGF0aWJsZSA9ICJz aXJmLHByaW1hMi1zZGhjIjsKKwkJCQkJcmVnID0gPDB4NTYwMDAwMDAgMHgxMDAwMDA+OworCQkJ CQlpbnRlcnJ1cHRzID0gPDM4PjsKKwkJCQl9OworCisJCQkJc2QxOiBzZGhjaUA1NjEwMDAwMCB7 CisJCQkJCWNlbGwtaW5kZXggPSA8MT47CisJCQkJCWNvbXBhdGlibGUgPSAic2lyZixwcmltYTIt c2RoYyI7CisJCQkJCXJlZyA9IDwweDU2MTAwMDAwIDB4MTAwMDAwPjsKKwkJCQkJaW50ZXJydXB0 cyA9IDwzOD47CisJCQkJfTsKKworCQkJCXNkMjogc2RoY2lANTYyMDAwMDAgeworCQkJCQljZWxs LWluZGV4ID0gPDI+OworCQkJCQljb21wYXRpYmxlID0gInNpcmYscHJpbWEyLXNkaGMiOworCQkJ CQlyZWcgPSA8MHg1NjIwMDAwMCAweDEwMDAwMD47CisJCQkJCWludGVycnVwdHMgPSA8MjM+Owor CQkJCX07CisKKwkJCQlzZDM6IHNkaGNpQDU2MzAwMDAwIHsKKwkJCQkJY2VsbC1pbmRleCA9IDwz PjsKKwkJCQkJY29tcGF0aWJsZSA9ICJzaXJmLHByaW1hMi1zZGhjIjsKKwkJCQkJcmVnID0gPDB4 NTYzMDAwMDAgMHgxMDAwMDA+OworCQkJCQlpbnRlcnJ1cHRzID0gPDIzPjsKKwkJCQl9OworCisJ CQkJc2Q0OiBzZGhjaUA1NjQwMDAwMCB7CisJCQkJCWNlbGwtaW5kZXggPSA8ND47CisJCQkJCWNv bXBhdGlibGUgPSAic2lyZixwcmltYTItc2RoYyI7CisJCQkJCXJlZyA9IDwweDU2NDAwMDAwIDB4 MTAwMDAwPjsKKwkJCQkJaW50ZXJydXB0cyA9IDwzOT47CisJCQkJfTsKKworCQkJCXNkNTogc2Ro Y2lANTY1MDAwMDAgeworCQkJCQljZWxsLWluZGV4ID0gPDU+OworCQkJCQljb21wYXRpYmxlID0g InNpcmYscHJpbWEyLXNkaGMiOworCQkJCQlyZWcgPSA8MHg1NjUwMDAwMCAweDEwMDAwMD47CisJ CQkJCWludGVycnVwdHMgPSA8Mzk+OworCQkJCX07CisKKwkJCQlwY2ktY29weUA1NzkwMDAwMCB7 CisJCQkJCWNvbXBhdGlibGUgPSAic2lyZixwcmltYTItcGNpY3AiOworCQkJCQlyZWcgPSA8MHg1 NzkwMDAwMCAweDEwMDAwMD47CisJCQkJCWludGVycnVwdHMgPSA8NDA+OworCQkJCX07CisKKwkJ CQlyb20taW50ZXJmYWNlQDU3YTAwMDAwIHsKKwkJCQkJY29tcGF0aWJsZSA9ICJzaXJmLHByaW1h Mi1yb21pZiI7CisJCQkJCXJlZyA9IDwweDU3YTAwMDAwIDB4MTAwMDAwPjsKKwkJCQl9OworCQkJ fTsKKwkJfTsKKworCQlydGMtaW9iZyB7CisJCQljb21wYXRpYmxlID0gInNpcmYscHJpbWEyLXJ0 Y2lvYmciLCAic2ltcGxlLWJ1cyI7CisJCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJCSNzaXpl LWNlbGxzID0gPDE+OworCQkJcmVnID0gPDB4ODAwMzAwMDAgMHgxMDAwMD47CisKKwkJCWdwc3J0 Y0AxMDAwIHsKKwkJCQljb21wYXRpYmxlID0gInNpcmYscHJpbWEyLWdwc3J0YyI7CisJCQkJcmVn ID0gPDB4MTAwMCAweDEwMDA+OworCQkJCWludGVycnVwdHMgPSA8NTUgNTYgNTc+OworCQkJfTsK KworCQkJc3lzcnRjQDIwMDAgeworCQkJCWNvbXBhdGlibGUgPSAic2lyZixwcmltYTItc3lzcnRj IjsKKwkJCQlyZWcgPSA8MHgyMDAwIDB4MTAwMD47CisJCQkJaW50ZXJydXB0cyA9IDw1MiA1MyA1 ND47CisJCQl9OworCisJCQlwd3JjQDMwMDAgeworCQkJCWNvbXBhdGlibGUgPSAic2lyZixwcmlt YTItcHdyYyI7CisJCQkJcmVnID0gPDB4MzAwMCAweDEwMDA+OworCQkJCWludGVycnVwdHMgPSA8 MzI+OworCQkJfTsKKwkJfTsKKworCQl1dXMtaW9iZyB7CisJCQljb21wYXRpYmxlID0gInNpbXBs ZS1idXMiOworCQkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCQkjc2l6ZS1jZWxscyA9IDwxPjsK KwkJCXJhbmdlcyA9IDwweGI4MDAwMDAwIDB4YjgwMDAwMDAgMHg0MDAwMD47CisKKwkJCXVzYjA6 IHVzYkBiMDBlMDAwMCB7CisJCQkJY29tcGF0aWJsZSA9ICJjaGlwaWRlYSxjaTEzNjExYS1wcmlt YTIiOworCQkJCXJlZyA9IDwweGI4MDAwMDAwIDB4MTAwMDA+OworCQkJCWludGVycnVwdHMgPSA8 MTA+OworCQkJfTsKKworCQkJdXNiMTogdXNiQGIwMGYwMDAwIHsKKwkJCQljb21wYXRpYmxlID0g ImNoaXBpZGVhLGNpMTM2MTFhLXByaW1hMiI7CisJCQkJcmVnID0gPDB4YjgwMTAwMDAgMHgxMDAw MD47CisJCQkJaW50ZXJydXB0cyA9IDwxMT47CisJCQl9OworCisJCQlzYXRhQGIwMGYwMDAwIHsK KwkJCQljb21wYXRpYmxlID0gInN5bm9wc3lzLGR3Yy1haHNhdGEiOworCQkJCXJlZyA9IDwweGI4 MDIwMDAwIDB4MTAwMDA+OworCQkJCWludGVycnVwdHMgPSA8Mzc+OworCQkJfTsKKworCQkJc2Vj dXJpdHlAYjAwZjAwMDAgeworCQkJCWNvbXBhdGlibGUgPSAic2lyZixwcmltYTItc2VjdXJpdHki OworCQkJCXJlZyA9IDwweGI4MDMwMDAwIDB4MTAwMDA+OworCQkJCWludGVycnVwdHMgPSA8NDI+ OworCQkJfTsKKwkJfTsKKwl9OworfTsKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtcHJpbWEy L01ha2VmaWxlIGIvYXJjaC9hcm0vbWFjaC1wcmltYTIvTWFrZWZpbGUKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMC4uZDQ0ZjdhZQotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gvYXJt L21hY2gtcHJpbWEyL01ha2VmaWxlCkBAIC0wLDAgKzEsNSBAQAorb2JqLXkgOj0gdGltZXIubwor b2JqLXkgKz0gaXJxLm8KK29iai15ICs9IGNsb2NrLm8KK29iai15ICs9IHJzdGMubworb2JqLXkg Kz0gcHJpbWEyLm8KZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtcHJpbWEyL01ha2VmaWxlLmJv b3QgYi9hcmNoL2FybS9tYWNoLXByaW1hMi9NYWtlZmlsZS5ib290Cm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLmQwMjNkYjMKLS0tIC9kZXYvbnVsbAorKysgYi9hcmNoL2FybS9t YWNoLXByaW1hMi9NYWtlZmlsZS5ib290CkBAIC0wLDAgKzEsMyBAQAorenJlbGFkZHIteQkJOj0g MHgwMDAwODAwMAorcGFyYW1zX3BoeXMteQkJOj0gMHgwMDAwMDEwMAoraW5pdHJkX3BoeXMteQkJ Oj0gMHgwMDgwMDAwMApkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1wcmltYTIvY2xvY2suYyBi L2FyY2gvYXJtL21hY2gtcHJpbWEyL2Nsb2NrLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMC4uZjlhMmFhZgotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gvYXJtL21hY2gtcHJpbWEy L2Nsb2NrLmMKQEAgLTAsMCArMSw1MDkgQEAKKy8qCisgKiBDbG9jayB0cmVlIGZvciBDU1IgU2lS RnByaW1hSUkKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTEgQ2FtYnJpZGdlIFNpbGljb24gUmFk aW8gTGltaXRlZCwgYSBDU1IgcGxjIGdyb3VwIGNvbXBhbnkuCisgKgorICogTGljZW5zZWQgdW5k ZXIgR1BMdjIgb3IgbGF0ZXIuCisgKi8KKworI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgorI2lu Y2x1ZGUgPGxpbnV4L2JpdG9wcy5oPgorI2luY2x1ZGUgPGxpbnV4L2Vyci5oPgorI2luY2x1ZGUg PGxpbnV4L2Vycm5vLmg+CisjaW5jbHVkZSA8bGludXgvaW8uaD4KKyNpbmNsdWRlIDxsaW51eC9j bGtkZXYuaD4KKyNpbmNsdWRlIDxsaW51eC9jbGsuaD4KKyNpbmNsdWRlIDxsaW51eC9zcGlubG9j ay5oPgorI2luY2x1ZGUgPGxpbnV4L29mLmg+CisjaW5jbHVkZSA8bGludXgvb2ZfYWRkcmVzcy5o PgorI2luY2x1ZGUgPGFzbS9tYWNoL21hcC5oPgorI2luY2x1ZGUgPG1hY2gvbWFwLmg+CisKKyNk ZWZpbmUgU0lSRlNPQ19DTEtDX0NMS19FTjAgICAgMHgwMDAwCisjZGVmaW5lIFNJUkZTT0NfQ0xL Q19DTEtfRU4xICAgIDB4MDAwNAorI2RlZmluZSBTSVJGU09DX0NMS0NfUkVGX0NGRyAgICAweDAw MTQKKyNkZWZpbmUgU0lSRlNPQ19DTEtDX0NQVV9DRkcgICAgMHgwMDE4CisjZGVmaW5lIFNJUkZT T0NfQ0xLQ19NRU1fQ0ZHICAgIDB4MDAxYworI2RlZmluZSBTSVJGU09DX0NMS0NfU1lTX0NGRyAg ICAweDAwMjAKKyNkZWZpbmUgU0lSRlNPQ19DTEtDX0lPX0NGRyAgICAgMHgwMDI0CisjZGVmaW5l IFNJUkZTT0NfQ0xLQ19EU1BfQ0ZHICAgIDB4MDAyOAorI2RlZmluZSBTSVJGU09DX0NMS0NfR0ZY X0NGRyAgICAweDAwMmMKKyNkZWZpbmUgU0lSRlNPQ19DTEtDX01NX0NGRyAgICAgMHgwMDMwCisj ZGVmaW5lIFNJUkZTT0NfTEtDX0xDRF9DRkcgICAgIDB4MDAzNAorI2RlZmluZSBTSVJGU09DX0NM S0NfTU1DX0NGRyAgICAweDAwMzgKKyNkZWZpbmUgU0lSRlNPQ19DTEtDX1BMTDFfQ0ZHMCAgMHgw MDQwCisjZGVmaW5lIFNJUkZTT0NfQ0xLQ19QTEwyX0NGRzAgIDB4MDA0NAorI2RlZmluZSBTSVJG U09DX0NMS0NfUExMM19DRkcwICAweDAwNDgKKyNkZWZpbmUgU0lSRlNPQ19DTEtDX1BMTDFfQ0ZH MSAgMHgwMDRjCisjZGVmaW5lIFNJUkZTT0NfQ0xLQ19QTEwyX0NGRzEgIDB4MDA1MAorI2RlZmlu ZSBTSVJGU09DX0NMS0NfUExMM19DRkcxICAweDAwNTQKKyNkZWZpbmUgU0lSRlNPQ19DTEtDX1BM TDFfQ0ZHMiAgMHgwMDU4CisjZGVmaW5lIFNJUkZTT0NfQ0xLQ19QTEwyX0NGRzIgIDB4MDA1Ywor I2RlZmluZSBTSVJGU09DX0NMS0NfUExMM19DRkcyICAweDAwNjAKKworI2RlZmluZSBTSVJGU09D X0NMT0NLX1ZBX0JBU0UJCVNJUkZTT0NfVkEoMHgwMDUwMDApCisKKyNkZWZpbmUgS0haICAgICAx MDAwCisjZGVmaW5lIE1IWiAgICAgKEtIWiAqIEtIWikKKworc3RydWN0IGNsa19vcHMgeworCXVu c2lnbmVkIGxvbmcgKCpnZXRfcmF0ZSkoc3RydWN0IGNsayAqY2xrKTsKKwlsb25nICgqcm91bmRf cmF0ZSkoc3RydWN0IGNsayAqY2xrLCB1bnNpZ25lZCBsb25nIHJhdGUpOworCWludCAoKnNldF9y YXRlKShzdHJ1Y3QgY2xrICpjbGssIHVuc2lnbmVkIGxvbmcgcmF0ZSk7CisJaW50ICgqZW5hYmxl KShzdHJ1Y3QgY2xrICpjbGspOworCWludCAoKmRpc2FibGUpKHN0cnVjdCBjbGsgKmNsayk7CisJ c3RydWN0IGNsayAqKCpnZXRfcGFyZW50KShzdHJ1Y3QgY2xrICpjbGspOworCWludCAoKnNldF9w YXJlbnQpKHN0cnVjdCBjbGsgKmNsaywgc3RydWN0IGNsayAqcGFyZW50KTsKK307CisKK3N0cnVj dCBjbGsgeworCXN0cnVjdCBjbGsgKnBhcmVudDsgICAgIC8qIHBhcmVudCBjbGsgKi8KKwl1bnNp Z25lZCBsb25nIHJhdGU7ICAgICAvKiBjbG9jayByYXRlIGluIEh6ICovCisJc2lnbmVkIGNoYXIg dXNhZ2U7ICAgICAgLyogY2xvY2sgZW5hYmxlIGNvdW50ICovCisJc2lnbmVkIGNoYXIgZW5hYmxl X2JpdDsgLyogZW5hYmxlIGJpdDogMCB+IDYzICovCisJdW5zaWduZWQgc2hvcnQgcmVnb2ZzOyAg LyogcmVnaXN0ZXIgb2Zmc2V0ICovCisJc3RydWN0IGNsa19vcHMgKm9wczsgICAgLyogY2xvY2sg b3BlcmF0aW9uICovCit9OworCitzdGF0aWMgREVGSU5FX1NQSU5MT0NLKGNsb2Nrc19sb2NrKTsK Kworc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIGNsa2NfcmVhZGwodW5zaWduZWQgcmVnKQor eworCXJldHVybiByZWFkbChTSVJGU09DX0NMT0NLX1ZBX0JBU0UgKyByZWcpOworfQorCitzdGF0 aWMgaW5saW5lIHZvaWQgY2xrY193cml0ZWwodTMyIHZhbCwgdW5zaWduZWQgcmVnKQoreworCXdy aXRlbCh2YWwsIFNJUkZTT0NfQ0xPQ0tfVkFfQkFTRSArIHJlZyk7Cit9CisKKy8qCisgKiBvc2Nf cnRjIC0gcmVhbCB0aW1lIG9zY2lsbGF0b3IgLSAzMi43NjhLSHoKKyAqIG9zY19zeXMgLSBoaWdo IHNwZWVkIG9zY2lsbGF0b3IgLSAyNk1IegorICovCisKK3N0YXRpYyBzdHJ1Y3QgY2xrIGNsa19y dGMgPSB7CisJLnJhdGUgPSAzMjc2OCwKK307CisKK3N0YXRpYyBzdHJ1Y3QgY2xrIGNsa19vc2Mg PSB7CisJLnJhdGUgPSAyNiAqIE1IWiwKK307CisKKy8qCisgKiBzdGQgcGxsCisgKi8KK3N0YXRp YyB1bnNpZ25lZCBsb25nIHN0ZF9wbGxfZ2V0X3JhdGUoc3RydWN0IGNsayAqY2xrKQoreworCXVu c2lnbmVkIGxvbmcgZmluID0gY2xrX2dldF9yYXRlKGNsay0+cGFyZW50KTsKKwl1MzIgcmVnY2Zn MiA9IGNsay0+cmVnb2ZzICsgU0lSRlNPQ19DTEtDX1BMTDFfQ0ZHMiAtCisJCVNJUkZTT0NfQ0xL Q19QTEwxX0NGRzA7CisKKwlpZiAoY2xrY19yZWFkbChyZWdjZmcyKSAmIEJJVCgyKSkgeworCQkv KiBwbGwgYnlwYXNzIG1vZGUgKi8KKwkJY2xrLT5yYXRlID0gZmluOworCX0gZWxzZSB7CisJCS8q IGZvdXQgPSBmaW4gKiBuZiAvIG5yIC8gb2QgKi8KKwkJdTMyIGNmZzAgPSBjbGtjX3JlYWRsKGNs ay0+cmVnb2ZzKTsKKwkJdTMyIG5mID0gKGNmZzAgJiAoQklUKDEzKSAtIDEpKSArIDE7CisJCXUz MiBuciA9ICgoY2ZnMCA+PiAxMykgJiAoQklUKDYpIC0gMSkpICsgMTsKKwkJdTMyIG9kID0gKChj ZmcwID4+IDE5KSAmIChCSVQoNCkgLSAxKSkgKyAxOworCQlXQVJOX09OKGZpbiAlIE1IWik7CisJ CWNsay0+cmF0ZSA9IGZpbiAvIE1IWiAqIG5mIC8gbnIgLyBvZCAqIE1IWjsKKwl9CisKKwlyZXR1 cm4gY2xrLT5yYXRlOworfQorCitzdGF0aWMgaW50IHN0ZF9wbGxfc2V0X3JhdGUoc3RydWN0IGNs ayAqY2xrLCB1bnNpZ25lZCBsb25nIHJhdGUpCit7CisJdW5zaWduZWQgbG9uZyBmaW4sIG5mLCBu ciwgb2QsIHJlZzsKKworCS8qCisJICogZm91dCA9IGZpbiAqIG5mIC8gKG5yICogb2QpOworCSAq IHNldCBvZCA9IDEsIG5yID0gZmluL01Ieiwgc28gZm91dCA9IG5mICogTUh6CisJICovCisKKwlu ZiA9IHJhdGUgLyBNSFo7CisJaWYgKHVubGlrZWx5KChyYXRlICUgTUhaKSB8fCBuZiA+IEJJVCgx MykgfHwgbmYgPCAxKSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlmaW4gPSBjbGtfZ2V0X3JhdGUo Y2xrLT5wYXJlbnQpOworCUJVR19PTihmaW4gPCBNSFopOworCisJbnIgPSBmaW4gLyBNSFo7CisJ QlVHX09OKChmaW4gJSBNSFopIHx8IG5yID4gQklUKDYpKTsKKworCW9kID0gMTsKKworCXJlZyA9 IChuZiAtIDEpIHwgKChuciAtIDEpIDw8IDEzKSB8ICgob2QgLSAxKSA8PCAxOSk7CisJY2xrY193 cml0ZWwocmVnLCBjbGstPnJlZ29mcyk7CisKKwlyZWcgPSBjbGstPnJlZ29mcyArIFNJUkZTT0Nf Q0xLQ19QTEwxX0NGRzEgLSBTSVJGU09DX0NMS0NfUExMMV9DRkcwOworCWNsa2Nfd3JpdGVsKChu ZiA+PiAxKSAtIDEsIHJlZyk7CisKKwlyZWcgPSBjbGstPnJlZ29mcyArIFNJUkZTT0NfQ0xLQ19Q TEwxX0NGRzIgLSBTSVJGU09DX0NMS0NfUExMMV9DRkcwOworCXdoaWxlICghKGNsa2NfcmVhZGwo cmVnKSAmIEJJVCg2KSkpCisJCWNwdV9yZWxheCgpOworCisJY2xrLT5yYXRlID0gMDsgLyogc2V0 IHRvIHplcm8gd2lsbCBmb3JjZSByZWNhbGN1bGF0aW9uICovCisJcmV0dXJuIDA7Cit9CisKK3N0 YXRpYyBzdHJ1Y3QgY2xrX29wcyBzdGRfcGxsX29wcyA9IHsKKwkuZ2V0X3JhdGUgPSBzdGRfcGxs X2dldF9yYXRlLAorCS5zZXRfcmF0ZSA9IHN0ZF9wbGxfc2V0X3JhdGUsCit9OworCitzdGF0aWMg c3RydWN0IGNsayBjbGtfcGxsMSA9IHsKKwkucGFyZW50ID0gJmNsa19vc2MsCisJLnJlZ29mcyA9 IFNJUkZTT0NfQ0xLQ19QTEwxX0NGRzAsCisJLm9wcyA9ICZzdGRfcGxsX29wcywKK307CisKK3N0 YXRpYyBzdHJ1Y3QgY2xrIGNsa19wbGwyID0geworCS5wYXJlbnQgPSAmY2xrX29zYywKKwkucmVn b2ZzID0gU0lSRlNPQ19DTEtDX1BMTDJfQ0ZHMCwKKwkub3BzID0gJnN0ZF9wbGxfb3BzLAorfTsK Kworc3RhdGljIHN0cnVjdCBjbGsgY2xrX3BsbDMgPSB7CisJLnBhcmVudCA9ICZjbGtfb3NjLAor CS5yZWdvZnMgPSBTSVJGU09DX0NMS0NfUExMM19DRkcwLAorCS5vcHMgPSAmc3RkX3BsbF9vcHMs Cit9OworCisvKgorICogY2xvY2sgZG9tYWlucyAtIGNwdSwgbWVtLCBzeXMvaW8KKyAqLworCitz dGF0aWMgc3RydWN0IGNsayBjbGtfbWVtOworCitzdGF0aWMgc3RydWN0IGNsayAqZG1uX2dldF9w YXJlbnQoc3RydWN0IGNsayAqY2xrKQoreworCXN0cnVjdCBjbGsgKmNsa3NbXSA9IHsKKwkJJmNs a19vc2MsICZjbGtfcnRjLCAmY2xrX3BsbDEsICZjbGtfcGxsMiwgJmNsa19wbGwzCisJfTsKKwl1 MzIgY2ZnID0gY2xrY19yZWFkbChjbGstPnJlZ29mcyk7CisJV0FSTl9PTigoY2ZnICYgKEJJVCgz KSAtIDEpKSA+IDQpOworCXJldHVybiBjbGtzW2NmZyAmIChCSVQoMykgLSAxKV07Cit9CisKK3N0 YXRpYyBpbnQgZG1uX3NldF9wYXJlbnQoc3RydWN0IGNsayAqY2xrLCBzdHJ1Y3QgY2xrICpwYXJl bnQpCit7CisJY29uc3Qgc3RydWN0IGNsayAqY2xrc1tdID0geworCQkmY2xrX29zYywgJmNsa19y dGMsICZjbGtfcGxsMSwgJmNsa19wbGwyLCAmY2xrX3BsbDMKKwl9OworCXUzMiBjZmcgPSBjbGtj X3JlYWRsKGNsay0+cmVnb2ZzKTsKKwlpbnQgaTsKKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0la RShjbGtzKTsgaSsrKSB7CisJCWlmIChjbGtzW2ldID09IHBhcmVudCkgeworCQkJY2ZnICY9IH4o QklUKDMpIC0gMSk7CisJCQljbGtjX3dyaXRlbChjZmcgfCBpLCBjbGstPnJlZ29mcyk7CisJCQkv KiBCSVQoMykgLSBzd2l0Y2hpbmcgc3RhdHVzOiAxIC0gYnVzeSwgMCAtIGRvbmUgKi8KKwkJCXdo aWxlIChjbGtjX3JlYWRsKGNsay0+cmVnb2ZzKSAmIEJJVCgzKSkKKwkJCQljcHVfcmVsYXgoKTsK KwkJCXJldHVybiAwOworCQl9CisJfQorCXJldHVybiAtRUlOVkFMOworfQorCitzdGF0aWMgdW5z aWduZWQgbG9uZyBkbW5fZ2V0X3JhdGUoc3RydWN0IGNsayAqY2xrKQoreworCXVuc2lnbmVkIGxv bmcgZmluID0gY2xrX2dldF9yYXRlKGNsay0+cGFyZW50KTsKKwl1MzIgY2ZnID0gY2xrY19yZWFk bChjbGstPnJlZ29mcyk7CisJaWYgKGNmZyAmIEJJVCgyNCkpIHsKKwkJLyogZmNkIGJ5cGFzcyBt b2RlICovCisJCWNsay0+cmF0ZSA9IGZpbjsKKwl9IGVsc2UgeworCQkvKgorCQkgKiB3YWl0IGNv dW50OiBiaXRbMTk6MTZdLCBob2xkIGNvdW50OiBiaXRbMjM6MjBdCisJCSAqLworCQl1MzIgd2Fp dCA9IChjZmcgPj4gMTYpICYgKEJJVCg0KSAtIDEpOworCQl1MzIgaG9sZCA9IChjZmcgPj4gMjAp ICYgKEJJVCg0KSAtIDEpOworCisJCWNsay0+cmF0ZSA9IGZpbiAvICh3YWl0ICsgaG9sZCArIDIp OworCX0KKworCXJldHVybiBjbGstPnJhdGU7Cit9CisKK3N0YXRpYyBpbnQgZG1uX3NldF9yYXRl KHN0cnVjdCBjbGsgKmNsaywgdW5zaWduZWQgbG9uZyByYXRlKQoreworCXVuc2lnbmVkIGxvbmcg ZmluOworCXVuc2lnbmVkIHJhdGlvLCB3YWl0LCBob2xkLCByZWc7CisJdW5zaWduZWQgYml0cyA9 IChjbGsgPT0gJmNsa19tZW0pID8gMyA6IDQ7CisKKwlmaW4gPSBjbGtfZ2V0X3JhdGUoY2xrLT5w YXJlbnQpOworCXJhdGlvID0gZmluIC8gcmF0ZTsKKworCWlmICh1bmxpa2VseShyYXRpbyA8IDIg fHwgcmF0aW8gPiBCSVQoYml0cyArIDEpKSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlXQVJOX09O KGZpbiAlIHJhdGUpOworCisJd2FpdCA9IChyYXRpbyA+PiAxKSAtIDE7CisJaG9sZCA9IHJhdGlv IC0gd2FpdCAtIDI7CisKKwlyZWcgPSBjbGtjX3JlYWRsKGNsay0+cmVnb2ZzKTsKKwlyZWcgJj0g figoKEJJVChiaXRzKSAtIDEpIDw8IDE2KSB8ICgoQklUKGJpdHMpIC0gMSkgPDwgMjApKTsKKwly ZWcgfD0gKHdhaXQgPDwgMTYpIHwgKGhvbGQgPDwgMjApIHwgQklUKDI1KTsKKwljbGtjX3dyaXRl bChyZWcsIGNsay0+cmVnb2ZzKTsKKworCS8qIHdhaXRpbmcgRkNEIGJlZW4gZWZmZWN0aXZlICov CisJd2hpbGUgKGNsa2NfcmVhZGwoY2xrLT5yZWdvZnMpICYgQklUKDI1KSkKKwkJY3B1X3JlbGF4 KCk7CisKKwljbGstPnJhdGUgPSAwOyAvKiBzZXQgdG8gemVybyB3aWxsIGZvcmNlIHJlY2FsY3Vs YXRpb24gKi8KKworCXJldHVybiAwOworfQorCisvKgorICogY3B1IGNsb2NrIGhhcyBubyBGQ0Qg cmVnaXN0ZXIgaW4gUHJpbWEyLCBjYW4gb25seSBjaGFuZ2UgcGxsCisgKi8KK3N0YXRpYyBpbnQg Y3B1X3NldF9yYXRlKHN0cnVjdCBjbGsgKmNsaywgdW5zaWduZWQgbG9uZyByYXRlKQoreworCWlu dCByZXQxLCByZXQyOworCXN0cnVjdCBjbGsgKmN1cl9wYXJlbnQsICp0bXBfcGFyZW50OworCisJ Y3VyX3BhcmVudCA9IGRtbl9nZXRfcGFyZW50KGNsayk7CisJQlVHX09OKGN1cl9wYXJlbnQgPT0g TlVMTCB8fCBjdXJfcGFyZW50LT51c2FnZSA+IDEpOworCisJLyogc3dpdGNoIHRvIHRtcCBwbGwg YmVmb3JlIHNldHRpbmcgcGFyZW50IGNsb2NrJ3MgcmF0ZSAqLworCXRtcF9wYXJlbnQgPSBjdXJf cGFyZW50ID09ICZjbGtfcGxsMSA/ICZjbGtfcGxsMiA6ICZjbGtfcGxsMTsKKwlyZXQxID0gZG1u X3NldF9wYXJlbnQoY2xrLCB0bXBfcGFyZW50KTsKKwlCVUdfT04ocmV0MSk7CisKKwlyZXQyID0g Y2xrX3NldF9yYXRlKGN1cl9wYXJlbnQsIHJhdGUpOworCisJcmV0MSA9IGRtbl9zZXRfcGFyZW50 KGNsaywgY3VyX3BhcmVudCk7CisKKwljbGstPnJhdGUgPSAwOyAvKiBzZXQgdG8gemVybyB3aWxs IGZvcmNlIHJlY2FsY3VsYXRpb24gKi8KKworCXJldHVybiByZXQyID8gcmV0MiA6IHJldDE7Cit9 CisKK3N0YXRpYyBzdHJ1Y3QgY2xrX29wcyBjcHVfb3BzID0geworCS5nZXRfcGFyZW50ID0gZG1u X2dldF9wYXJlbnQsCisJLnNldF9wYXJlbnQgPSBkbW5fc2V0X3BhcmVudCwKKwkuc2V0X3JhdGUg PSBjcHVfc2V0X3JhdGUsCit9OworCitzdGF0aWMgc3RydWN0IGNsayBjbGtfY3B1ID0geworCS5w YXJlbnQgPSAmY2xrX3BsbDEsCisJLnJlZ29mcyA9IFNJUkZTT0NfQ0xLQ19DUFVfQ0ZHLAorCS5v cHMgPSAmY3B1X29wcywKK307CisKKworc3RhdGljIHN0cnVjdCBjbGtfb3BzIG1zaV9vcHMgPSB7 CisJLnNldF9yYXRlID0gZG1uX3NldF9yYXRlLAorCS5nZXRfcmF0ZSA9IGRtbl9nZXRfcmF0ZSwK Kwkuc2V0X3BhcmVudCA9IGRtbl9zZXRfcGFyZW50LAorCS5nZXRfcGFyZW50ID0gZG1uX2dldF9w YXJlbnQsCit9OworCitzdGF0aWMgc3RydWN0IGNsayBjbGtfbWVtID0geworCS5wYXJlbnQgPSAm Y2xrX3BsbDIsCisJLnJlZ29mcyA9IFNJUkZTT0NfQ0xLQ19NRU1fQ0ZHLAorCS5vcHMgPSAmbXNp X29wcywKK307CisKK3N0YXRpYyBzdHJ1Y3QgY2xrIGNsa19zeXMgPSB7CisJLnBhcmVudCA9ICZj bGtfcGxsMywKKwkucmVnb2ZzID0gU0lSRlNPQ19DTEtDX1NZU19DRkcsCisJLm9wcyA9ICZtc2lf b3BzLAorfTsKKworc3RhdGljIHN0cnVjdCBjbGsgY2xrX2lvID0geworCS5wYXJlbnQgPSAmY2xr X3BsbDMsCisJLnJlZ29mcyA9IFNJUkZTT0NfQ0xLQ19JT19DRkcsCisJLm9wcyA9ICZtc2lfb3Bz LAorfTsKKworLyoKKyAqIG9uLWNoaXAgY2xvY2sgc2V0cworICovCitzdGF0aWMgc3RydWN0IGNs a19sb29rdXAgb25jaGlwX2Nsa3NbXSA9IHsKKwl7CisJCS5kZXZfaWQgPSAicnRjIiwKKwkJLmNs ayA9ICZjbGtfcnRjLAorCX0sIHsKKwkJLmRldl9pZCA9ICJvc2MiLAorCQkuY2xrID0gJmNsa19v c2MsCisJfSwgeworCQkuZGV2X2lkID0gInBsbDEiLAorCQkuY2xrID0gJmNsa19wbGwxLAorCX0s IHsKKwkJLmRldl9pZCA9ICJwbGwyIiwKKwkJLmNsayA9ICZjbGtfcGxsMiwKKwl9LCB7CisJCS5k ZXZfaWQgPSAicGxsMyIsCisJCS5jbGsgPSAmY2xrX3BsbDMsCisJfSwgeworCQkuZGV2X2lkID0g ImNwdSIsCisJCS5jbGsgPSAmY2xrX2NwdSwKKwl9LCB7CisJCS5kZXZfaWQgPSAibWVtIiwKKwkJ LmNsayA9ICZjbGtfbWVtLAorCX0sIHsKKwkJLmRldl9pZCA9ICJzeXMiLAorCQkJLmNsayA9ICZj bGtfc3lzLAorCX0sIHsKKwkJLmRldl9pZCA9ICJpbyIsCisJCQkuY2xrID0gJmNsa19pbywKKwl9 LAorfTsKKworaW50IGNsa19lbmFibGUoc3RydWN0IGNsayAqY2xrKQoreworCXVuc2lnbmVkIGxv bmcgZmxhZ3M7CisKKwlpZiAodW5saWtlbHkoSVNfRVJSX09SX05VTEwoY2xrKSkpCisJCXJldHVy biAtRUlOVkFMOworCisJaWYgKGNsay0+cGFyZW50KQorCQljbGtfZW5hYmxlKGNsay0+cGFyZW50 KTsKKworCXNwaW5fbG9ja19pcnFzYXZlKCZjbG9ja3NfbG9jaywgZmxhZ3MpOworCWlmICghY2xr LT51c2FnZSsrICYmIGNsay0+b3BzICYmIGNsay0+b3BzLT5lbmFibGUpCisJCWNsay0+b3BzLT5l bmFibGUoY2xrKTsKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZjbG9ja3NfbG9jaywgZmxhZ3Mp OworCXJldHVybiAwOworfQorRVhQT1JUX1NZTUJPTChjbGtfZW5hYmxlKTsKKwordm9pZCBjbGtf ZGlzYWJsZShzdHJ1Y3QgY2xrICpjbGspCit7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKworCWlm ICh1bmxpa2VseShJU19FUlJfT1JfTlVMTChjbGspKSkKKwkJcmV0dXJuOworCisJV0FSTl9PTigh Y2xrLT51c2FnZSk7CisKKwlzcGluX2xvY2tfaXJxc2F2ZSgmY2xvY2tzX2xvY2ssIGZsYWdzKTsK KwlpZiAoLS1jbGstPnVzYWdlID09IDAgJiYgY2xrLT5vcHMgJiYgY2xrLT5vcHMtPmRpc2FibGUp CisJCWNsay0+b3BzLT5kaXNhYmxlKGNsayk7CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmY2xv Y2tzX2xvY2ssIGZsYWdzKTsKKworCWlmIChjbGstPnBhcmVudCkKKwkJY2xrX2Rpc2FibGUoY2xr LT5wYXJlbnQpOworfQorRVhQT1JUX1NZTUJPTChjbGtfZGlzYWJsZSk7CisKK3Vuc2lnbmVkIGxv bmcgY2xrX2dldF9yYXRlKHN0cnVjdCBjbGsgKmNsaykKK3sKKwlpZiAodW5saWtlbHkoSVNfRVJS X09SX05VTEwoY2xrKSkpCisJCXJldHVybiAwOworCisJaWYgKGNsay0+cmF0ZSkKKwkJcmV0dXJu IGNsay0+cmF0ZTsKKworCWlmIChjbGstPm9wcyAmJiBjbGstPm9wcy0+Z2V0X3JhdGUpCisJCXJl dHVybiBjbGstPm9wcy0+Z2V0X3JhdGUoY2xrKTsKKworCXJldHVybiBjbGtfZ2V0X3JhdGUoY2xr LT5wYXJlbnQpOworfQorRVhQT1JUX1NZTUJPTChjbGtfZ2V0X3JhdGUpOworCitsb25nIGNsa19y b3VuZF9yYXRlKHN0cnVjdCBjbGsgKmNsaywgdW5zaWduZWQgbG9uZyByYXRlKQoreworCWlmICh1 bmxpa2VseShJU19FUlJfT1JfTlVMTChjbGspKSkKKwkJcmV0dXJuIDA7CisKKwlpZiAoY2xrLT5v cHMgJiYgY2xrLT5vcHMtPnJvdW5kX3JhdGUpCisJCXJldHVybiBjbGstPm9wcy0+cm91bmRfcmF0 ZShjbGssIHJhdGUpOworCisJcmV0dXJuIDA7Cit9CitFWFBPUlRfU1lNQk9MKGNsa19yb3VuZF9y YXRlKTsKKworaW50IGNsa19zZXRfcmF0ZShzdHJ1Y3QgY2xrICpjbGssIHVuc2lnbmVkIGxvbmcg cmF0ZSkKK3sKKwlpZiAodW5saWtlbHkoSVNfRVJSX09SX05VTEwoY2xrKSkpCisJCXJldHVybiAt RUlOVkFMOworCisJaWYgKCFjbGstPm9wcyB8fCAhY2xrLT5vcHMtPnNldF9yYXRlKQorCQlyZXR1 cm4gLUVJTlZBTDsKKworCXJldHVybiBjbGstPm9wcy0+c2V0X3JhdGUoY2xrLCByYXRlKTsKK30K K0VYUE9SVF9TWU1CT0woY2xrX3NldF9yYXRlKTsKKworaW50IGNsa19zZXRfcGFyZW50KHN0cnVj dCBjbGsgKmNsaywgc3RydWN0IGNsayAqcGFyZW50KQoreworCWludCByZXQ7CisJdW5zaWduZWQg bG9uZyBmbGFnczsKKworCWlmICh1bmxpa2VseShJU19FUlJfT1JfTlVMTChjbGspKSkKKwkJcmV0 dXJuIC1FSU5WQUw7CisKKwlpZiAoIWNsay0+b3BzIHx8ICFjbGstPm9wcy0+c2V0X3BhcmVudCkK KwkJcmV0dXJuIC1FSU5WQUw7CisKKwlzcGluX2xvY2tfaXJxc2F2ZSgmY2xvY2tzX2xvY2ssIGZs YWdzKTsKKwlyZXQgPSBjbGstPm9wcy0+c2V0X3BhcmVudChjbGssIHBhcmVudCk7CisJaWYgKCFy ZXQpIHsKKwkJcGFyZW50LT51c2FnZSArPSBjbGstPnVzYWdlOworCQljbGstPnBhcmVudC0+dXNh Z2UgLT0gY2xrLT51c2FnZTsKKwkJQlVHX09OKGNsay0+cGFyZW50LT51c2FnZSA8IDApOworCQlj bGstPnBhcmVudCA9IHBhcmVudDsKKwl9CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmY2xvY2tz X2xvY2ssIGZsYWdzKTsKKwlyZXR1cm4gcmV0OworfQorRVhQT1JUX1NZTUJPTChjbGtfc2V0X3Bh cmVudCk7CisKK3N0cnVjdCBjbGsgKmNsa19nZXRfcGFyZW50KHN0cnVjdCBjbGsgKmNsaykKK3sK Kwl1bnNpZ25lZCBsb25nIGZsYWdzOworCisJaWYgKHVubGlrZWx5KElTX0VSUl9PUl9OVUxMKGNs aykpKQorCQlyZXR1cm4gTlVMTDsKKworCWlmICghY2xrLT5vcHMgfHwgIWNsay0+b3BzLT5nZXRf cGFyZW50KQorCQlyZXR1cm4gY2xrLT5wYXJlbnQ7CisKKwlzcGluX2xvY2tfaXJxc2F2ZSgmY2xv Y2tzX2xvY2ssIGZsYWdzKTsKKwljbGstPnBhcmVudCA9IGNsay0+b3BzLT5nZXRfcGFyZW50KGNs ayk7CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmY2xvY2tzX2xvY2ssIGZsYWdzKTsKKwlyZXR1 cm4gY2xrLT5wYXJlbnQ7Cit9CitFWFBPUlRfU1lNQk9MKGNsa19nZXRfcGFyZW50KTsKKworc3Rh dGljIHZvaWQgX19pbml0IHNpcmZzb2NfY2xrX2luaXQodm9pZCkKK3sKKwljbGtkZXZfYWRkX3Rh YmxlKG9uY2hpcF9jbGtzLCBBUlJBWV9TSVpFKG9uY2hpcF9jbGtzKSk7Cit9CisKK3N0YXRpYyBz dHJ1Y3Qgb2ZfZGV2aWNlX2lkIGNsa2NfaWRzW10gPSB7CisJeyAuY29tcGF0aWJsZSA9ICJzaXJm LHByaW1hMi1jbGtjIiB9LAorfTsKKwordm9pZCBfX2luaXQgc2lyZnNvY19vZl9jbGtfaW5pdCh2 b2lkKQoreworCXN0cnVjdCBkZXZpY2Vfbm9kZSAqbnA7CisJc3RydWN0IHJlc291cmNlIHJlczsK KwlzdHJ1Y3QgbWFwX2Rlc2Mgc2lyZnNvY19jbGtjX2lvZGVzYyA9IHsKKwkJLnZpcnR1YWwgPSBT SVJGU09DX0NMT0NLX1ZBX0JBU0UsCisJCS50eXBlICAgID0gTVRfREVWSUNFLAorCX07CisKKwlu cCA9IG9mX2ZpbmRfbWF0Y2hpbmdfbm9kZShOVUxMLCBjbGtjX2lkcyk7CisJaWYgKCFucCkKKwkJ cGFuaWMoInVuYWJsZSB0byBmaW5kIGNvbXBhdGlibGUgY2xrYyBub2RlIGluIGR0YlxuIik7CisK KwlpZiAob2ZfYWRkcmVzc190b19yZXNvdXJjZShucCwgMCwgJnJlcykpCisJCXBhbmljKCJ1bmFi bGUgdG8gZmluZCBjbGtjIHJhbmdlIGluIGR0YiIpOworCW9mX25vZGVfcHV0KG5wKTsKKworCXNp cmZzb2NfY2xrY19pb2Rlc2MucGZuID0gX19waHlzX3RvX3BmbihyZXMuc3RhcnQpOworCXNpcmZz b2NfY2xrY19pb2Rlc2MubGVuZ3RoID0gMSArIHJlcy5lbmQgLSByZXMuc3RhcnQ7CisKKwlpb3Rh YmxlX2luaXQoJnNpcmZzb2NfY2xrY19pb2Rlc2MsIDEpOworCisJc2lyZnNvY19jbGtfaW5pdCgp OworfQpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1wcmltYTIvY29tbW9uLmggYi9hcmNoL2Fy bS9tYWNoLXByaW1hMi9jb21tb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li5mYTRhM2I1Ci0tLSAvZGV2L251bGwKKysrIGIvYXJjaC9hcm0vbWFjaC1wcmltYTIvY29tbW9u LmgKQEAgLTAsMCArMSwyMCBAQAorLyoKKyAqIFRoaXMgZmlsZSBjb250YWlucyBjb21tb24gZnVu Y3Rpb24gcHJvdG90eXBlcyB0byBhdm9pZCBleHRlcm5zIGluIHRoZSBjIGZpbGVzLgorICoKKyAq IENvcHlyaWdodCAoYykgMjAxMSBDYW1icmlkZ2UgU2lsaWNvbiBSYWRpbyBMaW1pdGVkLCBhIENT UiBwbGMgZ3JvdXAgY29tcGFueS4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciBHUEx2MiBvciBsYXRl ci4KKyAqLworCisjaWZuZGVmIF9fTUFDSF9QUklNQTJfQ09NTU9OX0hfXworI2RlZmluZSBfX01B Q0hfUFJJTUEyX0NPTU1PTl9IX18KKworI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KKyNpbmNsdWRl IDxhc20vbWFjaC90aW1lLmg+CisKK2V4dGVybiBzdHJ1Y3Qgc3lzX3RpbWVyIHNpcmZzb2NfdGlt ZXI7CisKK2V4dGVybiB2b2lkIF9faW5pdCBzaXJmc29jX29mX2lycV9pbml0KHZvaWQpOworZXh0 ZXJuIHZvaWQgX19pbml0IHNpcmZzb2Nfb2ZfY2xrX2luaXQodm9pZCk7CisKKyNlbmRpZgpkaWZm IC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1wcmltYTIvaW5jbHVkZS9tYWNoL2Nsa2Rldi5oIGIvYXJj aC9hcm0vbWFjaC1wcmltYTIvaW5jbHVkZS9tYWNoL2Nsa2Rldi5oCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLjY2OTMyNTEKLS0tIC9kZXYvbnVsbAorKysgYi9hcmNoL2FybS9t YWNoLXByaW1hMi9pbmNsdWRlL21hY2gvY2xrZGV2LmgKQEAgLTAsMCArMSwxNSBAQAorLyoKKyAq IGFyY2gvYXJtL21hY2gtcHJpbWEyL2luY2x1ZGUvbWFjaC9jbGtkZXYuaAorICoKKyAqIENvcHly aWdodCAoYykgMjAxMSBDYW1icmlkZ2UgU2lsaWNvbiBSYWRpbyBMaW1pdGVkLCBhIENTUiBwbGMg Z3JvdXAgY29tcGFueS4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciBHUEx2MiBvciBsYXRlci4KKyAq LworCisjaWZuZGVmIF9fTUFDSF9DTEtERVZfSAorI2RlZmluZSBfX01BQ0hfQ0xLREVWX0gKKwor I2RlZmluZSBfX2Nsa19nZXQoY2xrKSAoeyAxOyB9KQorI2RlZmluZSBfX2Nsa19wdXQoY2xrKSBk byB7IH0gd2hpbGUgKDApCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1wcmlt YTIvaW5jbHVkZS9tYWNoL2RlYnVnLW1hY3JvLlMgYi9hcmNoL2FybS9tYWNoLXByaW1hMi9pbmNs dWRlL21hY2gvZGVidWctbWFjcm8uUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li5iZjc1MTA2Ci0tLSAvZGV2L251bGwKKysrIGIvYXJjaC9hcm0vbWFjaC1wcmltYTIvaW5jbHVk ZS9tYWNoL2RlYnVnLW1hY3JvLlMKQEAgLTAsMCArMSwyOSBAQAorLyoKKyAqIGFyY2gvYXJtL21h Y2gtcHJpbWEyL2luY2x1ZGUvbWFjaC9kZWJ1Zy1tYWNyby5TCisgKgorICogQ29weXJpZ2h0IChj KSAyMDExIENhbWJyaWRnZSBTaWxpY29uIFJhZGlvIExpbWl0ZWQsIGEgQ1NSIHBsYyBncm91cCBj b21wYW55LgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIEdQTHYyIG9yIGxhdGVyLgorICovCisKKyNp bmNsdWRlIDxtYWNoL2hhcmR3YXJlLmg+CisjaW5jbHVkZSA8bWFjaC91YXJ0Lmg+CisKKwkubWFj cm8JYWRkcnVhcnQsIHJwLCBydgorCWxkcglccnAsID1TSVJGU09DX1VBUlQxX1BBX0JBU0UJCUAg cGh5c2ljYWwKKwlsZHIJXHJ2LCA9U0lSRlNPQ19VQVJUMV9WQV9CQVNFCQlAIHZpcnR1YWwKKwku ZW5kbQorCisJLm1hY3JvCXNlbmR1YXJ0LHJkLHJ4CisJc3RyCVxyZCwgW1xyeCwgI1NJUkZTT0Nf VUFSVF9UWEZJRk9fREFUQV0KKwkuZW5kbQorCisJLm1hY3JvCWJ1c3l1YXJ0LHJkLHJ4CisJLmVu ZG0KKworCS5tYWNybwl3YWl0dWFydCxyZCxyeAorMTAwMToJbGRyCVxyZCwgW1xyeCwgI1NJUkZT T0NfVUFSVF9UWEZJRk9fU1RBVFVTXQorCXRzdAlccmQsICNTSVJGU09DX1VBUlQxX1RYRklGT19F TVBUWQorCWJlcQkxMDAxYgorCS5lbmRtCisKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtcHJp bWEyL2luY2x1ZGUvbWFjaC9lbnRyeS1tYWNyby5TIGIvYXJjaC9hcm0vbWFjaC1wcmltYTIvaW5j bHVkZS9tYWNoL2VudHJ5LW1hY3JvLlMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MC4uMWM4YTUwZgotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gvYXJtL21hY2gtcHJpbWEyL2luY2x1 ZGUvbWFjaC9lbnRyeS1tYWNyby5TCkBAIC0wLDAgKzEsMjkgQEAKKy8qCisgKiBhcmNoL2FybS9t YWNoLXByaW1hMi9pbmNsdWRlL21hY2gvZW50cnktbWFjcm8uUworICoKKyAqIENvcHlyaWdodCAo YykgMjAxMSBDYW1icmlkZ2UgU2lsaWNvbiBSYWRpbyBMaW1pdGVkLCBhIENTUiBwbGMgZ3JvdXAg Y29tcGFueS4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciBHUEx2MiBvciBsYXRlci4KKyAqLworCisj aW5jbHVkZSA8bWFjaC9oYXJkd2FyZS5oPgorCisjZGVmaW5lIFNJUkZTT0NfSU5UX0lEIDB4MzgK KworCS5tYWNybyAgZ2V0X2lycW5yX3ByZWFtYmxlLCBiYXNlLCB0bXAKKwlsZHIgICAgIFxiYXNl LCA9c2lyZnNvY19pbnRjX2Jhc2UKKwlsZHIgICAgIFxiYXNlLCBbXGJhc2VdCisJLmVuZG0KKwor CS5tYWNybyAgZ2V0X2lycW5yX2FuZF9iYXNlLCBpcnFuciwgaXJxc3RhdCwgYmFzZSwgdG1wCisJ bGRyIFxpcnFuciwgW1xiYXNlLCAjU0lSRlNPQ19JTlRfSURdCUAgR2V0IHRoZSBoaWdoZXN0IHBy aW9yaXR5IGlycQorCWNtcCBcaXJxbnIsICMweDQwCQkJQCB0aGUgaXJxIG51bSBjYW4ndCBiZSBs YXJnZXIgdGhhbiAweDNmCisJbW92Z2VzIFxpcnFuciwgIzAKKwkuZW5kbQorCisJLm1hY3JvICBk aXNhYmxlX2ZpcQorCS5lbmRtCisKKwkubWFjcm8gIGFyY2hfcmV0X3RvX3VzZXIsIHRtcDEsIHRt cDIKKwkuZW5kbQorCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLXByaW1hMi9pbmNsdWRlL21h Y2gvaGFyZHdhcmUuaCBiL2FyY2gvYXJtL21hY2gtcHJpbWEyL2luY2x1ZGUvbWFjaC9oYXJkd2Fy ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEwNWI5NjkKLS0tIC9kZXYv bnVsbAorKysgYi9hcmNoL2FybS9tYWNoLXByaW1hMi9pbmNsdWRlL21hY2gvaGFyZHdhcmUuaApA QCAtMCwwICsxLDE1IEBACisvKgorICogYXJjaC9hcm0vbWFjaC1wcmltYTIvaW5jbHVkZS9tYWNo L2hhcmR3YXJlLmgKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTEgQ2FtYnJpZGdlIFNpbGljb24g UmFkaW8gTGltaXRlZCwgYSBDU1IgcGxjIGdyb3VwIGNvbXBhbnkuCisgKgorICogTGljZW5zZWQg dW5kZXIgR1BMdjIgb3IgbGF0ZXIuCisgKi8KKworI2lmbmRlZiBfX01BQ0hfSEFSRFdBUkVfSF9f CisjZGVmaW5lIF9fTUFDSF9IQVJEV0FSRV9IX18KKworI2luY2x1ZGUgPGFzbS9zaXplcy5oPgor I2luY2x1ZGUgPG1hY2gvbWFwLmg+CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFj aC1wcmltYTIvaW5jbHVkZS9tYWNoL2lvLmggYi9hcmNoL2FybS9tYWNoLXByaW1hMi9pbmNsdWRl L21hY2gvaW8uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YzMxZTllCi0t LSAvZGV2L251bGwKKysrIGIvYXJjaC9hcm0vbWFjaC1wcmltYTIvaW5jbHVkZS9tYWNoL2lvLmgK QEAgLTAsMCArMSwxNiBAQAorLyoKKyAqIGFyY2gvYXJtL21hY2gtcHJpbWEyL2luY2x1ZGUvbWFj aC9pby5oCisgKgorICogQ29weXJpZ2h0IChjKSAyMDExIENhbWJyaWRnZSBTaWxpY29uIFJhZGlv IExpbWl0ZWQsIGEgQ1NSIHBsYyBncm91cCBjb21wYW55LgorICoKKyAqIExpY2Vuc2VkIHVuZGVy IEdQTHYyIG9yIGxhdGVyLgorICovCisKKyNpZm5kZWYgX19NQUNIX1BSSU1BMl9JT19ICisjZGVm aW5lIF9fTUFDSF9QUklNQTJfSU9fSAorCisjZGVmaW5lIElPX1NQQUNFX0xJTUlUICgocmVzb3Vy Y2Vfc2l6ZV90KTApCisKKyNkZWZpbmUgX19tZW1fcGNpKGEpICAgICAgICAgICAgKGEpCisKKyNl bmRpZgpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1wcmltYTIvaW5jbHVkZS9tYWNoL2lycXMu aCBiL2FyY2gvYXJtL21hY2gtcHJpbWEyL2luY2x1ZGUvbWFjaC9pcnFzLmgKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmIzNTRmOQotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gv YXJtL21hY2gtcHJpbWEyL2luY2x1ZGUvbWFjaC9pcnFzLmgKQEAgLTAsMCArMSwxNyBAQAorLyoK KyAqIGFyY2gvYXJtL21hY2gtcHJpbWEyL2luY2x1ZGUvbWFjaC9pcnFzLmgKKyAqCisgKiBDb3B5 cmlnaHQgKGMpIDIwMTEgQ2FtYnJpZGdlIFNpbGljb24gUmFkaW8gTGltaXRlZCwgYSBDU1IgcGxj IGdyb3VwIGNvbXBhbnkuCisgKgorICogTGljZW5zZWQgdW5kZXIgR1BMdjIgb3IgbGF0ZXIuCisg Ki8KKworI2lmbmRlZiBfX0FTTV9BUkNIX0lSUVNfSAorI2RlZmluZSBfX0FTTV9BUkNIX0lSUVNf SAorCisjZGVmaW5lIFNJUkZTT0NfSU5URU5BTF9JUlFfU1RBUlQgIDAKKyNkZWZpbmUgU0lSRlNP Q19JTlRFTkFMX0lSUV9FTkQgICAgNTkKKworI2RlZmluZSBOUl9JUlFTCTIyMAorCisjZW5kaWYK ZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtcHJpbWEyL2luY2x1ZGUvbWFjaC9tYXAuaCBiL2Fy Y2gvYXJtL21hY2gtcHJpbWEyL2luY2x1ZGUvbWFjaC9tYXAuaApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwLi42NmIxYWUyCi0tLSAvZGV2L251bGwKKysrIGIvYXJjaC9hcm0vbWFj aC1wcmltYTIvaW5jbHVkZS9tYWNoL21hcC5oCkBAIC0wLDAgKzEsMTYgQEAKKy8qCisgKiBtZW1v cnkgJiBJL08gc3RhdGljIG1hcHBpbmcgZGVmaW5pdGlvbnMgZm9yIENTUiBTaVJGcHJpbWFJSQor ICoKKyAqIENvcHlyaWdodCAoYykgMjAxMSBDYW1icmlkZ2UgU2lsaWNvbiBSYWRpbyBMaW1pdGVk LCBhIENTUiBwbGMgZ3JvdXAgY29tcGFueS4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciBHUEx2MiBv ciBsYXRlci4KKyAqLworCisjaWZuZGVmIF9fTUFDSF9QUklNQTJfTUFQX0hfXworI2RlZmluZSBf X01BQ0hfUFJJTUEyX01BUF9IX18KKworI2luY2x1ZGUgPG1hY2gvdm1hbGxvYy5oPgorCisjZGVm aW5lIFNJUkZTT0NfVkEoeCkJCQkoVk1BTExPQ19FTkQgKyAoKHgpICYgMHgwMEZGRjAwMCkpCisK KyNlbmRpZgpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1wcmltYTIvaW5jbHVkZS9tYWNoL21l bW9yeS5oIGIvYXJjaC9hcm0vbWFjaC1wcmltYTIvaW5jbHVkZS9tYWNoL21lbW9yeS5oCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2OGNkNWEKLS0tIC9kZXYvbnVsbAorKysg Yi9hcmNoL2FybS9tYWNoLXByaW1hMi9pbmNsdWRlL21hY2gvbWVtb3J5LmgKQEAgLTAsMCArMSwy MSBAQAorLyoKKyAqIGFyY2gvYXJtL21hY2gtcHJpbWEyL2luY2x1ZGUvbWFjaC9tZW1vcnkuaAor ICoKKyAqIENvcHlyaWdodCAoYykgMjAxMCDigJMgMjAxMSBDYW1icmlkZ2UgU2lsaWNvbiBSYWRp byBMaW1pdGVkLCBhIENTUiBwbGMgZ3JvdXAgY29tcGFueS4KKyAqCisgKiBMaWNlbnNlZCB1bmRl ciBHUEx2MiBvciBsYXRlci4KKyAqLworCisjaWZuZGVmIF9fQVNNX0FSQ0hfTUVNT1JZX0gKKyNk ZWZpbmUgX19BU01fQVJDSF9NRU1PUllfSAorCisjZGVmaW5lIFBMQVRfUEhZU19PRkZTRVQgICAg ICAgIFVMKDB4MDAwMDAwMDApCisKKy8qCisgKiBSZXN0cmljdCBETUEtYWJsZSByZWdpb24gdG8g d29ya2Fyb3VuZCBzaWxpY29uIGxpbWl0YXRpb24uCisgKiBUaGUgbGltaXRhdGlvbiByZXN0cmlj dHMgYnVmZmVycyBhdmFpbGFibGUgZm9yIERNQSB0byBTRC9NTUMKKyAqIGhhcmR3YXJlIHRvIGJl IGJlbG93IDI1Nk1CCisgKi8KKyNkZWZpbmUgQVJNX0RNQV9aT05FX1NJWkUJKFNaXzI1Nk0pCisK KyNlbmRpZgpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1wcmltYTIvaW5jbHVkZS9tYWNoL3N5 c3RlbS5oIGIvYXJjaC9hcm0vbWFjaC1wcmltYTIvaW5jbHVkZS9tYWNoL3N5c3RlbS5oCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBkYmQyNTcKLS0tIC9kZXYvbnVsbAorKysg Yi9hcmNoL2FybS9tYWNoLXByaW1hMi9pbmNsdWRlL21hY2gvc3lzdGVtLmgKQEAgLTAsMCArMSwy OSBAQAorLyoKKyAqIGFyY2gvYXJtL21hY2gtcHJpbWEyL2luY2x1ZGUvbWFjaC9zeXN0ZW0uaAor ICoKKyAqIENvcHlyaWdodCAoYykgMjAxMSBDYW1icmlkZ2UgU2lsaWNvbiBSYWRpbyBMaW1pdGVk LCBhIENTUiBwbGMgZ3JvdXAgY29tcGFueS4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciBHUEx2MiBv ciBsYXRlci4KKyAqLworCisjaWZuZGVmIF9fTUFDSF9TWVNURU1fSF9fCisjZGVmaW5lIF9fTUFD SF9TWVNURU1fSF9fCisKKyNpbmNsdWRlIDxsaW51eC9iaXRvcHMuaD4KKyNpbmNsdWRlIDxtYWNo L2hhcmR3YXJlLmg+CisKKyNkZWZpbmUgU0lSRlNPQ19TWVNfUlNUX0JJVCAgQklUKDMxKQorCitl eHRlcm4gdm9pZCBfX2lvbWVtICpzaXJmc29jX3JzdGNfYmFzZTsKKworc3RhdGljIGlubGluZSB2 b2lkIGFyY2hfaWRsZSh2b2lkKQoreworCWNwdV9kb19pZGxlKCk7Cit9CisKK3N0YXRpYyBpbmxp bmUgdm9pZCBhcmNoX3Jlc2V0KGNoYXIgbW9kZSwgY29uc3QgY2hhciAqY21kKQoreworCXdyaXRl bChTSVJGU09DX1NZU19SU1RfQklULCBzaXJmc29jX3JzdGNfYmFzZSk7Cit9CisKKyNlbmRpZgpk aWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1wcmltYTIvaW5jbHVkZS9tYWNoL3RpbWV4LmggYi9h cmNoL2FybS9tYWNoLXByaW1hMi9pbmNsdWRlL21hY2gvdGltZXguaApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwLi5kNmY5OGE3Ci0tLSAvZGV2L251bGwKKysrIGIvYXJjaC9hcm0v bWFjaC1wcmltYTIvaW5jbHVkZS9tYWNoL3RpbWV4LmgKQEAgLTAsMCArMSwxNCBAQAorLyoKKyAq IGFyY2gvYXJtL21hY2gtcHJpbWEyL2luY2x1ZGUvbWFjaC90aW1leC5oCisgKgorICogQ29weXJp Z2h0IChjKSAyMDExIENhbWJyaWRnZSBTaWxpY29uIFJhZGlvIExpbWl0ZWQsIGEgQ1NSIHBsYyBn cm91cCBjb21wYW55LgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIEdQTHYyIG9yIGxhdGVyLgorICov CisKKyNpZm5kZWYgX19NQUNIX1RJTUVYX0hfXworI2RlZmluZSBfX01BQ0hfVElNRVhfSF9fCisK KyNkZWZpbmUgQ0xPQ0tfVElDS19SQVRFICAxMDAwMDAwCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv YXJjaC9hcm0vbWFjaC1wcmltYTIvaW5jbHVkZS9tYWNoL3VhcnQuaCBiL2FyY2gvYXJtL21hY2gt cHJpbWEyL2luY2x1ZGUvbWFjaC91YXJ0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMC4uYzk4YjRkNQotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gvYXJtL21hY2gtcHJpbWEyL2lu Y2x1ZGUvbWFjaC91YXJ0LmgKQEAgLTAsMCArMSwyMyBAQAorLyoKKyAqIGFyY2gvYXJtL21hY2gt cHJpbWEyL2luY2x1ZGUvbWFjaC91YXJ0LmgKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTEgQ2Ft YnJpZGdlIFNpbGljb24gUmFkaW8gTGltaXRlZCwgYSBDU1IgcGxjIGdyb3VwIGNvbXBhbnkuCisg KgorICogTGljZW5zZWQgdW5kZXIgR1BMdjIgb3IgbGF0ZXIuCisgKi8KKworI2lmbmRlZiBfX01B Q0hfUFJJTUEyX1NJUkZTT0NfVUFSVF9ICisjZGVmaW5lIF9fTUFDSF9QUklNQTJfU0lSRlNPQ19V QVJUX0gKKworLyogVUFSVC0xOiB1c2VkIGFzIHNlcmlhbCBkZWJ1ZyBwb3J0ICovCisjZGVmaW5l IFNJUkZTT0NfVUFSVDFfUEFfQkFTRSAgICAgICAgICAweGIwMDYwMDAwCisjZGVmaW5lIFNJUkZT T0NfVUFSVDFfVkFfQkFTRSAgICAgICAgICBTSVJGU09DX1ZBKDB4MDYwMDAwKQorI2RlZmluZSBT SVJGU09DX1VBUlQxX1NJWkUJCVNaXzRLCisKKyNkZWZpbmUgU0lSRlNPQ19VQVJUX1RYRklGT19T VEFUVVMJMHgwMTE0CisjZGVmaW5lIFNJUkZTT0NfVUFSVF9UWEZJRk9fREFUQQkweDAxMTgKKwor I2RlZmluZSBTSVJGU09DX1VBUlQxX1RYRklGT19GVUxMICAgICAgICAgICAgICAgICAgICAgICAo MSA8PCA1KQorI2RlZmluZSBTSVJGU09DX1VBUlQxX1RYRklGT19FTVBUWQkJCSgxIDw8IDYpCisK KyNlbmRpZgpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1wcmltYTIvaW5jbHVkZS9tYWNoL3Vu Y29tcHJlc3MuaCBiL2FyY2gvYXJtL21hY2gtcHJpbWEyL2luY2x1ZGUvbWFjaC91bmNvbXByZXNz LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODMxMjVjNgotLS0gL2Rldi9u dWxsCisrKyBiL2FyY2gvYXJtL21hY2gtcHJpbWEyL2luY2x1ZGUvbWFjaC91bmNvbXByZXNzLmgK QEAgLTAsMCArMSw0MCBAQAorLyoKKyAqIGFyY2gvYXJtL21hY2gtcHJpbWEyL2luY2x1ZGUvbWFj aC91bmNvbXByZXNzLmgKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTEgQ2FtYnJpZGdlIFNpbGlj b24gUmFkaW8gTGltaXRlZCwgYSBDU1IgcGxjIGdyb3VwIGNvbXBhbnkuCisgKgorICogTGljZW5z ZWQgdW5kZXIgR1BMdjIgb3IgbGF0ZXIuCisgKi8KKworI2lmbmRlZiBfX0FTTV9BUkNIX1VOQ09N UFJFU1NfSAorI2RlZmluZSBfX0FTTV9BUkNIX1VOQ09NUFJFU1NfSAorCisjaW5jbHVkZSA8bGlu dXgvaW8uaD4KKyNpbmNsdWRlIDxtYWNoL2hhcmR3YXJlLmg+CisjaW5jbHVkZSA8bWFjaC91YXJ0 Lmg+CisKK3ZvaWQgYXJjaF9kZWNvbXBfc2V0dXAodm9pZCkKK3sKK30KKworI2RlZmluZSBhcmNo X2RlY29tcF93ZG9nKCkKKworc3RhdGljIF9faW5saW5lX18gdm9pZCBwdXRjKGNoYXIgYykKK3sK KwkvKgorCSAqIGR1cmluZyBrZXJuZWwgZGVjb21wcmVzc2lvbiwgYWxsIG1hcHBpbmdzIGFyZSBm bGF0OgorCSAqICB2aXJ0X2FkZHIgPT0gcGh5c19hZGRyCisJICovCisJd2hpbGUgKF9fcmF3X3Jl YWRsKFNJUkZTT0NfVUFSVDFfUEFfQkFTRSArIFNJUkZTT0NfVUFSVF9UWEZJRk9fU1RBVFVTKQor CQkmIFNJUkZTT0NfVUFSVDFfVFhGSUZPX0ZVTEwpCisJCWJhcnJpZXIoKTsKKworCV9fcmF3X3dy aXRlbChjLCBTSVJGU09DX1VBUlQxX1BBX0JBU0UgKyBTSVJGU09DX1VBUlRfVFhGSUZPX0RBVEEp OworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgZmx1c2godm9pZCkKK3sKK30KKworI2VuZGlmCisK ZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtcHJpbWEyL2luY2x1ZGUvbWFjaC92bWFsbG9jLmgg Yi9hcmNoL2FybS9tYWNoLXByaW1hMi9pbmNsdWRlL21hY2gvdm1hbGxvYy5oCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM5ZjkwZmUKLS0tIC9kZXYvbnVsbAorKysgYi9hcmNo L2FybS9tYWNoLXByaW1hMi9pbmNsdWRlL21hY2gvdm1hbGxvYy5oCkBAIC0wLDAgKzEsMTYgQEAK Ky8qCisgKiBhcmNoL2FybS9hY2gtcHJpbWEyL2luY2x1ZGUvbWFjaC92bWFsbG9jLmgKKyAqCisg KiBDb3B5cmlnaHQgKGMpIDIwMTAg4oCTIDIwMTEgQ2FtYnJpZGdlIFNpbGljb24gUmFkaW8gTGlt aXRlZCwgYSBDU1IgcGxjIGdyb3VwIGNvbXBhbnkuCisgKgorICogTGljZW5zZWQgdW5kZXIgR1BM djIgb3IgbGF0ZXIuCisgKi8KKworI2lmbmRlZiBfX01BQ0hfVk1BTExPQ19ICisjZGVmaW5lIF9f TUFDSF9WTUFMTE9DX0gKKworI2luY2x1ZGUgPGxpbnV4L2NvbnN0Lmg+CisKKyNkZWZpbmUgVk1B TExPQ19FTkQgICAgX0FDKDB4RkVDMDAwMDAsIFVMKQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL2Fy Y2gvYXJtL21hY2gtcHJpbWEyL2lycS5jIGIvYXJjaC9hcm0vbWFjaC1wcmltYTIvaXJxLmMKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzM0MDRjYgotLS0gL2Rldi9udWxsCisr KyBiL2FyY2gvYXJtL21hY2gtcHJpbWEyL2lycS5jCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBp bnRlcnJ1cHQgY29udHJvbGxlciBzdXBwb3J0IGZvciBDU1IgU2lSRnByaW1hSUkKKyAqCisgKiBD b3B5cmlnaHQgKGMpIDIwMTEgQ2FtYnJpZGdlIFNpbGljb24gUmFkaW8gTGltaXRlZCwgYSBDU1Ig cGxjIGdyb3VwIGNvbXBhbnkuCisgKgorICogTGljZW5zZWQgdW5kZXIgR1BMdjIgb3IgbGF0ZXIu CisgKi8KKworI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KKyNpbmNsdWRlIDxsaW51eC9pby5oPgor I2luY2x1ZGUgPGxpbnV4L2lycS5oPgorI2luY2x1ZGUgPG1hY2gvaGFyZHdhcmUuaD4KKyNpbmNs dWRlIDxhc20vbWFjaC9pcnEuaD4KKyNpbmNsdWRlIDxsaW51eC9vZi5oPgorI2luY2x1ZGUgPGxp bnV4L29mX2FkZHJlc3MuaD4KKworI2RlZmluZSBTSVJGU09DX0lOVF9SSVNDX01BU0swICAgICAg ICAgIDB4MDAxOAorI2RlZmluZSBTSVJGU09DX0lOVF9SSVNDX01BU0sxICAgICAgICAgIDB4MDAx QworI2RlZmluZSBTSVJGU09DX0lOVF9SSVNDX0xFVkVMMCAgICAgICAgIDB4MDAyMAorI2RlZmlu ZSBTSVJGU09DX0lOVF9SSVNDX0xFVkVMMSAgICAgICAgIDB4MDAyNAorCit2b2lkIF9faW9tZW0g KnNpcmZzb2NfaW50Y19iYXNlOworCitzdGF0aWMgX19pbml0IHZvaWQKK3NpcmZzb2NfYWxsb2Nf Z2Modm9pZCBfX2lvbWVtICpiYXNlLCB1bnNpZ25lZCBpbnQgaXJxX3N0YXJ0LCB1bnNpZ25lZCBp bnQgbnVtKQoreworCXN0cnVjdCBpcnFfY2hpcF9nZW5lcmljICpnYzsKKwlzdHJ1Y3QgaXJxX2No aXBfdHlwZSAqY3Q7CisKKwlnYyA9IGlycV9hbGxvY19nZW5lcmljX2NoaXAoIlNJUkZJTlRDIiwg MSwgaXJxX3N0YXJ0LCBiYXNlLCBoYW5kbGVfbGV2ZWxfaXJxKTsKKwljdCA9IGdjLT5jaGlwX3R5 cGVzOworCisJY3QtPmNoaXAuaXJxX21hc2sgPSBpcnFfZ2NfbWFza19jbHJfYml0OworCWN0LT5j aGlwLmlycV91bm1hc2sgPSBpcnFfZ2NfbWFza19zZXRfYml0OworCWN0LT5yZWdzLm1hc2sgPSBT SVJGU09DX0lOVF9SSVNDX01BU0swOworCisJaXJxX3NldHVwX2dlbmVyaWNfY2hpcChnYywgSVJR X01TSyhudW0pLCBJUlFfR0NfSU5JVF9NQVNLX0NBQ0hFLCBJUlFfTk9SRVFVRVNULCAwKTsKK30K Kworc3RhdGljIF9faW5pdCB2b2lkIHNpcmZzb2NfaXJxX2luaXQodm9pZCkKK3sKKwlzaXJmc29j X2FsbG9jX2djKHNpcmZzb2NfaW50Y19iYXNlLCAwLCAzMik7CisJc2lyZnNvY19hbGxvY19nYyhz aXJmc29jX2ludGNfYmFzZSArIDQsIDMyLCBTSVJGU09DX0lOVEVOQUxfSVJRX0VORCAtIDMyKTsK KworCXdyaXRlbF9yZWxheGVkKDAsIHNpcmZzb2NfaW50Y19iYXNlICsgU0lSRlNPQ19JTlRfUklT Q19MRVZFTDApOworCXdyaXRlbF9yZWxheGVkKDAsIHNpcmZzb2NfaW50Y19iYXNlICsgU0lSRlNP Q19JTlRfUklTQ19MRVZFTDEpOworCisJd3JpdGVsX3JlbGF4ZWQoMCwgc2lyZnNvY19pbnRjX2Jh c2UgKyBTSVJGU09DX0lOVF9SSVNDX01BU0swKTsKKwl3cml0ZWxfcmVsYXhlZCgwLCBzaXJmc29j X2ludGNfYmFzZSArIFNJUkZTT0NfSU5UX1JJU0NfTUFTSzEpOworfQorCitzdGF0aWMgc3RydWN0 IG9mX2RldmljZV9pZCBpbnRjX2lkc1tdICA9IHsKKwl7IC5jb21wYXRpYmxlID0gInNpcmYscHJp bWEyLWludGMiIH0sCit9OworCit2b2lkIF9faW5pdCBzaXJmc29jX29mX2lycV9pbml0KHZvaWQp Cit7CisJc3RydWN0IGRldmljZV9ub2RlICpucDsKKworCW5wID0gb2ZfZmluZF9tYXRjaGluZ19u b2RlKE5VTEwsIGludGNfaWRzKTsKKwlpZiAoIW5wKQorCQlwYW5pYygidW5hYmxlIHRvIGZpbmQg Y29tcGF0aWJsZSBpbnRjIG5vZGUgaW4gZHRiXG4iKTsKKworCXNpcmZzb2NfaW50Y19iYXNlID0g b2ZfaW9tYXAobnAsIDApOworCWlmICghc2lyZnNvY19pbnRjX2Jhc2UpCisJCXBhbmljKCJ1bmFi bGUgdG8gbWFwIGludGMgY3B1IHJlZ2lzdGVyc1xuIik7CisKKwlvZl9ub2RlX3B1dChucCk7CisK KwlzaXJmc29jX2lycV9pbml0KCk7Cit9CmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLXByaW1h Mi9wcmltYTIuYyBiL2FyY2gvYXJtL21hY2gtcHJpbWEyL3ByaW1hMi5jCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMyNjk0N2QKLS0tIC9kZXYvbnVsbAorKysgYi9hcmNoL2Fy bS9tYWNoLXByaW1hMi9wcmltYTIuYwpAQCAtMCwwICsxLDQwIEBACisvKgorICogRGVmaW5lcyBt YWNoaW5lcyBmb3IgQ1NSIFNpUkZwcmltYUlJIAorICoKKyAqIENvcHlyaWdodCAoYykgMjAxMSBD YW1icmlkZ2UgU2lsaWNvbiBSYWRpbyBMaW1pdGVkLCBhIENTUiBwbGMgZ3JvdXAgY29tcGFueS4K KyAqCisgKiBMaWNlbnNlZCB1bmRlciBHUEx2MiBvciBsYXRlci4KKyAqLworCisjaW5jbHVkZSA8 bGludXgvaW5pdC5oPgorI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgorI2luY2x1ZGUgPGFzbS9t YWNoLXR5cGVzLmg+CisjaW5jbHVkZSA8YXNtL21hY2gvYXJjaC5oPgorI2luY2x1ZGUgPGxpbnV4 L29mLmg+CisjaW5jbHVkZSA8bGludXgvb2ZfcGxhdGZvcm0uaD4KKyNpbmNsdWRlICJjb21tb24u aCIKKworc3RhdGljIHN0cnVjdCBvZl9kZXZpY2VfaWQgc2lyZnNvY19vZl9idXNfaWRzW10gX19p bml0ZGF0YSA9IHsKKwl7IC5jb21wYXRpYmxlID0gInNpbXBsZS1idXMiLCB9LAorCXt9LAorfTsK Kwordm9pZCBfX2luaXQgc2lyZnNvY19tYWNoX2luaXQodm9pZCkKK3sKKwlvZl9wbGF0Zm9ybV9i dXNfcHJvYmUoTlVMTCwgc2lyZnNvY19vZl9idXNfaWRzLCBOVUxMKTsKK30KKworc3RhdGljIGNv bnN0IGNoYXIgKnByaW1hMmNiX2R0X21hdGNoW10gX19pbml0ZGF0YSA9IHsKKyAgICAgICAic2ly ZixwcmltYTItY2IiLAorICAgICAgIE5VTEwKK307CisKK01BQ0hJTkVfU1RBUlQoUFJJTUEyX0VW QiwgInByaW1hMmNiIikKKwkvKiBNYWludGFpbmVyOiBCYXJyeSBTb25nIDxiYW9odWEuc29uZ0Bj c3IuY29tPiAqLworCS5ib290X3BhcmFtcwk9IDB4MDAwMDAxMDAsCisJLmluaXRfZWFybHkgICAg ID0gc2lyZnNvY19vZl9jbGtfaW5pdCwKKwkuaW5pdF9pcnEJPSBzaXJmc29jX29mX2lycV9pbml0 LAorCS50aW1lcgkJPSAmc2lyZnNvY190aW1lciwKKwkuaW5pdF9tYWNoaW5lCT0gc2lyZnNvY19t YWNoX2luaXQsCisJLmR0X2NvbXBhdCAgICAgID0gcHJpbWEyY2JfZHRfbWF0Y2gsCitNQUNISU5F X0VORApkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1wcmltYTIvcnN0Yy5jIGIvYXJjaC9hcm0v bWFjaC1wcmltYTIvcnN0Yy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQw NzQ3ODYKLS0tIC9kZXYvbnVsbAorKysgYi9hcmNoL2FybS9tYWNoLXByaW1hMi9yc3RjLmMKQEAg LTAsMCArMSw2OSBAQAorLyoKKyAqIHJlc2V0IGNvbnRyb2xsZXIgZm9yIENTUiBTaVJGcHJpbWFJ SQorICoKKyAqIENvcHlyaWdodCAoYykgMjAxMSBDYW1icmlkZ2UgU2lsaWNvbiBSYWRpbyBMaW1p dGVkLCBhIENTUiBwbGMgZ3JvdXAgY29tcGFueS4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciBHUEx2 MiBvciBsYXRlci4KKyAqLworCisjaW5jbHVkZSA8bGludXgva2VybmVsLmg+CisjaW5jbHVkZSA8 bGludXgvbXV0ZXguaD4KKyNpbmNsdWRlIDxsaW51eC9pby5oPgorI2luY2x1ZGUgPGxpbnV4L2Rl bGF5Lmg+CisjaW5jbHVkZSA8bGludXgvZGV2aWNlLmg+CisjaW5jbHVkZSA8bGludXgvb2YuaD4K KyNpbmNsdWRlIDxsaW51eC9vZl9hZGRyZXNzLmg+CisKK3ZvaWQgX19pb21lbSAqc2lyZnNvY19y c3RjX2Jhc2U7CitzdGF0aWMgREVGSU5FX01VVEVYKHJzdGNfbG9jayk7CisKK3N0YXRpYyBzdHJ1 Y3Qgb2ZfZGV2aWNlX2lkIHJzdGNfaWRzW10gID0geworCXsgLmNvbXBhdGlibGUgPSAic2lyZixw cmltYTItcnN0YyIgfSwKK307CisKK3N0YXRpYyBpbnQgX19pbml0IHNpcmZzb2Nfb2ZfcnN0Y19p bml0KHZvaWQpCit7CisJc3RydWN0IGRldmljZV9ub2RlICpucDsKKworCW5wID0gb2ZfZmluZF9t YXRjaGluZ19ub2RlKE5VTEwsIHJzdGNfaWRzKTsKKwlpZiAoIW5wKQorCQlwYW5pYygidW5hYmxl IHRvIGZpbmQgY29tcGF0aWJsZSByc3RjIG5vZGUgaW4gZHRiXG4iKTsKKworCXNpcmZzb2NfcnN0 Y19iYXNlID0gb2ZfaW9tYXAobnAsIDApOworCWlmICghc2lyZnNvY19yc3RjX2Jhc2UpCisJCXBh bmljKCJ1bmFibGUgdG8gbWFwIHJzdGMgY3B1IHJlZ2lzdGVyc1xuIik7CisKKwlvZl9ub2RlX3B1 dChucCk7CisKKwlyZXR1cm4gMDsKK30KK2Vhcmx5X2luaXRjYWxsKHNpcmZzb2Nfb2ZfcnN0Y19p bml0KTsKKworaW50IHNpcmZzb2NfcmVzZXRfZGV2aWNlKHN0cnVjdCBkZXZpY2UgKmRldikKK3sK Kwljb25zdCB1bnNpZ25lZCBpbnQgKnByb3AgPSBvZl9nZXRfcHJvcGVydHkoZGV2LT5vZl9ub2Rl LCAicmVzZXQtYml0IiwgTlVMTCk7CisJdW5zaWduZWQgaW50IHJlc2V0X2JpdDsKKworCWlmICgh cHJvcCkKKwkJcmV0dXJuIC1FTk9ERVY7CisKKwlyZXNldF9iaXQgPSBiZTMyX3RvX2NwdXAocHJv cCk7CisKKwltdXRleF9sb2NrKCZyc3RjX2xvY2spOworCisJLyoKKwkgKiBXcml0aW5nIDEgdG8g dGhpcyBiaXQgcmVzZXRzIGNvcnJlc3BvbmRpbmcgYmxvY2suIFdyaXRpbmcgMCB0byB0aGlzCisJ ICogYml0IGRlLWFzc2VydHMgcmVzZXQgc2lnbmFsIG9mIHRoZSBjb3JyZXNwb25kaW5nIGJsb2Nr LgorCSAqIGRhdGFzaGVldCBkb2Vzbid0IHJlcXVpcmUgZXhwbGljaXQgZGVsYXkgYmV0d2VlbiB0 aGUgc2V0IGFuZCBjbGVhcgorCSAqIG9mIHJlc2V0IGJpdC4gaXQgY291bGQgYmUgc2hvcnRlciBp ZiB0ZXN0cyBwYXNzLgorCSAqLworCXdyaXRlbChyZWFkbChzaXJmc29jX3JzdGNfYmFzZSArIChy ZXNldF9iaXQgLyAzMikgKiA0KSB8IHJlc2V0X2JpdCwKKwkJc2lyZnNvY19yc3RjX2Jhc2UgKyAo cmVzZXRfYml0IC8gMzIpICogNCk7CisJbXNsZWVwKDEwKTsKKwl3cml0ZWwocmVhZGwoc2lyZnNv Y19yc3RjX2Jhc2UgKyAocmVzZXRfYml0IC8gMzIpICogNCkgJiB+cmVzZXRfYml0LAorCQlzaXJm c29jX3JzdGNfYmFzZSArIChyZXNldF9iaXQgLyAzMikgKiA0KTsKKworCW11dGV4X3VubG9jaygm cnN0Y19sb2NrKTsKKworCXJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1w cmltYTIvdGltZXIuYyBiL2FyY2gvYXJtL21hY2gtcHJpbWEyL3RpbWVyLmMKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDQwMjdmMwotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gv YXJtL21hY2gtcHJpbWEyL3RpbWVyLmMKQEAgLTAsMCArMSwyMTcgQEAKKy8qCisgKiBTeXN0ZW0g dGltZXIgZm9yIENTUiBTaVJGcHJpbWFJSQorICoKKyAqIENvcHlyaWdodCAoYykgMjAxMSBDYW1i cmlkZ2UgU2lsaWNvbiBSYWRpbyBMaW1pdGVkLCBhIENTUiBwbGMgZ3JvdXAgY29tcGFueS4KKyAq CisgKiBMaWNlbnNlZCB1bmRlciBHUEx2MiBvciBsYXRlci4KKyAqLworCisjaW5jbHVkZSA8bGlu dXgva2VybmVsLmg+CisjaW5jbHVkZSA8bGludXgvaW50ZXJydXB0Lmg+CisjaW5jbHVkZSA8bGlu dXgvY2xvY2tjaGlwcy5oPgorI2luY2x1ZGUgPGxpbnV4L2Nsb2Nrc291cmNlLmg+CisjaW5jbHVk ZSA8bGludXgvYml0b3BzLmg+CisjaW5jbHVkZSA8bGludXgvaXJxLmg+CisjaW5jbHVkZSA8bGlu dXgvY2xrLmg+CisjaW5jbHVkZSA8bGludXgvZXJyLmg+CisjaW5jbHVkZSA8bGludXgvc2xhYi5o PgorI2luY2x1ZGUgPGxpbnV4L29mLmg+CisjaW5jbHVkZSA8bGludXgvb2ZfYWRkcmVzcy5oPgor I2luY2x1ZGUgPG1hY2gvbWFwLmg+CisjaW5jbHVkZSA8YXNtL21hY2gvdGltZS5oPgorCisjZGVm aW5lIFNJUkZTT0NfVElNRVJfQ09VTlRFUl9MTwkweDAwMDAKKyNkZWZpbmUgU0lSRlNPQ19USU1F Ul9DT1VOVEVSX0hJCTB4MDAwNAorI2RlZmluZSBTSVJGU09DX1RJTUVSX01BVENIXzAJCTB4MDAw OAorI2RlZmluZSBTSVJGU09DX1RJTUVSX01BVENIXzEJCTB4MDAwQworI2RlZmluZSBTSVJGU09D X1RJTUVSX01BVENIXzIJCTB4MDAxMAorI2RlZmluZSBTSVJGU09DX1RJTUVSX01BVENIXzMJCTB4 MDAxNAorI2RlZmluZSBTSVJGU09DX1RJTUVSX01BVENIXzQJCTB4MDAxOAorI2RlZmluZSBTSVJG U09DX1RJTUVSX01BVENIXzUJCTB4MDAxQworI2RlZmluZSBTSVJGU09DX1RJTUVSX1NUQVRVUwkJ MHgwMDIwCisjZGVmaW5lIFNJUkZTT0NfVElNRVJfSU5UX0VOCQkweDAwMjQKKyNkZWZpbmUgU0lS RlNPQ19USU1FUl9XQVRDSERPR19FTgkweDAwMjgKKyNkZWZpbmUgU0lSRlNPQ19USU1FUl9ESVYJ CTB4MDAyQworI2RlZmluZSBTSVJGU09DX1RJTUVSX0xBVENICQkweDAwMzAKKyNkZWZpbmUgU0lS RlNPQ19USU1FUl9MQVRDSEVEX0xPCTB4MDAzNAorI2RlZmluZSBTSVJGU09DX1RJTUVSX0xBVENI RURfSEkJMHgwMDM4CisKKyNkZWZpbmUgU0lSRlNPQ19USU1FUl9XRFRfSU5ERVgJCTUKKworI2Rl ZmluZSBTSVJGU09DX1RJTUVSX0xBVENIX0JJVAkgQklUKDApCisKK3N0YXRpYyB2b2lkIF9faW9t ZW0gKnNpcmZzb2NfdGltZXJfYmFzZTsKK3N0YXRpYyB2b2lkIF9faW5pdCBzaXJmc29jX29mX3Rp bWVyX21hcCh2b2lkKTsKKworLyogdGltZXIwIGludGVycnVwdCBoYW5kbGVyICovCitzdGF0aWMg aXJxcmV0dXJuX3Qgc2lyZnNvY190aW1lcl9pbnRlcnJ1cHQoaW50IGlycSwgdm9pZCAqZGV2X2lk KQoreworCXN0cnVjdCBjbG9ja19ldmVudF9kZXZpY2UgKmNlID0gZGV2X2lkOworCisJV0FSTl9P TighKHJlYWRsX3JlbGF4ZWQoc2lyZnNvY190aW1lcl9iYXNlICsgU0lSRlNPQ19USU1FUl9TVEFU VVMpICYgQklUKDApKSk7CisKKwkvKiBjbGVhciB0aW1lcjAgaW50ZXJydXB0ICovCisJd3JpdGVs X3JlbGF4ZWQoQklUKDApLCBzaXJmc29jX3RpbWVyX2Jhc2UgKyBTSVJGU09DX1RJTUVSX1NUQVRV Uyk7CisKKwljZS0+ZXZlbnRfaGFuZGxlcihjZSk7CisKKwlyZXR1cm4gSVJRX0hBTkRMRUQ7Cit9 CisKKy8qIHJlYWQgNjQtYml0IHRpbWVyIGNvdW50ZXIgKi8KK3N0YXRpYyBjeWNsZV90IHNpcmZz b2NfdGltZXJfcmVhZChzdHJ1Y3QgY2xvY2tzb3VyY2UgKmNzKQoreworCXU2NCBjeWNsZXM7CisK KwkvKiBsYXRjaCB0aGUgNjQtYml0IHRpbWVyIGNvdW50ZXIgKi8KKwl3cml0ZWxfcmVsYXhlZChT SVJGU09DX1RJTUVSX0xBVENIX0JJVCwgc2lyZnNvY190aW1lcl9iYXNlICsgU0lSRlNPQ19USU1F Ul9MQVRDSCk7CisJY3ljbGVzID0gcmVhZGxfcmVsYXhlZChzaXJmc29jX3RpbWVyX2Jhc2UgKyBT SVJGU09DX1RJTUVSX0xBVENIRURfSEkpOworCWN5Y2xlcyA9IChjeWNsZXMgPDwgMzIpIHwgcmVh ZGxfcmVsYXhlZChzaXJmc29jX3RpbWVyX2Jhc2UgKyBTSVJGU09DX1RJTUVSX0xBVENIRURfTE8p OworCisJcmV0dXJuIGN5Y2xlczsKK30KKworc3RhdGljIGludCBzaXJmc29jX3RpbWVyX3NldF9u ZXh0X2V2ZW50KHVuc2lnbmVkIGxvbmcgZGVsdGEsCisJc3RydWN0IGNsb2NrX2V2ZW50X2Rldmlj ZSAqY2UpCit7CisJdW5zaWduZWQgbG9uZyBub3csIG5leHQ7CisKKwl3cml0ZWxfcmVsYXhlZChT SVJGU09DX1RJTUVSX0xBVENIX0JJVCwgc2lyZnNvY190aW1lcl9iYXNlICsgU0lSRlNPQ19USU1F Ul9MQVRDSCk7CisJbm93ID0gcmVhZGxfcmVsYXhlZChzaXJmc29jX3RpbWVyX2Jhc2UgKyBTSVJG U09DX1RJTUVSX0xBVENIRURfTE8pOworCW5leHQgPSBub3cgKyBkZWx0YTsKKwl3cml0ZWxfcmVs YXhlZChuZXh0LCBzaXJmc29jX3RpbWVyX2Jhc2UgKyBTSVJGU09DX1RJTUVSX01BVENIXzApOwor CXdyaXRlbF9yZWxheGVkKFNJUkZTT0NfVElNRVJfTEFUQ0hfQklULCBzaXJmc29jX3RpbWVyX2Jh c2UgKyBTSVJGU09DX1RJTUVSX0xBVENIKTsKKwlub3cgPSByZWFkbF9yZWxheGVkKHNpcmZzb2Nf dGltZXJfYmFzZSArIFNJUkZTT0NfVElNRVJfTEFUQ0hFRF9MTyk7CisKKwlyZXR1cm4gbmV4dCAt IG5vdyA+IGRlbHRhID8gLUVUSU1FIDogMDsKK30KKworc3RhdGljIHZvaWQgc2lyZnNvY190aW1l cl9zZXRfbW9kZShlbnVtIGNsb2NrX2V2ZW50X21vZGUgbW9kZSwKKwlzdHJ1Y3QgY2xvY2tfZXZl bnRfZGV2aWNlICpjZSkKK3sKKwl1MzIgdmFsID0gcmVhZGxfcmVsYXhlZChzaXJmc29jX3RpbWVy X2Jhc2UgKyBTSVJGU09DX1RJTUVSX0lOVF9FTik7CisJc3dpdGNoIChtb2RlKSB7CisJY2FzZSBD TE9DS19FVlRfTU9ERV9QRVJJT0RJQzoKKwkJV0FSTl9PTigxKTsKKwkJYnJlYWs7CisJY2FzZSBD TE9DS19FVlRfTU9ERV9PTkVTSE9UOgorCQl3cml0ZWxfcmVsYXhlZCh2YWwgfCBCSVQoMCksIHNp cmZzb2NfdGltZXJfYmFzZSArIFNJUkZTT0NfVElNRVJfSU5UX0VOKTsKKwkJYnJlYWs7CisJY2Fz ZSBDTE9DS19FVlRfTU9ERV9TSFVURE9XTjoKKwkJd3JpdGVsX3JlbGF4ZWQodmFsICYgfkJJVCgw KSwgc2lyZnNvY190aW1lcl9iYXNlICsgU0lSRlNPQ19USU1FUl9JTlRfRU4pOworCQlicmVhazsK KwljYXNlIENMT0NLX0VWVF9NT0RFX1VOVVNFRDoKKwljYXNlIENMT0NLX0VWVF9NT0RFX1JFU1VN RToKKwkJYnJlYWs7CisJfQorfQorCitzdGF0aWMgc3RydWN0IGNsb2NrX2V2ZW50X2RldmljZSBz aXJmc29jX2Nsb2NrZXZlbnQgPSB7CisJLm5hbWUgPSAic2lyZnNvY19jbG9ja2V2ZW50IiwKKwku cmF0aW5nID0gMjAwLAorCS5mZWF0dXJlcyA9IENMT0NLX0VWVF9GRUFUX09ORVNIT1QsCisJLnNl dF9tb2RlID0gc2lyZnNvY190aW1lcl9zZXRfbW9kZSwKKwkuc2V0X25leHRfZXZlbnQgPSBzaXJm c29jX3RpbWVyX3NldF9uZXh0X2V2ZW50LAorfTsKKworc3RhdGljIHN0cnVjdCBjbG9ja3NvdXJj ZSBzaXJmc29jX2Nsb2Nrc291cmNlID0geworCS5uYW1lID0gInNpcmZzb2NfY2xvY2tzb3VyY2Ui LAorCS5yYXRpbmcgPSAyMDAsCisJLm1hc2sgPSBDTE9DS1NPVVJDRV9NQVNLKDY0KSwKKwkuZmxh Z3MgPSBDTE9DS19TT1VSQ0VfSVNfQ09OVElOVU9VUywKKwkucmVhZCA9IHNpcmZzb2NfdGltZXJf cmVhZCwKK307CisKK3N0YXRpYyBzdHJ1Y3QgaXJxYWN0aW9uIHNpcmZzb2NfdGltZXJfaXJxID0g eworCS5uYW1lID0gInNpcmZzb2NfdGltZXIwIiwKKwkuZmxhZ3MgPSBJUlFGX1RJTUVSLAorCS5p cnEgPSAwLAorCS5oYW5kbGVyID0gc2lyZnNvY190aW1lcl9pbnRlcnJ1cHQsCisJLmRldl9pZCA9 ICZzaXJmc29jX2Nsb2NrZXZlbnQsCit9OworCisvKiBPdmVyd3JpdGUgd2VhayBkZWZhdWx0IHNj aGVkX2Nsb2NrIHdpdGggbW9yZSBwcmVjaXNlIG9uZSAqLwordW5zaWduZWQgbG9uZyBsb25nIG5v dHJhY2Ugc2NoZWRfY2xvY2sodm9pZCkKK3sKKwlzdGF0aWMgaW50IGlzX21hcHBlZCA9IDA7CisK KwkvKgorCSAqIHNjaGVkX2Nsb2NrIGlzIGNhbGxlZCBlYXJsaWVyIHRoYW4gLmluaXQgb2Ygc3lz X3RpbWVyCisJICogaWYgd2UgbWFwIHRpbWVyIG1lbW9yeSBpbiAuaW5pdCBvZiBzeXNfdGltZXIs IHN5c3RlbQorCSAqIHdpbGwgcGFuaWMgZHVlIHRvIGlsbGVnYWwgbWVtb3J5IGFjY2VzcworCSAq LworCWlmKCFpc19tYXBwZWQpIHsKKwkJc2lyZnNvY19vZl90aW1lcl9tYXAoKTsKKwkJaXNfbWFw cGVkID0gMTsKKwl9CisKKwlyZXR1cm4gc2lyZnNvY190aW1lcl9yZWFkKE5VTEwpICogKE5TRUNf UEVSX1NFQyAvIENMT0NLX1RJQ0tfUkFURSk7Cit9CisKK3N0YXRpYyB2b2lkIF9faW5pdCBzaXJm c29jX2Nsb2NrZXZlbnRfaW5pdCh2b2lkKQoreworCWNsb2NrZXZlbnRzX2NhbGNfbXVsdF9zaGlm dCgmc2lyZnNvY19jbG9ja2V2ZW50LCBDTE9DS19USUNLX1JBVEUsIDYwKTsKKworCXNpcmZzb2Nf Y2xvY2tldmVudC5tYXhfZGVsdGFfbnMgPQorCQljbG9ja2V2ZW50X2RlbHRhMm5zKC0yLCAmc2ly ZnNvY19jbG9ja2V2ZW50KTsKKwlzaXJmc29jX2Nsb2NrZXZlbnQubWluX2RlbHRhX25zID0KKwkJ Y2xvY2tldmVudF9kZWx0YTJucygyLCAmc2lyZnNvY19jbG9ja2V2ZW50KTsKKworCXNpcmZzb2Nf Y2xvY2tldmVudC5jcHVtYXNrID0gY3B1bWFza19vZigwKTsKKwljbG9ja2V2ZW50c19yZWdpc3Rl cl9kZXZpY2UoJnNpcmZzb2NfY2xvY2tldmVudCk7Cit9CisKKy8qIGluaXRpYWxpemUgdGhlIGtl cm5lbCBqaWZmeSB0aW1lciBzb3VyY2UgKi8KK3N0YXRpYyB2b2lkIF9faW5pdCBzaXJmc29jX3Rp bWVyX2luaXQodm9pZCkKK3sKKwl1bnNpZ25lZCBsb25nIHJhdGU7CisKKwkvKiB0aW1lcidzIGlu cHV0IGNsb2NrIGlzIGlvIGNsb2NrICovCisJc3RydWN0IGNsayAqY2xrID0gY2xrX2dldF9zeXMo ImlvIiwgTlVMTCk7CisKKwlCVUdfT04oSVNfRVJSKGNsaykpOworCisJcmF0ZSA9IGNsa19nZXRf cmF0ZShjbGspOworCisJQlVHX09OKHJhdGUgPCBDTE9DS19USUNLX1JBVEUpOworCUJVR19PTihy YXRlICUgQ0xPQ0tfVElDS19SQVRFKTsKKworCXdyaXRlbF9yZWxheGVkKHJhdGUgLyBDTE9DS19U SUNLX1JBVEUgLyAyIC0gMSwgc2lyZnNvY190aW1lcl9iYXNlICsgU0lSRlNPQ19USU1FUl9ESVYp OworCXdyaXRlbF9yZWxheGVkKDAsIHNpcmZzb2NfdGltZXJfYmFzZSArIFNJUkZTT0NfVElNRVJf Q09VTlRFUl9MTyk7CisJd3JpdGVsX3JlbGF4ZWQoMCwgc2lyZnNvY190aW1lcl9iYXNlICsgU0lS RlNPQ19USU1FUl9DT1VOVEVSX0hJKTsKKwl3cml0ZWxfcmVsYXhlZChCSVQoMCksIHNpcmZzb2Nf dGltZXJfYmFzZSArIFNJUkZTT0NfVElNRVJfU1RBVFVTKTsKKworCUJVR19PTihjbG9ja3NvdXJj ZV9yZWdpc3Rlcl9oeigmc2lyZnNvY19jbG9ja3NvdXJjZSwgQ0xPQ0tfVElDS19SQVRFKSk7CisK KwlCVUdfT04oc2V0dXBfaXJxKHNpcmZzb2NfdGltZXJfaXJxLmlycSwgJnNpcmZzb2NfdGltZXJf aXJxKSk7CisKKwlzaXJmc29jX2Nsb2NrZXZlbnRfaW5pdCgpOworfQorCitzdGF0aWMgc3RydWN0 IG9mX2RldmljZV9pZCB0aW1lcl9pZHNbXSA9IHsKKwl7IC5jb21wYXRpYmxlID0gInNpcmYscHJp bWEyLXRpY2siIH0sCit9OworCitzdGF0aWMgdm9pZCBfX2luaXQgc2lyZnNvY19vZl90aW1lcl9t YXAodm9pZCkKK3sKKwlzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wOworCWNvbnN0IHVuc2lnbmVkIGlu dCAqaW50c3BlYzsKKworCW5wID0gb2ZfZmluZF9tYXRjaGluZ19ub2RlKE5VTEwsIHRpbWVyX2lk cyk7CisJaWYgKCFucCkKKwkJcGFuaWMoInVuYWJsZSB0byBmaW5kIGNvbXBhdGlibGUgdGltZXIg bm9kZSBpbiBkdGJcbiIpOworCXNpcmZzb2NfdGltZXJfYmFzZSA9IG9mX2lvbWFwKG5wLCAwKTsK KwlpZiAoIXNpcmZzb2NfdGltZXJfYmFzZSkKKwkJcGFuaWMoInVuYWJsZSB0byBtYXAgdGltZXIg Y3B1IHJlZ2lzdGVyc1xuIik7CisKKwkvKiBHZXQgdGhlIGludGVycnVwdHMgcHJvcGVydHkgKi8K KwlpbnRzcGVjID0gb2ZfZ2V0X3Byb3BlcnR5KG5wLCAiaW50ZXJydXB0cyIsIE5VTEwpOworCUJV R19PTighaW50c3BlYyk7CisJc2lyZnNvY190aW1lcl9pcnEuaXJxID0gYmUzMl90b19jcHVwKGlu dHNwZWMpOworCisJb2Zfbm9kZV9wdXQobnApOworfQorCitzdHJ1Y3Qgc3lzX3RpbWVyIHNpcmZz b2NfdGltZXIgPSB7CisJLmluaXQgPSBzaXJmc29jX3RpbWVyX2luaXQsCit9OwpkaWZmIC0tZ2l0 IGEvYXJjaC9hcm0vbW0vS2NvbmZpZyBiL2FyY2gvYXJtL21tL0tjb25maWcKaW5kZXggMDA3NGI4 ZC4uZWRmMDY4MSAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbW0vS2NvbmZpZworKysgYi9hcmNoL2Fy bS9tbS9LY29uZmlnCkBAIC04MjEsNyArODIxLDcgQEAgY29uZmlnIENBQ0hFX0wyWDAKIAlkZXBl bmRzIG9uIFJFQUxWSUVXX0VCX0FSTTExTVAgfHwgTUFDSF9SRUFMVklFV19QQjExTVAgfHwgTUFD SF9SRUFMVklFV19QQjExNzYgfHwgXAogCQkgICBSRUFMVklFV19FQl9BOU1QIHx8IFNPQ19JTVgz NSB8fCBTT0NfSU1YMzEgfHwgTUFDSF9SRUFMVklFV19QQlggfHwgXAogCQkgICBBUkNIX05PTUFE SUsgfHwgQVJDSF9PTUFQNCB8fCBBUkNIX0VYWU5PUzQgfHwgQVJDSF9URUdSQSB8fCBcCi0JCSAg IEFSQ0hfVTg1MDAgfHwgQVJDSF9WRVhQUkVTU19DQTlYNCB8fCBBUkNIX1NITU9CSUxFCisJCSAg IEFSQ0hfVTg1MDAgfHwgQVJDSF9WRVhQUkVTU19DQTlYNCB8fCBBUkNIX1NITU9CSUxFIHx8IEFS Q0hfUFJJTUEyCiAJZGVmYXVsdCB5CiAJc2VsZWN0IE9VVEVSX0NBQ0hFCiAJc2VsZWN0IE9VVEVS X0NBQ0hFX1NZTkMKLS0gCjEuNy4xCgoKCk1lbWJlciBvZiB0aGUgQ1NSIHBsYyBncm91cCBvZiBj b21wYW5pZXMuIENTUiBwbGMgcmVnaXN0ZXJlZCBpbiBFbmdsYW5kIGFuZCBXYWxlcywgcmVnaXN0 ZXJlZCBudW1iZXIgNDE4NzM0NiwgcmVnaXN0ZXJlZCBvZmZpY2UgQ2h1cmNoaWxsIEhvdXNlLCBD YW1icmlkZ2UgQnVzaW5lc3MgUGFyaywgQ293bGV5IFJvYWQsIENhbWJyaWRnZSwgQ0I0IDBXWiwg VW5pdGVkIEtpbmdkb20KTW9yZSBpbmZvcm1hdGlvbiBjYW4gYmUgZm91bmQgYXQgd3d3LmNzci5j b20uIEZvbGxvdyBDU1Igb24gVHdpdHRlciBhdCBodHRwOi8vdHdpdHRlci5jb20vQ1NSX1BMQyBh bmQgcmVhZCBvdXIgYmxvZyBhdCB3d3cuY3NyLmNvbS9ibG9nCgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlz dApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJh ZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==